Skip to content

Commit

Permalink
Merge pull request #118 from madfish-solutions/TW-1096-reverse-compat…
Browse files Browse the repository at this point in the history
…ibility-of-alice-bob-endpoints

TW-1096: Backward compatibility of Alice Bob endpoints
  • Loading branch information
lourenc authored Oct 4, 2023
2 parents 2f5b331 + bddbcb5 commit fb7bc25
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 13 deletions.
36 changes: 23 additions & 13 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ import { getABData } from './utils/ab-test';
import { cancelAliceBobOrder } from './utils/alice-bob/cancel-alice-bob-order';
import { createAliceBobOrder } from './utils/alice-bob/create-alice-bob-order';
import { estimateAliceBobOutput } from './utils/alice-bob/estimate-alice-bob-output';
import { getAliceBobEstimationPayload } from './utils/alice-bob/get-alice-bob-estimation-payload';
import { getAliceBobOrderInfo } from './utils/alice-bob/get-alice-bob-order-info';
import { getAliceBobPairInfo } from './utils/alice-bob/get-alice-bob-pair-info';
import { getAliceBobPairsInfo } from './utils/alice-bob/get-alice-bob-pairs-info';
import { coinGeckoTokens } from './utils/gecko-tokens';
import { getExternalApiErrorPayload, isDefined, isNonEmptyString } from './utils/helpers';
Expand Down Expand Up @@ -205,19 +207,17 @@ app.get('/api/moonpay-sign', async (_req, res) => {
});

app.post('/api/alice-bob/create-order', async (_req, res) => {
const { amount, from, to, userId, walletAddress, cardNumber } = _req.query;
const { isWithdraw, amount, from, to, userId, walletAddress, cardNumber } = _req.query;

try {
const exchangeInfo = {
from: String(from),
to: String(to),
fromAmount: Number(amount),
const payload = {
...getAliceBobEstimationPayload(isWithdraw, from, to, amount),
userId: String(userId),
toPaymentDetails: isDefined(cardNumber) ? String(cardNumber) : String(walletAddress),
redirectUrl: 'https://templewallet.com/mobile'
};

const orderInfo = await createAliceBobOrder(exchangeInfo);
const orderInfo = await createAliceBobOrder(payload);

res.status(200).send({ orderInfo });
} catch (error) {
Expand All @@ -239,6 +239,19 @@ app.post('/api/alice-bob/cancel-order', async (_req, res) => {
}
});

app.get('/api/alice-bob/get-pair-info', async (_req, res) => {
const { isWithdraw } = _req.query;

try {
const pairInfo = await getAliceBobPairInfo(isWithdraw === 'true');

res.status(200).send({ pairInfo });
} catch (error) {
const { status, data } = getExternalApiErrorPayload(error);
res.status(status).send(data);
}
});

app.get('/api/alice-bob/get-pairs-info', async (_req, res) => {
const { isWithdraw } = _req.query;

Expand Down Expand Up @@ -266,15 +279,12 @@ app.get('/api/alice-bob/check-order', async (_req, res) => {
});

app.post('/api/alice-bob/estimate-amount', async (_req, res) => {
const { amount, from, to } = _req.query;
const { isWithdraw, amount, from, to } = _req.query;

try {
const exchangeInfo = {
from: String(from),
to: String(to),
fromAmount: Number(amount)
};
const outputAmount = await estimateAliceBobOutput(exchangeInfo);
const payload = getAliceBobEstimationPayload(isWithdraw, from, to, amount);

const outputAmount = await estimateAliceBobOutput(payload);

res.status(200).send({ outputAmount });
} catch (error) {
Expand Down
20 changes: 20 additions & 0 deletions src/utils/alice-bob/get-alice-bob-estimation-payload.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { ParsedQs } from 'qs';

import { isDefined } from '../helpers';

type QueryParam = string | ParsedQs | string[] | ParsedQs[] | undefined;

export const getAliceBobEstimationPayload = (
isWithdraw: QueryParam,
from: QueryParam,
to: QueryParam,
amount: QueryParam
) => {
const booleanIsWithdraw = isWithdraw === 'true';

return {
from: isDefined(isWithdraw) ? (booleanIsWithdraw ? 'TEZ' : 'CARDUAH') : String(from),
to: isDefined(isWithdraw) ? (booleanIsWithdraw ? 'CARDUAH' : 'TEZ') : String(to),
fromAmount: Number(amount)
};
};
15 changes: 15 additions & 0 deletions src/utils/alice-bob/get-alice-bob-pair-info.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { aliceBobApi } from '../api.sevice';
import { getAliceBobRequestHeaders } from './get-alice-bob-request-headers';
import { getAliceBobSignature } from './get-alice-bob-signature';

export const getAliceBobPairInfo = async (isWithdraw = false) => {
const pair = isWithdraw ? 'TEZ/CARDUAH' : 'CARDUAH/TEZ';

const { signature, now } = getAliceBobSignature();

const { data } = await aliceBobApi.get<{ minamount: number; maxamount: number }>('/get-pair-info/' + pair, {
headers: getAliceBobRequestHeaders(signature, now)
});

return { minAmount: data.minamount, maxAmount: data.maxamount };
};

0 comments on commit fb7bc25

Please sign in to comment.