github.com/twilio/twilio-go@v1.20.1/rest/chat/v1/services_roles.go (about)

     1  /*
     2   * This code was generated by
     3   * ___ _ _ _ _ _    _ ____    ____ ____ _    ____ ____ _  _ ____ ____ ____ ___ __   __
     4   *  |  | | | | |    | |  | __ |  | |__| | __ | __ |___ |\ | |___ |__/ |__|  | |  | |__/
     5   *  |  |_|_| | |___ | |__|    |__| |  | |    |__] |___ | \| |___ |  \ |  |  | |__| |  \
     6   *
     7   * Twilio - Chat
     8   * This is the public Twilio REST API.
     9   *
    10   * NOTE: This class is auto generated by OpenAPI Generator.
    11   * https://openapi-generator.tech
    12   * Do not edit the class manually.
    13   */
    14  
    15  package openapi
    16  
    17  import (
    18  	"encoding/json"
    19  	"fmt"
    20  	"net/url"
    21  	"strings"
    22  
    23  	"github.com/twilio/twilio-go/client"
    24  )
    25  
    26  // Optional parameters for the method 'CreateRole'
    27  type CreateRoleParams struct {
    28  	// A descriptive string that you create to describe the new resource. It can be up to 64 characters long.
    29  	FriendlyName *string `json:"FriendlyName,omitempty"`
    30  	//
    31  	Type *string `json:"Type,omitempty"`
    32  	// A permission that you grant to the new role. Only one permission can be granted per parameter. To assign more than one permission, repeat this parameter for each permission value. The values for this parameter depend on the role's `type` and are described in the documentation.
    33  	Permission *[]string `json:"Permission,omitempty"`
    34  }
    35  
    36  func (params *CreateRoleParams) SetFriendlyName(FriendlyName string) *CreateRoleParams {
    37  	params.FriendlyName = &FriendlyName
    38  	return params
    39  }
    40  func (params *CreateRoleParams) SetType(Type string) *CreateRoleParams {
    41  	params.Type = &Type
    42  	return params
    43  }
    44  func (params *CreateRoleParams) SetPermission(Permission []string) *CreateRoleParams {
    45  	params.Permission = &Permission
    46  	return params
    47  }
    48  
    49  //
    50  func (c *ApiService) CreateRole(ServiceSid string, params *CreateRoleParams) (*ChatV1Role, error) {
    51  	path := "/v1/Services/{ServiceSid}/Roles"
    52  	path = strings.Replace(path, "{"+"ServiceSid"+"}", ServiceSid, -1)
    53  
    54  	data := url.Values{}
    55  	headers := make(map[string]interface{})
    56  
    57  	if params != nil && params.FriendlyName != nil {
    58  		data.Set("FriendlyName", *params.FriendlyName)
    59  	}
    60  	if params != nil && params.Type != nil {
    61  		data.Set("Type", *params.Type)
    62  	}
    63  	if params != nil && params.Permission != nil {
    64  		for _, item := range *params.Permission {
    65  			data.Add("Permission", item)
    66  		}
    67  	}
    68  
    69  	resp, err := c.requestHandler.Post(c.baseURL+path, data, headers)
    70  	if err != nil {
    71  		return nil, err
    72  	}
    73  
    74  	defer resp.Body.Close()
    75  
    76  	ps := &ChatV1Role{}
    77  	if err := json.NewDecoder(resp.Body).Decode(ps); err != nil {
    78  		return nil, err
    79  	}
    80  
    81  	return ps, err
    82  }
    83  
    84  //
    85  func (c *ApiService) DeleteRole(ServiceSid string, Sid string) error {
    86  	path := "/v1/Services/{ServiceSid}/Roles/{Sid}"
    87  	path = strings.Replace(path, "{"+"ServiceSid"+"}", ServiceSid, -1)
    88  	path = strings.Replace(path, "{"+"Sid"+"}", Sid, -1)
    89  
    90  	data := url.Values{}
    91  	headers := make(map[string]interface{})
    92  
    93  	resp, err := c.requestHandler.Delete(c.baseURL+path, data, headers)
    94  	if err != nil {
    95  		return err
    96  	}
    97  
    98  	defer resp.Body.Close()
    99  
   100  	return nil
   101  }
   102  
   103  //
   104  func (c *ApiService) FetchRole(ServiceSid string, Sid string) (*ChatV1Role, error) {
   105  	path := "/v1/Services/{ServiceSid}/Roles/{Sid}"
   106  	path = strings.Replace(path, "{"+"ServiceSid"+"}", ServiceSid, -1)
   107  	path = strings.Replace(path, "{"+"Sid"+"}", Sid, -1)
   108  
   109  	data := url.Values{}
   110  	headers := make(map[string]interface{})
   111  
   112  	resp, err := c.requestHandler.Get(c.baseURL+path, data, headers)
   113  	if err != nil {
   114  		return nil, err
   115  	}
   116  
   117  	defer resp.Body.Close()
   118  
   119  	ps := &ChatV1Role{}
   120  	if err := json.NewDecoder(resp.Body).Decode(ps); err != nil {
   121  		return nil, err
   122  	}
   123  
   124  	return ps, err
   125  }
   126  
   127  // Optional parameters for the method 'ListRole'
   128  type ListRoleParams struct {
   129  	// How many resources to return in each list page. The default is 50, and the maximum is 1000.
   130  	PageSize *int `json:"PageSize,omitempty"`
   131  	// Max number of records to return.
   132  	Limit *int `json:"limit,omitempty"`
   133  }
   134  
   135  func (params *ListRoleParams) SetPageSize(PageSize int) *ListRoleParams {
   136  	params.PageSize = &PageSize
   137  	return params
   138  }
   139  func (params *ListRoleParams) SetLimit(Limit int) *ListRoleParams {
   140  	params.Limit = &Limit
   141  	return params
   142  }
   143  
   144  // Retrieve a single page of Role records from the API. Request is executed immediately.
   145  func (c *ApiService) PageRole(ServiceSid string, params *ListRoleParams, pageToken, pageNumber string) (*ListRoleResponse, error) {
   146  	path := "/v1/Services/{ServiceSid}/Roles"
   147  
   148  	path = strings.Replace(path, "{"+"ServiceSid"+"}", ServiceSid, -1)
   149  
   150  	data := url.Values{}
   151  	headers := make(map[string]interface{})
   152  
   153  	if params != nil && params.PageSize != nil {
   154  		data.Set("PageSize", fmt.Sprint(*params.PageSize))
   155  	}
   156  
   157  	if pageToken != "" {
   158  		data.Set("PageToken", pageToken)
   159  	}
   160  	if pageNumber != "" {
   161  		data.Set("Page", pageNumber)
   162  	}
   163  
   164  	resp, err := c.requestHandler.Get(c.baseURL+path, data, headers)
   165  	if err != nil {
   166  		return nil, err
   167  	}
   168  
   169  	defer resp.Body.Close()
   170  
   171  	ps := &ListRoleResponse{}
   172  	if err := json.NewDecoder(resp.Body).Decode(ps); err != nil {
   173  		return nil, err
   174  	}
   175  
   176  	return ps, err
   177  }
   178  
   179  // Lists Role records from the API as a list. Unlike stream, this operation is eager and loads 'limit' records into memory before returning.
   180  func (c *ApiService) ListRole(ServiceSid string, params *ListRoleParams) ([]ChatV1Role, error) {
   181  	response, errors := c.StreamRole(ServiceSid, params)
   182  
   183  	records := make([]ChatV1Role, 0)
   184  	for record := range response {
   185  		records = append(records, record)
   186  	}
   187  
   188  	if err := <-errors; err != nil {
   189  		return nil, err
   190  	}
   191  
   192  	return records, nil
   193  }
   194  
   195  // Streams Role records from the API as a channel stream. This operation lazily loads records as efficiently as possible until the limit is reached.
   196  func (c *ApiService) StreamRole(ServiceSid string, params *ListRoleParams) (chan ChatV1Role, chan error) {
   197  	if params == nil {
   198  		params = &ListRoleParams{}
   199  	}
   200  	params.SetPageSize(client.ReadLimits(params.PageSize, params.Limit))
   201  
   202  	recordChannel := make(chan ChatV1Role, 1)
   203  	errorChannel := make(chan error, 1)
   204  
   205  	response, err := c.PageRole(ServiceSid, params, "", "")
   206  	if err != nil {
   207  		errorChannel <- err
   208  		close(recordChannel)
   209  		close(errorChannel)
   210  	} else {
   211  		go c.streamRole(response, params, recordChannel, errorChannel)
   212  	}
   213  
   214  	return recordChannel, errorChannel
   215  }
   216  
   217  func (c *ApiService) streamRole(response *ListRoleResponse, params *ListRoleParams, recordChannel chan ChatV1Role, errorChannel chan error) {
   218  	curRecord := 1
   219  
   220  	for response != nil {
   221  		responseRecords := response.Roles
   222  		for item := range responseRecords {
   223  			recordChannel <- responseRecords[item]
   224  			curRecord += 1
   225  			if params.Limit != nil && *params.Limit < curRecord {
   226  				close(recordChannel)
   227  				close(errorChannel)
   228  				return
   229  			}
   230  		}
   231  
   232  		record, err := client.GetNext(c.baseURL, response, c.getNextListRoleResponse)
   233  		if err != nil {
   234  			errorChannel <- err
   235  			break
   236  		} else if record == nil {
   237  			break
   238  		}
   239  
   240  		response = record.(*ListRoleResponse)
   241  	}
   242  
   243  	close(recordChannel)
   244  	close(errorChannel)
   245  }
   246  
   247  func (c *ApiService) getNextListRoleResponse(nextPageUrl string) (interface{}, error) {
   248  	if nextPageUrl == "" {
   249  		return nil, nil
   250  	}
   251  	resp, err := c.requestHandler.Get(nextPageUrl, nil, nil)
   252  	if err != nil {
   253  		return nil, err
   254  	}
   255  
   256  	defer resp.Body.Close()
   257  
   258  	ps := &ListRoleResponse{}
   259  	if err := json.NewDecoder(resp.Body).Decode(ps); err != nil {
   260  		return nil, err
   261  	}
   262  	return ps, nil
   263  }
   264  
   265  // Optional parameters for the method 'UpdateRole'
   266  type UpdateRoleParams struct {
   267  	// A permission that you grant to the role. Only one permission can be granted per parameter. To assign more than one permission, repeat this parameter for each permission value. The values for this parameter depend on the role's `type` and are described in the documentation.
   268  	Permission *[]string `json:"Permission,omitempty"`
   269  }
   270  
   271  func (params *UpdateRoleParams) SetPermission(Permission []string) *UpdateRoleParams {
   272  	params.Permission = &Permission
   273  	return params
   274  }
   275  
   276  //
   277  func (c *ApiService) UpdateRole(ServiceSid string, Sid string, params *UpdateRoleParams) (*ChatV1Role, error) {
   278  	path := "/v1/Services/{ServiceSid}/Roles/{Sid}"
   279  	path = strings.Replace(path, "{"+"ServiceSid"+"}", ServiceSid, -1)
   280  	path = strings.Replace(path, "{"+"Sid"+"}", Sid, -1)
   281  
   282  	data := url.Values{}
   283  	headers := make(map[string]interface{})
   284  
   285  	if params != nil && params.Permission != nil {
   286  		for _, item := range *params.Permission {
   287  			data.Add("Permission", item)
   288  		}
   289  	}
   290  
   291  	resp, err := c.requestHandler.Post(c.baseURL+path, data, headers)
   292  	if err != nil {
   293  		return nil, err
   294  	}
   295  
   296  	defer resp.Body.Close()
   297  
   298  	ps := &ChatV1Role{}
   299  	if err := json.NewDecoder(resp.Body).Decode(ps); err != nil {
   300  		return nil, err
   301  	}
   302  
   303  	return ps, err
   304  }