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