Twilio-poc/supabase/functions/call-sms-gateway/index.ts
Naval 6357db32ee cleanup and env changes
Signed-off-by: Naval <ashish.kumar@cloudwick.com>
2025-03-06 11:06:16 +05:30

69 lines
2.4 KiB
TypeScript

import { serve } from 'https://deno.land/std@0.168.0/http/server.ts'
import { corsHeaders } from '../_shared/cors.ts'
import { createClient } from 'https://esm.sh/@supabase/supabase-js@2'
serve(async (req) => {
// Handle CORS
if (req.method === 'OPTIONS') {
return new Response('ok', { headers: corsHeaders })
}
if (req.method === 'GET') {
return new Response('ok', { headers: corsHeaders })
}
try {
const { action, selectedService, selectedCountry } = await req.json()
const smsActivateApiKey = Deno.env.get('SMS_ACTIVATE_API_KEY')
if (!smsActivateApiKey) {
throw new Error('Missing platform credentials')
}
if(action != "getActiveActivations" && action != "getNumber"){
throw new Error('Invalid action')
}
if(action === "getNumber" && (!selectedService || !selectedCountry)){
throw new Error('Missing required fields')
}
let apiResponse;
const myHeaders = new Headers();
// myHeaders.append("Cookie", "__cf_bm=ZwMogfNq713s0IM1QbuvaGuJQK0rxRP8AVLa.yU0qYQ-1741017601-1.0.1.1-5KsvD93DDrImkQ.Inrh49z9A_TC_O44Tss_PIAnyp.x6Qfip.qoVL1pWB.MYalVT0oDPalmlcTnleNWGxVPUnGWkqig9lCl6WC.cZPhAxVg");
const requestOptions = {
method: "GET",
headers: myHeaders,
redirect: "follow"
};
switch (action) {
case "getActiveActivations":
await fetch(`https://api.sms-activate.ae/stubs/handler_api.php?api_key=${smsActivateApiKey}&action=getActiveActivations`, requestOptions)
.then((response) => response.text())
.then((result) => apiResponse = result)
.catch((error) => console.error(error));
break;
case "getNumber":
const apiUrl = `https://api.sms-activate.ae/stubs/handler_api.php?api_key=${smsActivateApiKey}&action=getNumber&service=${selectedService}&operator=any&country=${selectedCountry}&maxPrice=0.2250`;
await fetch(apiUrl, requestOptions)
.then((response) => response.text())
.then((result) => (apiResponse = result))
.catch((error) => console.error(error));
break;
default:
break;
}
return new Response(apiResponse, {
headers: { ...corsHeaders, 'Content-Type': 'application/json' },
status: 200,
})
} catch (error) {
return new Response(JSON.stringify({ error: error.message }), {
headers: { ...corsHeaders, 'Content-Type': 'application/json' },
status: 400,
})
}
})