summaryrefslogtreecommitdiff
path: root/bucky
diff options
context:
space:
mode:
Diffstat (limited to 'bucky')
-rw-r--r--bucky/app/api.js19
-rw-r--r--bucky/app/index.js124
-rw-r--r--bucky/bin/build-search.js5
-rw-r--r--bucky/search/lexicon.js6
-rw-r--r--bucky/search/middleware.js10
5 files changed, 70 insertions, 94 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')
+
diff --git a/bucky/bin/build-search.js b/bucky/bin/build-search.js
index d417087..23657b3 100644
--- a/bucky/bin/build-search.js
+++ b/bucky/bin/build-search.js
@@ -1,3 +1,4 @@
-var search = require('../search/lexicon')
-search.build()
+var lexicon = require('../search/lexicon')
+
+lexicon.build().then(() => process.exit())
diff --git a/bucky/search/lexicon.js b/bucky/search/lexicon.js
index 2415e81..dc1d7ab 100644
--- a/bucky/search/lexicon.js
+++ b/bucky/search/lexicon.js
@@ -12,9 +12,9 @@ var total = 0
module.exports = { build: build_index }
-function build_index() {
+function build_index(cb) {
console.log("building index")
- parse_threads()
+ return parse_threads()
.then(parse_comments)
.then(parse_files)
.then( () => {
@@ -23,7 +23,7 @@ function build_index() {
console.log( "--- UNIQUE WORDS: ", unique );
lexicon_store();
console.log( "Done!")
- process.exit()
+ return { total, unique }
})
}
function parse_threads() {
diff --git a/bucky/search/middleware.js b/bucky/search/middleware.js
index 314afbc..0cca05c 100644
--- a/bucky/search/middleware.js
+++ b/bucky/search/middleware.js
@@ -1,6 +1,8 @@
+var db = require('../db')
+
var search = require('./search')
var snippet = require('./snippet')
-var db = require('../db')
+var lexicon = require('./lexicon')
module.exports = {
@@ -100,4 +102,10 @@ module.exports = {
})
},
+ rebuild: function(req, res, next){
+ lexicon.build().then( (data) => {
+ res.json(data)
+ })
+ },
+
}