Dr0ptp4kt has uploaded a new change for review. https://gerrit.wikimedia.org/r/130674
Change subject: WIP: DO NOT MERGE! Add MCC-MNC once per app session on cellular. ...................................................................... WIP: DO NOT MERGE! Add MCC-MNC once per app session on cellular. Change-Id: I1c145a623abb582449152f0cf37ffaac3e8829ff --- M wikipedia/Categories/NSURLRequest+DictionaryRequest.m M wikipedia/Zero/ZeroConfigState.h 2 files changed, 68 insertions(+), 0 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/ios/wikipedia refs/changes/74/130674/1 diff --git a/wikipedia/Categories/NSURLRequest+DictionaryRequest.m b/wikipedia/Categories/NSURLRequest+DictionaryRequest.m index ae17b7e..9c1cd68 100644 --- a/wikipedia/Categories/NSURLRequest+DictionaryRequest.m +++ b/wikipedia/Categories/NSURLRequest+DictionaryRequest.m @@ -3,7 +3,11 @@ #import "NSURLRequest+DictionaryRequest.h" #import "NSString+Extras.h" +#import "SessionSingleton.h" #import "WikipediaAppUtils.h" +#import <CoreTelephony/CTCarrier.h> +#import <CoreTelephony/CTTelephonyNetworkInfo.h> +#include <SystemConfiguration/SystemConfiguration.h> @implementation NSURLRequest (DictionaryRequest) @@ -30,6 +34,7 @@ [request addValue:@"" forHTTPHeaderField:@"Accept-Encoding"]; [request addValue:[WikipediaAppUtils versionedUserAgent] forHTTPHeaderField:@"User-Agent"]; // NSLog(@"%@", [WikipediaAppUtils versionedUserAgent]); + [self addMCCMNCToRequestIfAppropriate:request]; [request setHTTPBody:[[NSURLRequest constructEncodedURL:parameters] dataUsingEncoding:NSUTF8StringEncoding]]; return request; } @@ -45,6 +50,68 @@ [request addValue:[WikipediaAppUtils versionedUserAgent] forHTTPHeaderField:@"User-Agent"]; // NSLog(@"%@", [WikipediaAppUtils versionedUserAgent]); [request addValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; + [self addMCCMNCToRequestIfAppropriate:request]; return request; } + ++(void) addMCCMNCToRequestIfAppropriate: (NSMutableURLRequest*) req +{ + CTCarrier *mno = [[[CTTelephonyNetworkInfo alloc] init] subscriberCellularProvider]; + if (mno && ![SessionSingleton sharedInstance].zeroConfigState.sentMCCMNC) { + SCNetworkReachabilityRef reachabilityRef = SCNetworkReachabilityCreateWithAddress(NULL, + [[[req URL] host] UTF8String]); + SCNetworkReachabilityFlags reachabilityFlags; + SCNetworkReachabilityGetFlags(reachabilityRef, &reachabilityFlags); + + + /* + SCNetworkReachabilityContext context = {0, (__bridge void *)(self), NULL, NULL, NULL}; + SCNetworkReachabilitySetCallback(reachabilityRef, ReachabilityCallback, &context); + SCNetworkReachabilityScheduleWithRunLoop(reachabilityRef, CFRunLoopGetMain(), kCFRunLoopDefaultMode); + */ + + + BOOL transient = reachabilityFlags & kSCNetworkReachabilityFlagsTransientConnection; + BOOL reachable = reachabilityFlags & kSCNetworkReachabilityFlagsReachable; + BOOL connectionRequired = reachabilityFlags & kSCNetworkReachabilityFlagsConnectionRequired; + BOOL requiresTraffic = reachabilityFlags & kSCNetworkReachabilityFlagsConnectionOnTraffic; + BOOL intervention = reachabilityFlags & kSCNetworkReachabilityFlagsInterventionRequired; + BOOL onDemand = reachabilityFlags & kSCNetworkReachabilityFlagsConnectionOnDemand; + BOOL local = reachabilityFlags & kSCNetworkReachabilityFlagsIsLocalAddress; + BOOL direct = reachabilityFlags & kSCNetworkReachabilityFlagsIsDirect; + BOOL cellular = reachabilityFlags & kSCNetworkReachabilityFlagsIsWWAN; + + + NSLog(@"Reachability Flag Status: %c%c %c%c%c%c%c%c%c\n", + (reachabilityFlags & kSCNetworkReachabilityFlagsIsWWAN) ? 'W' : '-', + (reachabilityFlags & kSCNetworkReachabilityFlagsReachable) ? 'R' : '-', + + (reachabilityFlags & kSCNetworkReachabilityFlagsTransientConnection) ? 't' : '-', + (reachabilityFlags & kSCNetworkReachabilityFlagsConnectionRequired) ? 'c' : '-', + (reachabilityFlags & kSCNetworkReachabilityFlagsConnectionOnTraffic) ? 'C' : '-', + (reachabilityFlags & kSCNetworkReachabilityFlagsInterventionRequired) ? 'i' : '-', + (reachabilityFlags & kSCNetworkReachabilityFlagsConnectionOnDemand) ? 'D' : '-', + (reachabilityFlags & kSCNetworkReachabilityFlagsIsLocalAddress) ? 'l' : '-', + (reachabilityFlags & kSCNetworkReachabilityFlagsIsDirect) ? 'd' : '-' + ); + + /* + if ( + !(reachabilityFlags & kSCNetworkReachabilityFlagsConnectionRequired) // hot connection to server available + && ((reachabilityFlags & kSCNetworkReachabilityFlagsReachable) && (reachabilityFlags & kSCNetworkReachabilityFlagsIsWWAN)) // active cellular connection + && !(reachabilityFlags & kSCNetworkReachabilityFlagsInterventionRequired) // but no captive portal + && !((reachabilityFlags & kSCNetworkReachabilityFlagsReachable) && (reachabilityFlags & kSCNetworkReachabilityFlagsIsDirect)) // plus no direct wifi + ) { + NSString *mccMnc = [[NSString alloc] initWithFormat:@"%@-%@", [mno mobileCountryCode], [mno mobileNetworkCode]]; + [SessionSingleton sharedInstance].zeroConfigState.sentMCCMNC = true; + [req addValue:mccMnc forHTTPHeaderField:@"X-MCCMNC"]; + NSLog(@"%@", mccMnc); + } + */ + } +} + + + + @end diff --git a/wikipedia/Zero/ZeroConfigState.h b/wikipedia/Zero/ZeroConfigState.h index 3df69c4..44d5982 100644 --- a/wikipedia/Zero/ZeroConfigState.h +++ b/wikipedia/Zero/ZeroConfigState.h @@ -7,6 +7,7 @@ @property (strong, nonatomic) NSString *partnerXcs; @property (nonatomic) BOOL disposition; +@property (nonatomic) BOOL sentMCCMNC; @property (nonatomic, readonly) BOOL zeroOnDialogShownOnce; @property (nonatomic, readonly) BOOL zeroOffDialogShownOnce; @property (nonatomic, readonly) BOOL warnWhenLeaving; -- To view, visit https://gerrit.wikimedia.org/r/130674 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1c145a623abb582449152f0cf37ffaac3e8829ff Gerrit-PatchSet: 1 Gerrit-Project: apps/ios/wikipedia Gerrit-Branch: master Gerrit-Owner: Dr0ptp4kt <ab...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits