]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
add client get session status
authorBastian Dehn <hhaalo@arcor.de>
Tue, 30 Jan 2024 20:42:02 +0000 (21:42 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Tue, 30 Jan 2024 20:42:02 +0000 (21:42 +0100)
src/kds_s2000w_client.c
src/kds_s2000w_client.h

index a14edeb362c4940eace3dba04299a62ef43c8d66..0f74f6e5adbd678d1a2087fd6a8f71077f9c44df 100644 (file)
@@ -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();
index 5f646c61c31f37798254c2252a0628066bd1123b..b0945b54bcf05075a8e273f4f55804592524c69e 100644 (file)
@@ -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);