package com.jdroid.android.firebase.dynamiclink;
import com.google.firebase.FirebaseApp;
import com.jdroid.android.firebase.FirebaseAppModule;
import com.jdroid.java.api.AbstractApiService;
import com.jdroid.java.collections.Maps;
import com.jdroid.java.http.DefaultServer;
import com.jdroid.java.http.HttpService;
import com.jdroid.java.http.MimeType;
import com.jdroid.java.http.Server;
import com.jdroid.java.http.mock.AbstractMockHttpService;
import com.jdroid.java.http.post.BodyEnclosingHttpService;
import com.jdroid.java.json.JsonMap;
import com.jdroid.java.marshaller.Marshaller;
import com.jdroid.java.marshaller.MarshallerMode;
import com.jdroid.java.marshaller.MarshallerProvider;
import java.util.Map;
import static android.R.attr.apiKey;
public class ShortDynamicLinkService extends AbstractApiService {
static {
MarshallerProvider.get().addMarshaller(DynamicLink.class, new DynamicLinkMarshaller());
}
@Override
protected Server getServer() {
return new DefaultServer("firebasedynamiclinks.googleapis.com/v1");
}
@Override
protected AbstractMockHttpService getAbstractMockHttpServiceInstance(Object... urlSegments) {
return null;
}
@Override
protected Boolean isHttpMockEnabled() {
return false;
}
public String getShortDynamicLink(String longDynamicLink) {
return getShortDynamicLink(longDynamicLink, false);
}
public String getShortDynamicLink(String longDynamicLink, Boolean unguessable) {
BodyEnclosingHttpService service = newPostService("shortLinks");
service.setSsl(true);
service.addHeader(HttpService.CONTENT_TYPE_HEADER, MimeType.JSON);
service.addQueryParameter("key", FirebaseAppModule.get().getFirebaseAppContext().getWebApiKey());
DynamicLink dynamicLink = new DynamicLink();
dynamicLink.longDynamicLink = longDynamicLink;
dynamicLink.suffix.put("option", unguessable ? "UNGUESSABLE" : "SHORT");
marshall(service, dynamicLink);
return service.execute(new DynamicLinkParser());
}
private class DynamicLink {
String longDynamicLink;
Map<String, String> suffix = Maps.newHashMap();
}
private static class DynamicLinkMarshaller implements Marshaller<DynamicLink, JsonMap> {
@Override
public JsonMap marshall(DynamicLink dynamicLink, MarshallerMode mode, Map<String, String> extras) {
JsonMap jsonMap = new JsonMap(mode, extras);
jsonMap.put("longDynamicLink", dynamicLink.longDynamicLink);
jsonMap.put("suffix", dynamicLink.suffix);
return jsonMap;
}
}
}