Stage 03.4 - private auth skeleton
This commit is contained in:
25
app/src/integrations/exchange/auth.py
Normal file
25
app/src/integrations/exchange/auth.py
Normal file
@@ -0,0 +1,25 @@
|
||||
|
||||
import hmac
|
||||
import hashlib
|
||||
import time
|
||||
|
||||
|
||||
class ExchangeAuth:
|
||||
def __init__(self, api_key: str, api_secret: str):
|
||||
self.api_key = api_key
|
||||
self.api_secret = api_secret.encode()
|
||||
|
||||
def sign(self, query: str) -> str:
|
||||
return hmac.new(self.api_secret, query.encode(), hashlib.sha256).hexdigest()
|
||||
|
||||
def build_headers(self):
|
||||
return {
|
||||
"X-MBX-APIKEY": self.api_key,
|
||||
}
|
||||
|
||||
def build_signed_params(self, params: dict):
|
||||
params["timestamp"] = int(time.time() * 1000)
|
||||
query = "&".join(f"{k}={v}" for k, v in params.items())
|
||||
signature = self.sign(query)
|
||||
params["signature"] = signature
|
||||
return params
|
||||
Reference in New Issue
Block a user