Last active
July 25, 2018 09:30
-
-
Save timgrossmann/15a6b1bda51ee8ebf2ef948221762c93 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const NewsAPI = require('newsapi') | |
const moment = require('moment') | |
const AWS = require('aws-sdk') | |
exports.handler = async (event) => { | |
// Right now we only need to query the API every hour because there | |
// are very few articles that contain the word veganism | |
const toTS = moment().format('YYYY-MM-DDTHH:mm:ss') | |
const fromTS = moment(toTS).subtract(1, 'hour').format('YYYY-MM-DDTHH:mm:ss') | |
const newsapi = new NewsAPI(process.env.API_KEY) | |
const s3 = new AWS.S3() | |
const myBucket = process.env.S3_BUCKET | |
// Get the news from the given timeframe | |
return new Promise((resolve, reject) => { | |
newsapi.v2.everything({ | |
q: '+vegan', | |
pageSize: 100, | |
from: fromTS, | |
to: toTS | |
}) | |
.then(response => { | |
console.log(`Working with a total of ${response.articles.length} articles.`) | |
// Write all the documents to the S3-bucket | |
const promisedArticles = response.articles.map(article => { | |
const myKey = `sov_${article.publishedAt}.json` | |
const params = {Bucket: myBucket, Key: myKey, Body: JSON.stringify(article, null, 2)} | |
// Saving the record for given key in S3 | |
return new Promise((res, rej) => { | |
s3.putObject(params, (err, data) => { | |
if (err) { | |
console.error(`Problem with persisting article to S3... ${err}`) | |
rej(err) | |
return | |
} | |
console.log(`Successfully uploaded data to ${myBucket}/${myKey}`) | |
res(`Successfully uploaded data to ${myBucket}/${myKey}`) | |
}) | |
}) | |
}) | |
}) | |
.catch(err => { | |
console.error(`Encountered a problem... ${err}`) | |
reject(err) | |
}) | |
}) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment