Skip to content
This repository was archived by the owner on Oct 22, 2021. It is now read-only.

Commit 35ffbc6

Browse files
authored
feat: Initial Implementation of Servicer (#5)
1 parent f0e5a95 commit 35ffbc6

File tree

2 files changed

+65
-4
lines changed

2 files changed

+65
-4
lines changed

iterator.go

+6
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,9 @@ type objectPageStatus struct {
1010
func (i *objectPageStatus) ContinuationToken() string {
1111
return i.marker
1212
}
13+
14+
type storagePageStatus struct{}
15+
16+
func (i *storagePageStatus) ContinuationToken() string {
17+
return ""
18+
}

service.go

+59-4
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,76 @@ package obs
33
import (
44
"context"
55

6+
"github.com/huaweicloud/huaweicloud-sdk-go-obs/obs"
7+
8+
ps "github.com/beyondstorage/go-storage/v4/pairs"
69
. "github.com/beyondstorage/go-storage/v4/types"
710
)
811

912
func (s *Service) create(ctx context.Context, name string, opt pairServiceCreate) (store Storager, err error) {
10-
panic("not implemented")
13+
pairs := append(opt.pairs, ps.WithName(name))
14+
15+
st, err := s.newStorage(pairs...)
16+
if err != nil {
17+
return nil, err
18+
}
19+
20+
input := &obs.CreateBucketInput{
21+
Bucket: name,
22+
}
23+
24+
_, err = s.service.CreateBucket(input)
25+
if err != nil {
26+
return nil, err
27+
}
28+
29+
return st, nil
1130
}
1231

1332
func (s *Service) delete(ctx context.Context, name string, opt pairServiceDelete) (err error) {
14-
panic("not implemented")
33+
_, err = s.service.DeleteBucket(name)
34+
if err != nil {
35+
return err
36+
}
37+
38+
return nil
1539
}
1640

1741
func (s *Service) get(ctx context.Context, name string, opt pairServiceGet) (store Storager, err error) {
18-
panic("not implemented")
42+
pairs := append(opt.pairs, ps.WithName(name))
43+
44+
st, err := s.newStorage(pairs...)
45+
if err != nil {
46+
return nil, err
47+
}
48+
49+
return st, nil
1950
}
2051

2152
func (s *Service) list(ctx context.Context, opt pairServiceList) (sti *StoragerIterator, err error) {
22-
panic("not implemented")
53+
input := &storagePageStatus{}
54+
55+
return NewStoragerIterator(ctx, s.nexStoragePage, input), nil
56+
}
57+
58+
func (s *Service) nexStoragePage(ctx context.Context, page *StoragerPage) error {
59+
input := &obs.ListBucketsInput{
60+
QueryLocation: true,
61+
}
62+
63+
output, err := s.service.ListBuckets(input)
64+
if err != nil {
65+
return err
66+
}
67+
68+
for _, v := range output.Buckets {
69+
store, err := s.newStorage(ps.WithName(v.Name))
70+
if err != nil {
71+
return err
72+
}
73+
74+
page.Data = append(page.Data, store)
75+
}
76+
77+
return IterateDone
2378
}

0 commit comments

Comments
 (0)