· 6 years ago · Feb 22, 2019, 08:32 AM
1package com.novacapital.httpservice;
2
3import java.io.IOException;
4import java.io.InputStream;
5import java.io.InputStreamReader;
6import java.io.OutputStream;
7import java.io.Reader;
8import java.net.HttpURLConnection;
9import java.net.URL;
10import java.util.Base64;
11import java.util.Date;
12import java.util.HashMap;
13import java.util.Iterator;
14import java.util.Map;
15import java.util.Map.Entry;
16import java.util.Set;
17
18import javax.crypto.Mac;
19import javax.crypto.spec.SecretKeySpec;
20
21import org.apache.http.HttpResponse;
22import org.apache.http.ParseException;
23import org.apache.http.client.methods.HttpGet;
24import org.apache.http.client.methods.HttpPost;
25import org.apache.http.entity.ContentType;
26import org.apache.http.entity.StringEntity;
27import org.apache.http.impl.client.DefaultHttpClient;
28import org.apache.http.util.EntityUtils;
29import org.json.JSONArray;
30import org.json.JSONObject;
31
32public class TokenomyService {
33 private static final String URI_PUBLIC = "https://exchange.tokenomy.com/api";
34 private static final String URI_PRIVATE = "https://exchange.tokenomy.com/tapi";
35 private static final String TOKENOMY_KEY = "";
36 private static final String TOKENOMY_SECRET = "";
37 private static final String PXG_BTC = "pxg_btc";
38
39 private static String httpBuildQuery(JSONObject param) {
40 StringBuilder data = new StringBuilder();
41 if (param != null) {
42 Iterator<String> keys = param.keys();
43 while(keys.hasNext()) {
44 String key = keys.next();
45 String value = param.get(key).toString();
46 data.append(key);
47 data.append("=");
48 data.append(value);
49 if (keys.hasNext()) {
50 data.append("&");
51 }
52 }
53 }
54
55 return data.toString();
56
57 }
58
59 private static String generateSignature (JSONObject param) {
60 String encoded = "";
61 String type = "HmacSHA512";
62 try {
63 byte[] key = (TOKENOMY_SECRET).getBytes("UTF-8");
64 byte[] sequence = (httpBuildQuery(param)).getBytes("UTF-8");
65
66 Mac HMAC = Mac.getInstance(type);
67 SecretKeySpec secretKey = new SecretKeySpec(key, type);
68
69 HMAC.init(secretKey);
70 byte[] Hash = HMAC.doFinal(sequence);
71
72 encoded = Base64.getEncoder().encodeToString(Hash);
73 } catch (Exception e) {
74 e.printStackTrace();
75 }
76 System.out.println(encoded);
77 return encoded;
78 }
79
80 public static String getTicker(String productId) {
81 StringBuilder sb = new StringBuilder("/" +productId+ "/ticker");
82 return executeGet(sb.toString());
83 }
84
85 public static String getMarketLastPrice() {
86 StringBuilder sb = new StringBuilder("/prices");
87 return executeGet(sb.toString());
88 }
89
90 public static String getAccountInfo() {
91 JSONObject json = new JSONObject();
92 json.put("method", "getInfo");
93
94 return executePost(json);
95 }
96
97 private static String executeGet(String path) {
98 StringBuilder result = new StringBuilder();
99
100 try {
101 final String finalUrl = URI_PUBLIC + path;
102 URL anUrl = new URL(finalUrl);
103 HttpURLConnection conn;
104 conn = (HttpURLConnection) anUrl.openConnection();
105 conn.setRequestMethod("GET");
106 conn.addRequestProperty("Content-Type", "application/json");
107 conn.addRequestProperty("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36");
108 InputStream in = null;
109 in = conn.getInputStream();
110 Reader reader = new InputStreamReader(in);
111 char[] buf = new char[2048];
112 int read = 0;
113 while ((read = reader.read(buf)) >= 0) {
114 result.append(buf, 0, read);
115 }
116 in.close();
117 } catch (Exception e) {
118 e.printStackTrace();
119 }
120
121 return result.toString();
122 }
123
124 private static String executePost(JSONObject json) {
125
126 StringBuilder result = new StringBuilder();
127 json.put("nonce", System.currentTimeMillis());
128
129 try {
130 StringBuilder data = new StringBuilder();
131 if (data != null)
132 data.append(json.toString());
133 final String finalUrl = URI_PRIVATE;
134 URL anUrl = new URL(finalUrl);
135 HttpURLConnection conn;
136 conn = (HttpURLConnection) anUrl.openConnection();
137 conn.setDoOutput(true);
138 conn.setDoInput(true);
139 conn.setInstanceFollowRedirects(false);
140 conn.setRequestMethod("POST");
141 conn.addRequestProperty("Content-Length", "" + data.length());
142 conn.addRequestProperty("Content-Type", "application/json");
143 conn.addRequestProperty("Accept", "application/json");
144 conn.addRequestProperty("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.62 Safari/537.36");
145 conn.addRequestProperty("Sign", generateSignature(json));
146 conn.addRequestProperty("Key", TOKENOMY_KEY);
147 OutputStream os = conn.getOutputStream();
148 os.write(data.toString().getBytes());
149 os.flush();
150 InputStream in = null;
151 if (conn.getResponseCode() == 200) {
152 in = conn.getInputStream();
153 Reader reader = new InputStreamReader(in);
154 char[] buf = new char[2048];
155 int read = 0;
156 while ((read = reader.read(buf)) >= 0) {
157 result.append(buf, 0, read);
158 }
159 System.out.println("200 +++ " + result.toString());
160 in.close();
161 } else {
162 in = conn.getErrorStream();
163 Reader reader = new InputStreamReader(in);
164 char[] buf = new char[2048];
165 int read = 0;
166 while ((read = reader.read(buf)) >= 0) {
167 result.append(buf, 0, read);
168 }
169 System.out.println("200 +++ " + result.toString());
170 in.close();
171 }
172 } catch (Exception e) {
173 e.printStackTrace();
174 }
175 return result.toString();
176 }
177
178
179 public static void main(String[] args) {
180 System.out.println(getTicker(PXG_BTC));
181 System.out.println(getMarketLastPrice());
182 System.out.println(getAccountInfo());
183
184 }
185}