BTThreeDSecurePostalAddress.m 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #import "BTThreeDSecurePostalAddress_Internal.h"
  2. @implementation BTThreeDSecurePostalAddress
  3. // Property names follow the `Braintree_Address` convention as documented at:
  4. // https://developer.paypal.com/braintree/docs/reference/request/address/create
  5. - (id)copyWithZone:(__unused NSZone *)zone {
  6. BTThreeDSecurePostalAddress *address = [[BTThreeDSecurePostalAddress alloc] init];
  7. address.givenName = self.givenName;
  8. address.surname = self.surname;
  9. address.streetAddress = self.streetAddress;
  10. address.extendedAddress = self.extendedAddress;
  11. address.line3 = self.line3;
  12. address.locality = self.locality;
  13. address.region = self.region;
  14. address.postalCode = self.postalCode;
  15. address.countryCodeAlpha2 = self.countryCodeAlpha2;
  16. address.phoneNumber = self.phoneNumber;
  17. return address;
  18. }
  19. - (NSString *)prependPrefix:(NSString *)prefix toKey:(NSString *)key {
  20. if (prefix.length) {
  21. // Uppercase the first character in the key
  22. key = [key stringByReplacingCharactersInRange:NSMakeRange(0, 1)
  23. withString:[[key substringToIndex:1] uppercaseString]];
  24. return [NSString stringWithFormat:@"%@%@", prefix, key];
  25. }
  26. else {
  27. return key;
  28. }
  29. }
  30. - (NSDictionary *)asParametersWithPrefix:(NSString *)prefix {
  31. NSMutableDictionary *parameters = [@{} mutableCopy];
  32. if (self.givenName) {
  33. parameters[[self prependPrefix:prefix toKey:@"givenName"]] = self.givenName;
  34. }
  35. if (self.surname) {
  36. parameters[[self prependPrefix:prefix toKey:@"surname"]] = self.surname;
  37. }
  38. if (self.streetAddress) {
  39. parameters[[self prependPrefix:prefix toKey:@"line1"]] = self.streetAddress;
  40. }
  41. if (self.extendedAddress) {
  42. parameters[[self prependPrefix:prefix toKey:@"line2"]] = self.extendedAddress;
  43. }
  44. if (self.line3) {
  45. parameters[[self prependPrefix:prefix toKey:@"line3"]] = self.line3;
  46. }
  47. if (self.locality) {
  48. parameters[[self prependPrefix:prefix toKey:@"city"]] = self.locality;
  49. }
  50. if (self.region) {
  51. parameters[[self prependPrefix:prefix toKey:@"state"]] = self.region;
  52. }
  53. if (self.postalCode) {
  54. parameters[[self prependPrefix:prefix toKey:@"postalCode"]] = self.postalCode;
  55. }
  56. if (self.countryCodeAlpha2) {
  57. parameters[[self prependPrefix:prefix toKey:@"countryCode"]] = self.countryCodeAlpha2;
  58. }
  59. if (self.phoneNumber) {
  60. NSString *key = @"phoneNumber";
  61. if ([prefix isEqualToString:@"shipping"]) {
  62. key = @"phone";
  63. }
  64. parameters[[self prependPrefix:prefix toKey:key]] = self.phoneNumber;
  65. }
  66. return [parameters copy];
  67. }
  68. - (NSDictionary *)asParameters {
  69. return [self asParametersWithPrefix:@""];
  70. }
  71. - (NSString *)debugDescription {
  72. return [NSString stringWithFormat:@"<%@:%p \"%@\" %@, %@, %@, %@, %@, %@, %@, %@ %@ %@>", NSStringFromClass([self class]), self, [self description], self.givenName, self.surname, self.phoneNumber, self.streetAddress, self.extendedAddress, self.line3, self.locality, self.region, self.postalCode, self.countryCodeAlpha2];
  73. }
  74. @end