· 7 years ago · Feb 27, 2018, 10:00 AM
1import argparse
2import base64
3import hashlib
4import hmac
5import json
6import requests
7import time
8import uuid
9
10
11class BitBayApi3:
12 base_url = "https://api.bitbay.net/rest/"
13
14 def __init__(self, api_key: str, secret: str):
15 self.api_key = api_key
16 self.secret_key = secret
17
18 def request(self, method: str, **kwargs):
19 url = self.base_url + method
20 timestamp = str(int(time.time()))
21 print(timestamp)
22 operation_uuid = uuid.uuid4()
23 params = kwargs
24 message = self.api_key + timestamp + str(params) + self.secret_key
25
26 hmac_key = base64.b64decode(self.secret_key)
27 signature = hmac.new(hmac_key, message.encode('utf8'), hashlib.sha512)
28
29 headers = {
30 'API-Key': self.api_key,
31 # 'API-Hash': signature.digest(),
32 'API-Hash': signature.hexdigest(),
33 'Request-Timestamp': timestamp,
34 'Operation-Id': str(operation_uuid),
35 'User-Agent': '',
36 }
37
38 print("Message: " + message)
39 print(headers)
40
41 return requests.get(url, params=params, headers=headers)
42
43
44"""
45Example JSON file:
46
47[
48 {
49 "account": "bitware",
50 "key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
51 "secret": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
52 }
53]
54"""
55
56if __name__ == '__main__':
57 parser = argparse.ArgumentParser()
58 parser.add_argument('api_file', help='Path to JSON file with API keys')
59 args = parser.parse_args()
60
61 with open(args.api_file, 'rt', encoding='utf8') as f:
62 data = json.load(f)
63
64 for account in data:
65 account_name = account['account']
66 public_key = account['key']
67 secret_key = account['secret']
68
69 api = BitBayApi3(api_key=public_key, secret=secret_key)
70 r = api.request(
71 'trading/history/transactions',
72 #query='{"query": ["BTC-PLN"], "rateFrom": 0, "rateTo": 100000, "userAction": "Sell"}')
73 query='{}')
74 print(r.text)