mirror of
https://github.com/bellingcat/datasheet-server.git
synced 2026-06-12 05:18:31 +03:00
Merge pull request #14 from forensic-architecture/topic/with-example
Topic/with example
This commit is contained in:
@@ -34,6 +34,8 @@ Datasheet server is a Node server developed at [Forensic Architecture](https://f
|
|||||||
|
|
||||||
Querying data directly from spreadsheets is brittle, as it relies on the maintenance of a rigid structure in the sheets at all times. By putting Datasheet Server as a proxy that sits in between source sheets and their consumers, it is possible to dynamically modify sheets without breaking applications. A data admin can then use Datasheet Server to ensure that applications always receive eligible data, without foregoing the spreadsheets as sources of truth.
|
Querying data directly from spreadsheets is brittle, as it relies on the maintenance of a rigid structure in the sheets at all times. By putting Datasheet Server as a proxy that sits in between source sheets and their consumers, it is possible to dynamically modify sheets without breaking applications. A data admin can then use Datasheet Server to ensure that applications always receive eligible data, without foregoing the spreadsheets as sources of truth.
|
||||||
|
|
||||||
|
To see how to get a local instance of datasheet server running in practice, see [this wiki](https://github.com/forensic-architecture/timemap/wiki/Setting-up-a-local-instance-of-Timemap) explaining how to use it to feed data from a Google Sheet to a local instance of [Timemap](https://github.com/forensic-architecture/timemap).
|
||||||
|
|
||||||
### Design Concepts
|
### Design Concepts
|
||||||
The codebase currently only supports Google Sheets as a source, and a REST-like format as a query language. It is designed, however, with extensibility in mind.
|
The codebase currently only supports Google Sheets as a source, and a REST-like format as a query language. It is designed, however, with extensibility in mind.
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,8 @@
|
|||||||
"description": "Starter project for an ES6 RESTful Express API",
|
"description": "Starter project for an ES6 RESTful Express API",
|
||||||
"main": "dist",
|
"main": "dist",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "nodemon -w src --exec \"babel-node src\"",
|
"dev": "NODE_ENV=development nodemon -w src --exec \"babel-node src\"",
|
||||||
"build": "npx babel src -d dist",
|
"build": "NODE_ENV=production npx babel src -d dist",
|
||||||
"start": "node dist",
|
"start": "node dist",
|
||||||
"lint": "standard \"src/**/*.js\" \"test/**/*/js\"",
|
"lint": "standard \"src/**/*.js\" \"test/**/*/js\"",
|
||||||
"test-watch": "ava --watch",
|
"test-watch": "ava --watch",
|
||||||
@@ -20,7 +20,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"body-parser": "^1.13.3",
|
"body-parser": "^1.13.3",
|
||||||
"compression": "^1.5.2",
|
"compression": "^1.5.2",
|
||||||
"cors": "^2.7.1",
|
"cors": "^2.8.5",
|
||||||
"express": "^4.13.3",
|
"express": "^4.13.3",
|
||||||
"express-graphql": "^0.6.12",
|
"express-graphql": "^0.6.12",
|
||||||
"googleapis": "^32.0.0",
|
"googleapis": "^32.0.0",
|
||||||
|
|||||||
@@ -20,9 +20,8 @@ export default ({ config, controller }) => {
|
|||||||
.retrieveFrag(source, tab, resource, frag)
|
.retrieveFrag(source, tab, resource, frag)
|
||||||
.then(data => res.json(data))
|
.then(data => res.json(data))
|
||||||
.catch(err =>
|
.catch(err =>
|
||||||
res.json({
|
res.status(err.status || 501)
|
||||||
error: err.message
|
.send()
|
||||||
})
|
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -31,9 +30,8 @@ export default ({ config, controller }) => {
|
|||||||
.retrieve(req.params.source, req.params.tab, req.params.resource)
|
.retrieve(req.params.source, req.params.tab, req.params.resource)
|
||||||
.then(data => res.json(data))
|
.then(data => res.json(data))
|
||||||
.catch(err =>
|
.catch(err =>
|
||||||
res.json({
|
res.status(err.status || 501)
|
||||||
error: err.message
|
.send()
|
||||||
})
|
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -3,14 +3,17 @@ import BP from './lib/blueprinters'
|
|||||||
export default {
|
export default {
|
||||||
port: 4040,
|
port: 4040,
|
||||||
googleSheets: {
|
googleSheets: {
|
||||||
email: 'project-name@reliable-baptist-23338.iam.gserviceaccount.com',
|
email: 'SOME_SERVICE_ACCOUNT_EMAIL',
|
||||||
privateKey: 'SOME_PRIVATE_KEY',
|
privateKey: 'SOME_SERVICE_ACCOUNT_PRIVATE_KEY',
|
||||||
sheets: [
|
sheets: [
|
||||||
{
|
{
|
||||||
name: 'example',
|
name: 'example',
|
||||||
id: '1s-vfBR8Uy-B-TLO_C5Ozw4z-L0E3hdP8ohMV761ouRI',
|
id: '1UC7DkCFeUXHfpUxUGruExwFbP4pqVBdJLOKfo6wDDGk',
|
||||||
tabs: {
|
tabs: {
|
||||||
objects: [BP.byRow]
|
export_events: [BP.byId, BP.byRow],
|
||||||
|
export_categories: [BP.byGroup, BP.byRow],
|
||||||
|
export_sites: BP.byRow,
|
||||||
|
export_tags: BP.byTree
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -8,6 +8,13 @@ import config from './config'
|
|||||||
let app = express()
|
let app = express()
|
||||||
app.server = http.createServer(app)
|
app.server = http.createServer(app)
|
||||||
|
|
||||||
|
// enable cross origin requests explicitly in development
|
||||||
|
if (process.env.NODE_ENV === 'development') {
|
||||||
|
const cors = require('cors')
|
||||||
|
console.log('Enabling CORS in development...')
|
||||||
|
app.use(cors())
|
||||||
|
}
|
||||||
|
|
||||||
initialize(controller => {
|
initialize(controller => {
|
||||||
app.use(
|
app.use(
|
||||||
middleware({
|
middleware({
|
||||||
|
|||||||
@@ -1267,9 +1267,9 @@ core-util-is@~1.0.0:
|
|||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
|
||||||
|
|
||||||
cors@^2.7.1:
|
cors@^2.8.5:
|
||||||
version "2.8.4"
|
version "2.8.5"
|
||||||
resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.4.tgz#2bd381f2eb201020105cd50ea59da63090694686"
|
resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
|
||||||
dependencies:
|
dependencies:
|
||||||
object-assign "^4"
|
object-assign "^4"
|
||||||
vary "^1"
|
vary "^1"
|
||||||
|
|||||||
Reference in New Issue
Block a user