diff options
| author | Adam Soltys <[email protected]> | 2018-01-23 19:11:09 -0800 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2018-01-23 19:11:09 -0800 |
| commit | 8808b8e88bff57665ff6bf9a066def410ada1817 (patch) | |
| tree | e85b974599b1fb8b1fc947143dfa995ea4e5562d | |
| parent | 190aeef469c7b15c820cd6775d9c1407b5b5f247 (diff) | |
| download | coinos-server-8808b8e88bff57665ff6bf9a066def410ada1817.tar.gz coinos-server-8808b8e88bff57665ff6bf9a066def410ada1817.zip | |
graphql endpoint
| -rw-r--r-- | app.js | 50 | ||||
| -rw-r--r-- | package.json | 3 | ||||
| -rw-r--r-- | yarn.lock | 109 |
3 files changed, 158 insertions, 4 deletions
@@ -5,6 +5,40 @@ import passport from './passport' import cache from './cache' import dotenv from 'dotenv' import ba from 'bitcoinaverage' +import fs from 'fs' +import grpc from 'grpc' +import { graphqlExpress, graphiqlExpress } from 'apollo-server-express' +const { makeExecutableSchema } = require('graphql-tools'); + +// Some fake data +const books = [ + { + title: "Harry Potter and the Sorcerer's stone", + author: 'J.K. Rowling', + }, + { + title: 'Jurassic Park', + author: 'Michael Crichton', + }, +]; + +// The GraphQL schema in string form +const typeDefs = ` + type Query { books: [Book] } + type Book { title: String, author: String } +`; + +// The resolvers +const resolvers = { + Query: { books: () => books }, +}; + +// Put together a schema +const schema = makeExecutableSchema({ + typeDefs, + resolvers, +}); + dotenv.config() require('dotenv').config() @@ -21,7 +55,11 @@ const l = console.log const users = require('./routes/users') const transactions = require('./routes/transactions') const restClient = ba.restfulClient(process.env.BITCOINAVERAGE_PUBLIC, process.env.BITCOINAVERAGE_SECRET) - const lnrpc = await require('lnrpc')({ server: 'localhost:10009' }) + const lnrpc = await require('lnrpc')({ server: 'localhost:10001' }) + const adminMacaroon = fs.readFileSync('/home/adam/.lnd/data/core_test/admin.macaroon'); + const meta = new grpc.Metadata(); + meta.add('macaroon', adminMacaroon.toString('hex')); + app.get('/users.json', transactions.index) app.post('/login', users.login) @@ -32,10 +70,9 @@ const l = console.log app.get('/:user/transactions', transactions.index) app.post('/transactions/:txid', transactions.update) app['delete']('/:user/transactions/:txid', transactions['delete']) - app.get('/:user.json', users.json) app.get('/secret', passport.authenticate('jwt', { session: false }), users.secret) app.get('/balance', async (req, res) => { - res.json(await lnrpc.walletBalance({witness_only: true})) + res.json(await lnrpc.walletBalance({witness_only: true}, meta)) }) let fetchRates @@ -50,6 +87,13 @@ const l = console.log res.json(app.get('rates')) }) + app.use('/graphql', bodyParser.json(), graphqlExpress({ + schema, + context: {}, + })) + + app.use('/graphiql', graphiqlExpress({ endpointURL: '/graphql' })) + app.use(function (err, req, res, next) { res.status(500) res.send('An error occurred') diff --git a/package.json b/package.json index 38cf8962..d9718c96 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,7 @@ "postinstall": "cp -n .env.sample .env" }, "dependencies": { + "apollo-server-express": "^1.3.2", "async": "2.1.1", "babel-cli": "^6.26.0", "babel-preset-env": "^1.6.1", @@ -24,6 +25,8 @@ "dotenv": "^4.0.0", "express": "4.14.0", "express-session": "^1.6.5", + "graphql": "^0.12.3", + "graphql-tools": "^2.18.0", "hogan-express": "0.5.2", "http-proxy-middleware": "^0.17.2", "less": "2.7.1", @@ -2,6 +2,10 @@ # yarn lockfile v1 +"@types/[email protected]": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.5.3.tgz#91b728599544efbb7386d8b6633693a3c2e7ade5" + abbrev@1: version "1.1.0" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" @@ -71,6 +75,49 @@ anymatch@^1.3.0: arrify "^1.0.0" micromatch "^2.1.5" +apollo-cache-control@^0.0.x: + version "0.0.9" + resolved "https://registry.yarnpkg.com/apollo-cache-control/-/apollo-cache-control-0.0.9.tgz#77100f456fb19526d33b7f595c8ab1a2980dcbb4" + dependencies: + graphql-extensions "^0.0.x" + +apollo-link@^1.0.0: + version "1.0.7" + resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.0.7.tgz#42cd38a7378332fc3e41a214ff6a6e5e703a556f" + dependencies: + "@types/zen-observable" "0.5.3" + apollo-utilities "^1.0.0" + zen-observable "^0.6.0" + +apollo-server-core@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-1.3.2.tgz#f36855a3ebdc2d77b8b9c454380bf1d706105ffc" + dependencies: + apollo-cache-control "^0.0.x" + apollo-tracing "^0.1.0" + graphql-extensions "^0.0.x" + +apollo-server-express@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-1.3.2.tgz#0ff8201c0bf362804a151e1399767dae6ab7e309" + dependencies: + apollo-server-core "^1.3.2" + apollo-server-module-graphiql "^1.3.0" + +apollo-server-module-graphiql@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/apollo-server-module-graphiql/-/apollo-server-module-graphiql-1.3.2.tgz#0a9e4c48dece3af904fee333f95f7b9817335ca7" + +apollo-tracing@^0.1.0: + version "0.1.3" + resolved "https://registry.yarnpkg.com/apollo-tracing/-/apollo-tracing-0.1.3.tgz#6820c066bf20f9d9a4eddfc023f7c83ee2601f0b" + dependencies: + graphql-extensions "^0.0.x" + +apollo-utilities@^1.0.0, apollo-utilities@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.0.4.tgz#560009ea5541b9fdc4ee07ebb1714ee319a76c15" + aproba@^1.0.3: version "1.1.1" resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" @@ -1446,7 +1493,7 @@ core-js@^2.4.0: version "2.4.1" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" -core-js@^2.5.0: +core-js@^2.5.0, core-js@^2.5.3: version "2.5.3" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.3.tgz#8acc38345824f16d8365b7c9b4259168e8ed603e" @@ -1626,6 +1673,10 @@ deprecate@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/deprecate/-/deprecate-0.1.0.tgz#c49058612dc6c8e5145eafe4839b8c2c7d041c14" +deprecated-decorator@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz#00966317b7a12fe92f3cc831f7583af329b86c37" + destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" @@ -1819,6 +1870,10 @@ error-ex@^1.2.0: dependencies: is-arrayish "^0.2.1" +es6-promise@^4.1.1: + version "4.2.2" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.2.tgz#f722d7769af88bd33bc13ec6605e1f92966b82d9" + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -2238,6 +2293,36 @@ graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.4 version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" +graphql-extensions@^0.0.x: + version "0.0.7" + resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.0.7.tgz#807e7c3493da45e8f8fd02c0da771a9b3f1f2d1a" + dependencies: + core-js "^2.5.3" + source-map-support "^0.5.1" + +graphql-subscriptions@^0.5.6: + version "0.5.6" + resolved "https://registry.yarnpkg.com/graphql-subscriptions/-/graphql-subscriptions-0.5.6.tgz#0d8e960fbaaf9ecbe7900366e86da2fc143fc5b2" + dependencies: + es6-promise "^4.1.1" + iterall "^1.1.3" + +graphql-tools@^2.18.0: + version "2.18.0" + resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-2.18.0.tgz#8e2d6436f9adba1d579c1a1710ae95e7f5e7248b" + dependencies: + apollo-link "^1.0.0" + apollo-utilities "^1.0.1" + deprecated-decorator "^0.1.6" + graphql-subscriptions "^0.5.6" + uuid "^3.1.0" + +graphql@^0.12.3: + version "0.12.3" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.12.3.tgz#11668458bbe28261c0dcb6e265f515ba79f6ce07" + dependencies: + iterall "1.1.3" + grpc@^1.6.0: version "1.8.0" resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.8.0.tgz#9d49f1b05c19c4a35c480bd14c632386de6bf664" @@ -2642,6 +2727,10 @@ isurl@^1.0.0-alpha5: has-to-string-tag-x "^1.2.0" is-object "^1.0.1" [email protected], iterall@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.1.3.tgz#1cbbff96204056dde6656e2ed2e2226d0e6d72c9" + jodid25519@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" @@ -4181,6 +4270,12 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" +source-map-support@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.2.tgz#1a6297fd5b2e762b39688c7fc91233b60984f0a5" + dependencies: + source-map "^0.6.0" + source-map@^0.5.3, source-map@^0.5.5, source-map@~0.5.1: version "0.5.6" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" @@ -4189,6 +4284,10 @@ source-map@^0.5.6: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + spdx-correct@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" @@ -4528,6 +4627,10 @@ uuid@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" +uuid@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" + v8flags@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" @@ -4729,3 +4832,7 @@ yauzl@^2.4.2: version "0.1.2" resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" + +zen-observable@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.6.1.tgz#01dbed3bc8d02cbe9ee1112c83e04c807f647244" |
