fake the useragent for air-canada

This commit is contained in:
ligi 2014-07-16 21:22:08 +02:00
parent 2c63aa8631
commit 0acd280f61
2 changed files with 41 additions and 1 deletions

View file

@ -100,6 +100,33 @@
<data android:mimeType="application/vnd-com.apple.pkpass" /> <data android:mimeType="application/vnd-com.apple.pkpass" />
</intent-filter> </intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="m.aircanada.ca"
android:pathPattern="/ebp/.*"
android:scheme="http" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="m.aircanada.ca"
android:pathPattern="/ebp/.*"
android:scheme="https" />
</intent-filter>
</activity> </activity>
<activity <activity

View file

@ -17,11 +17,24 @@ import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
public class InputStreamProvider { public class InputStreamProvider {
public static final String IPHONE_USER_AGENT = "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53";
public final static InputStreamWithSource fromOKHttp(final Uri uri) { public final static InputStreamWithSource fromOKHttp(final Uri uri) {
try { try {
final OkHttpClient client = new OkHttpClient(); final OkHttpClient client = new OkHttpClient();
final URL url = new URL(uri.toString()); final URL url = new URL(uri.toString());
Request request = new Request.Builder().url(url).build(); final Request.Builder requestBuilder = new Request.Builder().url(url);
// fake to be an iPhone in some cases when the server decides to send no passbook
// to android phones - but only do it then - we are proud to be Android ;-)
if (uri.toString().contains("//m.aircanada.ca/ebp/")) {
Tracker.get().trackEvent("quirk_fix", "ua_fake", "air_canada", null);
requestBuilder.header("User-Agent", IPHONE_USER_AGENT);
}
final Request request = requestBuilder.build();
final Response response = client.newCall(request).execute(); final Response response = client.newCall(request).execute();
return new InputStreamWithSource(uri.toString(), response.body().byteStream()); return new InputStreamWithSource(uri.toString(), response.body().byteStream());