From f79fa66832b743c7670bc4a869eb694a5dabcbe4 Mon Sep 17 00:00:00 2001 From: Sayem Chowdhury Date: Fri, 5 Mar 2021 16:07:22 +0600 Subject: [PATCH] get track info from public api --- src/api.ts | 30 ++++++++++++++++++++++++ src/types/tracks.ts | 57 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) diff --git a/src/api.ts b/src/api.ts index bbe7f03..8871b95 100644 --- a/src/api.ts +++ b/src/api.ts @@ -11,6 +11,7 @@ import type { discographyType, profileType, searchType, + trackTypePublicApi, } from './types'; // expire cache in 60 minutes @@ -44,6 +45,34 @@ export const request = async (body: object, method: string) => { throw new Error(errorMessage); }; +/** + * Make post requests to deezer public api + * @param {Object} body post body + * @param {String} method request method + */ +export const requestPublicApi = async (slug: string) => { + const cache = lru.get(slug); + if (cache) { + return cache; + } + + const {data} = await axios.get('https://api.deezer.com' + slug); + + if (data.error) { + const errorMessage = Object.entries(data.error).join(', '); + throw new Error(errorMessage); + } + + lru.set(slug, data); + return data; +}; + +/** + * @param {String} sng_id song id + */ +export const getTrackInfoPublicApi = (sng_id: string): Promise => + requestPublicApi('/track/' + sng_id); + /** * @param {String} sng_id song id */ @@ -85,6 +114,7 @@ export const getPlaylistTracks = async (playlist_id: string): Promise