/
BranchCreditHistoryRequest.m
102 lines (81 loc) · 3.43 KB
/
BranchCreditHistoryRequest.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
//
// BranchCreditHistoryRequest.m
// Branch-TestBed
//
// Created by Graham Mueller on 5/22/15.
// Copyright (c) 2015 Branch Metrics. All rights reserved.
//
#import "BranchCreditHistoryRequest.h"
#import "BNCPreferenceHelper.h"
#import "BranchConstants.h"
@interface BranchCreditHistoryRequest ()
@property (strong, nonatomic) callbackWithList callback;
@property (strong, nonatomic) NSString *bucket;
@property (strong, nonatomic) NSString *creditTransactionId;
@property (assign, nonatomic) NSInteger length;
@property (assign, nonatomic) BranchCreditHistoryOrder order;
@end
@implementation BranchCreditHistoryRequest
- (id)initWithBucket:(NSString *)bucket creditTransactionId:(NSString *)creditTransactionId length:(NSInteger)length order:(BranchCreditHistoryOrder)order callback:(callbackWithList)callback {
if (self = [super init]) {
_bucket = bucket;
_creditTransactionId = creditTransactionId;
_length = length;
_order = order;
_callback = callback;
}
return self;
}
- (void)makeRequest:(BNCServerInterface *)serverInterface key:(NSString *)key callback:(BNCServerCallback)callback {
NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
BNCPreferenceHelper *preferenceHelper = [BNCPreferenceHelper preferenceHelper];
params[BRANCH_REQUEST_KEY_DEVICE_FINGERPRINT_ID] = preferenceHelper.deviceFingerprintID;
params[BRANCH_REQUEST_KEY_BRANCH_IDENTITY] = preferenceHelper.identityID;
params[BRANCH_REQUEST_KEY_SESSION_ID] = preferenceHelper.sessionID;
params[BRANCH_REQUEST_KEY_LENGTH] = @(self.length);
params[BRANCH_REQUEST_KEY_DIRECTION] = self.order == BranchMostRecentFirst ? @"desc" : @"asc";
if (self.bucket) {
params[BRANCH_REQUEST_KEY_BUCKET] = self.bucket;
}
if (self.creditTransactionId) {
params[BRANCH_REQUEST_KEY_STARTING_TRANSACTION_ID] = self.creditTransactionId;
}
[serverInterface postRequest:params url:[preferenceHelper getAPIURL:BRANCH_REQUEST_ENDPOINT_CREDIT_HISTORY] key:key callback:callback];
}
- (void)processResponse:(BNCServerResponse *)response error:(NSError *)error {
if (error) {
if (self.callback) {
self.callback(nil, error);
}
return;
}
for (NSMutableDictionary *transaction in response.data) {
if ([transaction[BRANCH_RESPONSE_KEY_REFERRER] isEqual:[NSNull null]]) {
[transaction removeObjectForKey:BRANCH_RESPONSE_KEY_REFERRER];
}
if ([transaction[BRANCH_RESPONSE_KEY_REFERREE] isEqual:[NSNull null]]) {
[transaction removeObjectForKey:BRANCH_RESPONSE_KEY_REFERREE];
}
}
if (self.callback) {
self.callback(response.data, nil);
}
}
#pragma mark - NSCoding methods
- (id)initWithCoder:(NSCoder *)decoder {
if (self = [super initWithCoder:decoder]) {
_bucket = [decoder decodeObjectForKey:@"bucket"];
_creditTransactionId = [decoder decodeObjectForKey:@"creditTransactionId"];
_length = [decoder decodeIntegerForKey:@"length"];
_order = [decoder decodeIntegerForKey:@"order"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)coder {
[super encodeWithCoder:coder];
[coder encodeObject:self.bucket forKey:@"bucket"];
[coder encodeObject:self.creditTransactionId forKey:@"creditTransactionId"];
[coder encodeInteger:self.length forKey:@"length"];
[coder encodeInteger:self.order forKey:@"order"];
}
@end