UNPKG

espend-rest

Version:

A RESTful API for submitting payments and monitoring accounts on the eSpend network.

105 lines (85 loc) 4.16 kB
const ripple = require('espend-lib'); const express = require('express'); const api = require('../api'); const errors = require('../api').errors; const respond = require('./response-handler.js'); const version = require('./version.js'); var router = new express.Router(); router.generateIndexPage = function(req, res) { var url_base = '/v' + version.getApiVersion(); res.json({ success: true, name: 'espend-rest', package_version: version.getPackageVersion(), version: version.getApiVersion(), documentation: 'https://github.com/ripple/espend-rest', endpoints: { wallet_new: url_base + '/wallet/new', payment_paths: url_base + '/accounts/{address}/payments/paths/{destination_account}/{destination_amount as value+currency or value+currency+issuer}', payment_submit: url_base + '/accounts/{address}/payments', account_payments: url_base + '/accounts/{address}/payments/{hash,client_resource_id}{?direction,exclude_failed}', account_notifications: url_base + '/accounts/{address}/notifications/{hash,client_resource_id}', account_balances: url_base + '/accounts/{address}/balances', account_settings: url_base + '/accounts/{address}/settings', account_trustlines: url_base + '/accounts/{address}/trustlines', account_orders_place: url_base + '/accounts/{address}/orders', account_orders_cancel: url_base + '/accounts/{address}/orders/{sequence}', account_orders: url_base + '/accounts/{address}/orders/', account_order_transaction: url_base + '/accounts/{address}/orders/{hash}', account_order_book: url_base + '/accounts/{address}/order_book/{base as currency+issuer}/{counter as currency+issuer}', ripple_transactions: url_base + '/transactions/{hash}', server_status: url_base + '/server', server_connected: url_base + '/server/connected', transaction_fee: url_base + '/transaction-fee', uuid_generator: url_base + '/uuid' } }); }; router.get('/', router.generateIndexPage); /* uuid util */ router.get('/uuid', api.info.uuid); /** * For all the routes below, we need a connected rippled * insert the validateRemoteConnected middleware here */ /* make sure the api is connected to a rippled */ router.all('*', function(req, res, next) { if (api.isConnected()) { next(); } else { next(new errors.RippledNetworkError(void(0))); } }); /* Connected - if we hit this route, it means the server is connected */ router.get('/server/connected', api.info.isConnected); /* Transaction fee */ router.get('/transaction-fee', api.info.fee); /* Server */ router.get('/server', api.info.serverStatus); /* Wallet */ router.get('/wallet/new', api.wallet.generate); /* Payments */ router.post('/accounts/:account/payments', api.payments.submit); router.get('/accounts/:account/payments', api.payments.getAccountPayments); router.get('/accounts/:account/payments/:identifier', api.payments.get); router.get('/accounts/:account/payments/paths/:destination_account/:destination_amount_string', api.payments.getPathFind); /* Orders */ router.get('/accounts/:account/orders', api.orders.getOrders); router.post('/accounts/:account/orders', api.orders.placeOrder); router.delete('/accounts/:account/orders/:sequence', api.orders.cancelOrder); router.get('/accounts/:account/order_book/:base/:counter', api.orders.getOrderBook); router.get('/accounts/:account/orders/:identifier', api.orders.getOrder); /* Notifications */ router.get('/accounts/:account/notifications', api.notifications.getNotification); router.get('/accounts/:account/notifications/:identifier', api.notifications.getNotification); /* Balances */ router.get('/accounts/:account/balances', api.balances.get); /* Settings */ router.get('/accounts/:account/settings', api.settings.get); router.post('/accounts/:account/settings', api.settings.change); /* Standard Ripple Transactions */ router.get('/transactions/:identifier', api.transactions.get); /* Trustlines */ router.get('/accounts/:account/trustlines', api.trustlines.get); router.post('/accounts/:account/trustlines', api.trustlines.add); module.exports = router;