package com.framework.okhttp.builder;
import com.framework.okhttp.OkHttpProxy;
import com.framework.okhttp.request.OtherRequest;
import com.framework.okhttp.request.RequestCall;
import java.util.LinkedHashMap;
import java.util.Map;
import okhttp3.RequestBody;
public class OtherRequestBuilder extends OkHttpRequestBuilder {
private RequestBody requestBody;
private String method;
private String content;
public OtherRequestBuilder(String method) {
super();
this.method = method;
}
@Override
public RequestCall build() {
//TODO check other method can use params
if (params != null && method.equals(OkHttpProxy.METHOD.DELETE)) {
url = appendParams(url, params);
}
return new OtherRequest(requestBody, content, method, url, tag, params, headers).build();
}
private String appendParams(String url, Map<String, String> params) {
StringBuilder sb = new StringBuilder();
sb.append(url + "?");
if (params != null && !params.isEmpty()) {
for (String key : params.keySet()) {
sb.append(key).append("=").append(params.get(key)).append("&");
}
}
sb = sb.deleteCharAt(sb.length() - 1);
return sb.toString();
}
public OtherRequestBuilder requestBody(RequestBody requestBody) {
this.requestBody = requestBody;
return this;
}
public OtherRequestBuilder requestBody(String content) {
this.content = content;
return this;
}
@Override
public OtherRequestBuilder url(String url) {
this.url = url;
return this;
}
@Override
public OtherRequestBuilder tag(Object tag) {
this.tag = tag;
return this;
}
@Override
public OtherRequestBuilder params(Map<String, String> params) {
this.params = params;
return this;
}
@Override
public OtherRequestBuilder addParams(String key, String val) {
if (this.params == null) {
params = new LinkedHashMap<>();
}
params.put(key, val);
return this;
}
@Override
public OtherRequestBuilder headers(Map<String, String> headers) {
this.headers = headers;
return this;
}
@Override
public OtherRequestBuilder addHeader(String key, String val) {
if (this.headers == null) {
headers = new LinkedHashMap<>();
}
headers.put(key, val);
return this;
}
}