2023-12-14 11:48:37 +01:00
// Next.js API route support: https://nextjs.org/docs/api-routes/introduction
2024-01-17 12:32:46 +01:00
import { log } from 'console' ;
2023-12-14 11:48:37 +01:00
export default async ( req , res ) => {
2024-01-17 22:25:23 +01:00
let rates = [];
2023-12-14 11:48:37 +01:00
var myHeaders = new Headers ();
myHeaders . append ( "authority" , "api.taptapsend.com" );
myHeaders . append ( "accept" , "*/*" );
myHeaders . append ( "accept-language" , "en-GB,en-US;q=0.9,en;q=0.8" );
myHeaders . append ( "appian-version" , "web/2022-05-03.0" );
myHeaders . append ( "origin" , "https://www.taptapsend.com" );
myHeaders . append ( "referer" , "https://www.taptapsend.com/" );
myHeaders . append (
"sec-ch-ua" ,
'"Google Chrome";v="119", "Chromium";v="119", "Not?A_Brand";v="24"'
);
myHeaders . append ( "sec-ch-ua-mobile" , "?0" );
myHeaders . append ( "sec-ch-ua-platform" , '"macOS"' );
myHeaders . append ( "sec-fetch-dest" , "empty" );
myHeaders . append ( "sec-fetch-mode" , "cors" );
myHeaders . append ( "sec-fetch-site" , "same-site" );
myHeaders . append (
"user-agent" ,
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
);
myHeaders . append ( "x-device-id" , "web" );
myHeaders . append ( "x-device-model" , "web" );
myHeaders . append (
"Cookie" ,
"SESSION=NTI4ZGZmOGEtZGZkNS00ZGUwLWE2MmYtMDA4OWNjZGZlZjkx"
);
var requestOptions = {
method : "GET" ,
headers : myHeaders ,
redirect : "follow" ,
};
2024-01-17 12:32:46 +01:00
const tap_call = fetch ( "https://api.taptapsend.com/api/fxRates" , requestOptions )
2023-12-14 11:48:37 +01:00
. then (( response ) => response . json ())
2024-01-17 12:32:46 +01:00
. then (( result ) => {
2024-02-15 20:33:26 +01:00
const fxRate = result . availableCountries [ 1 ]. corridors . find (( corridors ) => corridors . countryDisplayName == "Nigeria" )
2024-01-17 22:25:23 +01:00
return {
2024-02-15 20:33:26 +01:00
"rate" : fxRate [ "fxRate" ],
2024-01-17 22:25:23 +01:00
"provider" : "TapTap" , "bestRate" : false , "href" : "https://www.taptapsend.com/"
}
2024-01-17 12:32:46 +01:00
})
2023-12-14 11:48:37 +01:00
. catch (( error ) => console . log ( "error" , error ));
2023-12-29 17:35:50 +01:00
2023-12-14 11:48:37 +01:00
var myHeaders = new Headers ();
myHeaders . append ( "authority" , "sendgateway.myflutterwave.com" );
myHeaders . append ( "accept" , "application/json, text/plain, */*" );
myHeaders . append ( "accept-language" , "en-GB,en-US;q=0.9,en;q=0.8" );
myHeaders . append ( "origin" , "https://send.flutterwave.com" );
myHeaders . append ( "referer" , "https://send.flutterwave.com/" );
myHeaders . append ( "sec-ch-ua" , "\"Not.A/Brand\";v=\"8\", \"Chromium\";v=\"114\", \"Google Chrome\";v=\"114\"" );
myHeaders . append ( "sec-ch-ua-mobile" , "?0" );
myHeaders . append ( "sec-ch-ua-platform" , "\"macOS\"" );
myHeaders . append ( "sec-fetch-dest" , "empty" );
myHeaders . append ( "sec-fetch-mode" , "cors" );
myHeaders . append ( "sec-fetch-site" , "cross-site" );
myHeaders . append ( "user-agent" , "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" );
2023-12-29 17:35:50 +01:00
2023-12-14 11:48:37 +01:00
var requestOptions = {
method : 'GET' ,
headers : myHeaders ,
redirect : 'follow'
};
2023-12-29 17:35:50 +01:00
2024-01-17 12:32:46 +01:00
const send_call = fetch ( "https://sendgateway.myflutterwave.com/api/v1/config/getcurrencyrate?fromCurrency=EUR&toCurrency=NGN" , requestOptions )
2023-12-14 11:48:37 +01:00
. then ( response => response . json ())
2024-01-17 12:51:25 +01:00
. then ( response => {
2024-02-15 20:33:26 +01:00
return { "rate" : parseFloat ( response . data [ 0 ]. baseRate ). toFixed ( 2 ), "provider" : "Send" , "bestRate" : false , "href" : "https://send.flutterwave.com/" }
2024-01-17 12:51:25 +01:00
})
2023-12-14 11:48:37 +01:00
. catch ( error => console . log ( 'error' , error ));
2023-12-29 17:35:50 +01:00
2024-01-13 14:52:01 +01:00
const { exec } = require ( 'child_process' );
2024-01-19 13:26:23 +01:00
const curlCommand = `curl 'https://acemoneytransfer.com/make-request' \
-H 'authority: acemoneytransfer.com' \
-H 'accept: */*' \
-H 'accept-language: en-GB,en-US;q=0.9,en;q=0.8' \
-H 'content-type: application/x-www-form-urlencoded; charset=UTF-8' \
-H 'origin: https://acemoneytransfer.com' \
-H 'referer: https://acemoneytransfer.com/Nigeria/Send-Money-to-Nigeria' \
-H 'sec-ch-ua: "Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "macOS"' \
-H 'sec-fetch-dest: empty' \
-H 'sec-fetch-mode: cors' \
-H 'sec-fetch-site: same-origin' \
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' \
-H 'x-requested-with: XMLHttpRequest' \
--data-raw 'uri=rate%2Fcalculator&type=POST&data%5Bsrc_amount%5D=100&data%5Bdest_amount%5D=&data%5Buser_currency%5D=EUR&data%5Bcalculation_mode%5D=S&data%5Bdest_iso_numeric_code%5D=566&data%5Bsrc_iso_numeric_code%5D=528'
`
2024-01-13 14:52:01 +01:00
2024-01-14 16:30:19 +01:00
const ace_call = new Promise (( resolve , reject ) => {
2024-01-13 14:52:01 +01:00
exec ( curlCommand , ( error , stdout , stderr ) => {
if ( error ) {
reject ( `Error: ${ error . message } ` );
}
try {
2024-01-17 12:51:25 +01:00
const parsed_rate = JSON . parse ( stdout )
2024-01-19 13:26:23 +01:00
console . log ( "parsed_rate>>>" , parsed_rate );
2024-02-15 20:33:26 +01:00
resolve ({ "rate" : parseFloat ( parsed_rate . data . exchange_rate ). toFixed ( 2 ), "provider" : "Ace Transfer" , "bestRate" : false });
2024-01-13 14:52:01 +01:00
} catch ( parseError ) {
2024-01-19 13:26:23 +01:00
console . log ( "parseError>>>" , parseError );
2024-01-13 14:52:01 +01:00
reject ( parseError . message );
}
});
2024-01-17 12:51:25 +01:00
}). then (( result ) => {
2024-02-15 20:33:26 +01:00
return { "rate" : parseFloat ( result . rate ). toFixed ( 2 ), "provider" : "Ace Transfer" , "bestRate" : false , "href" : "https://acemoneytransfer.com/referral-link/3056004" }
2024-01-17 12:51:25 +01:00
}
2024-01-19 13:26:23 +01:00
). catch (( result ) => {
console . log ( "result>>>" , result );
return { "rate" : 0.00 , "provider" : "Ace Transfer" , "bestRate" : false , "href" : "https://acemoneytransfer.com/referral-link/3056004" }
}
)
2024-01-13 14:52:01 +01:00
2024-01-14 16:30:19 +01:00
await Promise . all ([ ace_call , send_call , tap_call ])
2024-01-17 12:51:25 +01:00
. then (([ ace_reponse , send_response , tap_response ]) => {
2024-01-17 22:25:23 +01:00
rates = [ ace_reponse , send_response , tap_response ]
2024-01-14 16:30:19 +01:00
})
. catch ( error => {
console . error ( error );
});
2024-01-13 14:52:01 +01:00
2024-01-17 22:25:23 +01:00
const maxRateIndex = rates . reduce (( maxIndex , currentObject , currentIndex , array ) => {
const currentRate = parseFloat ( currentObject . rate );
const maxRate = parseFloat ( array [ maxIndex ]. rate );
return currentRate > maxRate ? currentIndex : maxIndex ;
}, 0 );
rates . forEach (( object , index ) => {
object . bestRate = index === maxRateIndex ;
});
2023-12-14 11:48:37 +01:00
return res . status ( 200 ). json ( rates );
2023-12-29 17:35:50 +01:00
2023-12-14 11:48:37 +01:00
};