有关c#的twilio api中getnextpage用法的任何示例?

Wil*_*ulk 2 c# twilio

我为Twilio继承的旧代码使用MessageListRequest的绝对PageNumber属性检索消息,但根据文档,这已经过时,我应该使用GetNextPage和GetPrevPage.

API元数据显示已过时,消息"使用GetNextPage和GetPreviousPage进行分页.页面参数计划在生命周期结束时使用https://www.twilio.com/engineering/2015/04/16/replacing-absolute-paging- with-relative-paging ".

有这种用法的例子吗?除了API测试方法之外,我在文档中找不到任何内容,并且我不确定如何以此示例作为指南处理多个页面.

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);
}
Run Code Online (Sandbox Code Playgroud)

旧的用法可能看起来像这样:

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);
Run Code Online (Sandbox Code Playgroud)

最后,我从twilio-csharp GitHub项目而不是NuGet 构建了Twilio API 3.4.1.0,因为我需要更新它以使用尚未包含在API中的MessagingServiceSid.

谢谢你的任何指示.如果我能自己解决这个问题,我会发布一个解决方案.

Wil*_*ulk 5

实际上,我现在就开始工作了!

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);
Run Code Online (Sandbox Code Playgroud)