From 425425bc85580ca4ea8878e2431dec0f5549f5c7 Mon Sep 17 00:00:00 2001 From: Austin Paquette Date: Sat, 1 Feb 2020 17:24:06 -0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20add=20bestiary=20fun?= =?UTF-8?q?ctions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/configs.ts | 6 +- src/index.ts | 8 +++ src/runescape/bestiary.ts | 136 ++++++++++++++++++++++++++++++++++---- 3 files changed, 135 insertions(+), 15 deletions(-) diff --git a/src/configs.ts b/src/configs.ts index 5ac9222..8c7b996 100644 --- a/src/configs.ts +++ b/src/configs.ts @@ -8,11 +8,11 @@ export const runescape = { beastLetter: `http://services.runescape.com/m=itemdb_rs/bestiary/bestiaryNames.json?letter=`, areas: `http://services.runescape.com/m=itemdb_rs/bestiary/areaNames.json`, beastArea: `http://services.runescape.com/m=itemdb_rs/bestiary/areaBeasts.json?identifier=`, - slayerCats: `http://services.runescape.com/m=itemdb_rs/bestiary/bestiary/slayerCatNames.json`, beastSlayer: `http://services.runescape.com/m=itemdb_rs/bestiary/slayerBeasts.json?identifier=`, - weaknesses: `http://services.runescape.com/m=itemdb_rs/bestiary/bestiary/weaknessNames.json`, - beastWeekend: `http://services.runescape.com/m=itemdb_rs/bestiary/weaknessBeasts.json?identifier=`, + beastWeakness: `http://services.runescape.com/m=itemdb_rs/bestiary/weaknessBeasts.json?identifier=`, beastLevel: `http://services.runescape.com/m=itemdb_rs/bestiary/levelGroup.json?identifier=`, + slayerCategories: `http://services.runescape.com/m=itemdb_rs/bestiary/bestiary/slayerCatNames.json`, + weaknesses: `http://services.runescape.com/m=itemdb_rs/bestiary/bestiary/weaknessNames.json`, }, }, grandexchange: { diff --git a/src/index.ts b/src/index.ts index bef5dbd..a68f546 100644 --- a/src/index.ts +++ b/src/index.ts @@ -15,3 +15,11 @@ export default { runemetrics, oldschool, } + +const testFunction = async () => { + const test = await bestiary.beastSearch("200-300", "levelRange") + + console.log(test) +} + +testFunction() diff --git a/src/runescape/bestiary.ts b/src/runescape/bestiary.ts index 754e595..ba8ec35 100644 --- a/src/runescape/bestiary.ts +++ b/src/runescape/bestiary.ts @@ -1,13 +1,125 @@ +import got from "got" +import { runescape as RSConfigs } from "../configs" + +type SlayerBeastSearchMethods = + | "terms" + | "firstLetter" + | "area" + | "slayerCategory" + | "weakness" + | "levelRange" + // Bestiary -export const areas = async () => {} -export const beast = async () => {} -export const beastSearch = async () => { - // By Terms - // By First Letter - // By Area - // By Slayer Category - // By Weakness - // By Level Range -} -export const slayerCategories = async () => {} -export const weaknesses = async () => {} +export const areas = async () => { + try { + return await got(RSConfigs.bestiary.endpoints.areas).json() + } catch (error) { + console.log(error.response.body) + //=> 'Internal server error ...' + } +} +export const beast = async (beastid: number) => { + try { + return await got(RSConfigs.bestiary.endpoints.beast, { + searchParams: { + beastid, + }, + }).json() + } catch (error) { + console.log(error.response.body) + //=> 'Internal server error ...' + } +} +export const beastSearch = async ( + search: string, + method: SlayerBeastSearchMethods = "terms" +) => { + try { + // By Terms + if (method === "terms") { + // TODO: Space separators converted to + (cow sheep = cow+sheep) + const response = await got(RSConfigs.bestiary.endpoints.beastTerm, { + searchParams: { + term: search, + }, + }).json() + + return response + } + + // By First Letter + if (method === "firstLetter") { + const response = await got(RSConfigs.bestiary.endpoints.beastLetter, { + searchParams: { + letter: search, + }, + }).json() + + return response + } + + // By Area + if (method === "area") { + const response = await got(RSConfigs.bestiary.endpoints.beastArea, { + searchParams: { + identifier: search, + }, + }).json() + + return response + } + + // By Slayer Category + if (method === "slayerCategory") { + const response = await got(RSConfigs.bestiary.endpoints.beastSlayer, { + searchParams: { + identifier: search, + }, + }).json() + + return response + } + + // By Weakness + if (method === "weakness") { + const response = await got(RSConfigs.bestiary.endpoints.beastWeakness, { + searchParams: { + identifier: search, + }, + }).json() + + return response + } + + // By Level Range + if (method === "levelRange") { + // TODO: enable a level range (200-300) somehow gracefully + const response = await got(RSConfigs.bestiary.endpoints.beastLevel, { + searchParams: { + identifier: search, + }, + }).json() + + return response + } + } catch (error) { + console.log(error.response.body) + //=> 'Internal server error ...' + } +} +export const slayerCategories = async () => { + try { + return await got(RSConfigs.bestiary.endpoints.slayerCategories).json() + } catch (error) { + console.log(error.response.body) + //=> 'Internal server error ...' + } +} +export const weaknesses = async () => { + try { + return await got(RSConfigs.bestiary.endpoints.weaknesses).json() + } catch (error) { + console.log(error.response.body) + //=> 'Internal server error ...' + } +} From 1bc1b01ec919df497d0c20a4816a8bf98fd579ac Mon Sep 17 00:00:00 2001 From: Austin Paquette Date: Sat, 1 Feb 2020 17:29:47 -0800 Subject: [PATCH 2/2] =?UTF-8?q?chore:=20=F0=9F=A4=96=20remove=20test=20cod?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/index.ts | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/index.ts b/src/index.ts index a68f546..bef5dbd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -15,11 +15,3 @@ export default { runemetrics, oldschool, } - -const testFunction = async () => { - const test = await bestiary.beastSearch("200-300", "levelRange") - - console.log(test) -} - -testFunction()