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

Reply via email to