From: Bastian Dehn Date: Sun, 21 Jan 2024 08:23:36 +0000 (+0100) Subject: add call back data write X-Git-Tag: v1.0.0^2~502 X-Git-Url: https://gitweb.hhaalo.de/?a=commitdiff_plain;h=0b464d75454863e2243376eeaf8d9f5e93318fc5;p=sane-kds-s2000w-net.git add call back data write --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a2063f..5c67c7c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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 diff --git a/src/kds_s2000w_handler.c b/src/kds_s2000w_handler.c index 78dd436..b05a4fd 100644 --- a/src/kds_s2000w_handler.c +++ b/src/kds_s2000w_handler.c @@ -1,8 +1,24 @@ #include +#include #include +#include #include #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); }