Any examples of getnextpage usage in the twilio api for c#?

不打扰是莪最后的温柔 提交于 2019-12-10 10:50:57

问题


The old code I've inherited for Twilio retrieves messages using the absolute PageNumber property of the MessageListRequest but according to the documentation this is obsolete and I should be using GetNextPage and GetPrevPage.

The API metadata shows this as obsolete with the message "Use GetNextPage and GetPreviousPage for paging. Page parameter is scheduled for end of life https://www.twilio.com/engineering/2015/04/16/replacing-absolute-paging-with-relative-paging".

Are there any examples of this usage? I couldn't find any in the documentation except in one of the API test methods and I'm not sure how well I can get to processing multiple pages with this example as a guide.

public class Foo : TwilioBase
{
    public string Bar { get; set; }
}

public class FooResult : TwilioListBase
{
    public List<Foo> Foos { get; set; }
}
[Test]
public void ShouldGetNextPage()
{
    IRestRequest savedRequest = null;

    FooResult firstPage = new FooResult();
    firstPage.NextPageUri = new Uri("/Foos?PageToken=abc123", UriKind.Relative);

    mockClient.Setup(trc => trc.Execute<FooResult>(It.IsAny<IRestRequest>()))
        .Callback<IRestRequest>((request) => savedRequest = request)
        .Returns(new FooResult());
    var client = mockClient.Object;

    var response = client.GetNextPage<FooResult>(firstPage);

    mockClient.Verify(trc => trc.Execute<FooResult>(It.IsAny<IRestRequest>()), Times.Once);
    Assert.IsNotNull(savedRequest);
    Assert.AreEqual("/Foos?PageToken=abc123", savedRequest.Resource);
    Assert.AreEqual(Method.GET, savedRequest.Method);

    Assert.IsNotNull(response);
}

The old usage might look something like so:

var twilio = new TwilioRestClient(config.AccountSid, config.AuthToken);
var result = new List<Message>();
MessageResult tempResult;
int page = 0;
do
{
    var request = new MessageListRequest();
    request = new MessageListRequest { Count = 1000, DateSent = newestDate, DateSentComparison = ComparisonType.GreaterThanOrEqualTo, PageNumber = page++, To = config.FromNumber };

    tempResult = twilio.ListMessages(request);
    result.AddRange(tempResult.Messages);
} while (tempResult.NextPageUri != null);

Finally, I built the Twilio API 3.4.1.0 from the twilio-csharp GitHub project instead of NuGet since I need to update it to use the MessagingServiceSid which isn't included in the API yet.

Thanks for any pointers. I'll post a solution if I can figure it out on my own.


回答1:


Actually, I got it to work now!

MessageResult messages = twilio.ListMessages(request);
do
{
    if (messages.Messages != null)
    {
        foreach (var message in messages.Messages) 
        {
            ... process results         
        }
        if (messages.NextPageUri != null)
        {
            messages = twilio.GetNextPage<MessageResult>(messages);
        }
    }
} while (messages.NextPageUri != null);



回答2:


Did you try the example from the API Explorer? https://www.twilio.com/console/dev-tools/api-explorer/sms/sms-mms-list

var twilio = new TwilioRestClient(AccountSid, AuthToken); 

// Build the parameters 
var options = new MessageListRequest();    

var messages = twilio.ListMessages(options); 
foreach (var message in messages.Messages) 
{ 
 Console.WriteLine(message.Body); 
} 

The helper library will automatically fetch from the API as you loop over the list until all records matching your criteria are processed.

You can limit the results with MessageListRequest.

Please give that a try and let me know how it goes.



来源:https://stackoverflow.com/questions/37552045/any-examples-of-getnextpage-usage-in-the-twilio-api-for-c

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!