@@ -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
587606ds3_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
595610ds3_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
604614ds3_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
615618ds3_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
626622ds3_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
638628ds3_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
647632ds3_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
656636ds3_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
667643ds3_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