blob: e28ec482a36c780d80f3d8e28ab86928a576aae0 (
about) (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
import { ApiResponse } from 'apisauce'
import { Api } from './api'
import { GetCharactersResult } from './api.types'
import { getGeneralApiProblem } from './api-problem'
const API_PAGE_SIZE = 50
export class CharacterApi {
private api: Api
constructor(api: Api) {
this.api = api
}
async getCharacters(): Promise<GetCharactersResult> {
try {
// make the api call
const response: ApiResponse<any> = await this.api.apisauce.get(
'https://raw.githubusercontent.com/infinitered/ignite/master/data/rick-and-morty.json',
{ amount: API_PAGE_SIZE },
)
// the typical ways to die when calling an api
if (!response.ok) {
const problem = getGeneralApiProblem(response)
if (problem) return problem
}
const characters = response.data.results
return { kind: 'ok', characters }
} catch (e) {
__DEV__ && console.tron.log(e.message)
return { kind: 'bad-data' }
}
}
}
|