You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.8 KiB
66 lines
1.8 KiB
const request = require('request'); |
|
const cheerio = require('cheerio'); |
|
const express = require('express') |
|
const app = express() |
|
|
|
app.use((req, res, next) => { |
|
res.header('Access-Control-Allow-Origin', '*'); |
|
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept'); |
|
next(); |
|
}); |
|
|
|
app.use('/', express.static('dist')) |
|
app.use('/psboard', express.static('dist/shit/psboard.html')) |
|
|
|
app.get('/hello', (req, res) => { |
|
res.send('Hello World!') |
|
}) |
|
|
|
app.get('/api/data/psboard', (req, res) => { |
|
request('http://localhost:3000/psboard', (error, response, html) => { |
|
if (!error && response.statusCode == 200) { |
|
const $ = cheerio.load(html); |
|
let psboard = []; |
|
|
|
$('.F0XO1GC-p-w').children().each((i, elem) => { |
|
psboard[i] = { |
|
subject: $(elem).find('.F0XO1GC-p-Q').text(), |
|
author: $(elem).find('.F0XO1GC-rb-b').text(), |
|
last_update: $(elem).find('.F0XO1GC-rb-g').children().attr('title'), |
|
number_of_posts: $(elem).find('.F0XO1GC-rb-r').eq(0).text(), |
|
number_of_views: $(elem).find('.F0XO1GC-rb-r').eq(1).text(), |
|
user_pic: $(elem).find('.gwt-Image').attr('src') |
|
} |
|
}); |
|
|
|
console.log('sending psboard'); |
|
res.setHeader('Content-Type', 'application/json'); |
|
res.send(psboard); |
|
} |
|
}) |
|
}) |
|
|
|
app.get('/api/data/classes', (req, res) => { |
|
request('https://my.protospace.ca/school', (error, response, html) => { |
|
if (!error && response.statusCode == 200) { |
|
const $ = cheerio.load(html); |
|
let classes = []; |
|
|
|
$('table.grid tbody tr').each((i, elem) => { |
|
classes[i] = { |
|
subject: $(elem).children().eq(0).text(), |
|
date: $(elem).children().eq(2).text(), |
|
available: $(elem).children().eq(6).text() |
|
} |
|
}); |
|
|
|
res.setHeader('Content-Type', 'application/json'); |
|
res.send(classes); |
|
} |
|
}); |
|
}) |
|
|
|
|
|
app.listen(3000, function () { |
|
console.log('Example app listening on port 3000!') |
|
})
|
|
|