From d545fbe636c08798f3fb56f92aa7035268eaf23c Mon Sep 17 00:00:00 2001 From: Rodrigo Pedroso <> Date: Fri, 21 Jun 2019 12:21:23 -0400 Subject: [PATCH] Attempt at Twitter stream --- config/config.json | 4 +++- server/api.js | 18 +++++++++++++----- src/js/sagas/api-saga.js | 35 +++++++++++++++++++---------------- 3 files changed, 35 insertions(+), 22 deletions(-) diff --git a/config/config.json b/config/config.json index 1a313f2..a72f1d4 100644 --- a/config/config.json +++ b/config/config.json @@ -1,5 +1,7 @@ { "consumer_key": "YA81ymunCwWtR70RAbAoB0cI9", "consumer_secret": "UHXVsekoKHfxXKF8F2XTwU1tRnBehEXdGdiagG5vmOrYwQ4XQ0", - "bearer_token": "AAAAAAAAAAAAAAAAAAAAAPGt%2FAAAAAAAjClTrCrCaoDcYm7qA8JO1nZRyVw%3DFiCU52eslsY38dl0Dsx8puUpXbtmck66niH16ewBWlUZ1hPzkL" + "bearer_token": "AAAAAAAAAAAAAAAAAAAAAPGt%2FAAAAAAAjClTrCrCaoDcYm7qA8JO1nZRyVw%3DFiCU52eslsY38dl0Dsx8puUpXbtmck66niH16ewBWlUZ1hPzkL", + "access_token_key": "3075441796-r4uYkCYTx8gyGL6OLkkMMCakibunl447QbDKu9n", + "access_token_secret": "JW8RG7yUlWbNpZuqFHQzm0v5nWkQeN8ihtf824f0cLnzV" } diff --git a/server/api.js b/server/api.js index c1f55cb..c749688 100644 --- a/server/api.js +++ b/server/api.js @@ -12,6 +12,13 @@ let client = new Twitter({ 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: - /twitter router.get('/twitter', (req, res) => { @@ -34,20 +41,21 @@ router.get('/twitter', (req, res) => { // MARK: - /stream router.get('/stream', (req, res) => { - client.stream('search/tweets', {q: req.query.hashtag, count: 5}, function(error, tweets, response) { - if (error === null) { + streamClient.stream('statuses/filter', {track: req.query.hashtag}, function(stream) { + stream.on('data', function(tweet) { res.status(200).json({ success: true, message: tweets }) - } - else { + }) + + stream.on('error', function(error) { console.log('Error ' + JSON.stringify(error, 0, 2)) res.status(400).json({ success: false, message: error }) - } + }) }) }) diff --git a/src/js/sagas/api-saga.js b/src/js/sagas/api-saga.js index 3435b82..35de458 100644 --- a/src/js/sagas/api-saga.js +++ b/src/js/sagas/api-saga.js @@ -8,6 +8,7 @@ export default function* watcherSaga() { ]) } +// Data worker function* worker() { 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() { - yield takeEvery("DATA_TRUMP_REQUESTED", workerTrumpSaga) + yield takeEvery("DATA_HILLARY_REQUESTED", 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() { - yield takeEvery("DATA_HILLARY_REQUESTED", workerHillarySaga) + yield takeEvery("DATA_TRUMP_REQUESTED", workerTrumpSaga) } function* workerTrumpSaga() { @@ -47,20 +62,8 @@ function* workerTrumpSaga() { } } -function getData() { - return fetch("https://jsonplaceholder.typicode.com/posts").then(response => +function getTrumpData() { + return fetch("http://localhost:3030/api/twitter?hashtag=Donald%20Trump").then(response => 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() - ) -}