在twilio API的C#getnextpage使用的任何例子吗? [英] Any examples of getnextpage usage in the twilio api for c#?

查看:285
本文介绍了在twilio API的C#getnextpage使用的任何例子吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我继承了Twilio的旧代码检索使用MessageListRequest绝对的PageNumber财产,但根据文档,这是过时,我应该使用GetNextPage和GetPrevPage消息。

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.

该API的元数据显示了这个消息使用GetNextPage和GetPreviousPage进行页面的参数定终身的 https://www.twilio.com/engineering/2015/04/16/replacing-absolute-paging-with-relative-paging

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".

有没有这种用法的例子?我找不到任何文档中除了在API的测试方法之一,我不知道我如何能得到处理和这个例子作为指导多页。

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);



最后,我建立了Twilio API 3.4.1.0从的 twilio-CSHARP GitHub的项目,因为我需要代替的NuGet更新它使用的是不包括API尚未在MessagingServiceSid。

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.

推荐答案

其实,我得到它现在的工作!

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);

这篇关于在twilio API的C#getnextpage使用的任何例子吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆