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 ) { this . api = api ; } async getCharacters ( ) { try { const response = await this . api . apisauce . get ( "https://raw.githubusercontent.com/infinitered/ignite/master/data/rick-and-morty.json" , { amount : API_PAGE_SIZE } ) ; 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" } ; } } }