diff --git a/README.md b/README.md index 9a094a9..56ff3af 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,9 @@ Unofficial Node JS module for scraping F95Zone platform # Guidelines for errors -+ If you can, return a meaningful value -+ Return `null` only if the function should return a complex object (including strings) -+ Return an empty array if the function should return an array -+ Return `false`, `-1` when the function should retrn `boolean` or `number` -+ Throw an exception only if it is an error or if a wrong value could mess up the functioning of the library + +- If you can, return a meaningful value +- Return `null` only if the function should return a complex object (including strings) +- Return an empty array if the function should return an array +- Return `false`, `-1` when the function should retrn `boolean` or `number` +- Throw an exception only if it is an error or if a wrong value could mess up the functioning of the library diff --git a/app/index.js b/app/index.js index 9c1add9..403781d 100644 --- a/app/index.js +++ b/app/index.js @@ -114,7 +114,9 @@ module.exports.login = async function (username, password) { } // Else, log in throught browser - shared.logger.info("No saved sessions or expired session, login on the platform"); + shared.logger.info( + "No saved sessions or expired session, login on the platform" + ); if (_browser === null && !shared.isolation) _browser = await prepareBrowser(); const browser = shared.isolation ? await prepareBrowser() : _browser; @@ -267,7 +269,8 @@ module.exports.getGameDataFromURL = async function (url) { // Check URL const exists = await urlHelper.urlExists(url); if (!exists) throw new URIError(url + " is not a valid URL"); - if (!urlHelper.isF95URL(url)) throw new Error(url + " is not a valid F95Zone URL"); + if (!urlHelper.isF95URL(url)) + throw new Error(url + " is not a valid F95Zone URL"); // Gets the search results of the game being searched for if (_browser === null && !shared.isolation) _browser = await prepareBrowser(); @@ -393,7 +396,9 @@ function isCookieExpired(cookie) { const expirationDate = new Date(expirationUnixTimestamp * 1000); if (expirationDate < Date.now()) { - shared.logger.warn("Cookie " + cookie.name + " expired, you need to re-authenticate"); + shared.logger.warn( + "Cookie " + cookie.name + " expired, you need to re-authenticate" + ); expiredCookies = true; } } @@ -498,18 +503,17 @@ async function loginF95(browser, username, password) { let message = ""; // Check if the user is logged in - let success = await page.evaluate( + const success = await page.evaluate( /* istanbul ignore next */ (selector) => document.querySelector(selector) !== null, selectorK.AVATAR_INFO ); - let errorMessageExists = await page.evaluate( + const errorMessageExists = await page.evaluate( /* istanbul ignore next */ - (selector) => - document.querySelector(selector) !== null, + (selector) => document.querySelector(selector) !== null, selectorK.LOGIN_MESSAGE_ERROR - ) + ); // Save cookies to avoid re-auth if (success) { @@ -525,7 +529,10 @@ async function loginF95(browser, username, password) { if (errorMessage === "Incorrect password. Please try again.") { message = "Incorrect password"; - } else if (errorMessage ==='The requested user \'' + username + '\' could not be found.') { + } else if ( + errorMessage === + "The requested user '" + username + "' could not be found." + ) { // The escaped quotes are important! message = "Incorrect username"; } else message = errorMessage; diff --git a/app/scripts/game-scraper.js b/app/scripts/game-scraper.js index 133cf7a..1d11313 100644 --- a/app/scripts/game-scraper.js +++ b/app/scripts/game-scraper.js @@ -26,7 +26,8 @@ module.exports.getGameInfo = async function (browser, url) { // Verify the correctness of the URL const exists = await urlHelper.urlExists(url); if (!exists) throw new URIError(url + " is not a valid URL"); - if (!urlHelper.isF95URL(url)) throw new Error(url + " is not a valid F95Zone URL"); + if (!urlHelper.isF95URL(url)) + throw new Error(url + " is not a valid F95Zone URL"); const page = await preparePage(browser); // Set new isolated page await page.setCookie(...shared.cookies); // Set cookies to avoid login @@ -202,7 +203,7 @@ async function getGamePreviewSource(page) { (selector) => { // Get the firs image available const img = document.querySelector(selector); - + if (img) return img.getAttribute("src"); else return null; }, @@ -277,7 +278,7 @@ async function parsePrefixes(page, info) { // Clean the prefix const prefix = value.toUpperCase().replace("[", "").replace("]", "").trim(); - + // Getting infos... if (shared.statuses.includes(prefix)) info.status = capitalize(prefix); else if (shared.engines.includes(prefix)) info.engine = capitalize(prefix); @@ -308,7 +309,8 @@ async function getLastChangelog(page) { let parsedText = HTMLParser.parse(changelogHTML).structuredText; // Clean the text - if (parsedText.startsWith("Spoiler")) parsedText = parsedText.replace("Spoiler", ""); + if (parsedText.startsWith("Spoiler")) + parsedText = parsedText.replace("Spoiler", ""); if (parsedText.startsWith(":")) parsedText = parsedText.replace(":", ""); return parsedText.trim(); } @@ -449,7 +451,7 @@ function extractGameHostingData(platform, text) { /** * Capitalize a string - * @param {String} string + * @param {String} string */ function capitalize(string) { return string.charAt(0).toUpperCase() + string.slice(1); diff --git a/app/scripts/game-searcher.js b/app/scripts/game-searcher.js index a6c7339..4cd6ea6 100644 --- a/app/scripts/game-searcher.js +++ b/app/scripts/game-searcher.js @@ -124,10 +124,7 @@ async function getThreadURL(page, handle) { if (isF95URL(relativeURLThread)) return relativeURLThread; // ... else compose the URL and return - const urlThread = new URL( - relativeURLThread, - urlK.F95_BASE_URL - ).toString(); + const urlThread = new URL(relativeURLThread, urlK.F95_BASE_URL).toString(); return urlThread; } //#endregion Private methods diff --git a/app/scripts/shared.js b/app/scripts/shared.js index 156d02c..ead66fc 100644 --- a/app/scripts/shared.js +++ b/app/scripts/shared.js @@ -51,7 +51,7 @@ class Shared { * @type Boolean */ static #_isolation = false; - /** + /** * Logger object used to write to both file and console. * @type log4js.Logger */ diff --git a/app/scripts/url-helper.js b/app/scripts/url-helper.js index 5669ac3..221a56c 100644 --- a/app/scripts/url-helper.js +++ b/app/scripts/url-helper.js @@ -52,7 +52,7 @@ module.exports.urlExists = async function (url, checkRedirect) { if (!valid) return false; if (checkRedirect) { - let redirectUrl = await exports.getUrlRedirect(url); + const redirectUrl = await exports.getUrlRedirect(url); if (redirectUrl === url) valid = true; else valid = false; } diff --git a/test/index-test.js b/test/index-test.js index b8ce53e..31bdecb 100644 --- a/test/index-test.js +++ b/test/index-test.js @@ -171,9 +171,9 @@ describe("Search game data", function () { const result = await F95API.getGameData("Kingdom of Deception", false); expect(result, "Without being logged should return null").to.be.null; }); - it("Test game serialization", function() { - let json = JSON.stringify(testGame); - let parsedGameInfo = JSON.parse(json); + it("Test game serialization", function () { + const json = JSON.stringify(testGame); + const parsedGameInfo = JSON.parse(json); expect(parsedGameInfo).to.be.equal(testGame); }); }); @@ -257,15 +257,22 @@ describe("Test url-helper", function () { expect(exists).to.be.false; // Now check for more specific URLs (with redirect)... - exists = urlHelper.urlExists("https://f95zone.to/threads/perverted-education-v0-9601-april-ryan.1854/"); + exists = urlHelper.urlExists( + "https://f95zone.to/threads/perverted-education-v0-9601-april-ryan.1854/" + ); expect(exists).to.be.true; - exists = urlHelper.urlExists("https://f95zone.to/threads/perverted-education-v0-9601-april-ryan.1854/", true); + exists = urlHelper.urlExists( + "https://f95zone.to/threads/perverted-education-v0-9601-april-ryan.1854/", + true + ); expect(exists).to.be.false; }); it("Check if URL belong to the platform", async function () { - let belong = urlHelper.isF95URL("https://f95zone.to/threads/perverted-education-v0-9601-april-ryan.1854/"); + let belong = urlHelper.isF95URL( + "https://f95zone.to/threads/perverted-education-v0-9601-april-ryan.1854/" + ); expect(belong).to.be.true; belong = urlHelper.isF95URL("https://www.google/");