Viewing File: /home/ubuntu/efiexchange-node-base/src/controllers/userApp/exchange.controller.ts

import axios from "axios";
import FormData from "form-data";
export const fetchExchangeRate = async (
  fromCurrency: any,
  toCurrency: any,
  user_id: any,
  socket: any,
  type: any
) => {
  try {
    let formData = new FormData();
    let cryptoArray = ["USDT", "USDC", "ETH", "SOL", "BTC", "BNB", "TRX"];

    if (type == "swap" || type == "convert" || type == "exchange") {
      formData.append("from", fromCurrency);
      formData.append("to", toCurrency);
      formData.append("user_id", user_id);
      formData.append(
        "type",
        `${cryptoArray.includes(fromCurrency) ? "c" : "f"}-${
          cryptoArray.includes(toCurrency) ? "c" : "f"
        }`
      );
    } else {
      formData.append("fiat", fromCurrency);
      formData.append("crypto", toCurrency);
      formData.append("user_id", user_id);
    }

    let config = {
      headers: {
        "Access-Control-Allow-Origin": "*",
        "Access-Control-Allow-Methods": "GET,PUT,POST,DELETE,PATCH,OPTIONS",
        "internal-api-token": process.env.INTERNAL_API_TOKEN,
      },
    };

    let API_BASE_URL = process.env.EXCHANGE_RATE_API_URL;
    let API_URL;

    switch (type) {
      case "buy":
        API_URL = "/api/internal/exchange_rates/bsxslnolqgxh617u/buy";
        break;
      case "sell":
        API_URL = "/api/internal/exchange_rates/9k7giy75jxssbfhr/sell";
        // API_URL = "/api/internal/exchange_rates/bsxslnolqgxh617u/buy";
        break;
      case "swap":
        API_URL = "/api/internal/exchange_rates/k1rfekdwqc0mugdq/swap";
        break;
      case "exchange":
        API_URL = "/api/internal/exchange_rates/geu7j1fkkmqetwad/exchange";
        break;
      case "convert":
        API_URL = "/api/internal/exchange_rates/k1rfekdwqc0mugdq/swap";
        break;
      default:
        API_URL = "/api/internal/exchange_rates/bsxslnolqgxh617u/buy";
        break;
    }

    const response = await axios.post(API_BASE_URL + API_URL, formData, config);
    const data = await response.data;
    console.log(response.data, "API Response", `${fromCurrency}-${toCurrency}`);

    if (data.success) {
      // if (type == "convert") {
      //   console.log("Conversion Rate : ", data.data.exchange_rate);
      //   socket.emit("getConversion", data.data.exchange_rate);
      // } else {
      //   console.log("Response Exchange Rate : ", data.data.exchange_rate);
      //   socket.emit("getExchangeRate", {
      //     exchange_rate: data.data.exchange_rate,
      //     currency_pair_id: `${fromCurrency}-${toCurrency}`,
      //   });
      // }

      socket.emit("getConversion", data.data.exchange_rate);
      socket.emit("getExchangeRate", {
        exchange_rate: data.data.exchange_rate,
        currency_pair_id: `${fromCurrency}-${toCurrency}`,
      });
    } else {
      // if (type == "convert") {
      //   socket.emit("getConversion", 0);
      // } else {
      //   socket.emit("getExchangeRate", {
      //     exchange_rate: 0,
      //     currency_pair_id: `${fromCurrency}-${toCurrency}`,
      //   });
      // }
      socket.emit("getConversion", 0);
      socket.emit("getExchangeRate", {
        exchange_rate: 0,
        currency_pair_id: `${fromCurrency}-${toCurrency}`,
      });
    }

    // return data;
  } catch (error: any) {
    console.log(error);
  }
};

export const fetchSDKExchangeRate = async (
  fromCurrency: any,
  toCurrency: any,
  user_id: any,
  socket: any,
  type: any,
  apiKey: any,
  userId: any
) => {
  try {
    let config = {
      headers: {
        "Access-Control-Allow-Origin": "*",
        "Access-Control-Allow-Methods": "GET,PUT,POST,DELETE,PATCH,OPTIONS",
        "internal-api-token": process.env.INTERNAL_API_TOKEN,
        "x-api-key": apiKey,
        "user-id": userId,
      },
    };

    let API_BASE_URL = process.env.SDK_EXCHANGE_RATE_API_URL;
    let API_URL;

    switch (type) {
      case "buy":
        API_URL = `/api/onramp/exchange_rate?fiat=${fromCurrency}&crypto=${toCurrency}`;
        break;
      case "sell":
        API_URL = `/api/offramp/exchange_rate?crypto=${toCurrency}&fiat=${fromCurrency}`;
        break;
      case "swap":
        API_URL = `/api/onramp/exchange_rate?fiat=${fromCurrency}&crypto=${toCurrency}`;
        break;
      case "exchange":
        API_URL = `/api/exchange/exchange_rate?from=${fromCurrency}&to=${toCurrency}`;
        break;
      case "convert":
        API_URL = `/api/onramp/exchange_rate?fiat=${toCurrency}&crypto=${fromCurrency}`;
        break;
      default:
        API_URL = "/api/internal/exchange_rates/bsxslnolqgxh617u/buy";
        break;
    }

    const response = await axios.get(API_BASE_URL + API_URL, config);
    const data = await response.data;

    if (data.success) {
      if (type == "convert") {
        console.log("SDK Conversion Rate : ", data.data.exchange_rate);
        socket.emit("getSDKConversion", data.data.exchange_rate);
      } else {
        console.log("SDK Response Exchange Rate : ", data.data.exchange_rate);
        socket.emit("getSDKExchangeRate", data.data.exchange_rate);
      }
    } else {
      if (type == "convert") {
        socket.emit("getSDKConversion", 0);
      } else {
        socket.emit("getSDKExchangeRate", 0);
      }
    }

    // return data;
  } catch (error: any) {
    console.log(error);
  }
};

export const fetchGatewayExchangeRate = async (
  fromCurrency: any,
  toCurrency: any,
  user_id: any,
  socket: any,
  type: any,
  apiKey: any,
  userId: any
) => {
  try {
    let config = {
      headers: {
        "Access-Control-Allow-Origin": "*",
        "Access-Control-Allow-Methods": "GET,PUT,POST,DELETE,PATCH,OPTIONS",
        "internal-api-token": process.env.INTERNAL_API_TOKEN,
        "x-api-key": apiKey,
        "user-id": userId,
      },
    };

    let API_BASE_URL = process.env.SDK_EXCHANGE_RATE_API_URL;
    let API_URL;

    switch (type) {
      case "buy":
        API_URL = `/api/crypto/exchange_rate?fiat=${fromCurrency}&crypto=${toCurrency}`;
        break;
      default:
        API_URL = `/api/crypto/exchange_rate?fiat=${fromCurrency}&crypto=${toCurrency}`;
        break;
    }

    const response = await axios.get(API_BASE_URL + API_URL, config);
    const data = await response.data;

    if (data.success) {
      if (type == "convert") {
        console.log("Gateway Conversion Rate : ", data.data.exchange_rate);
        socket.emit("getGatewayConversion", data.data.exchange_rate);
      } else {
        console.log(
          "Gateway Response Exchange Rate : ",
          data.data.exchange_rate
        );
        socket.emit("getGatewayExchangeRate", data.data.exchange_rate);
      }
    } else {
      if (type == "convert") {
        socket.emit("getGatewayConversion", 0);
      } else {
        socket.emit("getGatewayExchangeRate", 0);
      }
    }

    // return data;
  } catch (error: any) {
    console.log(error);
  }
};
Back to Directory File Manager