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(); } }