]> gitweb.hhaalo.de Git - sane-kds-s2000w-net.git/commitdiff
add call back data write
authorBastian Dehn <hhaalo@arcor.de>
Sun, 21 Jan 2024 08:23:36 +0000 (09:23 +0100)
committerBastian Dehn <hhaalo@arcor.de>
Sun, 21 Jan 2024 08:23:36 +0000 (09:23 +0100)
CMakeLists.txt
src/kds_s2000w_handler.c

index 0a2063f05ffe850b964b1d8c2770cf492908c5d9..5c67c7c064e4f44e294871c4b0404cf958591590 100644 (file)
@@ -4,6 +4,7 @@ project("kds_s2000w_net" VERSION "0.0.1")
 
 find_library(SANE NAMES sane REQUIRED)
 find_package(CURL REQUIRED)
+find_package(JSON-C REQUIRED)
 
 add_library("sane-kds_s2000w_net"
        SHARED
@@ -11,7 +12,7 @@ add_library("sane-kds_s2000w_net"
        "src/kds_s2000w_handler.c")
 set_target_properties("sane-kds_s2000w_net" PROPERTIES VERSION 1)
 
-target_link_libraries("sane-kds_s2000w_net" curl)
+target_link_libraries("sane-kds_s2000w_net" json-c curl)
 
 install(TARGETS "sane-kds_s2000w_net"
        DESTINATION "/usr/lib/x86_64-linux-gnu/sane")
\ No newline at end of file
index 78dd43666e8af094a1a3a134929eabd7676e3bf8..b05a4fd181fd86315b0a40a220eb15e3eb8a1dc8 100644 (file)
@@ -1,8 +1,24 @@
 #include <stdio.h>
+#include <stdlib.h>
 #include <stddef.h>
+#include <string.h>
 #include <curl/curl.h>
 #include "kds_s2000w_handler.h"
 
+size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata)
+{
+       char* data = (char*) userdata;
+       size_t fullsize = size * nmemb;
+
+       data = realloc(userdata, fullsize + 1);
+       if (!data)
+               return 0;
+
+       memcpy(data, ptr, fullsize);
+
+       return fullsize;
+}
+
 void* kds_s2000w_handler_open()
 {
        printf("open\n");
@@ -10,10 +26,17 @@ void* kds_s2000w_handler_open()
        if(curl) {
                printf("curl\n");
                CURLcode res;
+               char* data = NULL;
                curl_easy_setopt(curl, CURLOPT_URL, "http://scanner.lan.hhaalo.de/api/session");
                curl_easy_setopt(curl, CURLOPT_POST, 1L);
                curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{\"OCPUserName\":\"hhaalo\"}");
+               curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
+               curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void*) data);
                res = curl_easy_perform(curl);
+
+               printf("data: %s\n", data);
+               free(data);
+               data = NULL;
                printf("curlcode: %li\n", res);
                curl_easy_cleanup(curl);
        }