Plugin review changes round 2

This commit is contained in:
mProjectsCode 2022-06-01 13:50:26 +02:00
parent 8b4a50647d
commit 889d51712e
9 changed files with 52 additions and 24 deletions

View file

@ -25,9 +25,13 @@ export class APIManager {
}
async queryDetailedInfo(item: MediaTypeModel): Promise<MediaTypeModel> {
return await this.queryDetailedInfoById(item.id, item.dataSource);
}
async queryDetailedInfoById(id: string, dataSource: string): Promise<MediaTypeModel> {
for (const api of this.apis) {
if (api.apiName === item.dataSource) {
return api.getById(item);
if (api.apiName === dataSource) {
return api.getById(id);
}
}
}

View file

@ -13,7 +13,7 @@ export abstract class APIModel {
*/
abstract searchByTitle(title: string): Promise<MediaTypeModel[]>;
abstract getById(item: MediaTypeModel): Promise<MediaTypeModel>;
abstract getById(id: string): Promise<MediaTypeModel>;
hasType(type: string): boolean {
return this.types.contains(type);

View file

@ -40,10 +40,10 @@ export class LocGovAPI extends APIModel {
// return ret;
}
async getById(item: MediaTypeModel): Promise<MediaTypeModel> {
async getById(id: string): Promise<MediaTypeModel> {
console.log(`MDB | api "${this.apiName}" queried by ID`);
const searchUrl = `https://www.loc.gov/item/${item.id}/?fo=json`;
const searchUrl = `https://www.loc.gov/item/${encodeURIComponent(id)}/?fo=json`;
const fetchData = await fetch(searchUrl);
if (fetchData.status !== 200) {
throw Error(`MDB | Received status code ${fetchData.status} from an API.`);

View file

@ -69,10 +69,10 @@ export class MALAPI extends APIModel {
return ret;
}
async getById(item: MediaTypeModel): Promise<MediaTypeModel> {
async getById(id: string): Promise<MediaTypeModel> {
console.log(`MDB | api "${this.apiName}" queried by ID`);
const searchUrl = `https://api.jikan.moe/v4/anime/${item.id}`;
const searchUrl = `https://api.jikan.moe/v4/anime/${encodeURIComponent(id)}`;
const fetchData = await fetch(searchUrl);
if (fetchData.status !== 200) {

View file

@ -58,14 +58,14 @@ export class MusicBrainzAPI extends APIModel {
return ret;
}
async getById(item: MediaTypeModel): Promise<MediaTypeModel> {
async getById(id: string): Promise<MediaTypeModel> {
console.log(`MDB | api "${this.apiName}" queried by ID`);
const searchUrl = `https://musicbrainz.org/ws/2/release-group/${encodeURIComponent(item.id)}?inc=releases+artists+tags+ratings+genres&fmt=json`;
const searchUrl = `https://musicbrainz.org/ws/2/release-group/${encodeURIComponent(id)}?inc=releases+artists+tags+ratings+genres&fmt=json`;
const fetchData = await requestUrl({
url: searchUrl,
headers: {
'User-Agent': `${pluginName}/0.1.7 (${contactEmail})`,
'User-Agent': `${pluginName}/${mediaDbVersion} (${contactEmail})`,
},
});

View file

@ -88,10 +88,10 @@ export class OMDbAPI extends APIModel {
return ret;
}
async getById(item: MediaTypeModel): Promise<MediaTypeModel> {
async getById(id: string): Promise<MediaTypeModel> {
console.log(`MDB | api "${this.apiName}" queried by ID`);
const searchUrl = `http://www.omdbapi.com/?i=${item.id}&apikey=${this.plugin.settings.OMDbKey}`;
const searchUrl = `http://www.omdbapi.com/?i=${encodeURIComponent(id)}&apikey=${this.plugin.settings.OMDbKey}`;
const fetchData = await fetch(searchUrl);
if (fetchData.status === 401) {

View file

@ -65,10 +65,10 @@ export class SteamAPI extends APIModel {
return ret;
}
async getById(item: MediaTypeModel): Promise<MediaTypeModel> {
async getById(id: string): Promise<MediaTypeModel> {
console.log(`MDB | api "${this.apiName}" queried by ID`);
const searchUrl = `http://store.steampowered.com/api/appdetails?appids=${item.id}`;
const searchUrl = `http://store.steampowered.com/api/appdetails?appids=${encodeURIComponent(id)}`;
const fetchData = await requestUrl({
url: searchUrl,
});
@ -77,7 +77,17 @@ export class SteamAPI extends APIModel {
throw Error(`MDB | Received status code ${fetchData.status} from an API.`);
}
const result = (await fetchData.json)[item.id].data;
debugLog(await fetchData.json);
let result;
for (const [key, value] of Object.entries(await fetchData.json)) {
if (key == id) {
result = value.data;
}
}
if (!result) {
throw Error(`MDB | API returned invalid data.`);
}
debugLog(result);

View file

@ -46,10 +46,10 @@ export class WikipediaAPI extends APIModel {
return ret;
}
async getById(item: MediaTypeModel): Promise<MediaTypeModel> {
async getById(id: string): Promise<MediaTypeModel> {
console.log(`MDB | api "${this.apiName}" queried by ID`);
const searchUrl = `https://en.wikipedia.org/w/api.php?action=query&prop=info&pageids=${item.id}&inprop=url&format=json&origin=*`;
const searchUrl = `https://en.wikipedia.org/w/api.php?action=query&prop=info&pageids=${encodeURIComponent(id)}&inprop=url&format=json&origin=*`;
const fetchData = await fetch(searchUrl);
if (fetchData.status !== 200) {