diff options
Diffstat (limited to 'examples/hackernews/src/lib/api.ts')
-rw-r--r-- | examples/hackernews/src/lib/api.ts | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/examples/hackernews/src/lib/api.ts b/examples/hackernews/src/lib/api.ts new file mode 100644 index 000000000..61fc2f9ab --- /dev/null +++ b/examples/hackernews/src/lib/api.ts @@ -0,0 +1,24 @@ +const story = (path: string) => `https://node-hnapi.herokuapp.com/${path}`; +const user = (path: string) => `https://hacker-news.firebaseio.com/v0/${path}.json`; + +export default async function fetchAPI(path: string) { + const url = path.startsWith('user') ? user(path) : story(path); + const headers = { 'User-Agent': 'chrome' }; + + try { + let response = await fetch(url, { headers }); + let text = await response.text(); + try { + if (text === null) { + return { error: 'Not found' }; + } + return JSON.parse(text); + } catch (e) { + console.error(`Recevied from API: ${text}`); + console.error(e); + return { error: e }; + } + } catch (error) { + return { error }; + } +} |