All files / lib/resources acquirers.js

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119                                                                                                                                                                                                                                             
/**
 * @name Acquirers
 * @description This module exposes functions
 *              related to the `/acquirers` and
 *              `/acquirers` paths.
 *
 * @module acquirers
 **/
 
import { cond, has, T, curry } from 'ramda'
import routes from '../routes'
import request from '../request'
 
const findOne = curry((opts, body) =>
  request.get(opts, routes.acquirers.details(body.id), {})
)
 
const findAll = curry((opts, pagination) =>
  request.get(opts, routes.acquirers.base, pagination || {})
)
 
/**
 * `GET /acquirers`
 * Makes a request to /acquirers or to /acquirers/:id
 *
 * @param {Object} opts An options params which
 *                      is usually already bound
 *                      by `connect` functions.
 *
 * @param {Object} body The payload for the request.
 * @param {Number} [body.id]  The acquirer's ID. If not sent a
 *                            list of acquirer will be returned instead.
 * @param {Number} [body.count] Pagination option to get a list of acquirers.
 *                              Number of acquirers in a page.
 * @param {Number} [body.page] Pagination option for a list of acquirers.
 *                             The page index.
*/
const find = (opts, body) =>
  cond([
    [has('id'), findOne(opts)],
    [T, findAll(opts)],
  ])(body)
 
/**
 * `GET /acquirers`
 * Makes a request to /acquirers
 *
 * @param {Object} opts An options params which
 *                      is usually already bound
 *                      by `connect` functions.
 *
 * @param {Object} body The payload for the request.
 * @param {Number} [body.count] Pagination option to get a list of acquirers
 *                              Number of acquirers in a page.
 * @param {Number} [body.page] Pagination option for a list of acquirers.
 *                             The page index.
*/
const all = (opts, pagination) =>
  findAll(opts, pagination)
 
/**
 * `POST /acquirers`
 * Creates an acquirer from the given payload.
 *
 * @param {Object} opts An options params which
 *                      is usually already bound
 *                      by `connect` functions.
 * @param {Object} body The payload for the request
 *
 * @returns {Promise} Resolves to the result of
 *                    the request or to an error.
 */
const create = (opts, body) =>
  request.post(opts, routes.acquirers.base, body)
 
/**
 * `PUT /acquirers/:id`
 * Updates an acquirer from the given payload.
 *
 * @param {Object} opts An options params which
 *                      is usually already bound
 *                      by `connect` functions.
 *
 * @param {Object} body The payload for the request
 * @param {Number} body.id The acquirer's ID
 * @returns {Promise} A promise that resolves to
 *                    the newly created acquirer's
 *                    data or to an error.
 */
const update = (opts, body) =>
  request.put(opts, routes.acquirers.details(body.id), body)
 
/**
 * `PUT /acquirers/:id/anticipation_delay/:delay`
 * Updates an acquirer anticipation from the given delay.
 *
 * @param {Object} opts An options params which
 *                      is usually already bound
 *                      by `connect` functions.
 *
 * @param {Object} body The payload for the request
 * @param {Number} body.id The acquirer's ID
 * @param {Number} body.delay The acquirer's anticipation delay
 * @returns {Promise} A promise that resolves to
 *                    the newly created acquirer's
 *                    data or to an error.
 */
const updateAnticipationDelay = (opts, body) =>
  request.put(opts, routes.acquirers.anticipation(body.id, body.delay), body)
 
export default {
  all,
  find,
  findAll,
  create,
  update,
  updateAnticipationDelay,
}