Как конвертировать python в php?
Помогите пожалуйста конвертировать этот код в php
from base64 import b64encode
from hashlib import sha256
from hmac import HMAC
from time import time
from urllib.parse import urlsplit
from requests import Session
from requests.auth import AuthBase
class HS256(AuthBase):
def __init__(self, api_key: str, secret_key: str, window: int = None):
self.api_key = api_key
self.secret_key = secret_key
self.window = window
def __call__(self, r):
url = urlsplit(r.url)
message = [r.method, url.path]
if url.query:
message.append('?')
message.append(url.query)
if r.body:
message.append(r.body)
timestamp = str(int(time() * 1000))
window = str(self.window) if self.window else None
message.append(timestamp)
if window:
message.append(window)
signature = HMAC(key=self.secret_key.encode(),
msg=''.join(message).encode(),
digestmod=sha256).hexdigest()
data = [self.api_key, signature, timestamp]
if window:
data.append(window)
base64_encoded = b64encode(':'.join(data).encode()).decode()
r.headers['Authorization'] = f'HS256 {base64_encoded}'
return r
auth = HS256(api_key='apiKey', secret_key='secretKey')
with Session() as s:
response = s.get('https://api.hitbtc.com/api/3/futures/account', auth=auth)
print(response.json())
Конвертировать во что то типа этого
$curl = curl_init();
$timestamp = time() * 1000);
$signature = hash_hmac('sha256', $query, $api_secret);
if ($method === 'POST') {
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $query);
}
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
$output = curl_exec($curl);
$output = substr($output, curl_getinfo($curl, CURLINFO_HEADER_SIZE));
curl_close($curl);
$result = json_decode($output, true);
Ответы (1 шт):
Автор решения: avory
→ Ссылка
Создал и работает
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
$headers[] = 'Content-Type:application/json';
$headers[] = 'User-Agent: Hitbtc PHP Client';
$headers[] = 'Authorization: Basic '. base64_encode($this->api_key .':'. $this->api_secret);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
if (!empty($headers)) curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($curl);
curl_close($curl);
$result = json_decode($output, true);