Attempt at Twitter stream

This commit is contained in:
Rodrigo Pedroso 2019-06-21 12:21:23 -04:00
commit d545fbe636
3 changed files with 35 additions and 22 deletions

View file

@ -1,5 +1,7 @@
{ {
"consumer_key": "YA81ymunCwWtR70RAbAoB0cI9", "consumer_key": "YA81ymunCwWtR70RAbAoB0cI9",
"consumer_secret": "UHXVsekoKHfxXKF8F2XTwU1tRnBehEXdGdiagG5vmOrYwQ4XQ0", "consumer_secret": "UHXVsekoKHfxXKF8F2XTwU1tRnBehEXdGdiagG5vmOrYwQ4XQ0",
"bearer_token": "AAAAAAAAAAAAAAAAAAAAAPGt%2FAAAAAAAjClTrCrCaoDcYm7qA8JO1nZRyVw%3DFiCU52eslsY38dl0Dsx8puUpXbtmck66niH16ewBWlUZ1hPzkL" "bearer_token": "AAAAAAAAAAAAAAAAAAAAAPGt%2FAAAAAAAjClTrCrCaoDcYm7qA8JO1nZRyVw%3DFiCU52eslsY38dl0Dsx8puUpXbtmck66niH16ewBWlUZ1hPzkL",
"access_token_key": "3075441796-r4uYkCYTx8gyGL6OLkkMMCakibunl447QbDKu9n",
"access_token_secret": "JW8RG7yUlWbNpZuqFHQzm0v5nWkQeN8ihtf824f0cLnzV"
} }

View file

@ -12,6 +12,13 @@ let client = new Twitter({
bearer_token: config.bearer_token bearer_token: config.bearer_token
}) })
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
})
// MARK: Routes // MARK: Routes
// MARK: - /twitter // MARK: - /twitter
router.get('/twitter', (req, res) => { router.get('/twitter', (req, res) => {
@ -34,20 +41,21 @@ router.get('/twitter', (req, res) => {
// MARK: - /stream // MARK: - /stream
router.get('/stream', (req, res) => { router.get('/stream', (req, res) => {
client.stream('search/tweets', {q: req.query.hashtag, count: 5}, function(error, tweets, response) { streamClient.stream('statuses/filter', {track: req.query.hashtag}, function(stream) {
if (error === null) { stream.on('data', function(tweet) {
res.status(200).json({ res.status(200).json({
success: true, success: true,
message: tweets message: tweets
}) })
} })
else {
stream.on('error', function(error) {
console.log('Error ' + JSON.stringify(error, 0, 2)) console.log('Error ' + JSON.stringify(error, 0, 2))
res.status(400).json({ res.status(400).json({
success: false, success: false,
message: error message: error
}) })
} })
}) })
}) })

View file

@ -8,6 +8,7 @@ export default function* watcherSaga() {
]) ])
} }
// Data worker
function* worker() { function* worker() {
yield takeEvery("DATA_REQUESTED", workerSaga) yield takeEvery("DATA_REQUESTED", workerSaga)
} }
@ -21,8 +22,15 @@ function* workerSaga() {
} }
} }
function getData() {
return fetch("https://jsonplaceholder.typicode.com/posts").then(response =>
response.json()
)
}
// Hillary worker
function* workerHillary() { function* workerHillary() {
yield takeEvery("DATA_TRUMP_REQUESTED", workerTrumpSaga) yield takeEvery("DATA_HILLARY_REQUESTED", workerHillarySaga)
} }
function* workerHillarySaga() { function* workerHillarySaga() {
@ -34,8 +42,15 @@ function* workerHillarySaga() {
} }
} }
function getHillaryData() {
return fetch("http://localhost:3030/api/twitter?hashtag=Hillary%20Clinton").then(response =>
response.json()
)
}
// Trump worker
function* workerTrump() { function* workerTrump() {
yield takeEvery("DATA_HILLARY_REQUESTED", workerHillarySaga) yield takeEvery("DATA_TRUMP_REQUESTED", workerTrumpSaga)
} }
function* workerTrumpSaga() { function* workerTrumpSaga() {
@ -47,20 +62,8 @@ function* workerTrumpSaga() {
} }
} }
function getData() { function getTrumpData() {
return fetch("https://jsonplaceholder.typicode.com/posts").then(response => return fetch("http://localhost:3030/api/twitter?hashtag=Donald%20Trump").then(response =>
response.json() response.json()
) )
} }
function getHillaryData() {
return fetch("http://localhost:3030/api/twitter?hashtag=Hillary%20Clinton").then(res1 =>
res1.json()
)
}
function getTrumpData() {
return fetch("http://localhost:3030/api/twitter?hashtag=Donald%20Trump").then(res1 =>
res1.json()
)
}