Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
BitgetLimited
GitHub Repository: BitgetLimited/V3-bitget-api-sdk
Path: blob/master/bitget-python-sdk-api/bitget/client.py
732 views
1
import requests
2
import json
3
from . import consts as c, utils, exceptions
4
5
6
class Client(object):
7
8
def __init__(self, api_key, api_secret_key, passphrase, use_server_time=False, first=False):
9
10
self.API_KEY = api_key
11
self.API_SECRET_KEY = api_secret_key
12
self.PASSPHRASE = passphrase
13
self.use_server_time = use_server_time
14
self.first = first
15
16
def _request(self, method, request_path, params, cursor=False):
17
if method == c.GET:
18
request_path = request_path + utils.parse_params_to_str(params)
19
# url
20
url = c.API_URL + request_path
21
22
# 获取本地时间
23
timestamp = utils.get_timestamp()
24
25
# sign & header
26
if self.use_server_time:
27
# 获取服务器时间接口
28
timestamp = self._get_timestamp()
29
30
body = json.dumps(params) if method == c.POST else ""
31
sign = utils.sign(utils.pre_hash(timestamp, method, request_path, str(body)), self.API_SECRET_KEY)
32
if c.SIGN_TYPE == c.RSA:
33
sign = utils.signByRSA(utils.pre_hash(timestamp, method, request_path, str(body)), self.API_SECRET_KEY)
34
header = utils.get_header(self.API_KEY, sign, timestamp, self.PASSPHRASE)
35
36
if self.first:
37
print("url:", url)
38
print("method:", method)
39
print("body:", body)
40
print("headers:", header)
41
# print("sign:", sign)
42
self.first = False
43
44
45
46
47
# send request
48
response = None
49
if method == c.GET:
50
response = requests.get(url, headers=header)
51
print("response : ",response.text)
52
elif method == c.POST:
53
response = requests.post(url, data=body, headers=header)
54
print("response : ",response.text)
55
#response = requests.post(url, json=body, headers=header)
56
elif method == c.DELETE:
57
response = requests.delete(url, headers=header)
58
59
print("status:", response.status_code)
60
# exception handle
61
if not str(response.status_code).startswith('2'):
62
raise exceptions.BitgetAPIException(response)
63
try:
64
res_header = response.headers
65
if cursor:
66
r = dict()
67
try:
68
r['before'] = res_header['OK-BEFORE']
69
r['after'] = res_header['OK-AFTER']
70
except:
71
pass
72
return response.json(), r
73
else:
74
return response.json()
75
76
except ValueError:
77
raise exceptions.BitgetRequestException('Invalid Response: %s' % response.text)
78
79
def _request_without_params(self, method, request_path):
80
return self._request(method, request_path, {})
81
82
def _request_with_params(self, method, request_path, params, cursor=False):
83
return self._request(method, request_path, params, cursor)
84
85
def _get_timestamp(self):
86
url = c.API_URL + c.SERVER_TIMESTAMP_URL
87
response = requests.get(url)
88
if response.status_code == 200:
89
return response.json()['timestamp']
90
else:
91
return ""
92
93