You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
spa_instat_tv/src/requests/login.tsx

62 lines
1.2 KiB

import {
DATA_URL,
PROCEDURES,
TOKEN_KEY,
} from 'config'
import { callApiBase } from 'helpers/callApi'
import { checkStatus } from 'helpers/callApi/checkStatus'
import { parseJSON } from 'helpers/callApi/parseJSON'
const proc = PROCEDURES.auth_user
const statusCodes = {
ACCOUNT_EXPIRED: 5,
EMAIL_NOT_FOUND: 2,
INVALID_CREDENTIALS: 3,
SUCCESS: 1,
USER_REMOVED_OR_BLOCKED: 4,
} as const
type StatusCodes = typeof statusCodes[keyof typeof statusCodes]
type Response = {
_p_status: StatusCodes,
}
type Args = {
email: string,
password: string,
}
export const login = async ({
email,
password,
}: Args) => {
const config = {
body: {
params: {
_p_email: email,
_p_password: password,
},
proc,
},
}
try {
const response = await callApiBase({
config,
url: DATA_URL,
})
checkStatus(response)
const token = response.headers.get(TOKEN_KEY)
const { _p_status }: Response = await parseJSON(response)
if (token && _p_status === statusCodes.SUCCESS) {
return Promise.resolve(token)
}
return Promise.reject(_p_status)
} catch (error) {
return Promise.reject()
}
}