github.com/twilio/twilio-go@v1.20.1/rest/trunking/v1/trunks_origination_urls.go (about)

     1  /*
     2   * This code was generated by
     3   * ___ _ _ _ _ _    _ ____    ____ ____ _    ____ ____ _  _ ____ ____ ____ ___ __   __
     4   *  |  | | | | |    | |  | __ |  | |__| | __ | __ |___ |\ | |___ |__/ |__|  | |  | |__/
     5   *  |  |_|_| | |___ | |__|    |__| |  | |    |__] |___ | \| |___ |  \ |  |  | |__| |  \
     6   *
     7   * Twilio - Trunking
     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 'CreateOriginationUrl'
    27  type CreateOriginationUrlParams struct {
    28  	// The value that determines the relative share of the load the URI should receive compared to other URIs with the same priority. Can be an integer from 1 to 65535, inclusive, and the default is 10. URLs with higher values receive more load than those with lower ones with the same priority.
    29  	Weight *int `json:"Weight,omitempty"`
    30  	// The relative importance of the URI. Can be an integer from 0 to 65535, inclusive, and the default is 10. The lowest number represents the most important URI.
    31  	Priority *int `json:"Priority,omitempty"`
    32  	// Whether the URL is enabled. The default is `true`.
    33  	Enabled *bool `json:"Enabled,omitempty"`
    34  	// A descriptive string that you create to describe the resource. It can be up to 64 characters long.
    35  	FriendlyName *string `json:"FriendlyName,omitempty"`
    36  	// The SIP address you want Twilio to route your Origination calls to. This must be a `sip:` schema.
    37  	SipUrl *string `json:"SipUrl,omitempty"`
    38  }
    39  
    40  func (params *CreateOriginationUrlParams) SetWeight(Weight int) *CreateOriginationUrlParams {
    41  	params.Weight = &Weight
    42  	return params
    43  }
    44  func (params *CreateOriginationUrlParams) SetPriority(Priority int) *CreateOriginationUrlParams {
    45  	params.Priority = &Priority
    46  	return params
    47  }
    48  func (params *CreateOriginationUrlParams) SetEnabled(Enabled bool) *CreateOriginationUrlParams {
    49  	params.Enabled = &Enabled
    50  	return params
    51  }
    52  func (params *CreateOriginationUrlParams) SetFriendlyName(FriendlyName string) *CreateOriginationUrlParams {
    53  	params.FriendlyName = &FriendlyName
    54  	return params
    55  }
    56  func (params *CreateOriginationUrlParams) SetSipUrl(SipUrl string) *CreateOriginationUrlParams {
    57  	params.SipUrl = &SipUrl
    58  	return params
    59  }
    60  
    61  //
    62  func (c *ApiService) CreateOriginationUrl(TrunkSid string, params *CreateOriginationUrlParams) (*TrunkingV1OriginationUrl, error) {
    63  	path := "/v1/Trunks/{TrunkSid}/OriginationUrls"
    64  	path = strings.Replace(path, "{"+"TrunkSid"+"}", TrunkSid, -1)
    65  
    66  	data := url.Values{}
    67  	headers := make(map[string]interface{})
    68  
    69  	if params != nil && params.Weight != nil {
    70  		data.Set("Weight", fmt.Sprint(*params.Weight))
    71  	}
    72  	if params != nil && params.Priority != nil {
    73  		data.Set("Priority", fmt.Sprint(*params.Priority))
    74  	}
    75  	if params != nil && params.Enabled != nil {
    76  		data.Set("Enabled", fmt.Sprint(*params.Enabled))
    77  	}
    78  	if params != nil && params.FriendlyName != nil {
    79  		data.Set("FriendlyName", *params.FriendlyName)
    80  	}
    81  	if params != nil && params.SipUrl != nil {
    82  		data.Set("SipUrl", *params.SipUrl)
    83  	}
    84  
    85  	resp, err := c.requestHandler.Post(c.baseURL+path, data, headers)
    86  	if err != nil {
    87  		return nil, err
    88  	}
    89  
    90  	defer resp.Body.Close()
    91  
    92  	ps := &TrunkingV1OriginationUrl{}
    93  	if err := json.NewDecoder(resp.Body).Decode(ps); err != nil {
    94  		return nil, err
    95  	}
    96  
    97  	return ps, err
    98  }
    99  
   100  //
   101  func (c *ApiService) DeleteOriginationUrl(TrunkSid string, Sid string) error {
   102  	path := "/v1/Trunks/{TrunkSid}/OriginationUrls/{Sid}"
   103  	path = strings.Replace(path, "{"+"TrunkSid"+"}", TrunkSid, -1)
   104  	path = strings.Replace(path, "{"+"Sid"+"}", Sid, -1)
   105  
   106  	data := url.Values{}
   107  	headers := make(map[string]interface{})
   108  
   109  	resp, err := c.requestHandler.Delete(c.baseURL+path, data, headers)
   110  	if err != nil {
   111  		return err
   112  	}
   113  
   114  	defer resp.Body.Close()
   115  
   116  	return nil
   117  }
   118  
   119  //
   120  func (c *ApiService) FetchOriginationUrl(TrunkSid string, Sid string) (*TrunkingV1OriginationUrl, error) {
   121  	path := "/v1/Trunks/{TrunkSid}/OriginationUrls/{Sid}"
   122  	path = strings.Replace(path, "{"+"TrunkSid"+"}", TrunkSid, -1)
   123  	path = strings.Replace(path, "{"+"Sid"+"}", Sid, -1)
   124  
   125  	data := url.Values{}
   126  	headers := make(map[string]interface{})
   127  
   128  	resp, err := c.requestHandler.Get(c.baseURL+path, data, headers)
   129  	if err != nil {
   130  		return nil, err
   131  	}
   132  
   133  	defer resp.Body.Close()
   134  
   135  	ps := &TrunkingV1OriginationUrl{}
   136  	if err := json.NewDecoder(resp.Body).Decode(ps); err != nil {
   137  		return nil, err
   138  	}
   139  
   140  	return ps, err
   141  }
   142  
   143  // Optional parameters for the method 'ListOriginationUrl'
   144  type ListOriginationUrlParams struct {
   145  	// How many resources to return in each list page. The default is 50, and the maximum is 1000.
   146  	PageSize *int `json:"PageSize,omitempty"`
   147  	// Max number of records to return.
   148  	Limit *int `json:"limit,omitempty"`
   149  }
   150  
   151  func (params *ListOriginationUrlParams) SetPageSize(PageSize int) *ListOriginationUrlParams {
   152  	params.PageSize = &PageSize
   153  	return params
   154  }
   155  func (params *ListOriginationUrlParams) SetLimit(Limit int) *ListOriginationUrlParams {
   156  	params.Limit = &Limit
   157  	return params
   158  }
   159  
   160  // Retrieve a single page of OriginationUrl records from the API. Request is executed immediately.
   161  func (c *ApiService) PageOriginationUrl(TrunkSid string, params *ListOriginationUrlParams, pageToken, pageNumber string) (*ListOriginationUrlResponse, error) {
   162  	path := "/v1/Trunks/{TrunkSid}/OriginationUrls"
   163  
   164  	path = strings.Replace(path, "{"+"TrunkSid"+"}", TrunkSid, -1)
   165  
   166  	data := url.Values{}
   167  	headers := make(map[string]interface{})
   168  
   169  	if params != nil && params.PageSize != nil {
   170  		data.Set("PageSize", fmt.Sprint(*params.PageSize))
   171  	}
   172  
   173  	if pageToken != "" {
   174  		data.Set("PageToken", pageToken)
   175  	}
   176  	if pageNumber != "" {
   177  		data.Set("Page", pageNumber)
   178  	}
   179  
   180  	resp, err := c.requestHandler.Get(c.baseURL+path, data, headers)
   181  	if err != nil {
   182  		return nil, err
   183  	}
   184  
   185  	defer resp.Body.Close()
   186  
   187  	ps := &ListOriginationUrlResponse{}
   188  	if err := json.NewDecoder(resp.Body).Decode(ps); err != nil {
   189  		return nil, err
   190  	}
   191  
   192  	return ps, err
   193  }
   194  
   195  // Lists OriginationUrl records from the API as a list. Unlike stream, this operation is eager and loads 'limit' records into memory before returning.
   196  func (c *ApiService) ListOriginationUrl(TrunkSid string, params *ListOriginationUrlParams) ([]TrunkingV1OriginationUrl, error) {
   197  	response, errors := c.StreamOriginationUrl(TrunkSid, params)
   198  
   199  	records := make([]TrunkingV1OriginationUrl, 0)
   200  	for record := range response {
   201  		records = append(records, record)
   202  	}
   203  
   204  	if err := <-errors; err != nil {
   205  		return nil, err
   206  	}
   207  
   208  	return records, nil
   209  }
   210  
   211  // Streams OriginationUrl records from the API as a channel stream. This operation lazily loads records as efficiently as possible until the limit is reached.
   212  func (c *ApiService) StreamOriginationUrl(TrunkSid string, params *ListOriginationUrlParams) (chan TrunkingV1OriginationUrl, chan error) {
   213  	if params == nil {
   214  		params = &ListOriginationUrlParams{}
   215  	}
   216  	params.SetPageSize(client.ReadLimits(params.PageSize, params.Limit))
   217  
   218  	recordChannel := make(chan TrunkingV1OriginationUrl, 1)
   219  	errorChannel := make(chan error, 1)
   220  
   221  	response, err := c.PageOriginationUrl(TrunkSid, params, "", "")
   222  	if err != nil {
   223  		errorChannel <- err
   224  		close(recordChannel)
   225  		close(errorChannel)
   226  	} else {
   227  		go c.streamOriginationUrl(response, params, recordChannel, errorChannel)
   228  	}
   229  
   230  	return recordChannel, errorChannel
   231  }
   232  
   233  func (c *ApiService) streamOriginationUrl(response *ListOriginationUrlResponse, params *ListOriginationUrlParams, recordChannel chan TrunkingV1OriginationUrl, errorChannel chan error) {
   234  	curRecord := 1
   235  
   236  	for response != nil {
   237  		responseRecords := response.OriginationUrls
   238  		for item := range responseRecords {
   239  			recordChannel <- responseRecords[item]
   240  			curRecord += 1
   241  			if params.Limit != nil && *params.Limit < curRecord {
   242  				close(recordChannel)
   243  				close(errorChannel)
   244  				return
   245  			}
   246  		}
   247  
   248  		record, err := client.GetNext(c.baseURL, response, c.getNextListOriginationUrlResponse)
   249  		if err != nil {
   250  			errorChannel <- err
   251  			break
   252  		} else if record == nil {
   253  			break
   254  		}
   255  
   256  		response = record.(*ListOriginationUrlResponse)
   257  	}
   258  
   259  	close(recordChannel)
   260  	close(errorChannel)
   261  }
   262  
   263  func (c *ApiService) getNextListOriginationUrlResponse(nextPageUrl string) (interface{}, error) {
   264  	if nextPageUrl == "" {
   265  		return nil, nil
   266  	}
   267  	resp, err := c.requestHandler.Get(nextPageUrl, nil, nil)
   268  	if err != nil {
   269  		return nil, err
   270  	}
   271  
   272  	defer resp.Body.Close()
   273  
   274  	ps := &ListOriginationUrlResponse{}
   275  	if err := json.NewDecoder(resp.Body).Decode(ps); err != nil {
   276  		return nil, err
   277  	}
   278  	return ps, nil
   279  }
   280  
   281  // Optional parameters for the method 'UpdateOriginationUrl'
   282  type UpdateOriginationUrlParams struct {
   283  	// The value that determines the relative share of the load the URI should receive compared to other URIs with the same priority. Can be an integer from 1 to 65535, inclusive, and the default is 10. URLs with higher values receive more load than those with lower ones with the same priority.
   284  	Weight *int `json:"Weight,omitempty"`
   285  	// The relative importance of the URI. Can be an integer from 0 to 65535, inclusive, and the default is 10. The lowest number represents the most important URI.
   286  	Priority *int `json:"Priority,omitempty"`
   287  	// Whether the URL is enabled. The default is `true`.
   288  	Enabled *bool `json:"Enabled,omitempty"`
   289  	// A descriptive string that you create to describe the resource. It can be up to 64 characters long.
   290  	FriendlyName *string `json:"FriendlyName,omitempty"`
   291  	// The SIP address you want Twilio to route your Origination calls to. This must be a `sip:` schema. `sips` is NOT supported.
   292  	SipUrl *string `json:"SipUrl,omitempty"`
   293  }
   294  
   295  func (params *UpdateOriginationUrlParams) SetWeight(Weight int) *UpdateOriginationUrlParams {
   296  	params.Weight = &Weight
   297  	return params
   298  }
   299  func (params *UpdateOriginationUrlParams) SetPriority(Priority int) *UpdateOriginationUrlParams {
   300  	params.Priority = &Priority
   301  	return params
   302  }
   303  func (params *UpdateOriginationUrlParams) SetEnabled(Enabled bool) *UpdateOriginationUrlParams {
   304  	params.Enabled = &Enabled
   305  	return params
   306  }
   307  func (params *UpdateOriginationUrlParams) SetFriendlyName(FriendlyName string) *UpdateOriginationUrlParams {
   308  	params.FriendlyName = &FriendlyName
   309  	return params
   310  }
   311  func (params *UpdateOriginationUrlParams) SetSipUrl(SipUrl string) *UpdateOriginationUrlParams {
   312  	params.SipUrl = &SipUrl
   313  	return params
   314  }
   315  
   316  //
   317  func (c *ApiService) UpdateOriginationUrl(TrunkSid string, Sid string, params *UpdateOriginationUrlParams) (*TrunkingV1OriginationUrl, error) {
   318  	path := "/v1/Trunks/{TrunkSid}/OriginationUrls/{Sid}"
   319  	path = strings.Replace(path, "{"+"TrunkSid"+"}", TrunkSid, -1)
   320  	path = strings.Replace(path, "{"+"Sid"+"}", Sid, -1)
   321  
   322  	data := url.Values{}
   323  	headers := make(map[string]interface{})
   324  
   325  	if params != nil && params.Weight != nil {
   326  		data.Set("Weight", fmt.Sprint(*params.Weight))
   327  	}
   328  	if params != nil && params.Priority != nil {
   329  		data.Set("Priority", fmt.Sprint(*params.Priority))
   330  	}
   331  	if params != nil && params.Enabled != nil {
   332  		data.Set("Enabled", fmt.Sprint(*params.Enabled))
   333  	}
   334  	if params != nil && params.FriendlyName != nil {
   335  		data.Set("FriendlyName", *params.FriendlyName)
   336  	}
   337  	if params != nil && params.SipUrl != nil {
   338  		data.Set("SipUrl", *params.SipUrl)
   339  	}
   340  
   341  	resp, err := c.requestHandler.Post(c.baseURL+path, data, headers)
   342  	if err != nil {
   343  		return nil, err
   344  	}
   345  
   346  	defer resp.Body.Close()
   347  
   348  	ps := &TrunkingV1OriginationUrl{}
   349  	if err := json.NewDecoder(resp.Body).Decode(ps); err != nil {
   350  		return nil, err
   351  	}
   352  
   353  	return ps, err
   354  }