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