package mobi.monaca.utils;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import org.xmlpull.v1.XmlPullParserException;
import android.content.Context;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.util.Log;
public class MonacaConst {
private static Map<String, String> constMap = null;
private static final String SCHEME = "https://";
private static final String KEY_DOMAIN = "domain";
private static final String KEY_ENV = "env";
private static final String KEY_ISCUSTOM ="isCustom";
private MonacaConst() {};
public static String getPushRegistrationAPIUrl(Context context, String pushProjectId) {
try {
return SCHEME + getConst(context, KEY_DOMAIN) + "/v1/push/register/" + URLEncoder.encode(pushProjectId, "UTF-8");
} catch (UnsupportedEncodingException e) {
return null;
}
}
public static String getPushUnegistrationAPIUrl(Context context, String pushProjectId) {
try {
return SCHEME + getConst(context, KEY_DOMAIN) + "/v1/push/unregister/" + URLEncoder.encode(pushProjectId, "UTF-8");
} catch (UnsupportedEncodingException e) {
return null;
}
}
public static String getIsCustom(Context context) {
return getConst(context, KEY_ISCUSTOM);
}
private static String getConst(Context context, String key) {
if (context == null) {
throw new NullPointerException();
}
if (constMap == null) {
loadMonacaConst(context);
}
return constMap.get(key);
}
private static void loadMonacaConst(Context context) {
constMap = new HashMap<String, String>();
constMap.put(KEY_DOMAIN, "api.monaca.mobi");
constMap.put(KEY_ENV, "prod");
constMap.put(KEY_ISCUSTOM, "false");
Resources res = context.getResources();
int id = res.getIdentifier("monaca_const", "xml", context.getPackageName());
if (id != 0) {
Log.d("MonacaConst", "found monaca_const.xml");
XmlResourceParser xml = res.getXml(id);
int eventType = -1;
while (eventType != XmlResourceParser.END_DOCUMENT) {
String node = xml.getName();
if (eventType == XmlResourceParser.START_TAG && node.equalsIgnoreCase("monaca")) {
int count = xml.getAttributeCount();
for (int i = 0; i < count; i++) {
constMap.put(xml.getAttributeName(i), xml.getAttributeValue(i));
}
// only uses first Monaca tag
eventType = XmlResourceParser.END_DOCUMENT;
} else {
try {
eventType = xml.next();
} catch (XmlPullParserException e) {
eventType = XmlResourceParser.END_DOCUMENT;
e.printStackTrace();
} catch (IOException e) {
eventType = XmlResourceParser.END_DOCUMENT;
e.printStackTrace();
}
}
}
}
}
}