UNPKG

africastalking-ts

Version:

Unofficial Typescript version of the Africa's Talking SDK

44 lines (39 loc) 2.96 kB
import { BaseUrlCategory, Endpoints, EndpointCategory } from './getUrl.types'; const getBaseUrl = ( baseUrlCategory: BaseUrlCategory, isSandbox: boolean, ): string => `https://${baseUrlCategory.toLowerCase()}${isSandbox && baseUrlCategory !== 'CHAT' ? '.sandbox' : ''}.africastalking.com`; const endpoints: Endpoints = { AIRTIME: { baseUrlCategory: 'API', endpoint: '/version1/airtime/send' }, APPLICATION: { baseUrlCategory: 'API', endpoint: '/version1/user' }, SMS: { baseUrlCategory: 'API', endpoint: '/version1/messaging' }, GENERATE_AUTH_TOKEN: { baseUrlCategory: 'API', endpoint: '/auth-token/generate' }, CREATE_CHECKOUT_TOKEN: { baseUrlCategory: 'API', endpoint: '/checkout/token/create' }, CREATE_SUBSCRIPTION: { baseUrlCategory: 'API', endpoint: '/version1/subscription/create' }, FETCH_SUBSCRIPTION: { baseUrlCategory: 'API', endpoint: '/version1/subscription' }, DELETE_SUBSCRIPTION: { baseUrlCategory: 'API', endpoint: '/version1/subscription/delete' }, MOBILE_CHECKOUT: { baseUrlCategory: 'PAYMENTS', endpoint: '/mobile/checkout/request' }, MOBILE_B2C: { baseUrlCategory: 'PAYMENTS', endpoint: '/mobile/b2c/request' }, MOBILE_B2B: { baseUrlCategory: 'PAYMENTS', endpoint: '/mobile/b2b/request' }, MOBILE_DATA: { baseUrlCategory: 'PAYMENTS', endpoint: '/mobile/data/request' }, BANK_CHECKOUT_CHARGE: { baseUrlCategory: 'PAYMENTS', endpoint: '/bank/checkout/charge' }, BANK_CHECKOUT_VALIDATE: { baseUrlCategory: 'PAYMENTS', endpoint: '/bank/checkout/validate' }, BANK_TRANSFER: { baseUrlCategory: 'PAYMENTS', endpoint: '/bank/transfer' }, WALLET_TRANSFER: { baseUrlCategory: 'PAYMENTS', endpoint: '/transfer/wallet' }, TOPUP_STASH: { baseUrlCategory: 'PAYMENTS', endpoint: '/topup/stash' }, CARD_CHECKOUT_CHARGE: { baseUrlCategory: 'PAYMENTS', endpoint: '/card/checkout/charge' }, CARD_CHECKOUT_VALIDATE: { baseUrlCategory: 'PAYMENTS', endpoint: '/card/checkout/validate' }, FETCH_PRODUCT_TRANSACTIONS: { baseUrlCategory: 'PAYMENTS', endpoint: '/query/transaction/fetch' }, FIND_TRANSACTION: { baseUrlCategory: 'PAYMENTS', endpoint: '/query/transaction/find' }, FETCH_WALLET_TRANSACTIONS: { baseUrlCategory: 'PAYMENTS', endpoint: '/query/wallet/fetch' }, FETCH_WALLET_BALANCE: { baseUrlCategory: 'PAYMENTS', endpoint: '/query/wallet/balance' }, MAKE_CALL: { baseUrlCategory: 'VOICE', endpoint: '/call' }, GET_NUM_QUEUED_CALLS: { baseUrlCategory: 'VOICE', endpoint: '/queueStatus' }, UPLOAD_MEDIA_FILE: { baseUrlCategory: 'VOICE', endpoint: '/mediaUpload' }, CHAT_OPT_IN: { baseUrlCategory: 'CHAT', endpoint: '/message/consent' }, CHAT_MESSAGE: { baseUrlCategory: 'CHAT', endpoint: '/message/send' }, }; export const getUrl = (endpointCategory: EndpointCategory, username: string): string => { const isSandbox = username.toLowerCase() === 'sandbox'; const endpoint = endpoints[endpointCategory]; return `${getBaseUrl(endpoint.baseUrlCategory, isSandbox)}${endpoint.endpoint}`; };