package com.code44.finance.api.requests;
import com.code44.finance.api.GcmRegistration;
import com.code44.finance.api.Request;
import com.code44.finance.common.utils.Preconditions;
import com.code44.finance.utils.EventBus;
import com.google.api.client.json.GenericJson;
public abstract class PostRequest<T extends GenericJson> extends Request {
private final GcmRegistration gcmRegistration;
public PostRequest(EventBus eventBus, GcmRegistration gcmRegistration) {
super(eventBus);
Preconditions.notNull(gcmRegistration, "GCM registration cannot be null.");
this.gcmRegistration = gcmRegistration;
}
@Override protected void performRequest() throws Exception {
T body = createBody();
body.set("deviceRegId", gcmRegistration.getRegistrationId());
onAddPostData(body);
if (!isPostDataEmpty(body)) {
performRequest(body);
}
}
protected abstract T createBody();
protected abstract void onAddPostData(T body);
protected abstract boolean isPostDataEmpty(T body);
protected abstract void performRequest(T body) throws Exception;
}