2016-03-22 9 views
2

Ich versuche, alle Stripe-Rechnungen mit einem Datumsfilter zu erhalten. Im Moment kann das ServiceStack.Stripe Paket nur für Date Gleichheit:ServiceStack Stripe alle Rechnungen mit Datumsfilter erhalten

[Route("/invoices")] 
public class GetStripeInvoices : IGet, IReturn<StripeCollection<StripeInvoice>> 
{ 
    public string Customer { get; set; } 
    public DateTime? Date { get; set; } 
    public int? Count { get; set; } 
    public int? Offset { get; set; } 
} 

Es gibt keine Optionen für "lt", "lte", "gt" und "gte".

Um braucht diese die Anforderung hinzufügen, um etwa so aussehen:

?date%5Blt%5D=1337923293 

Wir können nicht diese Sonderzeichen in einem C# name-Attribute, so gibt es eine andere Möglichkeit, die Klasse so, dass es außer Kraft zu setzen serialisiert, um den für die Datumsfilter erforderlichen Anfrageparametern zu entsprechen?

Antwort

2

Ich habe gerade Unterstützung für Stripe DateOptions in this commit wo Sie die neue DateOptions Eigenschaft verwenden, können Sie ein benutzerdefiniertes Datum angeben, zB Sie ein lt Datum angeben:

verfügbar
var response = gateway.Get(new GetStripeInvoices 
{ 
    DateOptions = new StripeDateOptions { 
     Before = DateTime.UtcNow 
    } 
}); 

Die verschiedenen Optionen Datum umfassen:

public class StripeDateOptions 
{ 
    public DateTime? After { get; set; }  //gt 
    public DateTime? OnOrAfter { get; set; } //gte 
    public DateTime? Before { get; set; }  //lt 
    public DateTime? OnOrBefore { get; set; } //lte 
} 

Dieser Wechsel von v4.0.55 verfügbar ist, die jetzt available on MyGet ist.

+0

Nicht sehr Fan von 4 Eigenschaften, kann es verwirrend sein, wenn der Benutzer mehrere angibt. Was ist mit StriperDateOptions {public DateComparison Operation {get; set;} public DateTime Date {get; einstellen; }} // where DateComparison ist ein enum mit GreaterThan, GreaterThanOrEqualTo ... – labilbe

+1

@labile Es ist genau nach der Implementierung in Stripe's API modelliert, es versucht nicht, eine neue Abstraktion nur für C# zu erfinden, anders als jede andere Stripe-Bibliothek . Stripe hätte ihre REST-API anders gestalten können, so dass die Verwendung und der Oberflächenbereich begrenzter sind, aber sie entwarfen es so, wie wir es taten, und wir folgen so genau wie möglich mit einem typisierten 1: 1-Wrapper, um leichter zu sehen, wie jede Eigenschaft aussieht wird auf die dokumentierte REST-API von Stripe übertragen. – mythz

+0

Scheint echt in der Tat. – labilbe