summaryrefslogtreecommitdiff
path: root/app_expo/services/api/api.ts
diff options
context:
space:
mode:
authorThomas F. K. Jorna <[email protected]>2021-07-23 15:24:35 +0200
committerThomas F. K. Jorna <[email protected]>2021-07-23 15:24:35 +0200
commit356381d14cb1ff3cbd39c7e396dd14379336451b (patch)
treea03e9b2534600bde7b3b781411b5b03f8134904b /app_expo/services/api/api.ts
parent7aa007f158a52b41494049a1202938fc97813ec1 (diff)
parent73308af061af5e17ac7d4a73fa027a2f303c70dd (diff)
resolving merge conflicts
Diffstat (limited to 'app_expo/services/api/api.ts')
-rw-r--r--app_expo/services/api/api.ts102
1 files changed, 0 insertions, 102 deletions
diff --git a/app_expo/services/api/api.ts b/app_expo/services/api/api.ts
deleted file mode 100644
index 4093d34..0000000
--- a/app_expo/services/api/api.ts
+++ /dev/null
@@ -1,102 +0,0 @@
-import { ApisauceInstance, create, ApiResponse } from 'apisauce'
-import { getGeneralApiProblem } from './api-problem'
-import { ApiConfig, DEFAULT_API_CONFIG } from './api-config'
-import * as Types from './api.types'
-
-/**
- * Manages all requests to the API.
- */
-export class Api {
- /**
- * The underlying apisauce instance which performs the requests.
- */
- apisauce: ApisauceInstance
-
- /**
- * Configurable options.
- */
- config: ApiConfig
-
- /**
- * Creates the api.
- *
- * @param config The configuration to use.
- */
- constructor(config: ApiConfig = DEFAULT_API_CONFIG) {
- this.config = config
- }
-
- /**
- * Sets up the API. This will be called during the bootup
- * sequence and will happen before the first React component
- * is mounted.
- *
- * Be as quick as possible in here.
- */
- setup() {
- // construct the apisauce instance
- this.apisauce = create({
- baseURL: this.config.url,
- timeout: this.config.timeout,
- headers: {
- Accept: 'application/json',
- },
- })
- }
-
- /**
- * Gets a list of users.
- */
- async getUsers(): Promise<Types.GetUsersResult> {
- // make the api call
- const response: ApiResponse<any> = await this.apisauce.get(`/users`)
-
- // the typical ways to die when calling an api
- if (!response.ok) {
- const problem = getGeneralApiProblem(response)
- if (problem) return problem
- }
-
- const convertUser = (raw) => {
- return {
- id: raw.id,
- name: raw.name,
- }
- }
-
- // transform the data into the format we are expecting
- try {
- const rawUsers = response.data
- const resultUsers: Types.User[] = rawUsers.map(convertUser)
- return { kind: 'ok', users: resultUsers }
- } catch {
- return { kind: 'bad-data' }
- }
- }
-
- /**
- * Gets a single user by ID
- */
-
- async getUser(id: string): Promise<Types.GetUserResult> {
- // make the api call
- const response: ApiResponse<any> = await this.apisauce.get(`/users/${id}`)
-
- // the typical ways to die when calling an api
- if (!response.ok) {
- const problem = getGeneralApiProblem(response)
- if (problem) return problem
- }
-
- // transform the data into the format we are expecting
- try {
- const resultUser: Types.User = {
- id: response.data.id,
- name: response.data.name,
- }
- return { kind: 'ok', user: resultUser }
- } catch {
- return { kind: 'bad-data' }
- }
- }
-}