curl_free(url);
url = NULL;
+ return result;
+}
+
+int kds_s2000w_client_set_option(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/configuration", 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_CUSTOMREQUEST, "PUT");
+ curl_easy_setopt(curl, CURLOPT_POSTFIELDS, response->data);
+ curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, response->size);
+ 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;
}
\ No newline at end of file
int kds_s2000w_client_open_session(const char* username, response* response);
void kds_s2000w_client_close_session(int64_t sessionid);
int kds_s2000w_client_get_option(int64_t sessionid, response* response);
+int kds_s2000w_client_set_option(int64_t sessionid, response* response);
#endif
\ No newline at end of file
#include "kds_s2000w_handler.h"
#include "kds_s2000w_client.h"
+response* resp = NULL;
current_state* state = NULL;
json_object* resObj = NULL;
json_object* config = NULL;
if(!curl)
return state;
- response* resp = kds_s2000w_client_response_init();
+ resp = kds_s2000w_client_response_init();
int result = kds_s2000w_client_open_session("hhaalo", resp);
if (result != 0 || resp->code == 404)
json_object_put(resObj);
resObj = NULL;
- kds_s2000w_client_response_free(resp);
+ printf("sessionid: %li\n", state->sessionid);
return state;
}
state = NULL;
json_object_put(resObj);
resObj = NULL;
+ kds_s2000w_client_response_free(resp);
}
current_state* kds_s2000w_handler_current_state()
json_object* value_object = NULL;
switch(option) {
case 0:
- response* resp = kds_s2000w_client_response_init();
+ resp = kds_s2000w_client_response_init();
int result = kds_s2000w_client_get_option(state->sessionid, resp);
resObj = json_tokener_parse(resp->data);
config = json_object_object_get(resObj, "Configuration");
return;
}
- kds_s2000w_client_response_free(resp);
- resp = NULL;
-
int* int_value_ptr = (int*) value;
*int_value_ptr = json_object_object_length(config) + 1;
break;
default:
break;
}
+
+ const char* json_string = json_object_to_json_string_ext(resObj, JSON_C_TO_STRING_PLAIN);
+ resp->data = (char*) json_string;
+ resp->size = sizeof(char) * strlen(json_string);
+ resp->code = 0;
+ kds_s2000w_client_set_option(state->sessionid, resp);
}
void kds_s2000w_handler_set_option_auto(int option)