package com.mopub.nativeads; import android.content.Context; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.text.TextUtils; import com.mopub.common.AdUrlGenerator; import com.mopub.common.ClientMetadata; import com.mopub.common.Constants; import com.mopub.common.util.DateAndTime; class NativeUrlGenerator extends AdUrlGenerator { @Nullable private String mDesiredAssets; @Nullable private String mSequenceNumber; NativeUrlGenerator(Context context) { super(context); } @NonNull @Override public NativeUrlGenerator withAdUnitId(final String adUnitId) { mAdUnitId = adUnitId; return this; } @NonNull NativeUrlGenerator withRequest(@Nullable final RequestParameters requestParameters) { if (requestParameters != null) { mKeywords = requestParameters.getKeywords(); mLocation = requestParameters.getLocation(); mDesiredAssets = requestParameters.getDesiredAssets(); } return this; } @NonNull NativeUrlGenerator withSequenceNumber(final int sequenceNumber) { mSequenceNumber = String.valueOf(sequenceNumber); return this; } @Override public String generateUrlString(final String serverHostname) { initUrlString(serverHostname, Constants.AD_HANDLER); setAdUnitId(mAdUnitId); setKeywords(mKeywords); setLocation(mLocation); ClientMetadata clientMetadata = ClientMetadata.getInstance(mContext); setSdkVersion(clientMetadata.getSdkVersion()); setDeviceInfo(clientMetadata.getDeviceManufacturer(), clientMetadata.getDeviceModel(), clientMetadata.getDeviceProduct()); setTimezone(DateAndTime.getTimeZoneOffsetString()); setOrientation(clientMetadata.getOrientationString()); setDensity(clientMetadata.getDensity()); String networkOperator = clientMetadata.getNetworkOperatorForUrl(); setMccCode(networkOperator); setMncCode(networkOperator); setIsoCountryCode(clientMetadata.getIsoCountryCode()); setCarrierName(clientMetadata.getNetworkOperatorName()); setNetworkType(clientMetadata.getActiveNetworkType()); setAppVersion(clientMetadata.getAppVersion()); setTwitterAppInstalledFlag(); setDesiredAssets(); setSequenceNumber(); appendAdvertisingInfoTemplates(); return getFinalUrlString(); } private void setSequenceNumber() { if (!TextUtils.isEmpty(mSequenceNumber)) { addParam("MAGIC_NO", mSequenceNumber); } } private void setDesiredAssets() { if (!TextUtils.isEmpty(mDesiredAssets)) { addParam("assets", mDesiredAssets); } } @Override protected void setSdkVersion(String sdkVersion) { addParam("nsv", sdkVersion); } }