diff options
Diffstat (limited to 'pages')
-rw-r--r-- | pages/api/youtube/player.js | 32 | ||||
-rw-r--r-- | pages/api/youtube/search.js | 26 | ||||
-rw-r--r-- | pages/index.js | 2 |
3 files changed, 59 insertions, 1 deletions
diff --git a/pages/api/youtube/player.js b/pages/api/youtube/player.js new file mode 100644 index 0000000..a6d3a7e --- /dev/null +++ b/pages/api/youtube/player.js @@ -0,0 +1,32 @@ +import withSession from 'hocs/withSession' +import ytdl from 'ytdl-core' + +const getId = url => { + const regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#&?]*).*/ + const match = url.match(regExp) + return (match && match[7].length === 11) ? match[7] : false +} + +export default withSession(async (req, res) => { + switch (req.method) { + case 'POST': + try { + const user = req.session.get('user') + const { url } = req.body + + if (!user || !user?.isVerified || !url) { + throw new Error('Something went wrong') + } + + const info = await ytdl.getInfo(getId(url)) + + res.status(200).json(info) + } catch (error) { + res.status(400).json([]) + } + break + default: + res.status(400).send() + break + } +}) diff --git a/pages/api/youtube/search.js b/pages/api/youtube/search.js new file mode 100644 index 0000000..b17d008 --- /dev/null +++ b/pages/api/youtube/search.js @@ -0,0 +1,26 @@ +import withSession from 'hocs/withSession' +import youtube from 'scrape-youtube' + +export default withSession(async (req, res) => { + switch (req.method) { + case 'POST': + try { + const user = req.session.get('user') + const { quote } = req.body + + if (!user || !user?.isVerified || !quote) { + throw new Error('Something went wrong') + } + + const video = await youtube.search(quote) + + res.status(200).json(video) + } catch (error) { + res.status(400).json([]) + } + break + default: + res.status(400).send() + break + } +}) diff --git a/pages/index.js b/pages/index.js index ac36c3b..af25f7b 100644 --- a/pages/index.js +++ b/pages/index.js @@ -70,7 +70,7 @@ const Home = () => { app={app} setApps={setApps} > - <AppComponent /> + <AppComponent {...app.props} /> </App> ) })} |