/** * ulfius_init_request * Initialize a request structure by allocating inner elements * return U_OK on success */ int ulfius_init_request(struct _u_request * request) { if (request != NULL) { request->map_url = malloc(sizeof(struct _u_map)); request->map_header = malloc(sizeof(struct _u_map)); request->map_cookie = malloc(sizeof(struct _u_map)); request->map_post_body = malloc(sizeof(struct _u_map)); if (request->map_post_body == NULL || request->map_cookie == NULL || request->map_url == NULL || request->map_header == NULL) { y_log_message(Y_LOG_LEVEL_ERROR, "Ulfius - Error allocating memory for request->map*"); ulfius_clean_request(request); return U_ERROR_MEMORY; } u_map_init(request->map_url); u_map_init(request->map_header); u_map_init(request->map_cookie); u_map_init(request->map_post_body); request->http_verb = NULL; request->http_url = NULL; request->client_address = NULL; request->json_body = NULL; request->json_has_error = 0; request->binary_body = NULL; request->binary_body_length = 0; return U_OK; } else { return U_ERROR_PARAMS; } }
/** * ulfius_clean_request_full * clean the specified request and all its elements * return U_OK on success */ int ulfius_clean_request_full(struct _u_request * request) { if (ulfius_clean_request(request) == U_OK) { free(request); return U_OK; } else { return U_ERROR_PARAMS; } }
int main (int argc, char **argv) { struct _u_response response; int res; struct _u_request req_list[6]; y_init_logs("auth_client", Y_LOG_MODE_CONSOLE, Y_LOG_LEVEL_DEBUG, NULL, "logs start"); ulfius_init_request(&req_list[0]); req_list[0].http_verb = strdup("GET"); req_list[0].http_url = strdup(SERVER_URL); ulfius_init_request(&req_list[1]); req_list[1].http_verb = strdup("GET"); req_list[1].http_url = strdup(SERVER_URL); req_list[1].auth_basic_user = strdup("test"); req_list[1].auth_basic_password = strdup("testpassword"); ulfius_init_request(&req_list[2]); req_list[2].http_verb = strdup("GET"); req_list[2].http_url = strdup(SERVER_URL); req_list[2].auth_basic_user = strdup("test"); req_list[2].auth_basic_password = strdup("wrongpassword"); ulfius_init_request(&req_list[3]); req_list[3].http_verb = strdup("GET"); req_list[3].http_url = strdup(SERVER_URL "/404"); ulfius_init_request(&req_list[4]); req_list[4].http_verb = strdup("GET"); req_list[4].http_url = strdup(SERVER_URL_DEFAULT); req_list[4].auth_basic_user = strdup("test"); req_list[4].auth_basic_password = strdup("testpassword"); ulfius_init_request(&req_list[5]); req_list[5].http_verb = strdup("GET"); req_list[5].http_url = strdup(SERVER_URL_DEFAULT); req_list[5].auth_basic_user = strdup("test"); req_list[5].auth_basic_password = strdup("wrongpassword"); printf("Press <enter> to run auth tests no authentication\n"); getchar(); ulfius_init_response(&response); res = ulfius_send_http_request(&req_list[0], &response); if (res == U_OK) { print_response(&response); } else { printf("Error in http request: %d\n", res); } ulfius_clean_response(&response); printf("Press <enter> to run auth tests success authentication\n"); getchar(); ulfius_init_response(&response); res = ulfius_send_http_request(&req_list[1], &response); if (res == U_OK) { print_response(&response); } else { printf("Error in http request: %d\n", res); } ulfius_clean_response(&response); printf("Press <enter> to run auth tests error authentication\n"); getchar(); ulfius_init_response(&response); res = ulfius_send_http_request(&req_list[2], &response); if (res == U_OK) { print_response(&response); } else { printf("Error in http request: %d\n", res); } ulfius_clean_response(&response); printf("Press <enter> to run auth tests 404\n"); getchar(); ulfius_init_response(&response); res = ulfius_send_http_request(&req_list[3], &response); if (res == U_OK) { print_response(&response); } else { printf("Error in http request: %d\n", res); } ulfius_clean_response(&response); printf("Press <enter> to run default auth tests success authentication\n"); getchar(); ulfius_init_response(&response); res = ulfius_send_http_request(&req_list[4], &response); if (res == U_OK) { print_response(&response); } else { printf("Error in http request: %d\n", res); } ulfius_clean_response(&response); printf("Press <enter> to run default auth tests error authentication\n"); getchar(); ulfius_init_response(&response); res = ulfius_send_http_request(&req_list[5], &response); if (res == U_OK) { print_response(&response); } else { printf("Error in http request: %d\n", res); } ulfius_clean_response(&response); // Wait for the user to press <enter> on the console to quit the application printf("Press <enter> to quit test\n"); getchar(); ulfius_clean_request(&req_list[0]); ulfius_clean_request(&req_list[1]); ulfius_clean_request(&req_list[2]); ulfius_clean_request(&req_list[3]); ulfius_clean_request(&req_list[4]); ulfius_clean_request(&req_list[5]); y_close_logs(); return 0; }