package org.commcare.network;
import android.net.Uri;
import org.commcare.CommCareApplication;
import org.commcare.core.network.ModernHttpRequester;
import org.commcare.core.network.bitcache.BitCacheFactory;
import org.commcare.modern.util.Pair;
import org.javarosa.core.model.User;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
/**
* @author Phillip Mates (pmates@dimagi.com)
*/
public class AndroidModernHttpRequester extends ModernHttpRequester {
// for an already-logged-in user
public AndroidModernHttpRequester(BitCacheFactory.CacheDirSetup cacheDirSetup,
URL url, HashMap<String, String> params,
User user, String domain,
boolean isAuthenticatedRequest,
boolean isPostRequest) {
super(cacheDirSetup, url, params, user, domain,
isAuthenticatedRequest, isPostRequest);
}
// for a not-yet-logged-in user
public AndroidModernHttpRequester(BitCacheFactory.CacheDirSetup cacheDirSetup,
URL url, HashMap<String, String> params,
Pair<String, String> usernameAndPasswordToAuthWith,
boolean isPostRequest) {
super(cacheDirSetup, url, params, usernameAndPasswordToAuthWith, isPostRequest);
}
@Override
protected URL buildUrlWithParams() throws MalformedURLException {
Uri.Builder b = Uri.parse(url.toString()).buildUpon();
for (Map.Entry<String, String> param : params.entrySet()) {
b.appendQueryParameter(param.getKey(), param.getValue());
}
// include IMEI and user id in request for general auditing purposes, if available
b.appendQueryParameter("device_id", CommCareApplication.instance().getPhoneId());
b.appendQueryParameter("user_id", CommCareApplication.instance().getCurrentUserId());
return new URL(b.build().toString());
}
}