Fix styling
This commit is contained in:
1 parent
0996c5fc27
commit
49c1633f52
6 files changed
+58
-84
No files matched your search
@@ -3,12 +3,12 @@
|
||||
namespace Msr\LaravelBitunixApi;
|
||||
|
||||
use GuzzleHttp\Client;
|
||||
use Msr\LaravelBitunixApi\Requests\FutureKLineRequestContract;
|
||||
use Msr\LaravelBitunixApi\Requests\ChangeLeverageRequestContract;
|
||||
use Msr\LaravelBitunixApi\Requests\FutureKLineRequestContract;
|
||||
use Msr\LaravelBitunixApi\Requests\Header;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
|
||||
class LaravelBitunixApi implements FutureKLineRequestContract, ChangeLeverageRequestContract
|
||||
class LaravelBitunixApi implements ChangeLeverageRequestContract, FutureKLineRequestContract
|
||||
{
|
||||
private Client $publicFutureClient;
|
||||
|
||||
|
||||
@@ -9,11 +9,9 @@ interface ChangeLeverageRequestContract
|
||||
/**
|
||||
* Change leverage for a trading pair
|
||||
*
|
||||
* @param string $symbol Trading pair (e.g., 'BTCUSDT')
|
||||
* @param string $marginCoin Margin coin (e.g., 'USDT')
|
||||
* @param int $leverage Leverage value
|
||||
* @return ResponseInterface
|
||||
* @param string $symbol Trading pair (e.g., 'BTCUSDT')
|
||||
* @param string $marginCoin Margin coin (e.g., 'USDT')
|
||||
* @param int $leverage Leverage value
|
||||
*/
|
||||
public function changeLeverage(string $symbol, string $marginCoin, int $leverage): ResponseInterface;
|
||||
}
|
||||
|
||||
+13
-32
@@ -6,9 +6,6 @@ class Header
|
||||
{
|
||||
/**
|
||||
* Sort query parameters in ascending ASCII order by Key
|
||||
*
|
||||
* @param array $parameters
|
||||
* @return array
|
||||
*/
|
||||
public static function sortQueryParameters(array $parameters): array
|
||||
{
|
||||
@@ -17,15 +14,13 @@ class Header
|
||||
}
|
||||
|
||||
ksort($parameters, SORT_STRING);
|
||||
|
||||
return $parameters;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert sorted parameters to string format
|
||||
* Example: ["id" => "1", "uid" => "200"] becomes "id1uid200"
|
||||
*
|
||||
* @param array $parameters
|
||||
* @return string
|
||||
*/
|
||||
public static function digestQueryParameters(array $parameters): string
|
||||
{
|
||||
@@ -35,18 +30,16 @@ class Header
|
||||
|
||||
$sortedParameters = self::sortQueryParameters($parameters);
|
||||
$result = '';
|
||||
|
||||
|
||||
foreach ($sortedParameters as $key => $value) {
|
||||
$result .= $key . $value;
|
||||
$result .= $key.$value;
|
||||
}
|
||||
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a random 32-bit nonce string
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function generateNonce(): string
|
||||
{
|
||||
@@ -55,8 +48,6 @@ class Header
|
||||
|
||||
/**
|
||||
* Generate current timestamp in milliseconds
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function generateTimestamp(): string
|
||||
{
|
||||
@@ -65,58 +56,48 @@ class Header
|
||||
|
||||
/**
|
||||
* Generate signature according to Bitunix API documentation
|
||||
*
|
||||
*
|
||||
* Steps:
|
||||
* 1. Sort all queryParams in ascending ASCII order by Key
|
||||
* 2. Remove all spaces from body string
|
||||
* 3. Create digest: SHA256(nonce + timestamp + api-key + queryParams + body)
|
||||
* 4. Create sign: SHA256(digest + secretKey)
|
||||
*
|
||||
* @param array $queryParams
|
||||
* @param string $body
|
||||
* @param string $nonce
|
||||
* @param string $timestamp
|
||||
* @return string
|
||||
*/
|
||||
public static function generateSignValue(array $queryParams = [], string $body = '', string $nonce = '', string $timestamp = ''): string
|
||||
{
|
||||
$apiKey = config('bitunix-api.api_key');
|
||||
$apiSecret = config('bitunix-api.api_secret');
|
||||
|
||||
|
||||
if (empty($apiKey) || empty($apiSecret)) {
|
||||
throw new \InvalidArgumentException('API key and secret must be configured');
|
||||
}
|
||||
|
||||
// Step 1: Sort query parameters in ascending ASCII order
|
||||
$queryParamsString = self::digestQueryParameters($queryParams);
|
||||
|
||||
|
||||
// Step 2: Remove all spaces from body (already done if JSON encoded properly)
|
||||
$bodyString = trim($body);
|
||||
|
||||
|
||||
// Step 3: Create digest: SHA256(nonce + timestamp + api-key + queryParams + body)
|
||||
$digestInput = $nonce . $timestamp . $apiKey . $queryParamsString . $bodyString;
|
||||
$digestInput = $nonce.$timestamp.$apiKey.$queryParamsString.$bodyString;
|
||||
$digest = hash('sha256', $digestInput);
|
||||
|
||||
|
||||
// Step 4: Create sign: SHA256(digest + secretKey)
|
||||
$signInput = $digest . $apiSecret;
|
||||
$signInput = $digest.$apiSecret;
|
||||
$sign = hash('sha256', $signInput);
|
||||
|
||||
|
||||
return $sign;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate complete headers for authenticated requests
|
||||
*
|
||||
* @param array $queryParams
|
||||
* @param string $body
|
||||
* @return array
|
||||
*/
|
||||
public static function generateHeaders(array $queryParams = [], string $body = ''): array
|
||||
{
|
||||
$nonce = self::generateNonce();
|
||||
$timestamp = self::generateTimestamp();
|
||||
$sign = self::generateSignValue($queryParams, $body, $nonce, $timestamp);
|
||||
|
||||
|
||||
return [
|
||||
'api-key' => config('bitunix-api.api_key'),
|
||||
'sign' => $sign,
|
||||
|
||||
Reference in new issue
Block a user