@@ -125,6 +125,22 @@ func (c *StorageApiClient) performBinaryGetRequest(endpoint, token string) (*htt
125
125
return res , nil
126
126
}
127
127
128
+ func (c * StorageApiClient ) performBinaryPostRequest (endpoint , token string , body io.Reader ) (* http.Response , error ) {
129
+ req , err := http .NewRequest ("POST" , endpoint , body )
130
+ if err != nil {
131
+ return nil , err
132
+ }
133
+ req .Header .Add ("Authorization" , "Bearer " + token )
134
+ if c .organization != "" {
135
+ req .Header .Add ("X-Organization" , c .organization )
136
+ }
137
+ res , err := c .client .Do (req )
138
+ if err != nil {
139
+ return nil , err
140
+ }
141
+ return res , nil
142
+ }
143
+
128
144
func (c * StorageApiClient ) ImportCustomTemplate (templateFile string ) (* ImportCustomTemplateResponse , error ) {
129
145
130
146
if templateFile == "" {
@@ -273,3 +289,58 @@ func extractFileNameFromHeader(res *http.Response) string {
273
289
}
274
290
return ""
275
291
}
292
+
293
+ type listPostRequest struct {
294
+ Sort string `json:"sort"`
295
+ }
296
+
297
+ func (c * StorageApiClient ) ListCustomTemplate () (* TemplatesListResponse , error ) {
298
+ userRequestToken , err := c .src .Token ()
299
+ if err != nil {
300
+ if strings .Contains (err .Error (), "401" ) {
301
+ return nil , errors .New ("wrong credentials" )
302
+ }
303
+ return nil , fmt .Errorf ("cannot retrieve a valid token: %w" , err )
304
+ }
305
+
306
+ request := listPostRequest {
307
+ Sort : "asc" ,
308
+ }
309
+ jsonRequest , err := json .Marshal (request )
310
+ if err != nil {
311
+ return nil , err
312
+ }
313
+
314
+ endpoint := c .host + "/storage/template/v1/list"
315
+ res , err := c .performBinaryPostRequest (endpoint , userRequestToken .AccessToken , bytes .NewReader (jsonRequest ))
316
+ if err != nil {
317
+ return nil , err
318
+ }
319
+ defer res .Body .Close ()
320
+
321
+ logrus .Debugf ("List templates API call status: %d" , res .StatusCode )
322
+
323
+ if res .StatusCode == 200 || res .StatusCode == 201 {
324
+ var templatesListResponse TemplatesListResponse
325
+ respBytes , err := io .ReadAll (res .Body )
326
+ if err != nil {
327
+ return nil , err
328
+ }
329
+ err = json .Unmarshal (respBytes , & templatesListResponse )
330
+ if err != nil {
331
+ return nil , err
332
+ }
333
+ return & templatesListResponse , nil
334
+ } else if res .StatusCode == 400 {
335
+ bodyb , _ := io .ReadAll (res .Body )
336
+ return nil , fmt .Errorf ("bad request: %s" , string (bodyb ))
337
+ } else if res .StatusCode == 401 {
338
+ return nil , errors .New ("unauthorized request" )
339
+ } else if res .StatusCode == 403 {
340
+ return nil , errors .New ("forbidden request" )
341
+ } else if res .StatusCode == 500 {
342
+ return nil , errors .New ("internal server error" )
343
+ }
344
+
345
+ return nil , err
346
+ }
0 commit comments