From dd266163143293a6536bbee7ca2818f77629b0ac Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Wed, 15 Oct 2025 09:25:49 +0200 Subject: [PATCH] change optimize get image --- src/kds_s2000w_client.c | 94 +++++++++++++++-------------------------- 1 file changed, 35 insertions(+), 59 deletions(-) diff --git a/src/kds_s2000w_client.c b/src/kds_s2000w_client.c index 4c8bdd0..b9b232f 100644 --- a/src/kds_s2000w_client.c +++ b/src/kds_s2000w_client.c @@ -215,6 +215,25 @@ char* _kds_s2000w_client_get_session_header(uint64_t sessionid) return body; } + char* _kds_s2000w_client_append_image_number_to_str(uint8_t image_number, const char* path) + { + char* str_number = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); + if (str_number == NULL) + return NULL; + + memset(str_number, 0, MAX_STR_BUFFER_LENGTH); + sprintf(str_number, "%s/%i", path, image_number); + char* tmp_body = realloc(str_number, sizeof(char*) * (strlen(str_number) + 1)); + if (tmp_body == NULL) { + free(str_number); + str_number = NULL; + return NULL; + } + + str_number = tmp_body; + return str_number; + } + void kds_s2000w_client_init(const client_config_t* config) { kds_s2000w_debug_printf(ALL, "kds_s2000w_client_init"); @@ -440,70 +459,27 @@ uint8_t kds_s2000w_client_get_image(int64_t sessionid, uint8_t img_number, respo { kds_s2000w_debug_printf(ALL, "kds_s2000w_client_get_image"); - CURL* curl = curl_easy_init(); - char* url = NULL; - CURLU* url_handler = curl_url(); - char* url_path = malloc(sizeof(char) * MAX_STR_BUFFER_LENGTH); - if (url_path == NULL) { - curl_url_cleanup(url_handler); - url_handler = NULL; - return 1; - } - - memset(url_path, 0, MAX_STR_BUFFER_LENGTH); - sprintf(url_path, "%s/%i", IMAGE_PATH, img_number); - curl_url_set(url_handler, CURLUPART_URL, client_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); - if (header_str == NULL) { - curl_url_cleanup(url_handler); - url_handler = NULL; - free(url_path); - url_path = NULL; - curl_free(url); - url = NULL; - return 1; - } - - memset(header_str, 0, MAX_STR_BUFFER_LENGTH); - sprintf(header_str, "SessionId: %li", sessionid); - headers = curl_slist_append(headers, header_str); - headers = curl_slist_append(headers, CONTENT_TYPE_HEADER); - headers = curl_slist_append(headers, ACCEPT_IMAGE_HEADER); - curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); - - curl_easy_setopt(curl, CURLOPT_HTTPGET, 1L); - _kds_s2000w_client_set_ssl_verification_off(curl); + curl_param_t* param = _kds_s2000w_client_param_init(sessionid); + if (param == NULL) + return CURLE_OUT_OF_MEMORY; - char* errbuf = _kds_s2000w_client_errbuf_init(); - curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf); - curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, _kds_s2000w_client_write_callback); - curl_easy_setopt(curl, CURLOPT_WRITEDATA, resp); - _kds_s2000w_client_set_verbose(curl); - CURLcode result = curl_easy_perform(curl); - curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &resp->code); + char* url_path = _kds_s2000w_client_append_image_number_to_str(img_number, IMAGE_PATH); + curl_url_set(param->url_handler, CURLUPART_URL, client_config->scanner_url, 0); + curl_url_set(param->url_handler, CURLUPART_PATH, url_path, 0); + curl_url_get(param->url_handler, CURLUPART_URL, ¶m->url, 0); + curl_easy_setopt(param->curl, CURLOPT_URL, param->url); + curl_easy_setopt(param->curl, CURLOPT_HTTPGET, 1L); + curl_easy_setopt(param->curl, CURLOPT_WRITEDATA, resp); + CURLcode result = curl_easy_perform(param->curl); + curl_easy_getinfo(param->curl, CURLINFO_RESPONSE_CODE, &resp->code); - _kds_s2000w_client_print_error_status(curl); - _kds_s2000w_client_print_error_result(result, errbuf); + _kds_s2000w_client_print_error_status(param->curl); + _kds_s2000w_client_print_error_result(result, param->errbuf); - curl_url_cleanup(url_handler); - url_handler = NULL; - curl_slist_free_all(headers); - headers = NULL; - curl_free(url); - url = NULL; - curl_easy_cleanup(curl); - curl = NULL; + _kds_s2000w_client_param_free(param); + param = NULL; free(url_path); url_path = NULL; - free(header_str); - header_str = NULL; - free(errbuf); - errbuf = NULL; return result; } -- 2.47.3