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  }