From 0b464d75454863e2243376eeaf8d9f5e93318fc5 Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Sun, 21 Jan 2024 09:23:36 +0100 Subject: [PATCH] add call back data write --- CMakeLists.txt | 3 ++- src/kds_s2000w_handler.c | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) 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); } -- 2.39.5