50 lines
1.5 KiB
TypeScript
50 lines
1.5 KiB
TypeScript
import { AxiosError } from "axios";
|
|
import { GetRequestPagination, IHttpResponse } from "..//types/common";
|
|
import { client } from "./config";
|
|
import { GET_NEWS_EVENTS_URI, POST_NEWS_EVENTS_URI } from "../../src/constants/api";
|
|
|
|
interface GetNewsSevice extends GetRequestPagination {
|
|
is_with_approval: number
|
|
}
|
|
|
|
async function getNewsServices({ page, page_size, is_with_approval}: GetNewsSevice): Promise<IHttpResponse> {
|
|
const newState: IHttpResponse = { data: null, error: null};
|
|
try {
|
|
const response = await client({ method: 'GET', url: `${GET_NEWS_EVENTS_URI}?page=${page}&page_size=${page_size}&is_with_approval=${is_with_approval}`});
|
|
newState.data = response.data;
|
|
newState.status = response.status;
|
|
return newState;
|
|
} catch (error) {
|
|
let err = error as AxiosError;
|
|
newState.error = err;
|
|
newState.status = err.status
|
|
throw(newState)
|
|
}
|
|
}
|
|
|
|
interface PostNewsServiceBody {
|
|
title: string,
|
|
url: string,
|
|
description: string,
|
|
submitted_by: number
|
|
}
|
|
|
|
async function postNewsService(req: PostNewsServiceBody): Promise<IHttpResponse> {
|
|
const newState: IHttpResponse = { data: null, error: null}
|
|
try {
|
|
const response = await client({ method: 'POST', url: POST_NEWS_EVENTS_URI, data: req, withCredentials: true})
|
|
newState.data = response.data
|
|
newState.status = response.status
|
|
return newState
|
|
} catch (error) {
|
|
let err = error as AxiosError;
|
|
newState.error = err;
|
|
newState.status = err.status
|
|
throw(newState)
|
|
}
|
|
}
|
|
|
|
export {
|
|
getNewsServices,
|
|
postNewsService
|
|
} |