cafebazaar-purchase-validator
Version:
easily validate purchase in app billing of Cafebazaar API
47 lines (43 loc) • 1.56 kB
text/typescript
import axios from "axios";
import { appLog } from "../utils/utils";
import { AppRequest, AppResponse } from "./app-response";
export const post = async <T>(
appRequest: AppRequest,
appResponse: AppResponse<T>
): Promise<void> => {
appLog("POST => " + appRequest.url);
try {
const response = await axios.post<T>(appRequest.url, appRequest.data);
appLog(`POST <= ${response.status} ${appRequest.url}`);
appLog(`RESPONSE <= ${JSON.stringify(response.data)}`);
appResponse.onSuccess(response.data);
} catch (error) {
if (!error.response) {
error.response = {
status: 500,
data: {
error: "server_error",
error_description: "Something is Wrong",
},
};
} else {
if (!error.response.data.error_description) {
error.response.data.error_description = error.response.data.error;
}
}
appLog(`POST <= ${error.response.status} ${appRequest.url}`);
appLog(`RESPONSE ERROR <= ${JSON.stringify(error.response.data)}`);
if (axios.isAxiosError(error)) {
if (error.response?.status == 401 && appResponse.onUnauthorized) {
return appResponse.onUnauthorized();
}
if (error.response?.status == 403 && appResponse.onForbidden) {
return appResponse.onForbidden();
}
if (error.response?.status == 404 && appResponse.onNotFound) {
return appResponse.onNotFound();
}
}
return appResponse.onFailure(error.response?.data.error_description);
}
};