11package storage_go
22
33import (
4- "bytes"
54 "encoding/json"
6- "io"
75 "net/http"
86)
97
10- func (c * Client ) ListBuckets () ([]Bucket , BucketResponseError ) {
11- res , err := c .session .Get (c .clientTransport .baseUrl .String () + "/bucket" )
8+ // ListBuckets retrieves the details of all Storage buckets within an existing project.
9+ func (c * Client ) ListBuckets () ([]Bucket , error ) {
10+ bucketsURL := c .clientTransport .baseUrl .String () + "/bucket"
11+ req , err := c .NewRequest (http .MethodGet , bucketsURL , nil )
1212 if err != nil {
13- panic ( err )
13+ return nil , err
1414 }
1515
16- defer func (Body io.ReadCloser ) {
17- err := Body .Close ()
18- if err != nil {
19- panic (err )
20- }
21- }(res .Body )
22-
23- body , err := io .ReadAll (res .Body )
16+ var buckets []Bucket
17+ _ , err = c .Do (req , & buckets )
2418 if err != nil {
25- panic ( err )
19+ return nil , err
2620 }
2721
28- var data []Bucket
29- err = json .Unmarshal (body , & data )
30-
31- var respError BucketResponseError
32- err = json .Unmarshal (body , & respError )
33-
34- return data , respError
22+ return buckets , nil
3523}
3624
37- func (c * Client ) GetBucket (id string ) (Bucket , BucketResponseError ) {
38- res , err := c .session .Get (c .clientTransport .baseUrl .String () + "/bucket/" + id )
25+ // GetBucket retrieves the details of an existing Storage bucket.
26+ func (c * Client ) GetBucket (id string ) (Bucket , error ) {
27+ bucketURL := c .clientTransport .baseUrl .String () + "/bucket/" + id
28+ req , err := c .NewRequest (http .MethodGet , bucketURL , nil )
3929 if err != nil {
40- panic ( err )
30+ return Bucket {}, err
4131 }
4232
43- body , err := io . ReadAll ( res . Body )
44- var data Bucket
45- var error_ BucketResponseError
46- err = json . Unmarshal ( body , & data )
47- err = json . Unmarshal ( body , & error_ )
33+ var bucket Bucket
34+ _ , err = c . Do ( req , & bucket )
35+ if err != nil {
36+ return Bucket {}, err
37+ }
4838
49- return data , error_
39+ return bucket , nil
5040}
5141
52- func (c * Client ) CreateBucket (id string , options BucketOptions ) (Bucket , BucketResponseError ) {
42+ // CreateBucket creates a new Storage bucket
43+ // options.public The visibility of the bucket. Public buckets don't require an authorization token to download objects, but still require a valid token for all other operations. By default, buckets are private.
44+ // options.fileSizeLimit The maximum file size in bytes allowed in the bucket. By default, there is no limit.
45+ // options.allowedMimeTypes The list of allowed MIME types. By default, all MIME types are allowed.
46+ // return newly created bucket id
47+ func (c * Client ) CreateBucket (id string , options BucketOptions ) (Bucket , error ) {
48+ createBucketURL := c .clientTransport .baseUrl .String () + "/bucket"
5349 bodyData := map [string ]interface {}{
5450 "id" : id ,
5551 "name" : id ,
@@ -63,25 +59,28 @@ func (c *Client) CreateBucket(id string, options BucketOptions) (Bucket, BucketR
6359 if len (options .AllowedMimeTypes ) > 0 {
6460 bodyData ["allowed_mime_types" ] = options .AllowedMimeTypes
6561 }
66- jsonBody , _ := json .Marshal (bodyData )
67- res , err := c .session .Post (c .clientTransport .baseUrl .String ()+ "/bucket" ,
68- "application/json" ,
69- bytes .NewBuffer (jsonBody ))
62+ // jsonBody, _ := json.Marshal(bodyData)
63+ req , err := c .NewRequest (http .MethodPost , createBucketURL , & bodyData )
7064 if err != nil {
71- panic ( err )
65+ return Bucket {}, err
7266 }
7367
74- body , err := io .ReadAll (res .Body )
75- var data Bucket
76- var error_ BucketResponseError
77- err = json .Unmarshal (body , & data )
78- data .Public = options .Public
79- err = json .Unmarshal (body , & error_ )
68+ var bucket Bucket
69+ _ , err = c .Do (req , & bucket )
70+ if err != nil {
71+ return Bucket {}, err
72+ }
8073
81- return data , error_
74+ return bucket , nil
8275}
8376
84- func (c * Client ) UpdateBucket (id string , options BucketOptions ) (MessageResponse , BucketResponseError ) {
77+ // UpdateBucket creates a new Storage bucket
78+ // options.public The visibility of the bucket. Public buckets don't require an authorization token to download objects, but still require a valid token for all other operations. By default, buckets are private.
79+ // options.fileSizeLimit The maximum file size in bytes allowed in the bucket. By default, there is no limit.
80+ // options.allowedMimeTypes The list of allowed MIME types. By default, all MIME types are allowed.
81+ // return newly updated bucket id
82+ func (c * Client ) UpdateBucket (id string , options BucketOptions ) (MessageResponse , error ) {
83+ bucketURL := c .clientTransport .baseUrl .String () + "/bucket/" + id
8584 bodyData := map [string ]interface {}{
8685 "id" : id ,
8786 "name" : id ,
@@ -95,51 +94,45 @@ func (c *Client) UpdateBucket(id string, options BucketOptions) (MessageResponse
9594 if len (options .AllowedMimeTypes ) > 0 {
9695 bodyData ["allowed_mime_types" ] = options .AllowedMimeTypes
9796 }
98- jsonBody , _ := json .Marshal (bodyData )
99- request , err := http .NewRequest (http .MethodPut , c .clientTransport .baseUrl .String ()+ "/bucket/" + id , bytes .NewBuffer (jsonBody ))
100- res , err := c .session .Do (request )
97+ req , err := c .NewRequest (http .MethodPut , bucketURL , & bodyData )
10198 if err != nil {
102- panic (err )
99+ return MessageResponse {}, err
100+ }
101+ var message MessageResponse
102+ _ , err = c .Do (req , & message )
103+ if err != nil {
104+ return MessageResponse {}, err
103105 }
104106
105- body , err := io .ReadAll (res .Body )
106- var data MessageResponse
107- var error_ BucketResponseError
108- err = json .Unmarshal (body , & data )
109- err = json .Unmarshal (body , & error_ )
110-
111- return data , error_
107+ return message , nil
112108}
113109
114- func (c * Client ) EmptyBucket (id string ) (MessageResponse , BucketResponseError ) {
110+ // EmptyBucket removes all objects inside a single bucket.
111+ func (c * Client ) EmptyBucket (id string ) (MessageResponse , error ) {
112+ bucketURL := c .clientTransport .baseUrl .String () + "/bucket/" + id + "/empty"
115113 jsonBody , _ := json .Marshal (map [string ]interface {}{})
116- res , err := c .session . Post ( c . clientTransport . baseUrl . String () + "/bucket/" + id + "/empty" , "application/json" , bytes . NewBuffer ( jsonBody ) )
114+ req , err := c .NewRequest ( http . MethodPost , bucketURL , & jsonBody )
117115 if err != nil {
118- panic ( err )
116+ return MessageResponse {}, err
119117 }
120118
121- body , err := io .ReadAll (res .Body )
122- var data MessageResponse
123- var error_ BucketResponseError
124- err = json .Unmarshal (body , & data )
125- err = json .Unmarshal (body , & error_ )
119+ var message MessageResponse
120+ _ , err = c .Do (req , & message )
126121
127- return data , error_
122+ return message , err
128123}
129124
130- func (c * Client ) DeleteBucket (id string ) (MessageResponse , BucketResponseError ) {
125+ // DeleteBucket deletes an existing bucket. A bucket must be empty before it can be deleted.
126+ func (c * Client ) DeleteBucket (id string ) (MessageResponse , error ) {
127+ bucketURL := c .clientTransport .baseUrl .String () + "/bucket/" + id
131128 jsonBody , _ := json .Marshal (map [string ]interface {}{})
132- request , err := http .NewRequest (http .MethodDelete , c .clientTransport .baseUrl .String ()+ "/bucket/" + id , bytes .NewBuffer (jsonBody ))
133- res , err := c .session .Do (request )
129+ req , err := c .NewRequest (http .MethodDelete , bucketURL , & jsonBody )
134130 if err != nil {
135- panic ( err )
131+ return MessageResponse {}, err
136132 }
137133
138- body , err := io .ReadAll (res .Body )
139- var data MessageResponse
140- var error_ BucketResponseError
141- err = json .Unmarshal (body , & data )
142- err = json .Unmarshal (body , & error_ )
134+ var message MessageResponse
135+ _ , err = c .Do (req , & message )
143136
144- return data , error_
137+ return message , err
145138}
0 commit comments