package com.framework.okhttp.request;
import com.framework.okhttp.callback.OkHttpCallBack;
import java.util.Map;
import okhttp3.Headers;
import okhttp3.Request;
import okhttp3.RequestBody;
public abstract class OkHttpRequest {
protected String url;
protected Object tag;
protected Map<String, String> params;
protected Map<String, String> headers;
protected Request.Builder builder = new Request.Builder();
protected OkHttpRequest(String url, Object tag,
Map<String, String> params, Map<String, String> headers) {
this.url = url;
this.tag = tag;
this.params = params;
this.headers = headers;
if (url == null) {
throw new RuntimeException("url should not be null !");
}
}
protected abstract RequestBody buildRequestBody();
protected RequestBody wrapRequestBody(RequestBody requestBody, final OkHttpCallBack callback) {
return requestBody;
}
protected abstract Request buildRequest(Request.Builder builder, RequestBody requestBody);
public RequestCall build() {
return new RequestCall(this);
}
public Request generateRequest(OkHttpCallBack callback) {
RequestBody requestBody = wrapRequestBody(buildRequestBody(), callback);
prepareBuilder();
return buildRequest(builder, requestBody);
}
private void prepareBuilder() {
builder.url(url).tag(tag);
appendHeaders();
}
protected void appendHeaders() {
Headers.Builder headerBuilder = new Headers.Builder();
if (headers == null || headers.isEmpty()) return;
for (String key : headers.keySet()) {
headerBuilder.add(key, headers.get(key));
}
builder.headers(headerBuilder.build());
}
@Override
public String toString() {
return "OkHttpRequest{" +
"url='" + url + '\'' +
", tag=" + tag +
", params=" + params +
", headers=" + headers +
'}';
}
}