From 770c7a26e894d657ba0ac6239793aa678a338ac3 Mon Sep 17 00:00:00 2001 From: Liam Stevens <8955671+liamstevens111@users.noreply.github.com> Date: Thu, 16 Feb 2023 17:02:35 +0700 Subject: [PATCH] [#21] Base and Auth adapter for sending request, only includes login functionality wip --- .gitignore | 1 + src/adapters/authAdapter.ts | 23 +++++++++++++++++++++++ src/adapters/baseAdapter..ts | 13 +++++++++++++ src/lib/requestManager.ts | 2 ++ 4 files changed, 39 insertions(+) create mode 100644 src/adapters/authAdapter.ts create mode 100644 src/adapters/baseAdapter..ts diff --git a/.gitignore b/.gitignore index e223f6b..d28129b 100644 --- a/.gitignore +++ b/.gitignore @@ -16,6 +16,7 @@ # misc .DS_Store +.env .env.local .env.development.local .env.test.local diff --git a/src/adapters/authAdapter.ts b/src/adapters/authAdapter.ts new file mode 100644 index 0000000..5e8eee4 --- /dev/null +++ b/src/adapters/authAdapter.ts @@ -0,0 +1,23 @@ +import BaseAdapter from './baseAdapter.'; + +type LoginAuthType = { + email: string; + password: string; +}; + +class AuthAdapter extends BaseAdapter { + static login(params: LoginAuthType) { + /* eslint-disable camelcase */ + const requestParams = { + ...params, + grant_type: 'password', + client_id: process.env.REACT_APP_API_CLIENT_ID, + client_secret: process.env.REACT_APP_API_CLIENT_SECRET, + }; + /* eslint-enable camelcase */ + + return this.prototype.postRequest(`${process.env.REACT_APP_API_ENDPOINT}/oauth/token`, { data: requestParams }); + } +} + +export default AuthAdapter; diff --git a/src/adapters/baseAdapter..ts b/src/adapters/baseAdapter..ts new file mode 100644 index 0000000..e516e3a --- /dev/null +++ b/src/adapters/baseAdapter..ts @@ -0,0 +1,13 @@ +import requestManager, { RequestParamsType } from 'lib/requestManager'; + +class BaseAdapter { + getRequest(endpoint: string, params: RequestParamsType) { + return requestManager('GET', endpoint, params); + } + + postRequest(endpoint: string, params: RequestParamsType) { + return requestManager('POST', endpoint, params); + } +} + +export default BaseAdapter; diff --git a/src/lib/requestManager.ts b/src/lib/requestManager.ts index 154b0f0..81f9b8d 100644 --- a/src/lib/requestManager.ts +++ b/src/lib/requestManager.ts @@ -4,6 +4,8 @@ export const defaultOptions: { responseType: ResponseType } = { responseType: 'json', }; +export type RequestParamsType = AxiosRequestConfig; + /** * The main API access function that comes preconfigured with useful defaults. *