'use strict' // eslint-disable-line const express = require('express') const request = require('request') const webtask = require('webtask-tools') const app = express() const makeRequest = (options, cb) => { request(options, (error, response, body) => { const json = JSON.parse(body) const videos = json.items if (error) { return cb(error) } if (json.error) { return cb(json.error) } return cb(videos) }) } app.get('/', (req, res) => { res.send( 'Please use /channel or /playlist endpoints, appended with the channel or playlist ID as parameter.' ) }) app.get('/channel/:channelId', (req, res) => { const options = { url: `https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=${ req.params.channelId }&maxResults=10&order=date&type=video&key=${ req.webtaskContext.secrets.YOUTUBE_API_KEY }`, headers: { referer: req.headers.host } } const parsedPosts = [] let holder = {} makeRequest(options, videos => { for (let i = 0; i < videos.length; i++) { holder.id = videos[i].id.videoId holder.title = videos[i].snippet.title holder.description = videos[i].snippet.description holder.imageUrl = videos[i].snippet.thumbnails.medium.url holder.videoUrl = `https://www.youtube.com/watch?v=${ videos[i].id.videoId }` parsedPosts.push(holder) holder = {} } res.send(parsedPosts) }) }) app.get('/channel/:channelId/raw', (req, res) => { const options = { url: `https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=${ req.params.channelId }&maxResults=10&order=date&type=video&key=${ req.webtaskContext.secrets.YOUTUBE_API_KEY }`, headers: { referer: req.headers.host } } makeRequest(options, videos => { res.send(videos) }) }) app.get('/playlist/:playlistId', (req, res) => { const options = { url: `https://www.googleapis.com/youtube/v3/playlistItems?part=snippet%2CcontentDetails&maxResults=10&playlistId=${ req.params.playlistId }&key=${req.webtaskContext.secrets.YOUTUBE_API_KEY}`, headers: { referer: req.headers.host } } const parsedPosts = [] let holder = {} makeRequest(options, videos => { for (let i = 0; i < videos.length; i++) { holder.id = videos[i].snippet.resourceId.videoId holder.title = videos[i].snippet.title holder.description = videos[i].snippet.description holder.imageUrl = videos[i].snippet.thumbnails.medium.url holder.videoUrl = `https://www.youtube.com/watch?v=${ videos[i].snippet.resourceId.videoId }` parsedPosts.push(holder) holder = {} } res.send(parsedPosts) }) }) app.get('/playlist/:playlistId/raw', (req, res) => { const options = { url: `https://www.googleapis.com/youtube/v3/playlistItems?part=snippet%2CcontentDetails&maxResults=10&playlistId=${ req.params.playlistId }&key=${req.webtaskContext.secrets.YOUTUBE_API_KEY}`, headers: { referer: req.headers.host } } makeRequest(options, videos => { res.send(videos) }) }) module.exports = webtask.fromExpress(app)