void _get_current_metadata(handler* h)
{
debug_printf(ALL, "get_current_metadata");
- json_object* metadataResp = NULL;
json_object* metadata = NULL;
- json_object* mdata_value = NULL;
json_object* config = NULL;
blobdata* jpg_image = NULL;
blobdata* pnm_image = NULL;
- response* resp = NULL;
-
- resp = kds_s2000w_client_response_init();
- kds_s2000w_client_get_metadata(h->sessionid, h->current_scan_status->current_image_number, resp);
- if (resp->error_size > 0)
- fprintf(stderr, "%s\n", resp->error_status);
+ image_metadata* mdata = NULL;
- if (resp->code != 200) {
- h->current_metadata->valid = 0;
- kds_s2000w_client_response_free(resp);
- resp = NULL;
- return;
- }
+ mdata = malloc(sizeof(image_metadata));
h->current_metadata->valid = 0;
h->current_metadata->channels = 1;
- metadataResp = json_tokener_parse(resp->data);
- metadata = json_object_object_get(metadataResp, "Metadata");
- mdata_value = json_object_object_get(metadata, "BitDepth");
- h->current_metadata->depth = json_object_get_int(mdata_value);
- mdata_value = NULL;
-
- mdata_value = json_object_object_get(metadata, "ImageWidth");
- h->current_metadata->pixels_per_line = json_object_get_int(mdata_value);
- mdata_value = NULL;
-
- mdata_value = json_object_object_get(metadata, "ImageHeight");
- h->current_metadata->lines = json_object_get_int(mdata_value);
- mdata_value = NULL;
-
- json_object_put(metadataResp);
- metadata = NULL;
config = json_object_object_get(h->current_scanner_config, "Configuration");
metadata = json_object_object_get(config, "ColorMode");
const char* color_value = json_object_get_string(metadata);
- mdata_value = NULL;
if (strcmp(color_value, "Color") == 0)
h->current_metadata->format = 1;
jpg_image = (blobdata*) h->jpg_image;
pnm_image = (blobdata*) h->pnm_image;
+
+ kds_s2000w_metadata_from_image(jpg_image, mdata);
+ h->current_metadata->depth = mdata->depth;
+ h->current_metadata->pixels_per_line = mdata->width;
+ h->current_metadata->lines = mdata->height;
+
if (h->current_metadata->depth > 8) {
h->current_metadata->depth = 8;
kds_s2000w_convert_jpg_to_pnm_with_depth(jpg_image, pnm_image, h->current_metadata->depth);
h->current_metadata->is_last = 1;
metadata = NULL;
- kds_s2000w_client_response_free(resp);
- resp = NULL;
+ free(mdata);
+ mdata = NULL;
}
void _delete_current_image(handler* h)
will_return(__wrap_kds_s2000w_client_status_session, 0);
will_return(mock_response, response_list[2]);
will_return(__wrap_kds_s2000w_client_get_image, 0);
- will_return(mock_response, response_list[1]);
- will_return(__wrap_kds_s2000w_client_get_metadata, 0);
will_return(mock_response, response_list[0]);
will_return(__wrap_kds_s2000w_client_delete_image, 0);
expect_function_call(__wrap_kds_s2000w_client_start_scan);
expect_function_call(__wrap_kds_s2000w_client_status_session);
expect_function_call(__wrap_kds_s2000w_client_get_image);
- expect_function_call(__wrap_kds_s2000w_client_get_metadata);
expect_function_call(__wrap_kds_s2000w_client_delete_image);
handler* h = init_handler();
const char* test_config = "{\"Configuration\": { \"ColorMode\": \"Color\" } }";
assert_int_equal(h->current_metadata->depth, 8);
assert_int_equal(h->current_metadata->channels, 3);
assert_int_equal(h->current_metadata->format, 1);
- assert_int_equal(h->current_metadata->pixels_per_line, 1920);
- assert_int_equal(h->current_metadata->lines, 1080);
+ assert_int_equal(h->current_metadata->pixels_per_line, 2);
+ assert_int_equal(h->current_metadata->lines, 1);
assert_int_equal(h->current_metadata->valid, 1);
assert_int_equal(h->current_metadata->is_last, 1);
will_return(__wrap_kds_s2000w_client_status_session, 0);
will_return(mock_response, response_list[2]);
will_return(__wrap_kds_s2000w_client_get_image, 0);
- will_return(mock_response, response_list[1]);
- will_return(__wrap_kds_s2000w_client_get_metadata, 0);
will_return(mock_response, response_list[0]);
will_return(__wrap_kds_s2000w_client_delete_image, 0);
response* resp_open_session = kds_s2000w_client_response_init();
expect_function_call(__wrap_kds_s2000w_client_start_scan);
expect_function_call(__wrap_kds_s2000w_client_status_session);
expect_function_call(__wrap_kds_s2000w_client_get_image);
- expect_function_call(__wrap_kds_s2000w_client_get_metadata);
expect_function_call(__wrap_kds_s2000w_client_delete_image);
expect_function_call(__wrap_kds_s2000w_client_close_session);
expect_function_call(__wrap_kds_s2000w_client_open_session);
assert_int_equal(h->current_metadata->depth, 8);
assert_int_equal(h->current_metadata->channels, 3);
assert_int_equal(h->current_metadata->format, 1);
- assert_int_equal(h->current_metadata->pixels_per_line, 1920);
- assert_int_equal(h->current_metadata->lines, 1080);
+ assert_int_equal(h->current_metadata->pixels_per_line, 2);
+ assert_int_equal(h->current_metadata->lines, 1);
assert_int_equal(h->current_metadata->valid, 1);
assert_int_equal(h->current_metadata->is_last, 1);
will_return(__wrap_kds_s2000w_client_status_session, 0);
will_return(mock_response, response_list[2]);
will_return(__wrap_kds_s2000w_client_get_image, 0);
- will_return(mock_response, response_list[1]);
- will_return(__wrap_kds_s2000w_client_get_metadata, 0);
will_return(mock_response, response_list[0]);
will_return(__wrap_kds_s2000w_client_delete_image, 0);
response* resp_open_session = kds_s2000w_client_response_init();
expect_function_call(__wrap_kds_s2000w_client_start_scan);
expect_function_call(__wrap_kds_s2000w_client_status_session);
expect_function_call(__wrap_kds_s2000w_client_get_image);
- expect_function_call(__wrap_kds_s2000w_client_get_metadata);
expect_function_call(__wrap_kds_s2000w_client_delete_image);
expect_function_call(__wrap_kds_s2000w_client_close_session);
expect_function_call(__wrap_kds_s2000w_client_open_session);
assert_int_equal(h->current_metadata->depth, 8);
assert_int_equal(h->current_metadata->channels, 3);
assert_int_equal(h->current_metadata->format, 1);
- assert_int_equal(h->current_metadata->pixels_per_line, 1920);
- assert_int_equal(h->current_metadata->lines, 1080);
+ assert_int_equal(h->current_metadata->pixels_per_line, 2);
+ assert_int_equal(h->current_metadata->lines, 1);
assert_int_equal(h->current_metadata->valid, 1);
assert_int_equal(h->current_metadata->is_last, 1);
will_return(__wrap_kds_s2000w_client_status_session, 0);
will_return(mock_response, response_list[2]);
will_return(__wrap_kds_s2000w_client_get_image, 0);
- will_return(mock_response, response_list[1]);
- will_return(__wrap_kds_s2000w_client_get_metadata, 0);
will_return(mock_response, response_list[0]);
will_return(__wrap_kds_s2000w_client_delete_image, 0);
response* resp_stop_scan = kds_s2000w_client_response_init();
expect_function_call(__wrap_kds_s2000w_client_start_scan);
expect_function_call(__wrap_kds_s2000w_client_status_session);
expect_function_call(__wrap_kds_s2000w_client_get_image);
- expect_function_call(__wrap_kds_s2000w_client_get_metadata);
expect_function_call(__wrap_kds_s2000w_client_delete_image);
expect_function_call(__wrap_kds_s2000w_client_stop_scan);
will_return(__wrap_kds_s2000w_client_status_session, 0);
will_return(mock_response, response_list[2]);
will_return(__wrap_kds_s2000w_client_get_image, 0);
- will_return(mock_response, response_list[1]);
- will_return(__wrap_kds_s2000w_client_get_metadata, 0);
will_return(mock_response, response_list[0]);
will_return(__wrap_kds_s2000w_client_delete_image, 0);
response* resp_open_session = kds_s2000w_client_response_init();
will_return(__wrap_kds_s2000w_client_set_option, 0);
expect_function_call(__wrap_kds_s2000w_client_status_session);
expect_function_call(__wrap_kds_s2000w_client_get_image);
- expect_function_call(__wrap_kds_s2000w_client_get_metadata);
expect_function_call(__wrap_kds_s2000w_client_delete_image);
expect_function_call(__wrap_kds_s2000w_client_close_session);
expect_function_call(__wrap_kds_s2000w_client_open_session);
assert_int_equal(h->current_metadata->depth, 8);
assert_int_equal(h->current_metadata->channels, 3);
assert_int_equal(h->current_metadata->format, 1);
- assert_int_equal(h->current_metadata->pixels_per_line, 1920);
- assert_int_equal(h->current_metadata->lines, 1080);
+ assert_int_equal(h->current_metadata->pixels_per_line, 2);
+ assert_int_equal(h->current_metadata->lines, 1);
assert_int_equal(h->current_metadata->valid, 1);
assert_int_equal(h->current_metadata->is_last, 1);
will_return(__wrap_kds_s2000w_client_status_session, 0);
will_return(mock_response, response_list[2]);
will_return(__wrap_kds_s2000w_client_get_image, 0);
- will_return(mock_response, response_list[1]);
- will_return(__wrap_kds_s2000w_client_get_metadata, 0);
will_return(mock_response, response_list[0]);
will_return(__wrap_kds_s2000w_client_delete_image, 0);
expect_function_call(__wrap_kds_s2000w_client_start_scan);
expect_function_call(__wrap_kds_s2000w_client_status_session);
expect_function_call(__wrap_kds_s2000w_client_get_image);
- expect_function_call(__wrap_kds_s2000w_client_get_metadata);
expect_function_call(__wrap_kds_s2000w_client_delete_image);
handler* h = init_handler();
will_return(__wrap_kds_s2000w_client_status_session, 0);
will_return(mock_response, response_list[2]);
will_return(__wrap_kds_s2000w_client_get_image, 0);
- will_return(mock_response, response_list[1]);
- will_return(__wrap_kds_s2000w_client_get_metadata, 0);
will_return(mock_response, response_list[0]);
will_return(__wrap_kds_s2000w_client_delete_image, 0);
response* resp_open_session = kds_s2000w_client_response_init();
will_return(__wrap_kds_s2000w_client_set_option, 0);
expect_function_call(__wrap_kds_s2000w_client_status_session);
expect_function_call(__wrap_kds_s2000w_client_get_image);
- expect_function_call(__wrap_kds_s2000w_client_get_metadata);
expect_function_call(__wrap_kds_s2000w_client_delete_image);
expect_function_call(__wrap_kds_s2000w_client_close_session);
expect_function_call(__wrap_kds_s2000w_client_open_session);
assert_int_equal(h->current_metadata->depth, 8);
assert_int_equal(h->current_metadata->channels, 3);
assert_int_equal(h->current_metadata->format, 1);
- assert_int_equal(h->current_metadata->pixels_per_line, 1920);
- assert_int_equal(h->current_metadata->lines, 1080);
+ assert_int_equal(h->current_metadata->pixels_per_line, 2);
+ assert_int_equal(h->current_metadata->lines, 1);
assert_int_equal(h->current_metadata->valid, 1);
assert_int_equal(h->current_metadata->is_last, 1);