Skip to content

Commit b42ae70

Browse files
[release] 0.37.0
1 parent 6ec7b3b commit b42ae70

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+764
-1116
lines changed

Branch-SDK/BNCConfig.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@
1111
NSString * const BNC_API_BASE_URL = @"https://api2.branch.io";
1212
NSString * const BNC_API_VERSION = @"v1";
1313
NSString * const BNC_LINK_URL = @"https://bnc.lt";
14-
NSString * const BNC_SDK_VERSION = @"0.36.0";
14+
NSString * const BNC_SDK_VERSION = @"0.37.0";

Branch-SDK/BNCPartnerParameters.h

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
//
2+
// BNCPartnerParameters.h
3+
// Branch
4+
//
5+
// Created by Ernest Cho on 12/9/20.
6+
// Copyright © 2020 Branch, Inc. All rights reserved.
7+
//
8+
9+
#import <Foundation/Foundation.h>
10+
11+
NS_ASSUME_NONNULL_BEGIN
12+
13+
/**
14+
Parameters that clients wish to share with partners
15+
*/
16+
@interface BNCPartnerParameters : NSObject
17+
18+
+ (instancetype)shared;
19+
20+
// FB partner parameters, see FB documentation for details
21+
// Values that do not look like a valid SHA-256 hash are ignored
22+
- (void)addFaceBookParameterWithName:(NSString *)name value:(NSString *)value;
23+
24+
- (void)clearAllParameters;
25+
26+
// reference to the internal json dictionary
27+
- (NSDictionary *)parameterJson;
28+
29+
@end
30+
31+
NS_ASSUME_NONNULL_END

Branch-SDK/BNCPartnerParameters.m

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
//
2+
// BNCPartnerParameters.m
3+
// Branch
4+
//
5+
// Created by Ernest Cho on 12/9/20.
6+
// Copyright © 2020 Branch, Inc. All rights reserved.
7+
//
8+
9+
#import "BNCPartnerParameters.h"
10+
11+
@interface BNCPartnerParameters()
12+
@property (nonatomic, strong, readwrite) NSMutableDictionary<NSString *, NSMutableDictionary<NSString *, NSString *> *> *parameters;
13+
@end
14+
15+
@implementation BNCPartnerParameters
16+
17+
+ (instancetype)shared {
18+
static BNCPartnerParameters *partnerParameters;
19+
static dispatch_once_t onceToken;
20+
dispatch_once(&onceToken, ^{
21+
partnerParameters = [BNCPartnerParameters new];
22+
});
23+
return partnerParameters;
24+
}
25+
26+
- (instancetype)init {
27+
self = [super init];
28+
if (self) {
29+
self.parameters = [NSMutableDictionary<NSString *, NSMutableDictionary<NSString *, NSString *> *> new];
30+
}
31+
return self;
32+
}
33+
34+
- (void)clearAllParameters {
35+
self.parameters = [NSMutableDictionary<NSString *, NSMutableDictionary<NSString *, NSString *> *> new];
36+
}
37+
38+
- (NSMutableDictionary<NSString *, NSString *> *)parametersForPartner:(NSString *)partnerName {
39+
NSMutableDictionary<NSString *, NSString *> *parametersForPartner = [self.parameters objectForKey:partnerName];
40+
if (!parametersForPartner) {
41+
parametersForPartner = [NSMutableDictionary<NSString *, NSString *> new];
42+
[self.parameters setObject:parametersForPartner forKey:partnerName];
43+
}
44+
return parametersForPartner;
45+
}
46+
47+
- (void)addParameterWithName:(NSString *)name value:(NSString *)value partnerName:(NSString *)partnerName {
48+
NSMutableDictionary<NSString *, NSString *> *parametersForPartner = [self parametersForPartner:partnerName];
49+
[parametersForPartner setObject:value forKey:name];
50+
}
51+
52+
- (void)addFaceBookParameterWithName:(NSString *)name value:(NSString *)value {
53+
if ([self sha256HashSanityCheckValue:value]) {
54+
[self addParameterWithName:name value:value partnerName:@"fb"];
55+
} else {
56+
// TODO: log a warning that the parameter looks invalid and will be ignored. Do not log the value as it may be PII that was inadvertently passed in.
57+
}
58+
}
59+
60+
- (BOOL)sha256HashSanityCheckValue:(NSString *)value {
61+
return ([value length] == 64 && [self isStringHex:value]);
62+
}
63+
64+
- (BOOL)isStringHex:(NSString *)string {
65+
NSCharacterSet *chars = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789ABCDEF"] invertedSet];
66+
return (NSNotFound == [[string uppercaseString] rangeOfCharacterFromSet:chars].location);
67+
}
68+
69+
- (NSDictionary *)parameterJson {
70+
return self.parameters;
71+
}
72+
73+
@end

Branch-SDK/BNCPreferenceHelper.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,16 +46,16 @@ NSURL* /* _Nonnull */ BNCURLForBranchDirectory(void);
4646
@property (strong, nonatomic) NSString *browserUserAgentString;
4747
@property (strong, atomic) NSString *referringURL;
4848
@property (strong, atomic) NSString *branchAPIURL;
49-
@property (nonatomic, strong, readwrite) NSString *branchBlacklistURL;
5049
@property (assign, atomic) BOOL limitFacebookTracking;
5150
@property (strong, atomic) NSDate *previousAppBuildDate;
5251
@property (assign, nonatomic, readwrite) BOOL disableAdNetworkCallouts;
5352

5453
@property (strong, nonatomic, readwrite) NSURL *faceBookAppLink;
5554

56-
@property (strong, atomic) NSArray<NSString*> *URLBlackList;
57-
@property (assign, atomic) NSInteger URLBlackListVersion;
58-
@property (assign, atomic) BOOL blacklistURLOpen;
55+
@property (nonatomic, strong, readwrite) NSString *patternListURL;
56+
@property (strong, atomic) NSArray<NSString*> *savedURLPatternList;
57+
@property (assign, atomic) NSInteger savedURLPatternListVersion;
58+
@property (assign, atomic) BOOL dropURLOpen;
5959

6060
@property (assign, nonatomic) BOOL sendCloseRequests;
6161

@@ -85,6 +85,7 @@ NSURL* /* _Nonnull */ BNCURLForBranchDirectory(void);
8585

8686
- (void)addInstrumentationDictionaryKey:(NSString *)key value:(NSString *)value;
8787
- (NSMutableDictionary *)instrumentationDictionary;
88+
- (NSDictionary *)instrumentationParameters; // a safe copy to use in a POST body
8889
- (void)clearInstrumentationDictionary;
8990

9091
- (void)saveBranchAnalyticsData:(NSDictionary *)analyticsData;

Branch-SDK/BNCPreferenceHelper.m

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ - (instancetype)init {
107107
_persistPrefsQueue = [[NSOperationQueue alloc] init];
108108
_persistPrefsQueue.maxConcurrentOperationCount = 1;
109109

110-
self.branchBlacklistURL = @"https://cdn.branch.io";
110+
self.patternListURL = @"https://cdn.branch.io";
111111
self.disableAdNetworkCallouts = NO;
112112
}
113113
return self;
@@ -492,6 +492,15 @@ - (void)setRequestMetadataKey:(NSString *)key value:(NSObject *)value {
492492
}
493493
}
494494

495+
- (NSDictionary *)instrumentationParameters {
496+
@synchronized (self) {
497+
if (_instrumentationDictionary.count == 0) {
498+
return nil; // this avoids the .count check in prepareParamDict
499+
}
500+
return [[NSDictionary alloc] initWithDictionary:_instrumentationDictionary];
501+
}
502+
}
503+
495504
- (NSMutableDictionary *)instrumentationDictionary {
496505
@synchronized (self) {
497506
if (!_instrumentationDictionary) {
@@ -542,41 +551,41 @@ - (void) setPreviousAppBuildDate:(NSDate*)date {
542551
}
543552
}
544553

545-
- (NSArray<NSString*>*) URLBlackList {
554+
- (NSArray<NSString*>*) savedURLPatternList {
546555
@synchronized(self) {
547-
id a = [self readObjectFromDefaults:@"URLBlackList"];
556+
id a = [self readObjectFromDefaults:@"URLPatternList"];
548557
if ([a isKindOfClass:NSArray.class]) return a;
549558
return nil;
550559
}
551560
}
552561

553-
- (void) setURLBlackList:(NSArray<NSString *> *)URLBlackList {
562+
- (void) setSavedURLPatternList:(NSArray<NSString *> *)URLPatternList {
554563
@synchronized(self) {
555-
[self writeObjectToDefaults:@"URLBlackList" value:URLBlackList];
564+
[self writeObjectToDefaults:@"URLPatternList" value:URLPatternList];
556565
}
557566
}
558567

559-
- (NSInteger) URLBlackListVersion {
568+
- (NSInteger) savedURLPatternListVersion {
560569
@synchronized(self) {
561-
return [self readIntegerFromDefaults:@"URLBlackListVersion"];
570+
return [self readIntegerFromDefaults:@"URLPatternListVersion"];
562571
}
563572
}
564573

565-
- (void) setURLBlackListVersion:(NSInteger)URLBlackListVersion {
574+
- (void) setSavedURLPatternListVersion:(NSInteger)URLPatternListVersion {
566575
@synchronized(self) {
567-
[self writeIntegerToDefaults:@"URLBlackListVersion" value:URLBlackListVersion];
576+
[self writeIntegerToDefaults:@"URLPatternListVersion" value:URLPatternListVersion];
568577
}
569578
}
570579

571-
- (BOOL) blacklistURLOpen {
580+
- (BOOL) dropURLOpen {
572581
@synchronized(self) {
573-
return [self readBoolFromDefaults:@"blacklistURLOpen"];
582+
return [self readBoolFromDefaults:@"dropURLOpen"];
574583
}
575584
}
576585

577-
- (void) setBlacklistURLOpen:(BOOL)value {
586+
- (void) setDropURLOpen:(BOOL)value {
578587
@synchronized(self) {
579-
[self writeBoolToDefaults:@"blacklistURLOpen" value:value];
588+
[self writeBoolToDefaults:@"dropURLOpen" value:value];
580589
}
581590
}
582591

Branch-SDK/BNCServerInterface.m

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -443,10 +443,12 @@ - (NSMutableDictionary *)prepareParamDict:(NSDictionary *)params
443443
fullParamDict[BRANCH_REQUEST_KEY_STATE] = metadata;
444444
}
445445
// we only send instrumentation info in the POST body request
446-
if (self.preferenceHelper.instrumentationDictionary.count && [reqType isEqualToString:@"POST"]) {
447-
fullParamDict[BRANCH_REQUEST_KEY_INSTRUMENTATION] = self.preferenceHelper.instrumentationDictionary;
446+
if ([reqType isEqualToString:@"POST"]) {
447+
NSDictionary *instrumentationDictionary = self.preferenceHelper.instrumentationParameters;
448+
if (instrumentationDictionary) {
449+
fullParamDict[BRANCH_REQUEST_KEY_INSTRUMENTATION] = instrumentationDictionary;
450+
}
448451
}
449-
450452
return fullParamDict;
451453
}
452454

Branch-SDK/BNCURLBlackList.h

Lines changed: 0 additions & 41 deletions
This file was deleted.

Branch-SDK/BNCURLFilter.h

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/**
2+
@file BNCURLFilter.h
3+
@package Branch-SDK
4+
@brief Manages a list of sensitive URLs such as login data that should not be handled by Branch.
5+
6+
@author Edward Smith
7+
@date February 14, 2018
8+
@copyright Copyright © 2018 Branch. All rights reserved.
9+
*/
10+
11+
#if __has_feature(modules)
12+
@import Foundation;
13+
#else
14+
#import <Foundation/Foundation.h>
15+
#endif
16+
17+
@interface BNCURLFilter : NSObject
18+
19+
/**
20+
@brief Checks if a given URL should be ignored.
21+
22+
@param url The URL to be checked.
23+
@return Returns true if the provided URL should be ignored.
24+
*/
25+
- (BOOL) shouldIgnoreURL:(NSURL*_Nullable)url;
26+
27+
/**
28+
@brief Returns the pattern that matches a URL, if any.
29+
30+
@param url The URL to be checked.
31+
@return Returns the pattern matching the URL or `nil` if no patterns match.
32+
*/
33+
- (NSString*_Nullable) patternMatchingURL:(NSURL*_Nullable)url;
34+
35+
/// Refreshes the list of ignored URLs from the server.
36+
- (void) updatePatternListWithCompletion:(void (^_Nullable) (NSError*_Nullable error, NSArray*_Nullable list))completion;
37+
38+
/// Is YES if the listed has already been updated from the server.
39+
@property (assign, readonly) BOOL hasUpdatedPatternList;
40+
@property (strong) NSArray<NSString*>*_Nullable patternList;
41+
@end

0 commit comments

Comments
 (0)