-
-
Notifications
You must be signed in to change notification settings - Fork 178
/
buckets.go
67 lines (58 loc) · 2.17 KB
/
buckets.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package storage
import (
"context"
"net/http"
"github.com/supabase/cli/pkg/fetcher"
)
type BucketResponse struct {
Id string `json:"id"` // "test"
Name string `json:"name"` // "test"
Owner string `json:"owner"` // ""
Public bool `json:"public"` // true
FileSizeLimit *int `json:"file_size_limit"` // null
AllowedMimeTypes []string `json:"allowed_mime_types"` // null
CreatedAt string `json:"created_at"` // "2023-10-13T17:48:58.491Z"
UpdatedAt string `json:"updated_at"` // "2023-10-13T17:48:58.491Z"
}
func (s *StorageAPI) ListBuckets(ctx context.Context) ([]BucketResponse, error) {
resp, err := s.Send(ctx, http.MethodGet, "/storage/v1/bucket", nil)
if err != nil {
return nil, err
}
defer resp.Body.Close()
data, err := fetcher.ParseJSON[[]BucketResponse](resp.Body)
if err != nil {
return nil, err
}
return *data, nil
}
type CreateBucketRequest struct {
Name string `json:"name"` // "string",
Id string `json:"id,omitempty"` // "string",
Public bool `json:"public,omitempty"` // false,
FileSizeLimit int `json:"file_size_limit,omitempty"` // 0,
AllowedMimeTypes []string `json:"allowed_mime_types,omitempty"` // ["string"]
}
type CreateBucketResponse struct {
Name string `json:"name"`
}
func (s *StorageAPI) CreateBucket(ctx context.Context, bucketName string) (*CreateBucketResponse, error) {
body := CreateBucketRequest{Name: bucketName}
resp, err := s.Send(ctx, http.MethodPost, "/storage/v1/bucket", body)
if err != nil {
return nil, err
}
defer resp.Body.Close()
return fetcher.ParseJSON[CreateBucketResponse](resp.Body)
}
type DeleteBucketResponse struct {
Message string `json:"message"`
}
func (s *StorageAPI) DeleteBucket(ctx context.Context, bucketId string) (*DeleteBucketResponse, error) {
resp, err := s.Send(ctx, http.MethodDelete, "/storage/v1/bucket/"+bucketId, nil)
if err != nil {
return nil, err
}
defer resp.Body.Close()
return fetcher.ParseJSON[DeleteBucketResponse](resp.Body)
}