BTClientMetadata.m 2.8 KB

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