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