Skip to content

Commit c641617

Browse files
authored
Merge pull request #1262 from BranchMetrics/SDK-1934-add-public-method-for-BranchAPIBaseURL
Sdk 1934 add public method for branch api base url
2 parents eb67ae0 + d8a6614 commit c641617

File tree

7 files changed

+126
-2
lines changed

7 files changed

+126
-2
lines changed

Branch-TestBed/Branch-SDK-Tests/BNCPreferenceHelperTests.m

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
#import "BNCPreferenceHelper.h"
1111
#import "BNCEncodingUtils.h"
1212
#import "Branch.h"
13+
#import "BranchPluginSupport.h"
14+
#import "BNCConfig.h"
1315

1416
@interface BNCPreferenceHelper()
1517

@@ -208,4 +210,60 @@ - (void)testURLSkipList {
208210
XCTAssert([filterDesc isEqualToString:valueDesc]);
209211
}
210212

213+
- (void)testSetAPIURL_Example {
214+
215+
NSString *url = @"https://www.example.com/";
216+
[BranchPluginSupport setAPIUrl:url] ;
217+
218+
NSString *urlStored = [BNCPreferenceHelper sharedInstance].branchAPIURL ;
219+
XCTAssert([url isEqualToString:urlStored]);
220+
}
221+
222+
- (void)testSetAPIURL_InvalidHttp {
223+
224+
NSString *url = @"Invalid://www.example.com/";
225+
[BranchPluginSupport setAPIUrl:url] ;
226+
227+
NSString *urlStored = [BNCPreferenceHelper sharedInstance].branchAPIURL ;
228+
XCTAssert(![url isEqualToString:urlStored]);
229+
XCTAssert([urlStored isEqualToString:BNC_API_BASE_URL]);
230+
}
231+
232+
- (void)testSetAPIURL_InvalidEmpty {
233+
234+
[BranchPluginSupport setAPIUrl:@""] ;
235+
236+
NSString *urlStored = [BNCPreferenceHelper sharedInstance].branchAPIURL ;
237+
XCTAssert(![urlStored isEqualToString:@""]);
238+
XCTAssert([urlStored isEqualToString:BNC_API_BASE_URL]);
239+
}
240+
241+
- (void)testSetCDNBaseURL_Example {
242+
243+
NSString *url = @"https://www.example.com/";
244+
[BranchPluginSupport setCDNBaseUrl:url] ;
245+
246+
NSString *urlStored = [BNCPreferenceHelper sharedInstance].patternListURL ;
247+
XCTAssert([url isEqualToString:urlStored]);
248+
}
249+
250+
- (void)testSetCDNBaseURL_InvalidHttp {
251+
252+
NSString *url = @"Invalid://www.example.com/";
253+
[BranchPluginSupport setCDNBaseUrl:url] ;
254+
255+
NSString *urlStored = [BNCPreferenceHelper sharedInstance].patternListURL ;
256+
XCTAssert(![url isEqualToString:urlStored]);
257+
XCTAssert([urlStored isEqualToString:BNC_CDN_URL]);
258+
}
259+
260+
- (void)testSetCDNBaseURL_InvalidEmpty {
261+
262+
[BranchPluginSupport setCDNBaseUrl:@""] ;
263+
264+
NSString *urlStored = [BNCPreferenceHelper sharedInstance].patternListURL ;
265+
XCTAssert(![urlStored isEqualToString:@""]);
266+
XCTAssert([urlStored isEqualToString:BNC_CDN_URL]);
267+
}
268+
211269
@end

BranchSDK/BNCConfig.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,4 @@ FOUNDATION_EXPORT NSString*_Nonnull const BNC_SDK_VERSION;
1717
FOUNDATION_EXPORT NSString*_Nonnull const BNC_API_BASE_URL;
1818
FOUNDATION_EXPORT NSString*_Nonnull const BNC_API_VERSION;
1919
FOUNDATION_EXPORT NSString*_Nonnull const BNC_LINK_URL;
20+
FOUNDATION_EXPORT NSString* _Nonnull const BNC_CDN_URL;

BranchSDK/BNCConfig.m

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@
1212
NSString * const BNC_API_VERSION = @"v1";
1313
NSString * const BNC_LINK_URL = @"https://bnc.lt";
1414
NSString * const BNC_SDK_VERSION = @"2.1.2";
15+
NSString * const BNC_CDN_URL = @"https://cdn.branch.io";

BranchSDK/BNCPreferenceHelper.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ NSURL* /* _Nonnull */ BNCURLForBranchDirectory(void);
8787
- (NSString *)getAPIURL:(NSString *)endpoint;
8888
- (NSString *)getEndpointFromURL:(NSString *)url;
8989

90+
- (void) setBranchAPIURL:(NSString*)branchAPIURL;
91+
- (void) setPatternListURL:(NSString*)cdnURL;
92+
9093
- (void)setRequestMetadataKey:(NSString *)key value:(NSObject *)value;
9194
- (NSMutableDictionary *)requestMetadataDictionary;
9295

BranchSDK/BNCPreferenceHelper.m

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626
static NSString * const BRANCH_PREFS_KEY_LAST_RUN_BRANCH_KEY = @"bnc_last_run_branch_key";
2727
static NSString * const BRANCH_PREFS_KEY_LAST_STRONG_MATCH_DATE = @"bnc_strong_match_created_date";
2828

29+
static NSString * const BRANCH_PREFS_KEY_API_URL = @"bnc_api_url";
30+
static NSString * const BRANCH_PREFS_KEY_PATTERN_LIST_URL = @"bnc_pattern_list_url";
31+
2932
static NSString * const BRANCH_PREFS_KEY_RANDOMIZED_DEVICE_TOKEN = @"bnc_randomized_device_token";
3033
static NSString * const BRANCH_PREFS_KEY_RANDOMIZED_BUNDLE_TOKEN = @"bnc_randomized_bundle_token";
3134

@@ -108,7 +111,8 @@ @implementation BNCPreferenceHelper
108111
highestConversionValueSent = _highestConversionValueSent,
109112
logInAppPurchasesAsBranchEvents = _logInAppPurchasesAsBranchEvents,
110113
referringURLQueryParameters = _referringURLQueryParameters,
111-
anonID = _anonID;
114+
anonID = _anonID,
115+
patternListURL = _patternListURL;
112116

113117
+ (BNCPreferenceHelper *)sharedInstance {
114118
static BNCPreferenceHelper *preferenceHelper;
@@ -131,7 +135,6 @@ - (instancetype)init {
131135
_persistPrefsQueue = [[NSOperationQueue alloc] init];
132136
_persistPrefsQueue.maxConcurrentOperationCount = 1;
133137

134-
self.patternListURL = @"https://cdn.branch.io";
135138
self.disableAdNetworkCallouts = NO;
136139
}
137140
return self;
@@ -150,13 +153,18 @@ - (void) dealloc {
150153
- (void) setBranchAPIURL:(NSString*)branchAPIURL_ {
151154
@synchronized (self) {
152155
_branchAPIURL = [branchAPIURL_ copy];
156+
[self writeObjectToDefaults:BRANCH_PREFS_KEY_API_URL value:_branchAPIURL];
153157
}
154158
}
155159

156160
- (NSString*) branchAPIURL {
157161
@synchronized (self) {
158162
if (!_branchAPIURL) {
163+
_branchAPIURL = [self readStringFromDefaults:BRANCH_PREFS_KEY_API_URL];
164+
}
165+
if (_branchAPIURL == nil || [_branchAPIURL isEqualToString:@""]) {
159166
_branchAPIURL = [BNC_API_BASE_URL copy];
167+
[self writeObjectToDefaults:BRANCH_PREFS_KEY_API_URL value:_branchAPIURL];
160168
}
161169
return _branchAPIURL;
162170
}
@@ -181,6 +189,26 @@ - (NSString *)getEndpointFromURL:(NSString *)url {
181189
return @"";
182190
}
183191

192+
- (void) setPatternListURL:(NSString*)url {
193+
@synchronized (self) {
194+
_patternListURL = url;
195+
[self writeObjectToDefaults:BRANCH_PREFS_KEY_PATTERN_LIST_URL value:url];
196+
}
197+
}
198+
199+
- (NSString*) patternListURL {
200+
@synchronized (self) {
201+
if (!_patternListURL) {
202+
_patternListURL = [self readStringFromDefaults:BRANCH_PREFS_KEY_PATTERN_LIST_URL];
203+
}
204+
if (_patternListURL == nil || [_patternListURL isEqualToString:@""]) {
205+
_patternListURL = BNC_CDN_URL;
206+
[self writeObjectToDefaults:BRANCH_PREFS_KEY_PATTERN_LIST_URL value:_patternListURL];
207+
}
208+
return _patternListURL;
209+
}
210+
}
211+
184212
#pragma mark - Preference Storage
185213

186214
- (NSString *)lastRunBranchKey {

BranchSDK/BranchPluginSupport.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,17 @@ NS_ASSUME_NONNULL_BEGIN
1313
@interface BranchPluginSupport : NSObject
1414

1515
+ (BranchPluginSupport *)instance;
16+
/**
17+
Sets a custom base URL for all calls to the Branch API.
18+
@param url Base URL that the Branch API will use.
19+
*/
20+
+ (void)setAPIUrl:(NSString *)url;
21+
22+
/**
23+
Sets a custom CDN base URL
24+
@param url Base URL for CDN endpoints.
25+
*/
26+
+ (void)setCDNBaseUrl:(NSString *)url;
1627

1728
- (NSDictionary<NSString *, NSString *> *)deviceDescription;
1829

BranchSDK/BranchPluginSupport.m

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
#import "BNCDeviceInfo.h"
1212
#import "BNCPreferenceHelper.h"
1313
#import "Branch.h"
14+
#import "BNCLog.h"
15+
#import "BNCConfig.h"
1416

1517
@implementation BranchPluginSupport
1618

@@ -50,4 +52,24 @@ + (BranchPluginSupport *)instance {
5052
return dictionary;
5153
}
5254

55+
#pragma mark - Server URL methods
56+
57+
+ (void)setAPIUrl:(NSString *)url {
58+
if([url hasPrefix:@"http://"] || [url hasPrefix:@"https://"] ){
59+
[[BNCPreferenceHelper sharedInstance] setBranchAPIURL:url];
60+
} else {
61+
BNCLogWarning([NSString stringWithFormat:@"Not setting url - %@. Its invalid.", url]);
62+
[[BNCPreferenceHelper sharedInstance] setBranchAPIURL:BNC_API_BASE_URL];
63+
}
64+
}
65+
66+
+ (void)setCDNBaseUrl:(NSString *)url {
67+
if([url hasPrefix:@"http://"] || [url hasPrefix:@"https://"] ){
68+
[[BNCPreferenceHelper sharedInstance] setPatternListURL:url];
69+
} else {
70+
BNCLogWarning([NSString stringWithFormat:@"Not setting url - %@. Its invalid.", url]);
71+
[[BNCPreferenceHelper sharedInstance] setPatternListURL:BNC_CDN_URL];
72+
}
73+
}
74+
5375
@end

0 commit comments

Comments
 (0)