22 #define GENERATE_URL_BODY_PRE_PATH_LIST_LENGTH (sizeof(generate_url_body_pre_path_list) - MCL_NULL_CHAR_SIZE) 23 #define GENERATE_URL_BODY_POST_PATH_LIST_LENGTH (sizeof("]}") - MCL_NULL_CHAR_SIZE) 24 #define GENERATE_URL_BODY_PRE_PATH_OBJECT_LENGTH (sizeof(generate_url_body_pre_path_object) - MCL_NULL_CHAR_SIZE) 25 #define GENERATE_URL_BODY_POST_PATH_OBJECT_LENGTH (sizeof(generate_url_body_post_path_object) - MCL_NULL_CHAR_SIZE) 26 #define SUBTENANT_KEY_LENGTH (sizeof(subtenant_id_key) - MCL_NULL_CHAR_SIZE) 27 #define SUBTENANT_OVERHEAD (SUBTENANT_KEY_LENGTH + sizeof("\"") - MCL_NULL_CHAR_SIZE) 28 #define DELIMITER_LENGTH 1 29 #define SLASH_LENGTH 1 30 #define SINGLE_CHARACTER_SIZE 1 37 const char *object_path,
mcl_size_t compare_size);
56 MCL_DEBUG_ENTRY(
"data_lake_object_t *object_array = <%p>, mcl_size_t array_size = <%lu>, const char *client_id = <%p>, "\
57 "const char *subtenant_id = <%p>, char **json = <%p>", object_array, array_size, client_id, subtenant_id, json);
93 for (index = 0; (index < array_size) && (
MCL_OK == code); ++index)
97 if (
MCL_NULL == object_array[index]->path)
112 position += client_id_length;
119 position += path_length;
135 if (0 != subtenant_id_length)
141 position += subtenant_id_length;
166 MCL_DEBUG_ENTRY(
"data_lake_object_t **object_array = <%p>, mcl_size_t array_size = <%lu>, char *json = <%p>, "\
167 "mcl_size_t json_size = <%lu>, mcl_size_t client_id_length = <%lu>", object_array, array_size, json, json_size, client_id_length);
190 for (index = 0; (index < object_urls_array_size) && (
MCL_OK == code); ++index)
216 if (object_path_length > path_overhead_length)
224 MCL_WARN(
"Received invalid path %s", object_path);
248 *valid_path_count = 0;
250 MCL_DEBUG_ENTRY(
"data_lake_object_array **object_array = <%p>, mcl_size_t array_size = <%lu>, mcl_size_t *valid_path_count = <%p>",
251 object_array, array_size, valid_path_count);
253 for (index = 0; index < array_size; ++index)
255 if (
MCL_NULL == object_array[index]->path)
257 MCL_WARN(
"Data lake object <%p> has no path to request signed URL.", object_array[index]);
261 ++(*valid_path_count);
267 return total_path_size;
271 const char *object_path,
mcl_size_t compare_size)
276 for (object_array_index = 0; (object_array_index < array_size) && (
MCL_OK == code); ++object_array_index)
282 if (
MCL_NULL != object_array[object_array_index]->signed_url)
299 object_array[object_array_index]->
signed_url = signed_url;
314 MCL_DEBUG_ENTRY(
"data_lake_object_t **object_array = <%p>, mcl_size_t array_size = <%lu>", object_array, array_size);
316 for (index = 0; index < array_size; ++index)
318 if ((
MCL_NULL != object_array[index]->path) && (
MCL_NULL == object_array[index]->signed_url))
336 MCL_DEBUG_ENTRY(
"data_lake_object_t **object_array = <%p>, mcl_size_t array_size = <%lu>, mcl_size_t client_id_length = <%lu>, "\
337 "mcl_size_t subtenant_id_length = <%lu>", object_array, array_size, client_id_length, subtenant_id_length);
341 if (0 == valid_path_count)
350 body_size += total_path_length + ((valid_path_count - 1) *
DELIMITER_LENGTH);
352 if (0 != subtenant_id_length)
355 body_size += subtenant_id_length;
#define GENERATE_URL_BODY_POST_PATH_OBJECT_LENGTH
char * signed_url
Signed URL for the object.
static const char signed_url_key[]
static mcl_error_t _find_matching_object(mcl_json_t *object_url_item, data_lake_object_t **object_array, mcl_size_t array_size, const char *object_path, mcl_size_t compare_size)
static const char generate_url_body_post_path_object[]
static const char generate_url_body_pre_path_object[]
static const char generate_url_body_pre_path_list[]
#define SUBTENANT_KEY_LENGTH
#define MCL_DEBUG_ENTRY(...)
MCL_CORE_EXPORT mcl_error_t mcl_json_util_parse(const char *json_string, mcl_size_t buffer_size, mcl_json_t **root)
mcl_error_t data_lake_json_match_signed_urls_with_objects(data_lake_object_t **object_array, mcl_size_t array_size, char *json, mcl_size_t json_size, mcl_size_t client_id_length)
MCL_CORE_EXPORT mcl_size_t mcl_string_util_strlen(const char *buffer)
MCL_CORE_EXPORT void mcl_json_util_destroy(mcl_json_t **root)
mcl_error_t data_lake_json_from_objects(data_lake_object_t **object_array, mcl_size_t array_size, const char *client_id, const char *subtenant_id, char **json)
static const char subtenant_id_key[]
#define SUBTENANT_OVERHEAD
static const char object_path_key[]
MCL_CORE_EXPORT mcl_error_t mcl_json_util_get_object_item(mcl_json_t *json_parent, const char *child_name, mcl_json_t **json_child)
#define GENERATE_URL_BODY_PRE_PATH_OBJECT_LENGTH
MCL_CORE_EXPORT void mcl_string_util_memcpy(void *destination, const void *source, mcl_size_t count)
Data lake json module header file.
#define GENERATE_URL_BODY_POST_PATH_LIST_LENGTH
#define GENERATE_URL_BODY_PRE_PATH_LIST_LENGTH
static mcl_error_t _check_signed_urls(data_lake_object_t **object_array, mcl_size_t array_size)
Could not get signed url for all object paths.
static const char object_urls_key[]
#define MCL_NULL_CHAR_SIZE
#define MCL_MALLOC(bytes)
MCL_CORE_EXPORT mcl_error_t mcl_json_util_get_array_item(mcl_json_t *array, int index, mcl_json_t **item)
#define MCL_DEBUG_LEAVE(...)
MCL_CORE_EXPORT mcl_error_t mcl_string_util_strncmp(const char *string_1, const char *string_2, mcl_size_t count)
static mcl_size_t _calculate_total_path_size(data_lake_object_t **object_array, mcl_size_t array_size, mcl_size_t *valid_path_count)
MCL_CORE_EXPORT mcl_error_t mcl_json_util_get_array_size(mcl_json_t *array, mcl_size_t *size)
static mcl_size_t _data_lake_json_get_body_size_generate_upload_urls(data_lake_object_t **object_array, mcl_size_t array_size, mcl_size_t client_id_length, mcl_size_t subtenant_id_length)
#define SINGLE_CHARACTER_SIZE
MCL_CORE_EXPORT mcl_error_t mcl_json_util_get_string(mcl_json_t *json, char **string_value)