diff --git a/packages/desktop/src/controller/nirvanaApi.ts b/packages/desktop/src/controller/nirvanaApi.ts new file mode 100644 index 0000000..20a59f1 --- /dev/null +++ b/packages/desktop/src/controller/nirvanaApi.ts @@ -0,0 +1,42 @@ +import axios, { AxiosRequestConfig, Method } from "axios"; + +export const localHost = process.env.REACT_APP_API_DOMAIN; + +const methods = { + GET: "GET", +}; + +class NirvanaApi { + // auth token from google that our backend will use + private _authToken?: string; + + setPrivateToken(_googleIdToken: string) { + this._authToken = _googleIdToken; + } + + async fetch(options: AxiosRequestConfig, privateRoute: boolean = false) { + // use the auth token if it's a private route + // error if no auth token and it's a private route + // throw error and show message on anything that is an error from the backend + if (privateRoute && this._authToken) { + return await axios({ + ...options, + headers: { Authorization: this._authToken }, + }); + } + + return axios(options); + } + + async getUserDetails() { + return await this.fetch( + { + method: "GET", + url: localHost + `/users`, + }, + true + ); + } +} + +export const nirvanaApi = new NirvanaApi();