github.com/twilio/twilio-go@v1.20.1/rest/ip_messaging/v2/services_channels.go (about) 1 /* 2 * This code was generated by 3 * ___ _ _ _ _ _ _ ____ ____ ____ _ ____ ____ _ _ ____ ____ ____ ___ __ __ 4 * | | | | | | | | | __ | | |__| | __ | __ |___ |\ | |___ |__/ |__| | | | |__/ 5 * | |_|_| | |___ | |__| |__| | | | |__] |___ | \| |___ | \ | | | |__| | \ 6 * 7 * Twilio - Ip_messaging 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 "time" 23 24 "github.com/twilio/twilio-go/client" 25 ) 26 27 // Optional parameters for the method 'CreateChannel' 28 type CreateChannelParams struct { 29 // The X-Twilio-Webhook-Enabled HTTP request header 30 XTwilioWebhookEnabled *string `json:"X-Twilio-Webhook-Enabled,omitempty"` 31 // 32 FriendlyName *string `json:"FriendlyName,omitempty"` 33 // 34 UniqueName *string `json:"UniqueName,omitempty"` 35 // 36 Attributes *string `json:"Attributes,omitempty"` 37 // 38 Type *string `json:"Type,omitempty"` 39 // 40 DateCreated *time.Time `json:"DateCreated,omitempty"` 41 // 42 DateUpdated *time.Time `json:"DateUpdated,omitempty"` 43 // 44 CreatedBy *string `json:"CreatedBy,omitempty"` 45 } 46 47 func (params *CreateChannelParams) SetXTwilioWebhookEnabled(XTwilioWebhookEnabled string) *CreateChannelParams { 48 params.XTwilioWebhookEnabled = &XTwilioWebhookEnabled 49 return params 50 } 51 func (params *CreateChannelParams) SetFriendlyName(FriendlyName string) *CreateChannelParams { 52 params.FriendlyName = &FriendlyName 53 return params 54 } 55 func (params *CreateChannelParams) SetUniqueName(UniqueName string) *CreateChannelParams { 56 params.UniqueName = &UniqueName 57 return params 58 } 59 func (params *CreateChannelParams) SetAttributes(Attributes string) *CreateChannelParams { 60 params.Attributes = &Attributes 61 return params 62 } 63 func (params *CreateChannelParams) SetType(Type string) *CreateChannelParams { 64 params.Type = &Type 65 return params 66 } 67 func (params *CreateChannelParams) SetDateCreated(DateCreated time.Time) *CreateChannelParams { 68 params.DateCreated = &DateCreated 69 return params 70 } 71 func (params *CreateChannelParams) SetDateUpdated(DateUpdated time.Time) *CreateChannelParams { 72 params.DateUpdated = &DateUpdated 73 return params 74 } 75 func (params *CreateChannelParams) SetCreatedBy(CreatedBy string) *CreateChannelParams { 76 params.CreatedBy = &CreatedBy 77 return params 78 } 79 80 // 81 func (c *ApiService) CreateChannel(ServiceSid string, params *CreateChannelParams) (*IpMessagingV2Channel, error) { 82 path := "/v2/Services/{ServiceSid}/Channels" 83 path = strings.Replace(path, "{"+"ServiceSid"+"}", ServiceSid, -1) 84 85 data := url.Values{} 86 headers := make(map[string]interface{}) 87 88 if params != nil && params.FriendlyName != nil { 89 data.Set("FriendlyName", *params.FriendlyName) 90 } 91 if params != nil && params.UniqueName != nil { 92 data.Set("UniqueName", *params.UniqueName) 93 } 94 if params != nil && params.Attributes != nil { 95 data.Set("Attributes", *params.Attributes) 96 } 97 if params != nil && params.Type != nil { 98 data.Set("Type", *params.Type) 99 } 100 if params != nil && params.DateCreated != nil { 101 data.Set("DateCreated", fmt.Sprint((*params.DateCreated).Format(time.RFC3339))) 102 } 103 if params != nil && params.DateUpdated != nil { 104 data.Set("DateUpdated", fmt.Sprint((*params.DateUpdated).Format(time.RFC3339))) 105 } 106 if params != nil && params.CreatedBy != nil { 107 data.Set("CreatedBy", *params.CreatedBy) 108 } 109 110 if params != nil && params.XTwilioWebhookEnabled != nil { 111 headers["X-Twilio-Webhook-Enabled"] = *params.XTwilioWebhookEnabled 112 } 113 resp, err := c.requestHandler.Post(c.baseURL+path, data, headers) 114 if err != nil { 115 return nil, err 116 } 117 118 defer resp.Body.Close() 119 120 ps := &IpMessagingV2Channel{} 121 if err := json.NewDecoder(resp.Body).Decode(ps); err != nil { 122 return nil, err 123 } 124 125 return ps, err 126 } 127 128 // Optional parameters for the method 'DeleteChannel' 129 type DeleteChannelParams struct { 130 // The X-Twilio-Webhook-Enabled HTTP request header 131 XTwilioWebhookEnabled *string `json:"X-Twilio-Webhook-Enabled,omitempty"` 132 } 133 134 func (params *DeleteChannelParams) SetXTwilioWebhookEnabled(XTwilioWebhookEnabled string) *DeleteChannelParams { 135 params.XTwilioWebhookEnabled = &XTwilioWebhookEnabled 136 return params 137 } 138 139 // 140 func (c *ApiService) DeleteChannel(ServiceSid string, Sid string, params *DeleteChannelParams) error { 141 path := "/v2/Services/{ServiceSid}/Channels/{Sid}" 142 path = strings.Replace(path, "{"+"ServiceSid"+"}", ServiceSid, -1) 143 path = strings.Replace(path, "{"+"Sid"+"}", Sid, -1) 144 145 data := url.Values{} 146 headers := make(map[string]interface{}) 147 148 if params != nil && params.XTwilioWebhookEnabled != nil { 149 headers["X-Twilio-Webhook-Enabled"] = *params.XTwilioWebhookEnabled 150 } 151 resp, err := c.requestHandler.Delete(c.baseURL+path, data, headers) 152 if err != nil { 153 return err 154 } 155 156 defer resp.Body.Close() 157 158 return nil 159 } 160 161 // 162 func (c *ApiService) FetchChannel(ServiceSid string, Sid string) (*IpMessagingV2Channel, error) { 163 path := "/v2/Services/{ServiceSid}/Channels/{Sid}" 164 path = strings.Replace(path, "{"+"ServiceSid"+"}", ServiceSid, -1) 165 path = strings.Replace(path, "{"+"Sid"+"}", Sid, -1) 166 167 data := url.Values{} 168 headers := make(map[string]interface{}) 169 170 resp, err := c.requestHandler.Get(c.baseURL+path, data, headers) 171 if err != nil { 172 return nil, err 173 } 174 175 defer resp.Body.Close() 176 177 ps := &IpMessagingV2Channel{} 178 if err := json.NewDecoder(resp.Body).Decode(ps); err != nil { 179 return nil, err 180 } 181 182 return ps, err 183 } 184 185 // Optional parameters for the method 'ListChannel' 186 type ListChannelParams struct { 187 // 188 Type *[]string `json:"Type,omitempty"` 189 // How many resources to return in each list page. The default is 50, and the maximum is 1000. 190 PageSize *int `json:"PageSize,omitempty"` 191 // Max number of records to return. 192 Limit *int `json:"limit,omitempty"` 193 } 194 195 func (params *ListChannelParams) SetType(Type []string) *ListChannelParams { 196 params.Type = &Type 197 return params 198 } 199 func (params *ListChannelParams) SetPageSize(PageSize int) *ListChannelParams { 200 params.PageSize = &PageSize 201 return params 202 } 203 func (params *ListChannelParams) SetLimit(Limit int) *ListChannelParams { 204 params.Limit = &Limit 205 return params 206 } 207 208 // Retrieve a single page of Channel records from the API. Request is executed immediately. 209 func (c *ApiService) PageChannel(ServiceSid string, params *ListChannelParams, pageToken, pageNumber string) (*ListChannelResponse, error) { 210 path := "/v2/Services/{ServiceSid}/Channels" 211 212 path = strings.Replace(path, "{"+"ServiceSid"+"}", ServiceSid, -1) 213 214 data := url.Values{} 215 headers := make(map[string]interface{}) 216 217 if params != nil && params.Type != nil { 218 for _, item := range *params.Type { 219 data.Add("Type", item) 220 } 221 } 222 if params != nil && params.PageSize != nil { 223 data.Set("PageSize", fmt.Sprint(*params.PageSize)) 224 } 225 226 if pageToken != "" { 227 data.Set("PageToken", pageToken) 228 } 229 if pageNumber != "" { 230 data.Set("Page", pageNumber) 231 } 232 233 resp, err := c.requestHandler.Get(c.baseURL+path, data, headers) 234 if err != nil { 235 return nil, err 236 } 237 238 defer resp.Body.Close() 239 240 ps := &ListChannelResponse{} 241 if err := json.NewDecoder(resp.Body).Decode(ps); err != nil { 242 return nil, err 243 } 244 245 return ps, err 246 } 247 248 // Lists Channel records from the API as a list. Unlike stream, this operation is eager and loads 'limit' records into memory before returning. 249 func (c *ApiService) ListChannel(ServiceSid string, params *ListChannelParams) ([]IpMessagingV2Channel, error) { 250 response, errors := c.StreamChannel(ServiceSid, params) 251 252 records := make([]IpMessagingV2Channel, 0) 253 for record := range response { 254 records = append(records, record) 255 } 256 257 if err := <-errors; err != nil { 258 return nil, err 259 } 260 261 return records, nil 262 } 263 264 // Streams Channel records from the API as a channel stream. This operation lazily loads records as efficiently as possible until the limit is reached. 265 func (c *ApiService) StreamChannel(ServiceSid string, params *ListChannelParams) (chan IpMessagingV2Channel, chan error) { 266 if params == nil { 267 params = &ListChannelParams{} 268 } 269 params.SetPageSize(client.ReadLimits(params.PageSize, params.Limit)) 270 271 recordChannel := make(chan IpMessagingV2Channel, 1) 272 errorChannel := make(chan error, 1) 273 274 response, err := c.PageChannel(ServiceSid, params, "", "") 275 if err != nil { 276 errorChannel <- err 277 close(recordChannel) 278 close(errorChannel) 279 } else { 280 go c.streamChannel(response, params, recordChannel, errorChannel) 281 } 282 283 return recordChannel, errorChannel 284 } 285 286 func (c *ApiService) streamChannel(response *ListChannelResponse, params *ListChannelParams, recordChannel chan IpMessagingV2Channel, errorChannel chan error) { 287 curRecord := 1 288 289 for response != nil { 290 responseRecords := response.Channels 291 for item := range responseRecords { 292 recordChannel <- responseRecords[item] 293 curRecord += 1 294 if params.Limit != nil && *params.Limit < curRecord { 295 close(recordChannel) 296 close(errorChannel) 297 return 298 } 299 } 300 301 record, err := client.GetNext(c.baseURL, response, c.getNextListChannelResponse) 302 if err != nil { 303 errorChannel <- err 304 break 305 } else if record == nil { 306 break 307 } 308 309 response = record.(*ListChannelResponse) 310 } 311 312 close(recordChannel) 313 close(errorChannel) 314 } 315 316 func (c *ApiService) getNextListChannelResponse(nextPageUrl string) (interface{}, error) { 317 if nextPageUrl == "" { 318 return nil, nil 319 } 320 resp, err := c.requestHandler.Get(nextPageUrl, nil, nil) 321 if err != nil { 322 return nil, err 323 } 324 325 defer resp.Body.Close() 326 327 ps := &ListChannelResponse{} 328 if err := json.NewDecoder(resp.Body).Decode(ps); err != nil { 329 return nil, err 330 } 331 return ps, nil 332 } 333 334 // Optional parameters for the method 'UpdateChannel' 335 type UpdateChannelParams struct { 336 // The X-Twilio-Webhook-Enabled HTTP request header 337 XTwilioWebhookEnabled *string `json:"X-Twilio-Webhook-Enabled,omitempty"` 338 // 339 FriendlyName *string `json:"FriendlyName,omitempty"` 340 // 341 UniqueName *string `json:"UniqueName,omitempty"` 342 // 343 Attributes *string `json:"Attributes,omitempty"` 344 // 345 DateCreated *time.Time `json:"DateCreated,omitempty"` 346 // 347 DateUpdated *time.Time `json:"DateUpdated,omitempty"` 348 // 349 CreatedBy *string `json:"CreatedBy,omitempty"` 350 } 351 352 func (params *UpdateChannelParams) SetXTwilioWebhookEnabled(XTwilioWebhookEnabled string) *UpdateChannelParams { 353 params.XTwilioWebhookEnabled = &XTwilioWebhookEnabled 354 return params 355 } 356 func (params *UpdateChannelParams) SetFriendlyName(FriendlyName string) *UpdateChannelParams { 357 params.FriendlyName = &FriendlyName 358 return params 359 } 360 func (params *UpdateChannelParams) SetUniqueName(UniqueName string) *UpdateChannelParams { 361 params.UniqueName = &UniqueName 362 return params 363 } 364 func (params *UpdateChannelParams) SetAttributes(Attributes string) *UpdateChannelParams { 365 params.Attributes = &Attributes 366 return params 367 } 368 func (params *UpdateChannelParams) SetDateCreated(DateCreated time.Time) *UpdateChannelParams { 369 params.DateCreated = &DateCreated 370 return params 371 } 372 func (params *UpdateChannelParams) SetDateUpdated(DateUpdated time.Time) *UpdateChannelParams { 373 params.DateUpdated = &DateUpdated 374 return params 375 } 376 func (params *UpdateChannelParams) SetCreatedBy(CreatedBy string) *UpdateChannelParams { 377 params.CreatedBy = &CreatedBy 378 return params 379 } 380 381 // 382 func (c *ApiService) UpdateChannel(ServiceSid string, Sid string, params *UpdateChannelParams) (*IpMessagingV2Channel, error) { 383 path := "/v2/Services/{ServiceSid}/Channels/{Sid}" 384 path = strings.Replace(path, "{"+"ServiceSid"+"}", ServiceSid, -1) 385 path = strings.Replace(path, "{"+"Sid"+"}", Sid, -1) 386 387 data := url.Values{} 388 headers := make(map[string]interface{}) 389 390 if params != nil && params.FriendlyName != nil { 391 data.Set("FriendlyName", *params.FriendlyName) 392 } 393 if params != nil && params.UniqueName != nil { 394 data.Set("UniqueName", *params.UniqueName) 395 } 396 if params != nil && params.Attributes != nil { 397 data.Set("Attributes", *params.Attributes) 398 } 399 if params != nil && params.DateCreated != nil { 400 data.Set("DateCreated", fmt.Sprint((*params.DateCreated).Format(time.RFC3339))) 401 } 402 if params != nil && params.DateUpdated != nil { 403 data.Set("DateUpdated", fmt.Sprint((*params.DateUpdated).Format(time.RFC3339))) 404 } 405 if params != nil && params.CreatedBy != nil { 406 data.Set("CreatedBy", *params.CreatedBy) 407 } 408 409 if params != nil && params.XTwilioWebhookEnabled != nil { 410 headers["X-Twilio-Webhook-Enabled"] = *params.XTwilioWebhookEnabled 411 } 412 resp, err := c.requestHandler.Post(c.baseURL+path, data, headers) 413 if err != nil { 414 return nil, err 415 } 416 417 defer resp.Body.Close() 418 419 ps := &IpMessagingV2Channel{} 420 if err := json.NewDecoder(resp.Body).Decode(ps); err != nil { 421 return nil, err 422 } 423 424 return ps, err 425 }