Skip to content

Commit b94483e

Browse files
committed
Pull most of the common code from the "ds3_init_*" functions into
_common_request_init.
1 parent 92f5573 commit b94483e

File tree

1 file changed

+29
-57
lines changed

1 file changed

+29
-57
lines changed

src/ds3.c

Lines changed: 29 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -576,99 +576,71 @@ void ds3_request_set_max_keys(ds3_request* _request, uint32_t max_keys) {
576576
_set_query_param(_request, "max-keys", max_keys_s);
577577
}
578578

579-
static struct _ds3_request* _common_request_init(void){
579+
static struct _ds3_request* _common_request_init(http_verb verb, const char* path_prefix, const char* bucket_name, const char* object_name){
580580
struct _ds3_request* request = g_new0(struct _ds3_request, 1);
581+
char* escaped_bucket_name = NULL;
582+
char* escaped_object_name = NULL;
583+
char* joined_path = NULL;
581584
request->headers = _create_hash_table();
582585
request->query_params = _create_hash_table();
586+
request->verb = verb;
587+
if (bucket_name != NULL) {
588+
escaped_bucket_name = _escape_url(bucket_name);
589+
}
590+
if (object_name != NULL) {
591+
escaped_object_name = _escape_url_object_name(object_name);
592+
}
593+
joined_path = g_strjoin("/", escaped_bucket_name, escaped_object_name, NULL);
594+
request->path = g_strconcat(path_prefix, joined_path, NULL);
595+
g_free(joined_path);
596+
if (escaped_bucket_name != NULL) {
597+
g_free(escaped_bucket_name);
598+
}
599+
if (escaped_object_name != NULL) {
600+
g_free(escaped_object_name);
601+
}
583602
return request;
584603
}
585604

586605
ds3_request* ds3_init_get_service(void) {
587-
struct _ds3_request* request = _common_request_init();
588-
request->verb = HTTP_GET;
589-
request->path = g_new0(char, 2);
590-
request->path [0] = '/';
591-
return (ds3_request*) request;
606+
return (ds3_request*) _common_request_init(HTTP_GET, "/", NULL, NULL);
592607
}
593608

594609
ds3_request* ds3_init_get_bucket(const char* bucket_name) {
595-
struct _ds3_request* request = _common_request_init();
596-
request->verb = HTTP_GET;
597-
gchar* escaped_bucket_name = _escape_url(bucket_name);
598-
request->path = g_strconcat("/", escaped_bucket_name, NULL);
599-
g_free(escaped_bucket_name);
600-
return (ds3_request*) request;
610+
return (ds3_request*) _common_request_init(HTTP_GET, "/", bucket_name, NULL);
601611
}
602612

603613
ds3_request* ds3_init_get_object(const char* bucket_name, const char* object_name) {
604-
struct _ds3_request* request = _common_request_init();
605-
request->verb = HTTP_GET;
606-
gchar* escaped_bucket_name = _escape_url(bucket_name);
607-
gchar* escaped_object_name = _escape_url_object_name(object_name);
608-
request->path = g_strconcat("/", escaped_bucket_name, "/", escaped_object_name, NULL);
609-
g_free(escaped_bucket_name);
610-
g_free(escaped_object_name);
611-
return (ds3_request*) request;
614+
return (ds3_request*) _common_request_init(HTTP_GET, "/", bucket_name, object_name);
612615
}
613616

614617
ds3_request* ds3_init_delete_object(const char* bucket_name, const char* object_name) {
615-
struct _ds3_request* request = _common_request_init();
616-
gchar* escaped_bucket_name = _escape_url(bucket_name);
617-
gchar* escaped_object_name = _escape_url_object_name(object_name);
618-
request->verb = HTTP_DELETE;
619-
request->path = g_strconcat("/", escaped_bucket_name, "/", escaped_object_name, NULL);
620-
g_free(escaped_bucket_name);
621-
g_free(escaped_object_name);
622-
return (ds3_request*) request;
618+
return (ds3_request*) _common_request_init(HTTP_DELETE, "/", bucket_name, object_name);
623619
}
624620

625621
ds3_request* ds3_init_put_object(const char* bucket_name, const char* object_name, uint64_t length) {
626-
struct _ds3_request* request = _common_request_init();
627-
gchar* escaped_bucket_name = _escape_url(bucket_name);
628-
gchar* escaped_object_name = _escape_url_object_name(object_name);
629-
request->verb = HTTP_PUT;
630-
request->path = g_strconcat("/", escaped_bucket_name, "/", escaped_object_name, NULL);
631-
g_free(escaped_bucket_name);
632-
g_free(escaped_object_name);
622+
struct _ds3_request* request = _common_request_init(HTTP_PUT, "/", bucket_name, object_name);
633623
request->length = length;
634624
return (ds3_request*) request;
635625
}
636626

637627
ds3_request* ds3_init_put_bucket(const char* bucket_name) {
638-
struct _ds3_request* request = _common_request_init();
639-
gchar* escaped_bucket_name = _escape_url(bucket_name);
640-
request->verb = HTTP_PUT;
641-
request->path = g_strconcat("/", escaped_bucket_name, NULL);
642-
g_free(escaped_bucket_name);
643-
return (ds3_request*) request;
628+
return (ds3_request*) _common_request_init(HTTP_PUT, "/", bucket_name, NULL);
644629
}
645630

646631
ds3_request* ds3_init_delete_bucket(const char* bucket_name) {
647-
struct _ds3_request* request = _common_request_init();
648-
gchar* escaped_bucket_name = _escape_url(bucket_name);
649-
request->verb = HTTP_DELETE;
650-
request->path = g_strconcat("/", escaped_bucket_name, NULL);
651-
g_free(escaped_bucket_name);
652-
return (ds3_request*) request;
632+
return (ds3_request*) _common_request_init(HTTP_DELETE, "/", bucket_name, NULL);
653633
}
654634

655635
ds3_request* ds3_init_get_bulk(const char* bucket_name, ds3_bulk_object_list* object_list) {
656-
struct _ds3_request* request = _common_request_init();
657-
gchar* escaped_bucket_name = _escape_url(bucket_name);
658-
request->verb = HTTP_PUT;
659-
request->path = g_strconcat("/_rest_/bucket/", escaped_bucket_name, NULL);
660-
g_free(escaped_bucket_name);
636+
struct _ds3_request* request = _common_request_init(HTTP_PUT, "/_rest_/bucket/", bucket_name, NULL);
661637
_set_query_param((ds3_request*) request, "operation", "start_bulk_get");
662638
request->object_list = object_list;
663639
return (ds3_request*) request;
664640
}
665641

666642
ds3_request* ds3_init_put_bulk(const char* bucket_name, ds3_bulk_object_list* object_list) {
667-
struct _ds3_request* request = _common_request_init();
668-
gchar* escaped_bucket_name = _escape_url(bucket_name);
669-
request->verb = HTTP_PUT;
670-
request->path = g_strconcat("/_rest_/bucket/", escaped_bucket_name, NULL);
671-
g_free(escaped_bucket_name);
643+
struct _ds3_request* request = _common_request_init(HTTP_PUT, "/_rest_/bucket/", bucket_name, NULL);
672644
_set_query_param((ds3_request*) request, "operation", "start_bulk_put");
673645
request->object_list = object_list;
674646
return (ds3_request*) request;

0 commit comments

Comments
 (0)