From b79b6cdfe059dcbe9172ef2006d952835552ff0c Mon Sep 17 00:00:00 2001 From: baz Date: Thu, 30 Nov 2023 23:37:39 +0000 Subject: [PATCH] Move igdb api functions to separate file --- commands/100-games/beatGame.js | 77 +--------------------- commands/100-games/searchGames.js | 49 +------------- igdbHelperFunctions.js | 104 ++++++++++++++++++++++++++++++ 3 files changed, 107 insertions(+), 123 deletions(-) create mode 100644 igdbHelperFunctions.js diff --git a/commands/100-games/beatGame.js b/commands/100-games/beatGame.js index 33753f3..89ce87e 100644 --- a/commands/100-games/beatGame.js +++ b/commands/100-games/beatGame.js @@ -1,4 +1,5 @@ const { SlashCommandBuilder, EmbedBuilder } = require('discord.js'); +const { getCoverURL, getGameJson } = require('../../igdbHelperFunctions.js'); module.exports = { data: new SlashCommandBuilder() @@ -43,78 +44,4 @@ module.exports = { return interaction.reply({ embeds: [embed] }); }, -}; - -async function getGameJson(body) { - let res; - - await fetch( - 'https://api.igdb.com/v4/games', - { method: 'POST', - headers: { - 'Accept': 'application/json', - 'Client-ID': `${process.env.igdbClientId}`, - 'Authorization': `Bearer ${process.env.igdbAccessToken}`, - }, - body: body, - }) - .then(response => response.json()) - .then(response => { - res = response; - }) - .catch(err => { - console.error(err); - }); - - return res; -} - -async function getPlatformID(platform) { - - await fetch( - 'https://api.igdb.com/v4/platforms', - { method: 'POST', - headers: { - 'Accept': 'application/json', - 'Client-ID': `${process.env.igdbClientId}`, - 'Authorization': `Bearer ${process.env.igdbAccessToken}`, - }, - body: `where name = "${platform}", alternative_name = "${platform}"; fields id;`, - }) - .then(response => response.json()) - .then(response => { - return response; - }) - .catch(err => { - console.error(err); - }); -} - -async function getCoverURL(id) { - let url = 'https://upload.wikimedia.org/wikipedia/commons/d/d1/Image_not_available.png'; - - await fetch( - 'https://api.igdb.com/v4/covers', - { method: 'POST', - headers: { - 'Accept': 'application/json', - 'Client-ID': `${process.env.igdbClientId}`, - 'Authorization': `Bearer ${process.env.igdbAccessToken}`, - }, - body: `where id = ${id}; fields url;`, - }) - .then(response => response.json()) - .then(response => { - if (response[0]) { - url = 'https:'.concat(response[0].url); - } - }) - .then(response => { - url = url.replace('t_thumb', 't_1080p_2x'); - }) - .catch(err => { - console.error(err); - }); - - return url; -} \ No newline at end of file +}; \ No newline at end of file diff --git a/commands/100-games/searchGames.js b/commands/100-games/searchGames.js index 5b4e4e0..5bb09f6 100644 --- a/commands/100-games/searchGames.js +++ b/commands/100-games/searchGames.js @@ -1,4 +1,5 @@ const { SlashCommandBuilder, EmbedBuilder } = require('discord.js'); +const { getGameJson } = require('../../igdbHelperFunctions.js'); module.exports = { data: new SlashCommandBuilder() @@ -54,52 +55,4 @@ async function searchGamesWithoutMinimumReview(gamename) { const games = await getGameJson(body); return games; -} - -async function getGameJson(body) { - let res; - - await fetch( - 'https://api.igdb.com/v4/games', - { method: 'POST', - headers: { - 'Accept': 'application/json', - 'Client-ID': `${process.env.igdbClientId}`, - 'Authorization': `Bearer ${process.env.igdbAccessToken}`, - }, - body: body, - }) - .then(response => response.json()) - .then(response => { - res = response; - }) - .catch(err => { - console.error(err); - }); - - return res; -} - -async function getReleaseDates(id) { - let date; - - await fetch( - 'https://api.igdb.com/v4/release_dates', - { method: 'POST', - headers: { - 'Accept': 'application/json', - 'Client-ID': `${process.env.igdbClientId}`, - 'Authorization': `Bearer ${process.env.igdbAccessToken}`, - }, - body: `where id = ${id}; fields category,checksum,created_at,date,game,human,m,platform,region,status,updated_at,y;`, - }) - .then(response => response.json()) - .then(response => { - date = response[0].human; - }) - .catch(err => { - console.error(err); - }); - - return date; } \ No newline at end of file diff --git a/igdbHelperFunctions.js b/igdbHelperFunctions.js new file mode 100644 index 0000000..1b6a1e2 --- /dev/null +++ b/igdbHelperFunctions.js @@ -0,0 +1,104 @@ +async function getCoverURL(id) { + let url = 'https://upload.wikimedia.org/wikipedia/commons/d/d1/Image_not_available.png'; + + await fetch( + 'https://api.igdb.com/v4/covers', + { method: 'POST', + headers: { + 'Accept': 'application/json', + 'Client-ID': `${process.env.igdbClientId}`, + 'Authorization': `Bearer ${process.env.igdbAccessToken}`, + }, + body: `where id = ${id}; fields url;`, + }) + .then(response => response.json()) + .then(response => { + if (response[0]) { + url = 'https:'.concat(response[0].url); + } + }) + .then(response => { + url = url.replace('t_thumb', 't_1080p_2x'); + }) + .catch(err => { + console.error(err); + }); + + return url; +} + +async function getPlatformID(platform) { + + await fetch( + 'https://api.igdb.com/v4/platforms', + { method: 'POST', + headers: { + 'Accept': 'application/json', + 'Client-ID': `${process.env.igdbClientId}`, + 'Authorization': `Bearer ${process.env.igdbAccessToken}`, + }, + body: `where name = "${platform}", alternative_name = "${platform}"; fields id;`, + }) + .then(response => response.json()) + .then(response => { + return response; + }) + .catch(err => { + console.error(err); + }); +} + +async function getGameJson(body) { + let res; + + await fetch( + 'https://api.igdb.com/v4/games', + { method: 'POST', + headers: { + 'Accept': 'application/json', + 'Client-ID': `${process.env.igdbClientId}`, + 'Authorization': `Bearer ${process.env.igdbAccessToken}`, + }, + body: body, + }) + .then(response => response.json()) + .then(response => { + res = response; + }) + .catch(err => { + console.error(err); + }); + + return res; +} + +async function getReleaseDates(id) { + let date; + + await fetch( + 'https://api.igdb.com/v4/release_dates', + { method: 'POST', + headers: { + 'Accept': 'application/json', + 'Client-ID': `${process.env.igdbClientId}`, + 'Authorization': `Bearer ${process.env.igdbAccessToken}`, + }, + body: `where id = ${id}; fields category,checksum,created_at,date,game,human,m,platform,region,status,updated_at,y;`, + }) + .then(response => response.json()) + .then(response => { + date = response[0].human; + }) + .catch(err => { + console.error(err); + }); + + return date; +} + +module.exports = { + getCoverURL, + getPlatformID, + getGameJson, + getReleaseDates, +}; \ No newline at end of file