Skip to content

Commit ddf8ec1

Browse files
committed
Pull most of the common code from the "ds3_init_*" functions into
_common_request_init.
1 parent 126aed4 commit ddf8ec1

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
@@ -577,99 +577,71 @@ void ds3_request_set_max_keys(ds3_request* _request, uint32_t max_keys) {
577577
_set_query_param(_request, "max-keys", max_keys_s);
578578
}
579579

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

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

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

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

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

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

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

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

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

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

0 commit comments

Comments
 (0)