dicekode

Untitled

Jul 27th, 2021
316
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. "use strict";
  2. const crypto = require('crypto');
  3. const _ = require('lodash');
  4. const axios = require("axios");
  5. const API_KEY = '<API_KEY>';
  6. const API_SECRET = '<SECRET_KEY>';
  7.  
  8. class Tokocrypto {
  9.  
  10.     constructor(sandbox) {
  11.         this.key = API_KEY;
  12.         this.secret = API_SECRET;
  13.  
  14.         this.baseUrl = `https://api.tokocrypto.com`;
  15.     }
  16.  
  17.     createRequestConfig({ key, secret, payload }) {
  18.  
  19.         const encodedPayload = (new Buffer(JSON.stringify(payload)))
  20.             .toString(`base64`);
  21.  
  22.         const signature = crypto
  23.             .createHmac(`sha384`, secret)
  24.             .update(encodedPayload)
  25.             .digest(`hex`);
  26.  
  27.         return {
  28.             headers: {
  29.                 'X-TC-APIKEY': key,
  30.                 'X-TC-PAYLOAD': encodedPayload,
  31.                 'X-TC-SIGNATURE': signature,
  32.             },
  33.         };
  34.     }
  35.  
  36.     requestPrivate(endpoint, method, params = {}) {
  37.         if (!this.key || !this.secret) {
  38.             throw new Error(
  39.                 `API key and secret key required to use authenticated methods`);
  40.         }
  41.  
  42.         const requestPath = `/v1${endpoint}`;
  43.         const requestUrl = `${this.baseUrl}${requestPath}`;
  44.         let payload = {
  45.             nonce: Date.now()
  46.         };
  47.         payload = _.assign(payload, params);
  48.         const config = this.createRequestConfig({
  49.             payload,
  50.             key: this.key,
  51.             secret: this.secret,
  52.         });
  53.  
  54.         if (method === 'post'){
  55.             return new Promise(function (resolve, reject) {
  56.                 axios.post(requestUrl, {}, config)
  57.                     .then(function (response) {
  58.                         resolve(response.data);
  59.                     }).catch(function (err) {
  60.                         reject(err.response.data.message);
  61.                     });
  62.             });
  63.         }else if (method === 'get'){
  64.             return new Promise(function (resolve, reject) {
  65.                 axios.get(requestUrl, config)
  66.                     .then(function (response) {
  67.                         resolve(response.data);
  68.                     }).catch(function (err) {
  69.                         reject(err.response.data.message);
  70.                     });
  71.             });
  72.         }
  73.  
  74.        
  75.     }
  76.  
  77.     async account() {
  78.         try {
  79.             let account = await this.requestPrivate('/account', 'get',{});
  80.             return account;
  81.         } catch (error) {
  82.             throw error;
  83.         }
  84.     }
  85. }
  86.  
  87. module.exports = new Tokocrypto();
  88.  
  89. async function main(){
  90.     let account = await module.exports.account();
  91.     console.log(account);
  92. }
  93.  
  94. main();
Add Comment
Please, Sign In to add comment