github.com/optim-corp/cios-golang-sdk@v0.5.1/sdk/service/account/group.go (about) 1 package srvaccount 2 3 import ( 4 "errors" 5 _nethttp "net/http" 6 7 ciosctx "github.com/optim-corp/cios-golang-sdk/ctx" 8 9 cnv "github.com/fcfcqloow/go-advance/convert" 10 11 "github.com/optim-corp/cios-golang-sdk/util" 12 13 xmath "github.com/fcfcqloow/go-advance/math" 14 15 "github.com/optim-corp/cios-golang-sdk/cios" 16 ) 17 18 func MakeGetGroupsOpts() cios.ApiGetGroupsRequest { 19 return cios.ApiGetGroupsRequest{} 20 } 21 22 func (self *CiosAccount) GetGroups(ctx ciosctx.RequestCtx, params cios.ApiGetGroupsRequest) (response cios.MultipleGroup, httpResponse *_nethttp.Response, err error) { 23 if err := self.refresh(); err != nil { 24 return cios.MultipleGroup{}, nil, err 25 } 26 params.Ctx = self.withHost(ctx) 27 params.ApiService = self.ApiClient.GroupApi 28 params.P_name = util.ToNil(params.P_name) 29 params.P_label = util.ToNil(params.P_label) 30 params.P_city = util.ToNil(params.P_city) 31 params.P_domain = util.ToNil(params.P_domain) 32 params.P_address1 = util.ToNil(params.P_address1) 33 params.P_address2 = util.ToNil(params.P_address2) 34 params.P_includes = util.ToNil(params.P_includes) 35 params.P_parentGroupId = util.ToNil(params.P_parentGroupId) 36 params.P_page = util.ToNil(params.P_page) 37 params.P_state = util.ToNil(params.P_state) 38 params.P_tags = util.ToNil(params.P_tags) 39 params.P_order = util.ToNil(params.P_order) 40 params.P_orderBy = util.ToNil(params.P_orderBy) 41 params.P_type_ = util.ToNil(params.P_type_) 42 return params.Execute() 43 } 44 func (self *CiosAccount) GetGroupsAll(ctx ciosctx.RequestCtx, params cios.ApiGetGroupsRequest) ([]cios.Group, *_nethttp.Response, error) { 45 var ( 46 result []cios.Group 47 httpRes *_nethttp.Response 48 err error 49 offset = int64(0) 50 _limit = int64(1000) 51 getFunction = func(offset int64) (cios.MultipleGroup, *_nethttp.Response, error) { 52 return self.GetGroups(ctx, params.Limit(xmath.MinInt64(_limit, 1000)).Offset(offset+cnv.MustInt64(params.P_offset))) 53 } 54 ) 55 if params.P_limit != nil { 56 _limit = *params.P_limit 57 for { 58 res, httpRes, err := getFunction(offset) 59 if err != nil { 60 return nil, httpRes, err 61 } 62 result = append(result, res.Groups...) 63 offset += 1000 64 _limit -= 1000 65 if _limit <= 0 { 66 break 67 } 68 } 69 } else { 70 res, httpRes, err := getFunction(offset) 71 if err != nil { 72 return nil, httpRes, err 73 } 74 result = append(result, res.Groups...) 75 for offset = int64(1000); offset+cnv.MustInt64(params.P_offset) < res.Total; offset += 1000 { 76 res, httpRes, err = getFunction(offset) 77 if err != nil { 78 return nil, httpRes, err 79 } 80 result = append(result, res.Groups...) 81 } 82 } 83 return result, httpRes, err 84 } 85 func (self *CiosAccount) GetGroupsUnlimited(ctx ciosctx.RequestCtx, params cios.ApiGetGroupsRequest) ([]cios.Group, *_nethttp.Response, error) { 86 params.P_limit = nil 87 return self.GetGroupsAll(ctx, params) 88 } 89 90 func (self *CiosAccount) GetGroup(ctx ciosctx.RequestCtx, groupId string, includes *string) (cios.Group, *_nethttp.Response, error) { 91 if err := self.refresh(); err != nil { 92 return cios.Group{}, nil, err 93 } 94 req := self.ApiClient.GroupApi.GetGroup(self.withHost(ctx), groupId) 95 if includes != nil { 96 req = req.Includes(*includes) 97 } 98 return req.Execute() 99 } 100 func (self *CiosAccount) GetGroupByResourceOwnerId(ctx ciosctx.RequestCtx, resourceOwnerID string, includes *string) (cios.Group, *_nethttp.Response, error) { 101 resourceOwner, httpResponse, err := self.GetResourceOwner(ctx, resourceOwnerID) 102 if err != nil { 103 return cios.Group{}, httpResponse, err 104 } 105 if resourceOwner.GroupId != nil { 106 return self.GetGroup(ctx, *resourceOwner.GroupId, includes) 107 } 108 return cios.Group{}, nil, errors.New("No Group") 109 } 110 111 func (self *CiosAccount) GetGroupMapByResourceOwner(ctx ciosctx.RequestCtx, p1 cios.ApiGetGroupsRequest, p2 cios.ApiGetResourceOwnersRequest) (map[string]cios.Group, *_nethttp.Response, error) { 112 ros, httpResponse, err := self.GetResourceOwnersUnlimited(ctx, p2) 113 if err != nil { 114 return nil, httpResponse, err 115 } 116 gps, httpResponse, err := self.GetGroupsUnlimited(ctx, p1) 117 if err != nil { 118 return nil, httpResponse, err 119 } 120 result := map[string]cios.Group{} 121 for _, ro := range ros { 122 for _, gp := range gps { 123 if ro.GroupId != nil && gp.Id == *ro.GroupId { 124 result[ro.Id] = gp 125 } 126 } 127 } 128 return result, nil, nil 129 } 130 131 func (self *CiosAccount) DeleteGroup(ctx ciosctx.RequestCtx, groupID string) (*_nethttp.Response, error) { 132 if err := self.refresh(); err != nil { 133 return nil, err 134 } 135 return self.ApiClient.GroupApi.DeleteGroup(self.withHost(ctx), groupID).Execute() 136 } 137 138 func (self *CiosAccount) CreateGroup(ctx ciosctx.RequestCtx, body cios.GroupCreateRequest) (cios.Group, *_nethttp.Response, error) { 139 if err := self.refresh(); err != nil { 140 return cios.Group{}, nil, err 141 } 142 return self.ApiClient.GroupApi.CreateGroup(self.withHost(ctx)).GroupCreateRequest(body).Execute() 143 } 144 145 func (self *CiosAccount) UpdateGroup(ctx ciosctx.RequestCtx, groupID string, body cios.GroupUpdateRequest) (cios.Group, *_nethttp.Response, error) { 146 if err := self.refresh(); err != nil { 147 return cios.Group{}, nil, err 148 } 149 return self.ApiClient.GroupApi.UpdateGroup(self.withHost(ctx), groupID).GroupUpdateRequest(body).Execute() 150 }