From d5932ce67cff8cf1aac57cf7ba1ab94433b75522 Mon Sep 17 00:00:00 2001 From: Niko Storni Date: Mon, 23 Sep 2019 19:27:04 +0200 Subject: [PATCH] port resolve call to lbrytv --- app/helpers/lbrytv-sdk.js | 62 ++++++++++++++++ app/index.js | 2 +- app/sockets.js | 147 +++++++++++++++++++------------------- package.json | 3 +- 4 files changed, 139 insertions(+), 75 deletions(-) create mode 100644 app/helpers/lbrytv-sdk.js diff --git a/app/helpers/lbrytv-sdk.js b/app/helpers/lbrytv-sdk.js new file mode 100644 index 0000000..d7c0ab8 --- /dev/null +++ b/app/helpers/lbrytv-sdk.js @@ -0,0 +1,62 @@ +"use strict"; +const request = require("request"); + +import messageSlack from "./slack"; + + +let addSupport = function() { + return; +}; + +let publish = function() { + return; +}; + +let resolve = function(urls) { + return new Promise(function(resolve, reject) { + let options = { + method: "POST", + url: "https://api.lbry.tv/api/proxy", + headers: + { + "Content-Type": "application/json" + }, + body: { + method: "resolve", + params: { urls: urls } + }, + json: true + }; + + request(options, function(error, response, daemonResponse) { + if (error) { + messageSlack({ + message: "```" + error + "```", + title: "DAEMON ERROR: resolve" + }); + return reject("DAEMON ERROR: resolve"); + } + + if (Object.prototype.hasOwnProperty.call(daemonResponse,"error")) { + messageSlack({ + message: "```" + daemonResponse.error + "```", + title: "DAEMON ERROR: resolve" + }); + return reject("DAEMON ERROR: resolve"); + } else + return resolve(daemonResponse.result); + + }); + }); +}; + +let getTrending = function() { + return; +}; + +export default { + addSupport, + publish, + resolve, + getTrending +}; diff --git a/app/index.js b/app/index.js index ff68d0f..ace4f9b 100755 --- a/app/index.js +++ b/app/index.js @@ -4,7 +4,7 @@ // P A C K A G E S -import color from "colorette"; +import * as color from "colorette"; import compress from "fastify-compress"; import cors from "cors"; import fastify from "fastify"; diff --git a/app/sockets.js b/app/sockets.js index b6f4d81..1b4cb54 100644 --- a/app/sockets.js +++ b/app/sockets.js @@ -11,6 +11,7 @@ import html from "choo/html"; import apiPage from "~view/api"; import fetchMetadata from "~helper/fetch-metadata"; +import lbrytvAPI from "~helper/lbrytv-sdk"; import { generateGitHubFeed } from "~helper/github"; import messageSlack from "~helper/slack"; import { URL } from "url"; @@ -117,31 +118,32 @@ export default async(socket, action) => { function generateContent(exampleNumber, displayTrendingContent) { if (exampleNumber === 1) { - return getTrendingContent().then(response => { - if (!response || !response.success || response.success !== true || !response.data) - return ""; + return getTrendingContent() + .then(response => { + if (!response || !response.success || response.success !== true || !response.data) + return ""; - const rawContentCollection = []; - const renderedContentCollection = []; - const trendingContentData = response.data; + const rawContentCollection = []; + const renderedContentCollection = []; + const trendingContentData = response.data; - for (const data of trendingContentData) { - rawContentCollection.push(fetchMetadata({ - claim: data.url, - example: exampleNumber, - method: "resolve" - })); - } + for (const data of trendingContentData) { + rawContentCollection.push(fetchMetadata({ + claim: data.url, + example: exampleNumber, + method: "resolve" + })); + } - Promise.all(rawContentCollection) - .then(collection => { - for (const part of collection) { - if (part && part.value.tags && part.value.tags.includes("mature")) - continue; - if (part === undefined) - continue; - try { - renderedContentCollection.push(` + Promise.all(rawContentCollection) + .then(collection => { + for (const part of collection) { + if (part && part.value.tags && part.value.tags.includes("mature")) + continue; + if (part === undefined) + continue; + try { + renderedContentCollection.push(`
`); - } catch(err) { - console.error(err); - return; // TODO: Return nice error message + } catch(err) { + console.error(err); + return; // TODO: Return nice error message + } } - } - renderedContentCollection.push(` + renderedContentCollection.push(` `); - displayTrendingContent(renderedContentCollection.join("")); - }) - .catch(error => { - console.error(error); - return null; - }); - }); + displayTrendingContent(renderedContentCollection.join("")); + }) + .catch(error => { + console.error(error); + return null; + }); + }); } if (exampleNumber === 3) { @@ -193,50 +195,49 @@ function generateContent(exampleNumber, displayTrendingContent) { "minecraft-in-real-life-iron-man#758dd6497cdfc401ae1f25984738d024d47b50af", "ethan-shows-kyle-warframe-skyvault#8a7401b88d5ed0376d98f16808194d4dcb05b284" ]; - - const rawContentCollection = []; const renderedContentCollection = []; - for (const url of approvedUrls) - rawContentCollection.push(fetchMetadata({ claim: url, method: "resolve", example: 1 })); + lbrytvAPI.resolve(approvedUrls) + .then(resolveResponse => { + if (resolveResponse != null) { + let responses = Object.values(resolveResponse); - return Promise.all(rawContentCollection).then(collection => { - for (const part of collection) { - if ( - part && - part.value && - part.value.thumbnail.url - ) { - renderedContentCollection.push(` -
-
-
+ for (let r in responses) { + let part = responses[r]; -
- ${part.value.title} -
- -
- ${part.signing_channel.name || "Anon"} -
-
- `); + if (part.value && part.value.thumbnail.url) { + renderedContentCollection.push(` +
+
+
+ +
+ ${part.value.title} +
+ +
+ ${part.signing_channel.name || "Anon"} +
+
+ `); + } + } } - } - - renderedContentCollection.push(` - - `); - - displayTrendingContent(renderedContentCollection.join("")); - }); + renderedContentCollection.push(` + + `); + displayTrendingContent(renderedContentCollection.join("")); + }) + .catch(error => { + console.error(error); + }); } } diff --git a/package.json b/package.json index f571c59..25d287e 100755 --- a/package.json +++ b/package.json @@ -44,7 +44,8 @@ "redis": "^2.8.0", "slack-node": "^0.1.8", "socket.io": "^2.2.0", - "stringify-object": "^3.3.0" + "stringify-object": "^3.3.0", + "request": "latest" }, "description": "Documentation for the LBRY protocol and associated projects", "devDependencies": {