126 lines
6.3 KiB
Java
126 lines
6.3 KiB
Java
package com.adjust.sdk;
|
|
|
|
import android.net.Uri;
|
|
import android.net.UrlQuerySanitizer;
|
|
import java.io.UnsupportedEncodingException;
|
|
import java.net.URLDecoder;
|
|
import java.util.LinkedHashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
public class PackageFactory {
|
|
private static final String ADJUST_PREFIX = "adjust_";
|
|
|
|
public static ActivityPackage buildDeeplinkSdkClickPackage(Uri uri, long j, ActivityState activityState, AdjustConfig adjustConfig, DeviceInfo deviceInfo, SessionParameters sessionParameters) {
|
|
String uri2;
|
|
if (uri == null || (uri2 = uri.toString()) == null || uri2.length() == 0) {
|
|
return null;
|
|
}
|
|
AdjustFactory.getLogger().verbose("Url to parse (%s)", uri);
|
|
UrlQuerySanitizer urlQuerySanitizer = new UrlQuerySanitizer();
|
|
urlQuerySanitizer.setUnregisteredParameterValueSanitizer(UrlQuerySanitizer.getAllButNulLegal());
|
|
urlQuerySanitizer.setAllowUnregisteredParamaters(true);
|
|
urlQuerySanitizer.parseUrl(uri2);
|
|
PackageBuilder queryStringClickPackageBuilder = queryStringClickPackageBuilder(urlQuerySanitizer.getParameterList(), activityState, adjustConfig, deviceInfo, sessionParameters);
|
|
if (queryStringClickPackageBuilder == null) {
|
|
return null;
|
|
}
|
|
queryStringClickPackageBuilder.deeplink = uri.toString();
|
|
queryStringClickPackageBuilder.clickTimeInMilliseconds = j;
|
|
return queryStringClickPackageBuilder.buildClickPackage(Constants.DEEPLINK);
|
|
}
|
|
|
|
public static ActivityPackage buildInstallReferrerSdkClickPackage(String str, long j, long j2, String str2, ActivityState activityState, AdjustConfig adjustConfig, DeviceInfo deviceInfo, SessionParameters sessionParameters) {
|
|
if (str == null || str.length() == 0) {
|
|
return null;
|
|
}
|
|
PackageBuilder packageBuilder = new PackageBuilder(adjustConfig, deviceInfo, activityState, sessionParameters, System.currentTimeMillis());
|
|
packageBuilder.referrer = str;
|
|
packageBuilder.clickTimeInSeconds = j;
|
|
packageBuilder.installBeginTimeInSeconds = j2;
|
|
packageBuilder.referrerApi = str2;
|
|
return packageBuilder.buildClickPackage(Constants.INSTALL_REFERRER);
|
|
}
|
|
|
|
public static ActivityPackage buildReftagSdkClickPackage(String str, long j, ActivityState activityState, AdjustConfig adjustConfig, DeviceInfo deviceInfo, SessionParameters sessionParameters) {
|
|
String str2 = Constants.MALFORMED;
|
|
if (str == null || str.length() == 0) {
|
|
return null;
|
|
}
|
|
try {
|
|
str2 = URLDecoder.decode(str, Constants.ENCODING);
|
|
} catch (UnsupportedEncodingException e) {
|
|
AdjustFactory.getLogger().error("Referrer decoding failed due to UnsupportedEncodingException. Message: (%s)", e.getMessage());
|
|
} catch (IllegalArgumentException e2) {
|
|
AdjustFactory.getLogger().error("Referrer decoding failed due to IllegalArgumentException. Message: (%s)", e2.getMessage());
|
|
} catch (Exception e3) {
|
|
AdjustFactory.getLogger().error("Referrer decoding failed. Message: (%s)", e3.getMessage());
|
|
}
|
|
AdjustFactory.getLogger().verbose("Referrer to parse (%s)", str2);
|
|
UrlQuerySanitizer urlQuerySanitizer = new UrlQuerySanitizer();
|
|
urlQuerySanitizer.setUnregisteredParameterValueSanitizer(UrlQuerySanitizer.getAllButNulLegal());
|
|
urlQuerySanitizer.setAllowUnregisteredParamaters(true);
|
|
urlQuerySanitizer.parseQuery(str2);
|
|
PackageBuilder queryStringClickPackageBuilder = queryStringClickPackageBuilder(urlQuerySanitizer.getParameterList(), activityState, adjustConfig, deviceInfo, sessionParameters);
|
|
if (queryStringClickPackageBuilder == null) {
|
|
return null;
|
|
}
|
|
queryStringClickPackageBuilder.referrer = str2;
|
|
queryStringClickPackageBuilder.clickTimeInMilliseconds = j;
|
|
queryStringClickPackageBuilder.rawReferrer = str;
|
|
return queryStringClickPackageBuilder.buildClickPackage(Constants.REFTAG);
|
|
}
|
|
|
|
private static PackageBuilder queryStringClickPackageBuilder(List<UrlQuerySanitizer.ParameterValuePair> list, ActivityState activityState, AdjustConfig adjustConfig, DeviceInfo deviceInfo, SessionParameters sessionParameters) {
|
|
if (list == null) {
|
|
return null;
|
|
}
|
|
LinkedHashMap linkedHashMap = new LinkedHashMap();
|
|
AdjustAttribution adjustAttribution = new AdjustAttribution();
|
|
for (UrlQuerySanitizer.ParameterValuePair parameterValuePair : list) {
|
|
readQueryString(parameterValuePair.mParameter, parameterValuePair.mValue, linkedHashMap, adjustAttribution);
|
|
}
|
|
long currentTimeMillis = System.currentTimeMillis();
|
|
String str = (String) linkedHashMap.remove(Constants.REFTAG);
|
|
if (activityState != null) {
|
|
activityState.lastInterval = currentTimeMillis - activityState.lastActivity;
|
|
}
|
|
PackageBuilder packageBuilder = new PackageBuilder(adjustConfig, deviceInfo, activityState, sessionParameters, currentTimeMillis);
|
|
packageBuilder.extraParameters = linkedHashMap;
|
|
packageBuilder.attribution = adjustAttribution;
|
|
packageBuilder.reftag = str;
|
|
return packageBuilder;
|
|
}
|
|
|
|
private static boolean readQueryString(String str, String str2, Map<String, String> map, AdjustAttribution adjustAttribution) {
|
|
if (str == null || str2 == null || !str.startsWith(ADJUST_PREFIX)) {
|
|
return false;
|
|
}
|
|
String substring = str.substring(7);
|
|
if (substring.length() == 0 || str2.length() == 0) {
|
|
return false;
|
|
}
|
|
if (tryToSetAttribution(adjustAttribution, substring, str2)) {
|
|
return true;
|
|
}
|
|
map.put(substring, str2);
|
|
return true;
|
|
}
|
|
|
|
private static boolean tryToSetAttribution(AdjustAttribution adjustAttribution, String str, String str2) {
|
|
if (str.equals("tracker")) {
|
|
adjustAttribution.trackerName = str2;
|
|
return true;
|
|
} else if (str.equals("campaign")) {
|
|
adjustAttribution.campaign = str2;
|
|
return true;
|
|
} else if (str.equals("adgroup")) {
|
|
adjustAttribution.adgroup = str2;
|
|
return true;
|
|
} else if (!str.equals("creative")) {
|
|
return false;
|
|
} else {
|
|
adjustAttribution.creative = str2;
|
|
return true;
|
|
}
|
|
}
|
|
}
|