From d4ed4eb9a2ca736b63207fc8ad2d7dbb15d5e7e2 Mon Sep 17 00:00:00 2001 From: Derrick Hammer Date: Mon, 15 Jan 2024 14:25:12 -0500 Subject: [PATCH] fic: add createBucketIfNotExists helper --- storage/storage.go | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/storage/storage.go b/storage/storage.go index e5643b0..6dee617 100644 --- a/storage/storage.go +++ b/storage/storage.go @@ -42,6 +42,11 @@ func (s StorageServiceImpl) PutFile(file io.ReadSeeker, bucket string, generateP buf.Reset() + err = s.createBucketIfNotExists(bucket) + if err != nil { + return nil, err + } + resp, err := s.httpApi.R(). SetPathParam("path", hashStr). SetFormData(map[string]string{ @@ -69,3 +74,33 @@ func (s *StorageServiceImpl) Init() { s.httpApi = client } +func (s *StorageServiceImpl) createBucketIfNotExists(bucket string) error { + resp, err := s.httpApi.R(). + SetPathParam("bucket", bucket). + Get("/api/bus/bucket/{bucket}") + + if err != nil { + return err + } + + if resp.StatusCode() != 404 { + if resp.IsError() && resp.Error() != nil { + return resp.Error().(error) + } + } else { + resp, err := s.httpApi.R(). + SetBody(map[string]string{ + "bucket": bucket, + }). + Post("/api/bus/bucket") + if err != nil { + return err + } + + if resp.IsError() && resp.Error() != nil { + return resp.Error().(error) + } + } + + return nil +}