onfido-sdk-ui
Version:
JavaScript SDK view layer for Onfido identity verification
59 lines (48 loc) • 1.52 kB
text/typescript
import type { ApiRawError, SuccessCallback } from '~types/api'
export type HttpRequestParams = {
contentType?: string
endpoint: string
payload?: string | FormData
token: string
}
export const performHttpReq = <T>(
{ contentType, endpoint, payload, token }: HttpRequestParams,
onSuccess: SuccessCallback<T>,
onError: (error: ApiRawError) => void
): void => {
const request = new XMLHttpRequest()
request.open('POST', endpoint)
if (contentType) {
request.setRequestHeader('Content-Type', contentType)
}
request.setRequestHeader('Authorization', token)
request.onload = () => {
if (request.status === 200 || request.status === 201) {
onSuccess(JSON.parse(request.response))
} else {
onError(request)
}
}
request.onerror = () => onError(request)
request.send(payload)
}
export const getAuthConfig = (
token: string,
onSuccess: SuccessCallback<string>,
onError: (error: ApiRawError) => void
): void => {
const body = {
sdk_type: 'onfido_web_sdk',
}
const request = new XMLHttpRequest()
request.open('POST', `${process.env.AUTH_URL}/v3/auth_3d/session`)
request.setRequestHeader('Authorization', token)
request.setRequestHeader('Application-Id', 'com.onfido.onfidoAuth')
request.setRequestHeader('Content-Type', 'application/json')
request.onreadystatechange = function () {
if (this.readyState === XMLHttpRequest.DONE) {
onSuccess(this.responseText)
} else onError(request)
}
request.send(JSON.stringify(body))
}