@bcswaper/apis
Version:
bcswaper apis
1 lines • 1.33 kB
JavaScript
import axios from"axios";import crypto from"crypto";import qs from"query-string";import{ClientSettings}from"../context";import{OkxConstants}from"./okxContext";export class OkxHttpClient{constructor(t,e){this.okxAccInfo=t,e=e||OkxConstants.HTTP_ENDPOINT,this.apiClient=axios.create({baseURL:e})}getSignedHeader(t,e,s=""){const i=this.sign(this.okxAccInfo.secretKey,e,s,t);return{"OK-ACCESS-KEY":this.okxAccInfo.apiKey,"OK-ACCESS-TIMESTAMP":i[0],"OK-ACCESS-SIGN":i[1],"OK-ACCESS-PASSPHRASE":this.okxAccInfo.passphrase}}sign(t,e,s="",i="GET"){const a=crypto.createHmac("sha256",t),n=(new Date).toISOString();return[n,a.update(`${n}${i}${e}${s&&JSON.stringify(s)}`).digest("base64")]}async get(t,e=""){if(e){for(const t of Object.keys(e||{}))null!==e[t]&&void 0!==e[t]||delete e[t];t+="?"+qs.stringify(e)}return(await this.apiClient.get(t,{headers:this.getSignedHeader("GET",t)})).data}async post(t,e){const s={...this.getSignedHeader("POST",t,e),"Content-Type":"application/json"};return(await this.apiClient.post(t,e,{headers:s})).data}async getCandles(t,e){const{data:{data:s}}=await this.apiClient.get("/api/v5/market/candles",{params:{instId:t,bar:e,limit:ClientSettings.ListLenths}});return s}async getInstInfo(t,e){const{data:{data:s}}=await this.apiClient.get("/api/v5/public/instruments",{params:{instType:t,instId:e}});return s}}