UNPKG

pagaris

Version:

Pagaris API client for Node

73 lines (62 loc) 1.94 kB
const axios = require('axios') const Pagaris = require('./pagaris') const Signature = require('./signature') const errors = require('./errors') const DOMAIN = process.env.PAGARIS_DOMAIN || 'https://pagaris.com' const API_PREFIX = '/api/v1/' const BASE_URL = DOMAIN + API_PREFIX class Client { static get(path) { return Client.makeRequest('GET', path) } static post(path, body) { return Client.makeRequest('POST', path, body) } static put(path, body) { return Client.makeRequest('PUT', path, body) } static requestOptions(path, method, body) { if (body) body = JSON.stringify(body) path = API_PREFIX + path let signature = new Signature(path, method, body) return { method: method, baseURL: DOMAIN, url: path, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': signature.headerValue() }, data: body } } static makeRequest(verb, path, body) { return new Promise((resolve, reject) => { axios(Client.requestOptions(path, verb, body)) .then((response) => { resolve(response.data) }) .catch((error) => { let res = error.response if (res) { let statusCode = error.response.status if (statusCode >= 500) return reject(new errors.ServerError(res)) switch (statusCode) { case 401: return reject(new errors.UnauthorizedError(res)) case 404: return reject(new errors.NotFoundError(res)) case 422: return reject(new errors.UnprocessableEntityError(res)) default: return reject(new errors.UnexpectedResponseError(res)) } } else { return reject(new errors.UnexpectedResponseError) } }) }) } } module.exports = Client;