feat: top genres report

This commit is contained in:
Julian Tölle 2021-10-26 20:09:52 +02:00
parent 62119d44b0
commit a0c28e2324
21 changed files with 317 additions and 104 deletions

View file

@ -9,6 +9,8 @@ import { TopAlbumsItem } from "./entities/top-albums-item";
import { TopAlbumsOptions } from "./entities/top-albums-options";
import { TopArtistsItem } from "./entities/top-artists-item";
import { TopArtistsOptions } from "./entities/top-artists-options";
import { TopGenresItem } from "./entities/top-genres-item";
import { TopGenresOptions } from "./entities/top-genres-options";
import { TopTracksItem } from "./entities/top-tracks-item";
import { TopTracksOptions } from "./entities/top-tracks-options";
@ -188,3 +190,40 @@ export const getTopTracks = async (
} = res;
return items;
};
export const getTopGenres = async (
options: TopGenresOptions,
client: AxiosInstance
): Promise<TopGenresItem[]> => {
const {
time: { timePreset, customTimeStart, customTimeEnd },
} = options;
const res = await client.get<{ items: TopGenresItem[] }>(
`/api/v1/reports/top-Genres`,
{
params: {
timePreset,
customTimeStart: formatISO(customTimeStart),
customTimeEnd: formatISO(customTimeEnd),
},
}
);
switch (res.status) {
case 200: {
break;
}
case 401: {
throw new UnauthenticatedError(`No token or token expired`);
}
default: {
throw new Error(`Unable to getTopGenres: ${res.status}`);
}
}
const {
data: { items },
} = res;
return items;
};