start with import event feature
This commit is contained in:
@@ -12,7 +12,7 @@ const apUserController = require('./controller/ap_user')
|
||||
const resourceController = require('./controller/resource')
|
||||
const oauthController = require('./controller/oauth')
|
||||
const announceController = require('./controller/announce')
|
||||
|
||||
const helpers = require('../helpers')
|
||||
const storage = require('./storage')
|
||||
const upload = multer({ storage })
|
||||
|
||||
@@ -87,6 +87,8 @@ api.put('/place', isAdmin, eventController.updatePlace)
|
||||
*/
|
||||
api.post('/event', hasPerm('event:write'), upload.single('image'), eventController.add)
|
||||
api.put('/event', hasPerm('event:write'), upload.single('image'), eventController.update)
|
||||
api.get('/event/import', helpers.importURL)
|
||||
|
||||
|
||||
// remove event
|
||||
api.delete('/event/:id', hasPerm('event:remove'), eventController.remove)
|
||||
@@ -103,13 +105,14 @@ api.delete('/event/notification/:code', eventController.delNotification)
|
||||
|
||||
api.get('/settings', settingsController.getAllRequest)
|
||||
api.post('/settings', isAdmin, settingsController.setRequest)
|
||||
api.get('/event/:event_id.:format?', cors, eventController.get)
|
||||
api.post('/settings/logo', isAdmin, multer({ dest: config.upload_path }).single('logo'), settingsController.setLogo)
|
||||
|
||||
// confirm event
|
||||
api.get('/event/confirm/:event_id', hasPerm('event:write'), eventController.confirm)
|
||||
api.get('/event/unconfirm/:event_id', hasPerm('event:write'), eventController.unconfirm)
|
||||
|
||||
// import event
|
||||
|
||||
// get event
|
||||
api.get('/event/:event_id.:format?', cors, eventController.get)
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@ const path = require('path')
|
||||
const sharp = require('sharp')
|
||||
const axios = require('axios')
|
||||
const crypto = require('crypto')
|
||||
const Microformats = require('microformat-node')
|
||||
const get = require('lodash/get')
|
||||
|
||||
const DOMPurify = require('dompurify')
|
||||
const { JSDOM } = require('jsdom')
|
||||
@@ -104,6 +106,35 @@ module.exports = {
|
||||
|
||||
outStream.on('finish', () => resolve(filename))
|
||||
})
|
||||
},
|
||||
|
||||
async importURL (req, res) {
|
||||
const URL = req.query.URL
|
||||
try {
|
||||
const response = await axios.get(URL)
|
||||
Microformats.get({ html: response.data, filter: ['h-event'] }, (err, data) => {
|
||||
if (!data.items.length || !data.items[0].properties) return res.sendStatus(404)
|
||||
const event = data.items[0].properties
|
||||
console.error(event)
|
||||
return res.json({
|
||||
title: get(event, 'name[0]', ''),
|
||||
description: get(event, 'content[0]', ''),
|
||||
place: get(event, 'location[0].properties.name', ''),
|
||||
address: get(event, 'location[0].properties.street-address'),
|
||||
start: get(event, 'start[0]', ''),
|
||||
end: get(event, 'end[0]', ''),
|
||||
tags: get(event, 'category', []),
|
||||
image: get(event, 'featured[0]')
|
||||
})
|
||||
})
|
||||
// const event = dom.window.document.querySelected(".h-event")
|
||||
// console.error(event)
|
||||
// console.error(response)
|
||||
} catch(e){
|
||||
console.error(e)
|
||||
}
|
||||
|
||||
// res.json('ok')
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user