@@ -3,21 +3,76 @@ package obs
3
3
import (
4
4
"context"
5
5
6
+ "github.com/huaweicloud/huaweicloud-sdk-go-obs/obs"
7
+
8
+ ps "github.com/beyondstorage/go-storage/v4/pairs"
6
9
. "github.com/beyondstorage/go-storage/v4/types"
7
10
)
8
11
9
12
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
11
30
}
12
31
13
32
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
15
39
}
16
40
17
41
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
19
50
}
20
51
21
52
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
23
78
}
0 commit comments