package com.xcong.excoin.modules.newPrice.utils;
|
|
|
import com.xcong.excoin.common.exception.FebsException;
|
import com.xcong.excoin.modules.newPrice.enums.HttpMethod;
|
import okhttp3.MediaType;
|
import okhttp3.Request;
|
import okhttp3.RequestBody;
|
|
public final class RequestBuilder {
|
private static final MediaType JSON_TYPE = MediaType.parse("application/json; charset=utf-8");
|
|
private RequestBuilder() {
|
}
|
|
public static Request.Builder buildPublicRequest(String fullUrl, HttpMethod httpMethod, boolean issimulated) {
|
try {
|
final Request.Builder result;
|
switch (httpMethod) {
|
case POST:
|
OkHttpUtils builder = OkHttpUtils.builder();
|
if(issimulated){
|
builder.addHeader("x-simulated-trading","1");
|
}
|
result = builder
|
.url(fullUrl)
|
.post(true)
|
.sync();
|
break;
|
case GET:
|
OkHttpUtils builder1 = OkHttpUtils.builder();
|
if(issimulated){
|
builder1.addHeader("x-simulated-trading","1");
|
}
|
result = builder1
|
.url(fullUrl)
|
.addHeader("Content-Type", "application/x-www-form-urlencoded")
|
.get()
|
.sync();
|
break;
|
case PUT:
|
OkHttpUtils builder2 = OkHttpUtils.builder();
|
if(issimulated){
|
builder2.addHeader("x-simulated-trading","1");
|
}
|
result = builder2
|
.url(fullUrl)
|
.addHeader("Content-Type", "application/x-www-form-urlencoded")
|
.post(false)
|
.sync();
|
break;
|
case DELETE:
|
OkHttpUtils builder3 = OkHttpUtils.builder();
|
if(issimulated){
|
builder3.addHeader("x-simulated-trading","1");
|
}
|
result = builder3
|
.url(fullUrl)
|
.post(false)
|
.sync();
|
break;
|
default:
|
throw new FebsException("Invalid HTTP method: " + httpMethod);
|
}
|
return result;
|
} catch (IllegalArgumentException e) {
|
throw new FebsException("Invalid URL: " + e.getMessage());
|
}
|
}
|
|
public static Request buildApiKeyRequest(String fullUrl,String body,String passphrase,String sign,String timeStamp, HttpMethod httpMethod, String apiKey,boolean issimulate) {
|
try {
|
final Request request;
|
switch (httpMethod) {
|
case POST:
|
Request.Builder builder = new Request.Builder();
|
if(issimulate){
|
builder.addHeader("x-simulated-trading","1");
|
}
|
request = builder
|
.url(fullUrl)
|
.post(RequestBody.create(JSON_TYPE, body))
|
.addHeader("OK-ACCESS-KEY", apiKey)
|
.addHeader("OK-ACCESS-SIGN", sign)
|
.addHeader("OK-ACCESS-TIMESTAMP", timeStamp)
|
.addHeader("OK-ACCESS-PASSPHRASE", passphrase)
|
.build();
|
break;
|
case GET:
|
Request.Builder builder1 = new Request.Builder();
|
if(issimulate){
|
builder1.addHeader("x-simulated-trading","1");
|
}
|
request = builder1
|
.url(fullUrl)
|
.get()
|
.addHeader("Content-Type", "application/x-www-form-urlencoded")
|
.addHeader("OK-ACCESS-KEY", apiKey)
|
.addHeader("OK-ACCESS-KEY", apiKey)
|
.addHeader("OK-ACCESS-SIGN", sign)
|
.addHeader("OK-ACCESS-TIMESTAMP", timeStamp)
|
.addHeader("OK-ACCESS-PASSPHRASE", passphrase)
|
.build();
|
break;
|
case PUT:
|
Request.Builder builder2 = new Request.Builder();
|
if(issimulate){
|
builder2.addHeader("x-simulated-trading","1");
|
}
|
request = builder2
|
.url(fullUrl)
|
.put(RequestBody.create(JSON_TYPE, ""))
|
.addHeader("Content-Type", "application/x-www-form-urlencoded")
|
.addHeader("OK-ACCESS-KEY", apiKey)
|
.addHeader("OK-ACCESS-KEY", apiKey)
|
.addHeader("OK-ACCESS-SIGN", sign)
|
.addHeader("OK-ACCESS-TIMESTAMP", timeStamp)
|
.addHeader("OK-ACCESS-PASSPHRASE", passphrase)
|
.build();
|
break;
|
case DELETE:
|
Request.Builder builder3 = new Request.Builder();
|
if(issimulate){
|
builder3.addHeader("x-simulated-trading","1");
|
}
|
request = builder3
|
.url(fullUrl)
|
.delete()
|
.addHeader("Content-Type", "application/x-www-form-urlencoded")
|
.addHeader("OK-ACCESS-KEY", apiKey)
|
.addHeader("OK-ACCESS-KEY", apiKey)
|
.addHeader("OK-ACCESS-SIGN", sign)
|
.addHeader("OK-ACCESS-TIMESTAMP", timeStamp)
|
.addHeader("OK-ACCESS-PASSPHRASE", passphrase)
|
.build();
|
break;
|
default:
|
throw new FebsException("Invalid HTTP method: " + httpMethod);
|
}
|
return request;
|
} catch (IllegalArgumentException e) {
|
throw new FebsException("Invalid URL: " + e.getMessage());
|
}
|
}
|
|
public static Request buildWebsocketRequest(String fullUrl) {
|
return new Request.Builder().url(fullUrl).build();
|
}
|
|
}
|