Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Convert all options to have one class per level in the JSON params #1301

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 0 additions & 44 deletions src/Stripe.net/Infrastructure/Middleware/RequestStringBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,6 @@ private static List<Parameter> FlattenParamsValue(object value, string keyPrefix
{
flatParams = FlattenParamsOptions((INestedOptions)value, keyPrefix);
}
else if (value is DateFilter)
{
flatParams = FlattenParamsDateFilter((DateFilter)value, keyPrefix);
}
else if (IsDictionary(value))
{
// Cast to Dictionary<string, object>
Expand Down Expand Up @@ -164,46 +160,6 @@ private static List<Parameter> FlattenParamsOptions(INestedOptions options, stri
return flatParams;
}

/// <summary>
/// Returns a list of parameters for a given `DateFilter` object.
/// If an `EqualTo` value is provided, then it will be used directly with the key prefix.
/// Other values (`LessThan`, etc.) will be nested under the key prefix.
/// </summary>
/// <param name="filter">The filter for which to create the list of parameters.</param>
/// <param name="keyPrefix">The key under which new keys should be nested.</param>
/// <returns>The list of parameters</returns>
private static List<Parameter> FlattenParamsDateFilter(DateFilter filter, string keyPrefix)
{
List<Parameter> flatParams = new List<Parameter>();

if (filter.EqualTo.HasValue)
{
flatParams.AddRange(FlattenParamsValue(filter.EqualTo.Value.ToUniversalTime().ConvertDateTimeToEpoch().ToString(), keyPrefix));
}

if (filter.LessThan.HasValue)
{
flatParams.AddRange(FlattenParamsValue(filter.LessThan.Value.ToUniversalTime().ConvertDateTimeToEpoch().ToString(), $"{keyPrefix}[lt]"));
}

if (filter.LessThanOrEqual.HasValue)
{
flatParams.AddRange(FlattenParamsValue(filter.LessThanOrEqual.Value.ToUniversalTime().ConvertDateTimeToEpoch().ToString(), $"{keyPrefix}[lte]"));
}

if (filter.GreaterThan.HasValue)
{
flatParams.AddRange(FlattenParamsValue(filter.GreaterThan.Value.ToUniversalTime().ConvertDateTimeToEpoch().ToString(), $"{keyPrefix}[gt]"));
}

if (filter.GreaterThanOrEqual.HasValue)
{
flatParams.AddRange(FlattenParamsValue(filter.GreaterThanOrEqual.Value.ToUniversalTime().ConvertDateTimeToEpoch().ToString(), $"{keyPrefix}[gte]"));
}

return flatParams;
}

/// <summary>
/// Returns a list of parameters for a given dictionary. If a key prefix is provided, the
/// keys for the new parameters will be nested under the key prefix. E.g. if the key prefix
Expand Down
36 changes: 6 additions & 30 deletions src/Stripe.net/Services/Account/AccountAdditionalOwner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,43 +4,19 @@

public class AccountAdditionalOwner : INestedOptions
{
[JsonProperty("address[city]")]
public string CityOrTown { get; set; }
[JsonProperty("address")]
public AddressOptions Address { get; set; }

[JsonProperty("address[country]")]
public string Country { get; set; }

[JsonProperty("address[line1]")]
public string Line1 { get; set; }

[JsonProperty("address[line2]")]
public string Line2 { get; set; }

[JsonProperty("address[postal_code]")]
public string PostalCode { get; set; }

[JsonProperty("address[state]")]
public string State { get; set; }

[JsonProperty("dob[day]")]
public int? BirthDay { get; set; }

[JsonProperty("dob[month]")]
public int? BirthMonth { get; set; }

[JsonProperty("dob[year]")]
public int? BirthYear { get; set; }
[JsonProperty("dob")]
public AccountDobOptions Dob { get; set; }

[JsonProperty("first_name")]
public string FirstName { get; set; }

[JsonProperty("last_name")]
public string LastName { get; set; }

[JsonProperty("verification[document]")]
public string VerificationDocument { get; set; }

[JsonProperty("verification[document_back]")]
public string VerificationDocumentBack { get; set; }
[JsonProperty("verification")]
public AccountVerificationOptions Verification { get; set; }
}
}
13 changes: 13 additions & 0 deletions src/Stripe.net/Services/Account/AccountDeclineOptions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
namespace Stripe
{
using Newtonsoft.Json;

public class AccountDeclineOptions : INestedOptions
{
[JsonProperty("avs_failure")]
public bool? AvsFailure { get; set; }

[JsonProperty("cvc_failure")]
public bool? CvcFailure { get; set; }
}
}
16 changes: 16 additions & 0 deletions src/Stripe.net/Services/Account/AccountDobOptions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
namespace Stripe
{
using Newtonsoft.Json;

public class AccountDobOptions : INestedOptions
{
[JsonProperty("day")]
public int? Day { get; set; }

[JsonProperty("month")]
public int? Month { get; set; }

[JsonProperty("year")]
public int? Year { get; set; }
}
}
183 changes: 18 additions & 165 deletions src/Stripe.net/Services/Account/AccountLegalEntityOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,77 +5,17 @@

public class AccountLegalEntityOptions : INestedOptions
{
#region Address

[JsonProperty("address[city]")]
public string AddressCity { get; set; }

[JsonProperty("address[country]")]
public string AddressTwoLetterCountry { get; set; }

[JsonProperty("address[line1]")]
public string AddressLine1 { get; set; }

[JsonProperty("address[line2]")]
public string AddressLine2 { get; set; }

[JsonProperty("address[postal_code]")]
public string AddressPostalCode { get; set; }

[JsonProperty("address[state]")]
public string AddressState { get; set; }

#endregion

#region Address Kana

[JsonProperty("address_kana[city]")]
public string AddressKanaCity { get; set; }

[JsonProperty("address_kana[country]")]
public string AddressKanaTwoLetterCountry { get; set; }

[JsonProperty("address_kana[line1]")]
public string AddressKanaLine1 { get; set; }

[JsonProperty("address_kana[line2]")]
public string AddressKanaLine2 { get; set; }

[JsonProperty("address_kana[postal_code]")]
public string AddressKanaPostalCode { get; set; }

[JsonProperty("address_kana[state]")]
public string AddressKanaState { get; set; }

[JsonProperty("address_kana[town]")]
public string AddressKanaTown { get; set; }

#endregion

#region Address Kanji

[JsonProperty("address_kanji[city]")]
public string AddressKanjiCity { get; set; }

[JsonProperty("address_kanji[country]")]
public string AddressKanjiTwoLetterCountry { get; set; }

[JsonProperty("address_kanji[line1]")]
public string AddressKanjiLine1 { get; set; }

[JsonProperty("address_kanji[line2]")]
public string AddressKanjiLine2 { get; set; }

[JsonProperty("address_kanji[postal_code]")]
public string AddressKanjiPostalCode { get; set; }
[JsonProperty("additional_owners")]
public List<AccountAdditionalOwner> AdditionalOwners { get; set; }

[JsonProperty("address_kanji[state]")]
public string AddressKanjiState { get; set; }
[JsonProperty("address")]
public AddressOptions Address { get; set; }

[JsonProperty("address_kanji[town]")]
public string AddressKanjiTown { get; set; }
[JsonProperty("address_kana")]
public AddressJapanOptions AddressKana { get; set; }

#endregion
[JsonProperty("address_kanji")]
public AddressJapanOptions AddressKanji { get; set; }

[JsonProperty("business_name")]
public string BusinessName { get; set; }
Expand All @@ -92,18 +32,8 @@ public class AccountLegalEntityOptions : INestedOptions
[JsonProperty("business_vat_id")]
public string BusinessVatId { get; set; }

#region Date of Birth

[JsonProperty("dob[day]")]
public int? BirthDay { get; set; }

[JsonProperty("dob[month]")]
public int? BirthMonth { get; set; }

[JsonProperty("dob[year]")]
public int? BirthYear { get; set; }

#endregion
[JsonProperty("dob")]
public AccountDobOptions Dob { get; set; }

[JsonProperty("first_name")]
public string FirstName { get; set; }
Expand Down Expand Up @@ -132,77 +62,14 @@ public class AccountLegalEntityOptions : INestedOptions
[JsonProperty("maiden_name")]
public string MaidenName { get; set; }

#region Personal Address

[JsonProperty("personal_address[city]")]
public string PersonalAddressCity { get; set; }

[JsonProperty("personal_address[country]")]
public string PersonalAddressTwoLetterCountry { get; set; }
[JsonProperty("personal_address")]
public AddressOptions PersonalAddress { get; set; }

[JsonProperty("personal_address[line1]")]
public string PersonalAddressLine1 { get; set; }
[JsonProperty("personal_address_kana")]
public AddressJapanOptions PersonalAddressKana { get; set; }

[JsonProperty("personal_address[line2]")]
public string PersonalAddressLine2 { get; set; }

[JsonProperty("personal_address[postal_code]")]
public string PersonalAddressPostalCode { get; set; }

[JsonProperty("personal_address[state]")]
public string PersonalAddressState { get; set; }

#endregion

#region Personal Address Kana

[JsonProperty("personal_address_kana[city]")]
public string PersonalAddressKanaCity { get; set; }

[JsonProperty("personal_address_kana[country]")]
public string PersonalAddressKanaTwoLetterCountry { get; set; }

[JsonProperty("personal_address_kana[line1]")]
public string PersonalAddressKanaLine1 { get; set; }

[JsonProperty("personal_address_kana[line2]")]
public string PersonalAddressKanaLine2 { get; set; }

[JsonProperty("personal_address_kana[postal_code]")]
public string PersonalAddressKanaPostalCode { get; set; }

[JsonProperty("personal_address_kana[state]")]
public string PersonalAddressKanaState { get; set; }

[JsonProperty("personal_address_kana[town]")]
public string PersonalAddressKanaTown { get; set; }

#endregion

#region Personal Address Kanji

[JsonProperty("personal_address_kanji[city]")]
public string PersonalAddressKanjiCity { get; set; }

[JsonProperty("personal_address_kanji[country]")]
public string PersonalAddressKanjiTwoLetterCountry { get; set; }

[JsonProperty("personal_address_kanji[line1]")]
public string PersonalAddressKanjiLine1 { get; set; }

[JsonProperty("personal_address_kanji[line2]")]
public string PersonalAddressKanjiLine2 { get; set; }

[JsonProperty("personal_address_kanji[postal_code]")]
public string PersonalAddressKanjiPostalCode { get; set; }

[JsonProperty("personal_address_kanji[state]")]
public string PersonalAddressKanjiState { get; set; }

[JsonProperty("personal_address_kanji[town]")]
public string PersonalAddressKanjiTown { get; set; }

#endregion
[JsonProperty("personal_address_kanji")]
public AddressJapanOptions PersonalAddressKanji { get; set; }

[JsonProperty("personal_id_number")]
public string PersonalIdNumber { get; set; }
Expand All @@ -216,21 +83,7 @@ public class AccountLegalEntityOptions : INestedOptions
[JsonProperty("type")]
public string Type { get; set; }

#region Verification

[JsonProperty("verification[document]")]
public string VerificationDocumentFileId { get; set; }

[JsonProperty("verification[document_back]")]
public string VerificationDocumentFileBackId { get; set; }

#endregion

#region Additional Owners

[JsonProperty("additional_owners")]
public List<AccountAdditionalOwner> AdditionalOwners { get; set; }

#endregion
[JsonProperty("verification")]
public AccountVerificationOptions Verification { get; set; }
}
}
19 changes: 19 additions & 0 deletions src/Stripe.net/Services/Account/AccountPayoutScheduleOptions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
namespace Stripe
{
using Newtonsoft.Json;

public class AccountPayoutScheduleOptions : INestedOptions
{
[JsonProperty("delay_days")]
public string DelayDays { get; set; }

[JsonProperty("interval")]
public string Interval { get; set; }

[JsonProperty("monthly_anchor")]
public string MonthlyAnchor { get; set; }

[JsonProperty("weekly_anchor")]
public string WeeklyAnchor { get; set; }
}
}
Loading