Der alte Code, den ich für Twilio geerbt habe, ruft Nachrichten mit der absoluten PageNumber-Eigenschaft von MessageListRequest ab, aber gemäß der Dokumentation ist dies veraltet, und ich sollte GetNextPage und GetPrevPage verwenden.Beispiele für getnextpage Verwendung in der Twilio API für C#?
Die API-Metadaten zeigen dies als veraltet mit der Nachricht "Verwenden Sie GetNextPage und GetPreviousPage für Paging. Seitenparameter ist für das Ende des Lebens https://www.twilio.com/engineering/2015/04/16/replacing-absolute-paging-with-relative-paging geplant".
Gibt es Beispiele für diese Verwendung? Ich konnte keine in der Dokumentation finden, außer in einer der API-Testmethoden und ich bin mir nicht sicher, wie gut ich mehrere Seiten mit diesem Beispiel als Leitfaden bearbeiten kann.
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);
}
Die alte Nutzung könnte so etwas wie so aussehen:
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);
Schließlich baute ich die Twilio API 3.4.1.0 vom twilio-csharp GitHub project statt NuGet da ich sie aktualisieren müssen, um die MessagingServiceSid zu verwenden, die ist noch nicht in der API enthalten.
Danke für alle Hinweise. Ich werde eine Lösung veröffentlichen, wenn ich es selbst herausfinden kann.
Werden Sie dadurch nicht die letzte Ergebnisseite verpassen? Wenn Sie die letzte Seite drücken, rufen Sie messages = twillio.GetNextPage auf, aber dann drücken Sie sofort die "while" -Klausel. messages.NextPageUri hat nicht mehr den gleichen Wert wie beim if. –