aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2018-01-23 19:11:09 -0800
committerAdam Soltys <[email protected]>2018-01-23 19:11:09 -0800
commit8808b8e88bff57665ff6bf9a066def410ada1817 (patch)
treee85b974599b1fb8b1fc947143dfa995ea4e5562d
parent190aeef469c7b15c820cd6775d9c1407b5b5f247 (diff)
downloadcoinos-server-8808b8e88bff57665ff6bf9a066def410ada1817.tar.gz
coinos-server-8808b8e88bff57665ff6bf9a066def410ada1817.zip
graphql endpoint
-rw-r--r--app.js50
-rw-r--r--package.json3
-rw-r--r--yarn.lock109
3 files changed, 158 insertions, 4 deletions
diff --git a/app.js b/app.js
index 68bfcffb..940a4600 100644
--- a/app.js
+++ b/app.js
@@ -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",
diff --git a/yarn.lock b/yarn.lock
index 2f3b40de..819bc9f4 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,6 +2,10 @@
# yarn lockfile v1
+ 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"