void invoke_method(dino_route_t *route, dino_http_data_t *http, stack_char_ptr_t *url_stack) { if (NULL == http || NULL == route || NULL == url_stack) { log_error("invoke_method: Invlaid inputs... NULL", __FUNCTION__, __LINE__); return; } // bind url parameters // bind_url_params(&http->request, route, url_stack); // Invoke the method.. // int http_error_code = route->verb_func(http); // Output Response Headers // char *buffer = NULL; int bytes = asprintf(&buffer, "HTTP/1.0 %d\r\n", http_error_code); send_free(http->socket, &buffer, bytes); dino_strmap_enum(http->response.params_map, param_output, http); bytes = asprintf(&buffer, "\r\n"); send_free(http->socket, &buffer, bytes); // Output the data payload // send(http->socket, string_buffer_c_string(http->response.buffer_handle), string_buffer_c_string_length(http->response.buffer_handle), 0); }
void DINO_EXPORT params_enumerate(DHANDLE dhandle, dino_enum_func callback, const void *obj) { dino_http_request_t *request = cast_dhandle_request(dhandle); if (NULL != request) { dino_callback_param_t callback_data; memory_clear(&callback_data, sizeof(dino_callback_param_t)); callback_data.callback = callback; callback_data.dhandle = dhandle; callback_data.obj = obj; dino_strmap_enum(request->params_map, param_enum, &callback_data); } }