package com.jdroid.android.sample.api;
import android.os.Bundle;
import com.jdroid.android.application.AbstractApplication;
import com.jdroid.android.firebase.fcm.FcmSender;
import com.jdroid.android.firebase.fcm.device.Device;
import com.jdroid.java.collections.Lists;
import com.jdroid.java.http.HttpServiceProcessor;
import com.jdroid.java.http.Server;
import java.util.List;
public enum ApiServer implements FcmSender {
PROD("url", ":8080", "/api", true, true) {
@Override
public String getSenderId() {
// TODO Return production sender id here
return null;
}
},
UAT("staging-jdroid.rhcloud.com", null, "/api", true, false),
DEV(null, ":8080", "/sample/api", true, false),
MOCKEY_LOCAL(null, ":8081", "/service/api", false, false);
private String domain;
private String port;
private String segment;
private Boolean supportsSsl;
private Boolean isProduction;
ApiServer(String domain, String port, String segment, Boolean supportsSsl, Boolean isProduction) {
this.domain = domain;
this.port = port;
this.segment = segment;
this.supportsSsl = supportsSsl;
this.isProduction = isProduction;
}
@Override
public String getName() {
return name();
}
@Override
public String getBaseUrl() {
if (domain == null) {
return AbstractApplication.get().getAppContext().getLocalIp() + port + segment;
} else {
StringBuilder urlBuilder = new StringBuilder();
urlBuilder.append(domain);
if (port != null) {
urlBuilder.append(port);
}
if (segment != null) {
urlBuilder.append(segment);
}
return urlBuilder.toString();
}
}
@Override
public Boolean supportsSsl() {
return supportsSsl;
}
@Override
public Boolean isProduction() {
return isProduction;
}
@Override
public List<HttpServiceProcessor> getHttpServiceProcessors() {
return Lists.newArrayList(HeadersAppender.get(), HttpResponseValidator.get());
}
@Override
public Server instance(String name) {
return valueOf(name);
}
@Override
public String getSenderId() {
return "527857945512";
}
@Override
public void onRegisterOnServer(String registrationToken, Boolean updateLastActiveTimestamp, Bundle bundle) {
SampleApiService service = new SampleApiService();
Device device = new Device(registrationToken, null);
service.addDevice(device, updateLastActiveTimestamp);
}
}