From: Bastian Dehn Date: Tue, 31 Dec 2024 14:04:10 +0000 (+0100) Subject: restructur code blocks client X-Git-Tag: v1.0.20^2~3^2~1 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=f85fcbc04fcee8d60587242db0023d0213e079c8;p=sane-kds-s2000w-net.git restructur code blocks client --- diff --git a/src/kds_s2000w_client.c b/src/kds_s2000w_client.c index a336e33..8720359 100644 --- a/src/kds_s2000w_client.c +++ b/src/kds_s2000w_client.c @@ -7,7 +7,15 @@ #include "kds_s2000w_client.h" #include "kds_s2000w_debug.h" +#define MAX_STR_BUFFER_LENGTH 80 #define X_STATUS_HEADER "x-status" +#define SESSION_PATH "/api/session" +#define STATUS_PATH "/api/session/status" +#define STARTSCAN_PATH "/api/session/startscan" +#define STOPSCAN_PATH "/api/session/stopscan" +#define IMAGE_PATH "api/session/image" +#define CAPABILITIES_PATH "/api/scanner/capabilities?V2" +#define CONFIGURATION_PATH "/api/session/configuration" CURL* curl = NULL; @@ -47,6 +55,14 @@ void _kds_s2000w_client_stream_to_response(FILE* stream, response* resp, size_t* resp->size = *size; } +void _kds_s2000w_client_print_error_result(CURLcode result) +{ + if (result == CURLE_OK) + return; + + fprintf(stderr, "ERROR: curl_easy_perform: %s\n", curl_easy_strerror(result)); +} + response* kds_s2000w_client_response_init() { debug_printf(ALL, "kds_s2000w_client_response_init"); @@ -80,6 +96,7 @@ void kds_s2000w_client_init() { debug_printf(ALL, "kds_s2000w_client_init"); + _kds_s2000w_client_load_config(); curl = curl_easy_init(); } @@ -95,33 +112,36 @@ int kds_s2000w_client_open_session(response* response) { debug_printf(ALL, "kds_s2000w_client_open_session"); - _kds_s2000w_client_load_config(); curl_easy_reset(curl); - char* url = NULL; - char body[50] = {0}; + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); + curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + char* url = NULL; CURLU* url_handler = curl_url(); - CURLcode result = curl_url_set(url_handler, CURLUPART_URL, p_config.scanner_url, 0); - curl_url_set(url_handler, CURLUPART_PATH, "/api/session", 0); + curl_url_set(url_handler, CURLUPART_URL, p_config.scanner_url, 0); + curl_url_set(url_handler, CURLUPART_PATH, SESSION_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); - sprintf(body, "{\"OCPUserName\": \"%s\"}", p_config.username); - curl_easy_setopt(curl, CURLOPT_URL, url); - curl_easy_setopt(curl, CURLOPT_POST, 1L); - curl_easy_setopt(curl, CURLOPT_POSTFIELDS, body); + char* buffer = malloc(sizeof(char)); size_t* sizeloc = malloc(sizeof(size_t)); FILE* stream = open_memstream(&buffer, sizeloc); curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream); + + char* body = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); + memset(body, 0, MAX_STR_BUFFER_LENGTH); + sprintf(body, "{\"OCPUserName\": \"%s\"}", p_config.username); + curl_easy_setopt(curl, CURLOPT_POST, 1L); + curl_easy_setopt(curl, CURLOPT_POSTFIELDS, body); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); - result = curl_easy_perform(curl); + + CURLcode result = curl_easy_perform(curl); curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response->code); - _kds_s2000w_client_read_error_status(curl, response); - if (result != CURLE_OK) - fprintf(stderr, "ERROR: curl_easy_perform: %s\n", curl_easy_strerror(result)); + _kds_s2000w_client_read_error_status(curl, response); + _kds_s2000w_client_print_error_result(result); fflush(stream); _kds_s2000w_client_stream_to_response(stream, response, sizeloc); @@ -129,6 +149,8 @@ int kds_s2000w_client_open_session(response* response) curl_url_cleanup(url_handler); url_handler = NULL; + free(body); + body = NULL; curl_free(url); url = NULL; free(buffer); @@ -143,28 +165,29 @@ void kds_s2000w_client_close_session(int64_t sessionid) { debug_printf(ALL, "kds_s2000w_client_close_session"); - struct curl_slist* headers = NULL; - char header_str[80]; - curl_easy_reset(curl); + char* url = NULL; CURLU* url_handler = curl_url(); curl_url_set(url_handler, CURLUPART_URL, p_config.scanner_url, 0); - curl_url_set(url_handler, CURLUPART_PATH, "/api/session", 0); - char* url = NULL; + curl_url_set(url_handler, CURLUPART_PATH, SESSION_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); + curl_easy_setopt(curl, CURLOPT_URL, url); + struct curl_slist* headers = NULL; + char* header_str = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); + memset(header_str, 0, MAX_STR_BUFFER_LENGTH); sprintf(header_str, "SessionId: %li", sessionid); headers = curl_slist_append(headers, header_str); - curl_easy_setopt(curl, CURLOPT_URL, url); - curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE"); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); + + curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE"); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + CURLcode result = curl_easy_perform(curl); - if (result != CURLE_OK) - fprintf(stderr, "ERROR: curl_easy_perform: %s\n", curl_easy_strerror(result)); + _kds_s2000w_client_print_error_result(result); curl_url_cleanup(url_handler); url_handler = NULL; @@ -172,6 +195,8 @@ void kds_s2000w_client_close_session(int64_t sessionid) url = NULL; curl_slist_free_all(headers); headers = NULL; + free(header_str); + header_str = NULL; } int kds_s2000w_client_status_session(int64_t sessionid, response* response) @@ -181,34 +206,36 @@ int kds_s2000w_client_status_session(int64_t sessionid, response* response) join_thread(); wait_seconds(&p_config.heartbeat); - struct curl_slist* headers = NULL; - char header_str[80]; - curl_easy_reset(curl); + char* url = NULL; CURLU* url_handler = curl_url(); curl_url_set(url_handler, CURLUPART_URL, p_config.scanner_url, 0); - curl_url_set(url_handler, CURLUPART_PATH, "/api/session/status", 0); - char* url = NULL; + curl_url_set(url_handler, CURLUPART_PATH, STATUS_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); + curl_easy_setopt(curl, CURLOPT_URL, url); + char* header_str = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); + memset(header_str, 0, MAX_STR_BUFFER_LENGTH); + struct curl_slist* headers = NULL; sprintf(header_str, "SessionId: %li", sessionid); headers = curl_slist_append(headers, header_str); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); - curl_easy_setopt(curl, CURLOPT_URL, url); - curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L); + char* buffer = malloc(sizeof(char)); size_t* sizeloc = malloc(sizeof(size_t)); FILE* stream = open_memstream(&buffer, sizeloc); curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream); + + curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + CURLcode result = curl_easy_perform(curl); curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response->code); - _kds_s2000w_client_read_error_status(curl, response); - if (result != CURLE_OK) - fprintf(stderr, "ERROR: curl_easy_perform: %s\n", curl_easy_strerror(result)); + _kds_s2000w_client_read_error_status(curl, response); + _kds_s2000w_client_print_error_result(result); fflush(stream); _kds_s2000w_client_stream_to_response(stream, response, sizeloc); @@ -222,6 +249,8 @@ int kds_s2000w_client_status_session(int64_t sessionid, response* response) buffer = NULL; free(sizeloc); sizeloc = NULL; + free(header_str); + header_str = NULL; return result; } @@ -230,35 +259,37 @@ int kds_s2000w_client_start_scan(int64_t sessionid, response* response) { debug_printf(ALL, "kds_s2000w_client_start_scan"); - char* url = NULL; - struct curl_slist* headers = NULL; - char header_str[80]; - curl_easy_reset(curl); + char* url = NULL; CURLU* url_handler = curl_url(); curl_url_set(url_handler, CURLUPART_URL, p_config.scanner_url, 0); - curl_url_set(url_handler, CURLUPART_PATH, "/api/session/startscan", 0); + curl_url_set(url_handler, CURLUPART_PATH, STARTSCAN_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); + curl_easy_setopt(curl, CURLOPT_URL, url); + struct curl_slist* headers = NULL; + char* header_str = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); + memset(header_str, 0, MAX_STR_BUFFER_LENGTH); sprintf(header_str, "SessionId: %li", sessionid); headers = curl_slist_append(headers, header_str); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); - curl_easy_setopt(curl, CURLOPT_URL, url); - curl_easy_setopt(curl, CURLOPT_POST, 1L); - curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 0L); + char* buffer = malloc(sizeof(char)); size_t* sizeloc = malloc(sizeof(size_t)); FILE* stream = open_memstream(&buffer, sizeloc); curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream); + + curl_easy_setopt(curl, CURLOPT_POST, 1L); + curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 0L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + CURLcode result = curl_easy_perform(curl); curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response->code); - _kds_s2000w_client_read_error_status(curl, response); - if (result != CURLE_OK) - fprintf(stderr, "ERROR: curl_easy_perform: %s\n", curl_easy_strerror(result)); + _kds_s2000w_client_read_error_status(curl, response); + _kds_s2000w_client_print_error_result(result); fflush(stream); _kds_s2000w_client_stream_to_response(stream, response, sizeloc); @@ -272,6 +303,8 @@ int kds_s2000w_client_start_scan(int64_t sessionid, response* response) buffer = NULL; free(sizeloc); sizeloc = NULL; + free(header_str); + header_str = NULL; return result; } @@ -280,35 +313,37 @@ int kds_s2000w_client_stop_scan(int64_t sessionid, response* response) { debug_printf(ALL, "kds_s2000w_client_stop_scan"); - struct curl_slist* headers = NULL; - char header_str[80]; - curl_easy_reset(curl); + char* url = NULL; CURLU* url_handler = curl_url(); curl_url_set(url_handler, CURLUPART_URL, p_config.scanner_url, 0); - curl_url_set(url_handler, CURLUPART_PATH, "/api/session/stopscan", 0); - char* url = NULL; + curl_url_set(url_handler, CURLUPART_PATH, STOPSCAN_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); + curl_easy_setopt(curl, CURLOPT_URL, url); + char* header_str = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); + memset(header_str, 0, MAX_STR_BUFFER_LENGTH); + struct curl_slist* headers = NULL; sprintf(header_str, "SessionId: %li", sessionid); headers = curl_slist_append(headers, header_str); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); - curl_easy_setopt(curl, CURLOPT_URL, url); - curl_easy_setopt(curl, CURLOPT_POST, 1L); - curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 0L); + char* buffer = malloc(sizeof(char)); size_t* sizeloc = malloc(sizeof(size_t)); FILE* stream = open_memstream(&buffer, sizeloc); curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream); + + curl_easy_setopt(curl, CURLOPT_POST, 1L); + curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 0L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + CURLcode result = curl_easy_perform(curl); curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response->code); - _kds_s2000w_client_read_error_status(curl, response); - if (result != CURLE_OK) - fprintf(stderr, "ERROR: curl_easy_perform: %s\n", curl_easy_strerror(result)); + _kds_s2000w_client_read_error_status(curl, response); + _kds_s2000w_client_print_error_result(result); fflush(stream); _kds_s2000w_client_stream_to_response(stream, response, sizeloc); @@ -322,6 +357,8 @@ int kds_s2000w_client_stop_scan(int64_t sessionid, response* response) buffer = NULL; free(sizeloc); sizeloc = NULL; + free(header_str); + header_str = NULL; return result; } @@ -330,36 +367,39 @@ int kds_s2000w_client_get_image(int64_t sessionid, int img_number, response* res { debug_printf(ALL, "kds_s2000w_client_get_image"); - struct curl_slist* headers = NULL; - char* url = NULL; - char url_path[30]; - char header_str[80]; - curl_easy_reset(curl); + char* url = NULL; CURLU* url_handler = curl_url(); - sprintf(url_path, "api/session/image/%i", img_number); + char* url_path = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); + memset(url_path, 0, MAX_STR_BUFFER_LENGTH); + sprintf(url_path, "%s/%i", IMAGE_PATH, img_number); curl_url_set(url_handler, CURLUPART_URL, p_config.scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, url_path, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); + curl_easy_setopt(curl, CURLOPT_URL, url); + struct curl_slist* headers = NULL; + char* header_str = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); + memset(header_str, 0, MAX_STR_BUFFER_LENGTH); sprintf(header_str, "SessionId: %li", sessionid); headers = curl_slist_append(headers, header_str); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); - curl_easy_setopt(curl, CURLOPT_URL, url); - curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L); + char* buffer = malloc(sizeof(char)); size_t* sizeloc = malloc(sizeof(size_t)); FILE* stream = open_memstream(&buffer, sizeloc); curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream); + + curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + CURLcode result = curl_easy_perform(curl); curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response->code); - _kds_s2000w_client_read_error_status(curl, response); - if (result != CURLE_OK) - fprintf(stderr, "ERROR: curl_easy_perform: %s\n", curl_easy_strerror(result)); + _kds_s2000w_client_read_error_status(curl, response); + _kds_s2000w_client_print_error_result(result); fflush(stream); _kds_s2000w_client_stream_to_response(stream, response, sizeloc); @@ -373,6 +413,10 @@ int kds_s2000w_client_get_image(int64_t sessionid, int img_number, response* res buffer = NULL; free(sizeloc); sizeloc = NULL; + free(url_path); + url_path = NULL; + free(header_str); + header_str = NULL; return result; } @@ -381,36 +425,40 @@ int kds_s2000w_client_delete_image(int64_t sessionid, int img_number, response* { debug_printf(ALL, "kds_s2000w_client_delete_image"); - char* url = NULL; struct curl_slist* headers = NULL; - char url_path[30]; - char header_str[80]; curl_easy_reset(curl); + char* url = NULL; CURLU* url_handler = curl_url(); - sprintf(url_path, "api/session/image/%i", img_number); + char* url_path = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); + memset(url_path, 0, MAX_STR_BUFFER_LENGTH); + sprintf(url_path, "%s/%i", IMAGE_PATH, img_number); curl_url_set(url_handler, CURLUPART_URL, p_config.scanner_url, 0); curl_url_set(url_handler, CURLUPART_PATH, url_path, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); + curl_easy_setopt(curl, CURLOPT_URL, url); + char* header_str = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); + memset(header_str, 0, MAX_STR_BUFFER_LENGTH); sprintf(header_str, "SessionId: %li", sessionid); headers = curl_slist_append(headers, header_str); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); - curl_easy_setopt(curl, CURLOPT_URL, url); - curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE"); + char* buffer = malloc(sizeof(char)); size_t* sizeloc = malloc(sizeof(size_t)); FILE* stream = open_memstream(&buffer, sizeloc); curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream); + + curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "DELETE"); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + CURLcode result = curl_easy_perform(curl); curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response->code); - _kds_s2000w_client_read_error_status(curl, response); - if (result != CURLE_OK) - fprintf(stderr, "ERROR: curl_easy_perform: %s\n", curl_easy_strerror(result)); + _kds_s2000w_client_read_error_status(curl, response); + _kds_s2000w_client_print_error_result(result); fflush(stream); _kds_s2000w_client_stream_to_response(stream, response, sizeloc); @@ -424,6 +472,8 @@ int kds_s2000w_client_delete_image(int64_t sessionid, int img_number, response* buffer = NULL; free(sizeloc); sizeloc = NULL; + free(header_str); + header_str = NULL; return result; } @@ -432,29 +482,29 @@ int kds_s2000w_client_get_capabilities(response* response) { debug_printf(ALL, "kds_s2000w_client_get_capabilities"); - char* url = NULL; - curl_easy_reset(curl); + char* url = NULL; CURLU* url_handler = curl_url(); curl_url_set(url_handler, CURLUPART_URL, p_config.scanner_url, 0); - curl_url_set(url_handler, CURLUPART_PATH, "/api/scanner/capabilities?V2", 0); + curl_url_set(url_handler, CURLUPART_PATH, CAPABILITIES_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); - curl_easy_setopt(curl, CURLOPT_URL, url); - curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L); + char* buffer = malloc(sizeof(char)); size_t* sizeloc = malloc(sizeof(size_t)); FILE* stream = open_memstream(&buffer, sizeloc); curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream); + + curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + CURLcode result = curl_easy_perform(curl); curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response->code); - _kds_s2000w_client_read_error_status(curl, response); - if (result != CURLE_OK) - fprintf(stderr, "ERROR: curl_easy_perform: %s\n", curl_easy_strerror(result)); + _kds_s2000w_client_read_error_status(curl, response); + _kds_s2000w_client_print_error_result(result); fflush(stream); _kds_s2000w_client_stream_to_response(stream, response, sizeloc); @@ -476,34 +526,36 @@ int kds_s2000w_client_get_option(int64_t sessionid, response* response) { debug_printf(ALL, "kds_s2000w_client_get_option"); - struct curl_slist* headers = NULL; - char header_str[80]; - curl_easy_reset(curl); + char* url = NULL; CURLU* url_handler = curl_url(); curl_url_set(url_handler, CURLUPART_URL, p_config.scanner_url, 0); - curl_url_set(url_handler, CURLUPART_PATH, "/api/session/configuration", 0); - char* url = NULL; + curl_url_set(url_handler, CURLUPART_PATH, CONFIGURATION_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); + curl_easy_setopt(curl, CURLOPT_URL, url); + char* header_str = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); + memset(header_str, 0, MAX_STR_BUFFER_LENGTH); + struct curl_slist* headers = NULL; sprintf(header_str, "SessionId: %li", sessionid); headers = curl_slist_append(headers, header_str); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); - curl_easy_setopt(curl, CURLOPT_URL, url); - curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L); + char* buffer = malloc(sizeof(char)); size_t* sizeloc = malloc(sizeof(size_t)); FILE* stream = open_memstream(&buffer, sizeloc); curl_easy_setopt(curl, CURLOPT_WRITEDATA, stream); + + curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + CURLcode result = curl_easy_perform(curl); curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response->code); - _kds_s2000w_client_read_error_status(curl, response); - if (result != CURLE_OK) - fprintf(stderr, "ERROR: curl_easy_perform: %s\n", curl_easy_strerror(result)); + _kds_s2000w_client_read_error_status(curl, response); + _kds_s2000w_client_print_error_result(result); fflush(stream); _kds_s2000w_client_stream_to_response(stream, response, sizeloc); @@ -517,6 +569,8 @@ int kds_s2000w_client_get_option(int64_t sessionid, response* response) buffer = NULL; free(sizeloc); sizeloc = NULL; + free(header_str); + header_str = NULL; return result; } @@ -525,37 +579,40 @@ int kds_s2000w_client_set_option(int64_t sessionid, response* response) { debug_printf(ALL, "kds_s2000w_client_set_option"); - char* url = NULL; - struct curl_slist* headers = NULL; - char header_str[80]; - curl_easy_reset(curl); + char* url = NULL; CURLU* url_handler = curl_url(); curl_url_set(url_handler, CURLUPART_URL, p_config.scanner_url, 0); - curl_url_set(url_handler, CURLUPART_PATH, "/api/session/configuration", 0); + curl_url_set(url_handler, CURLUPART_PATH, CONFIGURATION_PATH, 0); curl_url_get(url_handler, CURLUPART_URL, &url, 0); + curl_easy_setopt(curl, CURLOPT_URL, url); + char* header_str = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); + memset(header_str, 0, MAX_STR_BUFFER_LENGTH); + struct curl_slist* headers = NULL; sprintf(header_str, "SessionId: %li", sessionid); headers = curl_slist_append(headers, header_str); curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); - curl_easy_setopt(curl, CURLOPT_URL, url); - curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT"); + curl_easy_setopt(curl, CURLOPT_POSTFIELDS, response->data); curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, response->size); + curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT"); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); + CURLcode result = curl_easy_perform(curl); curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response->code); - _kds_s2000w_client_read_error_status(curl, response); - if (result != CURLE_OK) - fprintf(stderr, "ERROR: curl_easy_perform: %s\n", curl_easy_strerror(result)); + _kds_s2000w_client_read_error_status(curl, response); + _kds_s2000w_client_print_error_result(result); curl_url_cleanup(url_handler); url_handler = NULL; curl_free(url); url = NULL; + free(header_str); + header_str = NULL; return result; } \ No newline at end of file