· 6 years ago · Jul 18, 2019, 11:50 PM
1public class BitmexClient {
2 private final OkHttpClient client = new OkHttpClient();
3
4 private String api = "";
5 private String secret = "";
6
7 public void setApi(String api, String secret) {
8 this.api = api;
9 this.secret=secret;
10 }
11
12 //API REQUEST BUILDING
13
14 private Response apicall(String verb, String endpoint, String jsonBody) throws NoSuchAlgorithmException, InvalidKeyException, IOException {
15 String expires = String.valueOf(Instant.now().getEpochSecond()+3600);
16 Request.Builder builder = new Request.Builder()
17 .url("https://www.bitmex.com/api/v1"+endpoint)
18 .addHeader("api-expires", expires)
19 .addHeader("api-key", api)
20 .addHeader("api-signature", encodeHexHmacSignature(secret, verb+"/api/v1"+endpoint+expires));
21 /*if (verb.equals("POST")){
22 builder.post(RequestBody.create(MediaType.get("text/plain; charset=utf-8t"), encodeHexHmacSignature(secret, jsonBody)));
23 } else if (verb.equalsIgnoreCase("PUT")){
24 builder.put(RequestBody.create(MediaType.get("text/plain; charset=utf-8"), encodeHexHmacSignature(secret, jsonBody)));
25 }*/
26 Request request = builder.build();
27 return client.newCall(request).execute();
28 }
29
30
31 private String encodeHexHmacSignature(String key, String data) throws NoSuchAlgorithmException,UnsupportedEncodingException, InvalidKeyException {
32 Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
33 SecretKeySpec secret_key = new SecretKeySpec(key.getBytes("UTF-8"), "HmacSHA256");
34 sha256_HMAC.init(secret_key);
35 return Hex.encodeHexString(sha256_HMAC.doFinal(data.getBytes("UTF-8")));
36 }
37
38 //TRADING METHODS
39 public void placeOrder(){
40 String data = "{\"symbol\":\"XBTUSD\",\"orderQty\":20,\"ordType\":\"Market}";
41 try {
42 Response r = apicall("POST", "order", data);
43 System.out.println(r.body().string());
44 } catch (NoSuchAlgorithmException | InvalidKeyException | IOException e) {
45 e.printStackTrace();
46 }
47 }
48}