Skip to main content
Glama
api.js6.14 kB
'use strict'; var express = require('express'); var auth = require('./auth'); var account = require('./account'); var geo = require('./geo'); var validatePin = require('cs-pin-validator'); var openalias = require('cs-openalias'); var fee = require('./fee'); var ticker = require('./ticker'); var ethereumTokens = require('./ethereumTokens'); var axios = require('axios'); var router = express.Router(); router.post('/register', validateAuthParams(false), function(req, res) { var walletId = req.body.wallet_id; auth.register(walletId, req.body.pin).then(function(token) { setCookie(req, walletId, function() { console.log('registered wallet %s', walletId); res.status(200).send(token); }) }).catch(function(err) { console.error('error', err); return res.status(400).send(err); }); }); router.post('/login', validateAuthParams(true), function(req, res) { var walletId = req.body.wallet_id; auth.login(walletId, req.body.pin).then(function(token) { setCookie(req, walletId, function() { console.log('authenticated wallet %s', walletId); res.status(200).send(token); }); }).catch(function(err) { console.error('error', err); res.status(400).send(err); }); }); router.use(function (req, res, next) { next(); }) router.get('/api/exist', function(req, res, next) { next(); }) router.get('/exist', function(req, res, next) { next(); }) router.get('/exist', function(req, res) { var walletId = req.query.wallet_id; console.info(walletId) if (!walletId) return res.status(400).json({error: 'Bad request'}); account.isExist(walletId).then(function(userExist) { console.info(userExist) res.status(200).send( ); }).catch(function(err) { console.error('error', err); return res.status(400).send(err); }); }); router.get('/openalias', function(req, res) { var hostname = req.query.hostname if (!hostname) return res.status(400).json({error: 'Bad request'}); openalias.resolve(hostname, function(err, address, name) { if(err) return res.status(400).send(err) res.status(200).send({address: address, name: name}) }) }); router.put('/username', restrict, function(req, res) { var id = req.body.id; var username = req.body.username; if (!username) return res.status(400).json({error: 'Bad request'}); account.setUsername(id, username).then(function(username) { res.status(200).send({username: username}); }).catch(function(err) { res.status(400).send(err); }); }); router.get('/details', restrict, function(req, res) { account.getDetails(req.query.id).then(function(details) { res.status(200).json(details); }).catch(function(err) { res.status(400).send(err); }); }); router.put('/details', restrict, function(req, res) { if (!req.body.data) return res.status(400).json({error: 'Bad request'}); account.saveDetails(req.body.id, req.body.data).then(function(details) { res.status(200).json(details); }).catch(function(err) { res.status(400).send(err); }); }); router.delete('/account', restrict, function(req, res) { var id = req.body.id; account.remove(id).then(function() { res.status(200).send() }).catch(function(err) { res.status(400).send(err); }) }); router.get('/fees', function(req, res) { var network = req.query.network || 'bitcoin' fee.getFromCache(network).then(function(fees) { delete fees._id; res.status(200).send(fees); }).catch(function(err) { res.status(400).send(err); }); }); router.get('/ticker', function(req, res) { var crypto = req.query.crypto if (!crypto) return res.status(400).json({error: 'Bad request'}); ticker.getFromCache(crypto).then(function(data) { res.status(200).send(data); }).catch(function(err) { res.status(400).send(err); }); }); router.get('/ticker/applewatch', function(req, res) { ticker.getFromCacheForAppleWatch().then(function(data) { res.status(200).send(data); }).catch(function(err) { res.status(400).send(err); }); }); router.get('/ethereum/tokens', function(req, res) { ethereumTokens.getAllFromCache().then(function(data) { res.status(200).send(data); }).catch(function(err) { res.status(400).send(err); }); }); router.post('/location', restrict, function(req, res) { var data = req.body; geo.save(data.lat, data.lon, data).then(function() { res.status(201).send(); }).catch(function(err) { res.status(400).json(err); }); }); router.put('/location', restrict, function(req, res) { var data = req.body; geo.search(data.lat, data.lon, data).then(function(results) { res.status(200).json(results); }).catch(function(err) { res.status(400).json(err); }); }); router.delete('/location', restrict, function(req, res) { geo.remove(req.body.id).catch(console.error); res.status(200).send(); }); router.get('/faucet/:address', function(req, res, next){ axios.get('https://faucet.smileyco.in/faucet?address=' + req.params.address) .then(function(response){ console.log("successfully fetched from faucet"); }) .catch(function(err){ console.log("error fetching coins from faucet"); console.err(err); }); res.status(200).send(); }); router.use(function(err, req, res, next) { console.error(err.stack); res.status(500).send({error: 'Oops! something went wrong.'}); }); router.use(function(req, res, next) { res.status(404).send({error: 'Oops! page not found :P.'}); }); function validateAuthParams(allowMissingPin) { return function (req, res, next) { if (!req.body.wallet_id || !validatePin(req.body.pin, allowMissingPin)) { return res.status(400).json({error: 'Bad request'}) } next(); } } function restrict(req, res, next) { var id = req.method === 'GET' ? req.query.id : req.body.id; var session_id = req.session.wallet_id; if (session_id && session_id === id) { next(); } else { //return res.status(401).send(); // Remove comment and comment next line next(); // to get session error } } function setCookie(req, wallet_id, callback) { req.session.wallet_id = wallet_id; callback(); } module.exports = router;

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/fefergrgrgrg/cloudflare-api-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server