/
s3key.go
129 lines (115 loc) · 3.72 KB
/
s3key.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package resources
import (
"context"
"github.com/ionos-cloud/ionosctl/pkg/config"
"github.com/fatih/structs"
ionoscloud "github.com/ionos-cloud/sdk-go/v6"
)
type S3Key struct {
ionoscloud.S3Key
}
type S3Keys struct {
ionoscloud.S3Keys
}
// S3KeysService is a wrapper around ionoscloud.S3Key
type S3KeysService interface {
List(userId string, params ListQueryParams) (S3Keys, *Response, error)
Get(userId, keyId string, params QueryParams) (*S3Key, *Response, error)
Create(userId string, params QueryParams) (*S3Key, *Response, error)
Update(userId, keyId string, key S3Key, params QueryParams) (*S3Key, *Response, error)
Delete(userId, keyId string, params QueryParams) (*Response, error)
}
type s3KeysService struct {
client *ionoscloud.APIClient
context context.Context
}
var _ S3KeysService = &s3KeysService{}
func NewS3KeyService(client *config.Client, ctx context.Context) S3KeysService {
return &s3KeysService{
client: client.CloudClient,
context: ctx,
}
}
func (s *s3KeysService) List(userId string, params ListQueryParams) (S3Keys, *Response, error) {
req := s.client.UserS3KeysApi.UmUsersS3keysGet(s.context, userId)
if !structs.IsZero(params) {
if params.Filters != nil {
for k, v := range *params.Filters {
req = req.Filter(k, v)
}
}
if params.OrderBy != nil {
req = req.OrderBy(*params.OrderBy)
}
if params.MaxResults != nil {
req = req.MaxResults(*params.MaxResults)
}
if !structs.IsZero(params.QueryParams) {
if params.QueryParams.Depth != nil {
req = req.Depth(*params.QueryParams.Depth)
}
if params.QueryParams.Pretty != nil {
// Currently not implemented
req = req.Pretty(*params.QueryParams.Pretty)
}
}
}
keys, resp, err := s.client.UserS3KeysApi.UmUsersS3keysGetExecute(req)
return S3Keys{keys}, &Response{*resp}, err
}
func (s *s3KeysService) Get(userId, keyId string, params QueryParams) (*S3Key, *Response, error) {
req := s.client.UserS3KeysApi.UmUsersS3keysFindByKeyId(s.context, userId, keyId)
if !structs.IsZero(params) {
if params.Depth != nil {
req = req.Depth(*params.Depth)
}
if params.Pretty != nil {
// Currently not implemented
req = req.Pretty(*params.Pretty)
}
}
key, resp, err := s.client.UserS3KeysApi.UmUsersS3keysFindByKeyIdExecute(req)
return &S3Key{key}, &Response{*resp}, err
}
func (s *s3KeysService) Create(userId string, params QueryParams) (*S3Key, *Response, error) {
req := s.client.UserS3KeysApi.UmUsersS3keysPost(s.context, userId)
if !structs.IsZero(params) {
if params.Depth != nil {
req = req.Depth(*params.Depth)
}
if params.Pretty != nil {
// Currently not implemented
req = req.Pretty(*params.Pretty)
}
}
s3key, resp, err := s.client.UserS3KeysApi.UmUsersS3keysPostExecute(req)
return &S3Key{s3key}, &Response{*resp}, err
}
func (s *s3KeysService) Update(userId, keyId string, key S3Key, params QueryParams) (*S3Key, *Response, error) {
req := s.client.UserS3KeysApi.UmUsersS3keysPut(s.context, userId, keyId).S3Key(key.S3Key)
if !structs.IsZero(params) {
if params.Depth != nil {
req = req.Depth(*params.Depth)
}
if params.Pretty != nil {
// Currently not implemented
req = req.Pretty(*params.Pretty)
}
}
s3key, resp, err := s.client.UserS3KeysApi.UmUsersS3keysPutExecute(req)
return &S3Key{s3key}, &Response{*resp}, err
}
func (s *s3KeysService) Delete(userId, keyId string, params QueryParams) (*Response, error) {
req := s.client.UserS3KeysApi.UmUsersS3keysDelete(s.context, userId, keyId)
if !structs.IsZero(params) {
if params.Depth != nil {
req = req.Depth(*params.Depth)
}
if params.Pretty != nil {
// Currently not implemented
req = req.Pretty(*params.Pretty)
}
}
resp, err := s.client.UserS3KeysApi.UmUsersS3keysDeleteExecute(req)
return &Response{*resp}, err
}