@@ -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
586605ds3_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
594609ds3_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
603613ds3_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
614617ds3_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
625621ds3_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
637627ds3_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
646631ds3_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
655635ds3_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
666642ds3_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