From bb755f1100d9831041beffea6187d4c0b7b90773 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Tue, 30 Jan 2024 21:42:02 +0100 Subject: [PATCH] add client get session status --- src/kds_s2000w_client.c | 31 +++++++++++++++++++++++++++++++ src/kds_s2000w_client.h | 1 + 2 files changed, 32 insertions(+) diff --git a/src/kds_s2000w_client.c b/src/kds_s2000w_client.c index a14edeb..0f74f6e 100644 --- a/src/kds_s2000w_client.c +++ b/src/kds_s2000w_client.c @@ -95,6 +95,37 @@ void kds_s2000w_client_close_session(int64_t sessionid) curl = NULL; } +int kds_s2000w_client_status_session(int64_t sessionid, response* response) +{ + CURL *curl = curl_easy_init(); + if(!curl) + return CURLE_FAILED_INIT; + + CURLU* url_handler = curl_url(); + curl_url_set(url_handler, CURLUPART_URL, "http://scanner.lan.hhaalo.de/api/session/status", 0); + char* url = NULL; + curl_url_get(url_handler, CURLUPART_URL, &url, 0); + + struct curl_slist* headers = NULL; + char header_str[80]; + 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); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, _kds_s2000w_client_callback); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*) response); + CURLcode result = curl_easy_perform(curl); + curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response->code); + + curl_url_cleanup(url_handler); + url_handler = NULL; + curl_free(url); + url = NULL; + + return result; +} + int kds_s2000w_client_get_capabilities(response* response) { CURL *curl = curl_easy_init(); diff --git a/src/kds_s2000w_client.h b/src/kds_s2000w_client.h index 5f646c6..b0945b5 100644 --- a/src/kds_s2000w_client.h +++ b/src/kds_s2000w_client.h @@ -9,6 +9,7 @@ response* kds_s2000w_client_response_init(); void kds_s2000w_client_response_free(response* response); int kds_s2000w_client_open_session(const char* username, response* response); void kds_s2000w_client_close_session(int64_t sessionid); +int kds_s2000w_client_status_session(int64_t sessionid, response* response); int kds_s2000w_client_get_capabilities(response* response); int kds_s2000w_client_get_option(int64_t sessionid, response* response); int kds_s2000w_client_set_option(int64_t sessionid, response* response); -- 2.39.5