1
zyy
2 days ago 4fefff17528a878d345ff3311c297a66a671b8d6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
package com.yami.trading.huobi.websocket.service.huobi;
 
import java.util.List;
 
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
 
import com.yami.trading.huobi.websocket.client.GenericClient;
import com.yami.trading.huobi.websocket.client.req.generic.ChainRequest;
import com.yami.trading.huobi.websocket.client.req.generic.CurrencyChainsRequest;
import com.yami.trading.huobi.websocket.constant.HuobiOptions;
import com.yami.trading.huobi.websocket.constant.Options;
import com.yami.trading.huobi.websocket.model.generic.*;
import com.yami.trading.huobi.websocket.service.huobi.connection.HuobiRestConnection;
import com.yami.trading.huobi.websocket.service.huobi.parser.generic.*;
import com.yami.trading.huobi.websocket.service.huobi.signature.UrlParamsBuilder;
 
public class HuobiGenericService implements GenericClient {
 
  public static final String GET_SYSTEM_STATUS_URL = "https://status.huobigroup.com/api/v2/summary.json";//获取当前系统状态
  public static final String GET_MARKET_STATUS_PATH = "/v2/market-status";//获取当前市场状态
  public static final String GET_CURRENCY_CHAINS_PATH = "/v2/reference/currencies";//APIv2币链参考信息
  public static final String GET_TIMESTAMP = "/v1/common/timestamp";//获取当前系统时间戳
  public static final String GET_SYMBOLS_PATH_V2 = "/v2/settings/common/symbols";//获取所有交易对(V2)
  public static final String GET_CURRENCY_PATH_V2 = "/v2/settings/common/currencies";//获取所有币种(V2)
  public static final String GET_CURRENCY_PATH_V1 = "/v1/settings/common/currencys";//获取币种配置
  public static final String GET_SYMBOLS_PATH_V1 = "/v1/settings/common/symbols";//获取交易对配置
  public static final String GET_MARKET_SYMBOLS_PATH = "/v1/settings/common/market-symbols";//获取市场交易对配置
  public static final String GET_CHAIN_PATH = "/v1/settings/common/chains";//查询链信息
 
  private Options options;
 
  private HuobiRestConnection restConnection;
 
  public HuobiGenericService(Options options) {
    this.options = options;
    restConnection = new HuobiRestConnection(options);
  }
 
  @Override
  public String getSystemStatus() {
    String response = restConnection.executeGetString(GET_SYSTEM_STATUS_URL,UrlParamsBuilder.build());
    return response;
  }
 
  @Override
  public MarketStatus getMarketStatus() {
    JSONObject jsonObject = restConnection.executeGet(GET_MARKET_STATUS_PATH, UrlParamsBuilder.build());
    JSONObject data = jsonObject.getJSONObject("data");
    return new MarketStatusParser().parse(data);
  }
 
  @Override
  public List<CurrencyChain> getCurrencyChains(CurrencyChainsRequest request) {
 
    UrlParamsBuilder builder = UrlParamsBuilder.build()
        .putToUrl("currency",request.getCurrency())
        .putToUrl("authorizedUser",request.isAuthorizedUser()+"");
 
    JSONObject jsonObject = restConnection.executeGet(GET_CURRENCY_CHAINS_PATH,builder);
    JSONArray data = jsonObject.getJSONArray("data");
    return new CurrencyChainParser().parseArray(data);
  }
 
  @Override
  public Long getTimestamp() {
    JSONObject jsonObject = restConnection.executeGet(GET_TIMESTAMP, UrlParamsBuilder.build());
    return jsonObject.getLong("data");
  }
 
  @Override
  public List<SymbolV2> getSymbolsV2(Long ts) {
    UrlParamsBuilder builder = UrlParamsBuilder.build()
            .putToUrl("ts", ts);
    JSONObject jsonObject = restConnection.executeGet(GET_SYMBOLS_PATH_V2, builder);
    JSONArray data = jsonObject.getJSONArray("data");
    return new SymbolV2Parser().parseArray(data);
  }
 
  @Override
  public List<Currency> getCurrencyV1(Long ts) {
    UrlParamsBuilder builder = UrlParamsBuilder.build()
            .putToUrl("ts", ts);
    JSONObject jsonObject = restConnection.executeGet(GET_CURRENCY_PATH_V1, builder);
    JSONArray data = jsonObject.getJSONArray("data");
    return new CurrencyParser().parseArray(data);
  }
 
  @Override
  public List<CurrencyV2> getCurrencyV2(Long ts) {
    UrlParamsBuilder builder = UrlParamsBuilder.build()
            .putToUrl("ts", ts);
    JSONObject jsonObject = restConnection.executeGet(GET_CURRENCY_PATH_V2, builder);
    JSONArray data = jsonObject.getJSONArray("data");
    return new CurrencyV2Parser().parseArray(data);
  }
 
  @Override
  public List<SymbolV1> getSymbolsV1(Long ts) {
    UrlParamsBuilder builder = UrlParamsBuilder.build()
            .putToUrl("ts", ts);
    JSONObject jsonObject = restConnection.executeGet(GET_SYMBOLS_PATH_V1, builder);
    JSONArray data = jsonObject.getJSONArray("data");
    return new SymbolV1Parser().parseArray(data);
  }
 
  @Override
  public List<MarketSymbol> getMarketSymbol(String symbols, Long ts) {
    UrlParamsBuilder builder = UrlParamsBuilder.build()
            .putToUrl("symbols", symbols)
            .putToUrl("ts", ts);
    JSONObject jsonObject = restConnection.executeGet(GET_MARKET_SYMBOLS_PATH, builder);
    JSONArray data = jsonObject.getJSONArray("data");
    return new MarketSymbolParser().parseArray(data);
  }
 
  @Override
  public List<ChainV1> getChain(ChainRequest request) {
    UrlParamsBuilder builder = UrlParamsBuilder.build()
            .putToUrl("show-desc", request.getShowDesc())
            .putToUrl("currency", request.getCurrency())
            .putToUrl("ts", request.getTs());
    JSONObject jsonObject = restConnection.executeGet(GET_CHAIN_PATH, builder);
    JSONArray data = jsonObject.getJSONArray("data");
    return new ChainV1Parser().parseArray(data);
  }
 
 
}