stream-saga/server/api.js

71 lines
1.5 KiB
JavaScript
Raw Normal View History

2019-06-21 00:06:42 -04:00
'use strict'
// MARK: Definitions
const express = require('express')
const router = express.Router()
const https = require('https')
const config = require('../config/config.json')
var Twitter = require('twitter')
let client = new Twitter({
consumer_key: config.consumer_key,
consumer_secret: config.consumer_secret,
bearer_token: config.bearer_token
})
2019-06-21 12:21:23 -04:00
let streamClient = new Twitter({
consumer_key: config.consumer_key,
consumer_secret: config.consumer_secret,
access_token_key: config.access_token_key,
access_token_secret: config.access_token_secret
})
2019-06-21 00:06:42 -04:00
// MARK: Routes
// MARK: - /twitter
router.get('/twitter', (req, res) => {
client.get('search/tweets', {q: req.query.hashtag, count: 5}, function(error, tweets, response) {
if (error === null) {
res.status(200).json({
success: true,
message: tweets
})
}
else {
console.log('Error ' + JSON.stringify(error, 0, 2))
res.status(400).json({
success: false,
message: error
})
}
})
})
// MARK: - /stream
router.get('/stream', (req, res) => {
2019-06-22 19:57:06 -04:00
res.writeHead(200, {
'Content-Type': 'text/plain',
'Transfer-Encoding': 'chunked'
})
2019-06-21 12:21:23 -04:00
streamClient.stream('statuses/filter', {track: req.query.hashtag}, function(stream) {
stream.on('data', function(tweet) {
2019-06-22 19:57:06 -04:00
// console.log(tweet.text)
res.write(JSON.stringify(tweet, 0, 2))
2019-06-21 12:21:23 -04:00
})
stream.on('error', function(error) {
2019-06-22 19:57:06 -04:00
console.log(error)
2019-06-21 12:21:23 -04:00
})
2019-06-21 00:06:42 -04:00
})
})
// MARK: - /
router.all('/', (req, res) => {
res.status(200).json({
success: true,
message: 'Welcome'
})
})
// MARK: Export
module.exports = router