summaryrefslogtreecommitdiff
path: root/bucky/app/federate.js
diff options
context:
space:
mode:
Diffstat (limited to 'bucky/app/federate.js')
-rw-r--r--bucky/app/federate.js85
1 files changed, 0 insertions, 85 deletions
diff --git a/bucky/app/federate.js b/bucky/app/federate.js
deleted file mode 100644
index 51b34f6..0000000
--- a/bucky/app/federate.js
+++ /dev/null
@@ -1,85 +0,0 @@
-var fetch = require('node-fetch')
-var db = require('../db')
-
-module.exports = {
-
- route: (app) => {
- app.put('/raw/import/thread/', importRaw('thread', 'Thread'), (req, res) => res.send({ status: 'ok', el: res.el }))
- app.put('/raw/import/keyword/', importRaw('keyword', 'Keyword'), (req, res) => res.send({ status: 'ok', el: res.el }))
- app.put('/raw/import/file/', importRaw('file', 'File'), (req, res) => res.send({ status: 'ok', el: res.el }))
- app.put('/raw/import/comment/', importRaw('comment', 'Comment'), (req, res) => res.send({ status: 'ok', el: res.el }))
-
- app.get('/raw/export/thread/:id', exportThread, (req, res) => res.send({ status: 'ok' }))
- app.get('/raw/export/keyword/:keyword', exportKeyword, (req, res) => res.send({ status: 'ok' }))
-
- function importRaw (type, model) {
- return (req, res, next) => {
- console.log('importing', type, req.body.id)
- delete req.body.id
- db[model].forge(req.body).save().then((el) => {
- res.el = el;
- next()
- }).catch(e => {
- console.error(e)
- next()
- })
- }
- }
- function exportKeyword (req, res, next) {
- console.log('export keyword', req.params.keyword)
- db.getKeyword(req.params.keyword).then(keyword => {
- send("keyword", keyword)
- return db.getThreadsForKeyword(req.params.keyword)
- }).then(threads => {
- var promises = threads.map(thread => {
- exportThread({ params: { id: thread.get('id') } }, res, function(){})
- })
- return Promise.all(promises)
- }).then( () => {
- next()
- })
- }
- function exportThread (req, res, next) {
- var thread_id
- return db.getThread(req.params.id).then(thread => {
- return send("thread", thread)
- }).then(json => {
- thread_id = json.el.id
- console.log('got thread id', thread_id)
- return db.getCommentsForThread(req.params.id)
- }).then(comments => {
- var promises = comments.map(comment => {
- comment.set('thread', thread_id)
- send("comment", comment)
- })
- return Promise.all(promises)
- }).then( () => {
- return db.getFilesForThread(req.params.id)
- }).then(files => {
- var promises = files.map(file => {
- file.set('thread', thread_id)
- send("file", file)
- })
- return promises
- }).then( () => {
- next()
- }).catch(e => {
- console.error(e)
- next()
- })
- }
- function send(type, data){
- console.log('sending', type, data.get('id'))
- var json = data.toJSON()
- return fetch("https://bucky.asdf.us/raw/import/" + type, {
- method: 'PUT',
- body: JSON.stringify(json),
- headers: {
- 'Content-Type': 'application/json',
- 'Accept': 'application/json',
- },
- }).then((res) => {return res.json()})
- }
-
- }
-} \ No newline at end of file