BTClientMetadata.m 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #if __has_include(<Braintree/BraintreeCore.h>)
  2. #import <Braintree/BTClientMetadata.h>
  3. #else
  4. #import <BraintreeCore/BTClientMetadata.h>
  5. #endif
  6. @interface BTClientMetadata () {
  7. @protected
  8. BTClientMetadataIntegrationType _integration;
  9. BTClientMetadataSourceType _source;
  10. NSString *_sessionID;
  11. }
  12. @end
  13. @implementation BTClientMetadata
  14. - (instancetype)init {
  15. self = [super init];
  16. if (self) {
  17. _integration = BTClientMetadataIntegrationCustom;
  18. _source = BTClientMetadataSourceUnknown;
  19. _sessionID = [[[NSUUID UUID] UUIDString] stringByReplacingOccurrencesOfString:@"-" withString:@""];
  20. }
  21. return self;
  22. }
  23. - (id)copyWithZone:(NSZone *)zone {
  24. BTClientMetadata *copiedMetadata = [[BTClientMetadata allocWithZone:zone] init];
  25. copiedMetadata->_integration = _integration;
  26. copiedMetadata->_source = _source;
  27. copiedMetadata->_sessionID = [_sessionID copyWithZone:zone];
  28. return copiedMetadata;
  29. }
  30. - (id)mutableCopyWithZone:(NSZone *)zone {
  31. BTMutableClientMetadata *mutableMetadata = [[BTMutableClientMetadata allocWithZone:zone] init];
  32. mutableMetadata.integration = _integration;
  33. mutableMetadata.source = _source;
  34. mutableMetadata.sessionID = [_sessionID copyWithZone:zone];
  35. return mutableMetadata;
  36. }
  37. - (NSString *)integrationString {
  38. return [[self class] integrationToString:self.integration];
  39. }
  40. - (NSString *)sourceString {
  41. return [[self class] sourceToString:self.source];
  42. }
  43. - (NSDictionary *)parameters {
  44. return @{
  45. @"integration": self.integrationString,
  46. @"source": self.sourceString,
  47. @"sessionId": self.sessionID
  48. };
  49. }
  50. #pragma mark Internal helpers
  51. + (NSString *)integrationToString:(BTClientMetadataIntegrationType)integration {
  52. switch (integration) {
  53. case BTClientMetadataIntegrationCustom:
  54. return @"custom";
  55. case BTClientMetadataIntegrationDropIn:
  56. return @"dropin";
  57. case BTClientMetadataIntegrationDropIn2:
  58. return @"dropin2";
  59. case BTClientMetadataIntegrationUnknown:
  60. return @"unknown";
  61. }
  62. }
  63. + (NSString *)sourceToString:(BTClientMetadataSourceType)source {
  64. switch (source) {
  65. case BTClientMetadataSourcePayPalApp:
  66. return @"paypal-app";
  67. case BTClientMetadataSourcePayPalBrowser:
  68. return @"paypal-browser";
  69. case BTClientMetadataSourceVenmoApp:
  70. return @"venmo-app";
  71. case BTClientMetadataSourceForm:
  72. return @"form";
  73. case BTClientMetadataSourceUnknown:
  74. return @"unknown";
  75. }
  76. }
  77. @end
  78. @implementation BTMutableClientMetadata
  79. - (void)setIntegration:(BTClientMetadataIntegrationType)integration {
  80. _integration = integration;
  81. }
  82. - (void)setSource:(BTClientMetadataSourceType)source {
  83. _source = source;
  84. }
  85. - (void)setSessionID:(NSString *)sessionID {
  86. _sessionID = sessionID;
  87. }
  88. @end