Exemple #1
0
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);
}
Exemple #2
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);

    }
}