diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2018-01-24 13:07:23 +0100 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2018-01-24 13:07:23 +0100 |
| commit | 08ac33fbd67e115f50855f310f192a4d38fcaf50 (patch) | |
| tree | 63ec4d13306e0b480fe3a21543fd2b97537808dc /bucky/app | |
| parent | 3ce1a44ab308f4c483541944aa777ec8aa91af2b (diff) | |
begin keyword dump endpoint, add search rebuild endpoint
Diffstat (limited to 'bucky/app')
| -rw-r--r-- | bucky/app/api.js | 19 | ||||
| -rw-r--r-- | bucky/app/index.js | 124 |
2 files changed, 55 insertions, 88 deletions
diff --git a/bucky/app/api.js b/bucky/app/api.js index 44c4982..7a0e068 100644 --- a/bucky/app/api.js +++ b/bucky/app/api.js @@ -219,6 +219,11 @@ function route (app){ search.logQuery, search.success ) + app.get("/api/search/build", + middleware.ensureAuthenticated, + bucky.checkIsAdmin, + search.rebuild + ) /* keywords */ @@ -254,7 +259,19 @@ function route (app){ threads: res.threads, }) }) - + // app.get("/api/keyword/:keyword/full", + // middleware.ensureAuthenticated, + // bucky.ensureKeyword, + // bucky.ensureThreadsForKeyword, + // bucky.filterPrivateThreads, + // bucky.ensureFilesForThreads, + // bucky.ensureCommentsForThreads, + // function(req, res){ + // res.json({ + // keyword: res.keyword, + // threads: res.threads, + // }) + // }) /* mail */ diff --git a/bucky/app/index.js b/bucky/app/index.js index e8e8cbc..efdaf02 100644 --- a/bucky/app/index.js +++ b/bucky/app/index.js @@ -1,91 +1,41 @@ -require('dotenv').load(); -var fs = require('fs') -var app, express = require('express'); -var http = require('http'); -var https = require('https'); -var bodyParser = require('body-parser') -var cookieParser = require('cookie-parser') -var csurf = require('csurf') -var path = require('path') -var multiparty = require('multiparty') -var ejs = require('ejs') -var favicon = require('serve-favicon') -var passport = require('passport') -var sessionstore = require('sessionstore') -var session = require('express-session') -var MongoStore = require('connect-mongo')(session); -var upload = require('../util/upload') +var api = require('./api') -var app, server +var apis = {} -var federate = require('../util/federate') -var auth = require('../util/auth.js') -var middleware = require('../util/middleware.js') -var api = require('./api.js') -var pages = require('./pages.js') - -var site = module.exports = {} -site.init = function(){ - app = express() - app.enable('trust proxy'); - app.set('port', process.env.PORT || 5000) - app.use(favicon(__dirname + '../../../public/favicon.ico')) - app.use(bodyParser.json({limit: '50mb'})) - app.use(cookieParser()) - app.use(session({ - secret: 'argonauts', - proxy: true, - key: 'bucky.sid', - cookie: { - secure: process.env.NODE_ENV === 'production', - domain: '.' + process.env.HOST_NAME, - maxAge: 43200000000, - }, - store: new MongoStore({ - url: 'mongodb://localhost/buckySessionDb' -// type: 'mongodb', -// host: 'localhost', -// port: 27017, -// dbName: 'buckySessionDb', -// collectionName: 'sessions', -// timeout: 10000, - }), - resave: true, - saveUninitialized: false, - })) - - upload.init() - // federate.route(app) - -// app.use(csurf({ -// cookie: true, -// value: (req) => { req.headers['csrf-token'] } -// })) - app.disable('x-powered-by') - - auth.init() - app.use(express.query()) - app.use(passport.initialize()) - app.use(passport.session()) - - server = http.createServer(app).listen(process.env.PORT || 5000, function () { - console.log('Bucky listening at http://' + process.env.HOST_NAME + ':%s', server.address().port) - }) - - app.all('*', middleware.ensureLocals) - - api.route(app) - pages.route(app) - auth.route(app) +var xpress = { + get: () => { this.match('get', arguments) }, + post: () => { this.match('post', arguments) }, + put: () => { this.match('put', arguments) }, + delete: () => { this.match('delete', arguments) }, + match: (type, args) => { + var uri = args[0] + var cbs = args.slice(1) + apis[type] = apis[type] || {} + apis[type][uri] = cbs + }, +} - app.set('view engine', 'ejs') - app.set('views', path.join(__dirname, '../../views')) - app.use(express.static(path.join(__dirname, '../../public'))) - - // rebuild javascript after restarting server - if (process.env.NODE_ENV === 'production') { - require('../bin/build-scripts') - } +var router = module.exports = { + get: (uri) => { router.match('get', uri) }, + put: (uri) => { router.match('put', uri) }, + post: (uri) => { router.match('post', uri) }, + delete: (uri) => { router.match('delete', uri) }, + match: (type, uri) => { + return (req, res, next) => { + var fns = apis[type][uri] + req.isAuthenticated = () => true + res.json = (data) => { next && next(data) } + var promises = fns.map(fn => { + return new Promise((resolve, reject) => { + newRes = { ...res } + fn(req, newRes, () => { + res = newRes + resolve(req, res) + }) + }) + }) + return Promise.all(promises) + } + }, } -site.api = require('./api') -site.pages = require('./pages') + |
