From 9eed388bf3c07dc0ea24fb0637b4964c8e387437 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Mon, 22 Dec 2025 16:45:43 +0800
Subject: [PATCH] fix(symbols): 修复K线数据获取逻辑

---
 src/main/java/com/xcong/excoin/modules/newPrice/utils/RequestBuilder.java |  150 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 150 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/modules/newPrice/utils/RequestBuilder.java b/src/main/java/com/xcong/excoin/modules/newPrice/utils/RequestBuilder.java
new file mode 100644
index 0000000..a36cf50
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/newPrice/utils/RequestBuilder.java
@@ -0,0 +1,150 @@
+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();
+    }
+
+}

--
Gitblit v1.9.1