ncc-prototype-email-alerts-sub
Version:
Northumberland Council Front End Email Alerts Subscription Prototype
44 lines (39 loc) • 1.51 kB
text/typescript
import axios, { AxiosResponse, AxiosError } from 'axios';
import { AddressResponse } from '../types/addressResponse';
import { Address, CustomError } from '../types/custom';
import getConfig from './config';
import logger from './logger';
const config = getConfig();
export const checkPostCode = async (postcode: string): Promise<AddressResponse> => {
const response = {} as AddressResponse;
try {
const result: AxiosResponse<Address[]> = await axios.get(`${config.postCodeCheckUrl}${postcode.trim().toUpperCase()}`, {
auth: {
username: config.webapi_username,
password: config.webapi_password,
}
});
response.addresses = result.data.length > 0 ? result.data : [] as Address[];
return response;
} catch (error) {
setError(error, response)
logger.error("checkPostCode catch error" + error);
return response;
}
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export const setError = (error: any, res: AddressResponse) => {
res.error = {} as CustomError;
if (axios.isAxiosError(error)) {
const axiosError: AxiosError = error;
if (axiosError.response) {
res.error.status = axiosError.response.status as number;
res.error.message = axiosError.message;
} else {
res.error.status = 500;
}
} else {
res.error.status = 500;
res.error.message = error.message;
}
}