Brion VIBBER has submitted this change and it was merged.

Change subject: Add MCC-MNC once per app session on cellular.
......................................................................


Add MCC-MNC once per app session on cellular.

* http://lists.wikimedia.org/pipermail/wikimedia-l/2014-April/071131.html

Change-Id: I1c145a623abb582449152f0cf37ffaac3e8829ff
---
M wikipedia/Categories/NSURLRequest+DictionaryRequest.m
M wikipedia/Zero/ZeroConfigState.h
2 files changed, 43 insertions(+), 0 deletions(-)

Approvals:
  Mhurd: Looks good to me, but someone else must approve
  Brion VIBBER: Verified; Looks good to me, approved



diff --git a/wikipedia/Categories/NSURLRequest+DictionaryRequest.m 
b/wikipedia/Categories/NSURLRequest+DictionaryRequest.m
index ae17b7e..cd285f4 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,43 @@
     [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;
 }
+
+#pragma MCC-MNC Logging
+
+// Add the MCC-MNC code asn HTTP (protocol) header once per session when user 
using cellular data connection.
+// Logging will be done in its own file with specific fields. See the 
following URL for details.
+// http://lists.wikimedia.org/pipermail/wikimedia-l/2014-April/071131.html
+
++(void) addMCCMNCToRequestIfAppropriate: (NSMutableURLRequest*) req
+{
+    if ([SessionSingleton sharedInstance].zeroConfigState.sentMCCMNC) {
+        return;
+    } else {
+        CTCarrier *mno = [[[CTTelephonyNetworkInfo alloc] init] 
subscriberCellularProvider];
+        if (mno) {
+            SCNetworkReachabilityRef reachabilityRef = 
SCNetworkReachabilityCreateWithName(NULL,
+                                                                               
            [[[req URL] host] UTF8String]);
+            SCNetworkReachabilityFlags reachabilityFlags;
+            SCNetworkReachabilityGetFlags(reachabilityRef, &reachabilityFlags);
+            
+            // The following is a good functioning mask in practice for the 
case where
+            // cellular is being used, with wifi not on / there are no known 
wifi APs.
+            // When wifi is on with a known wifi AP connection, 
kSCNetworkReachabilityFlagsReachable
+            // is present, but kSCNetworkReachabilityFlagsIsWWAN is not 
present.
+            if (reachabilityFlags == (kSCNetworkReachabilityFlagsIsWWAN
+                                      | kSCNetworkReachabilityFlagsReachable
+                                      | 
kSCNetworkReachabilityFlagsTransientConnection)) {
+                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: merged
Gerrit-Change-Id: I1c145a623abb582449152f0cf37ffaac3e8829ff
Gerrit-PatchSet: 5
Gerrit-Project: apps/ios/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Dr0ptp4kt <ab...@wikimedia.org>
Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org>
Gerrit-Reviewer: Dr0ptp4kt <ab...@wikimedia.org>
Gerrit-Reviewer: Mhurd <mh...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to