From 3bbdb444872d7c4ecec6741a0e8ce88ebfe6432d Mon Sep 17 00:00:00 2001 From: Thamiris Maria Date: Mon, 20 Nov 2023 17:58:06 -0300 Subject: [PATCH] feat: adiciona o service de words #32 --- web/package.json | 1 + .../api/axios.config/ErrorInterceptor.ts | 13 ++++++++++++ .../api/axios.config/ResponseInterceptor.ts | 5 +++++ web/src/services/api/axios.config/index.ts | 14 +++++++++++++ web/src/services/api/words/WordsService.ts | 20 +++++++++++++++++++ 5 files changed, 53 insertions(+) create mode 100644 web/src/services/api/axios.config/ErrorInterceptor.ts create mode 100644 web/src/services/api/axios.config/ResponseInterceptor.ts create mode 100644 web/src/services/api/axios.config/index.ts create mode 100644 web/src/services/api/words/WordsService.ts diff --git a/web/package.json b/web/package.json index 0683605..ce54e57 100644 --- a/web/package.json +++ b/web/package.json @@ -15,6 +15,7 @@ "@fontsource/roboto": "^5.0.8", "@mui/icons-material": "^5.14.18", "@mui/material": "^5.14.18", + "axios": "^1.6.2", "react": "^18.2.0", "react-dom": "^18.2.0", "react-router-dom": "^6.18.0" diff --git a/web/src/services/api/axios.config/ErrorInterceptor.ts b/web/src/services/api/axios.config/ErrorInterceptor.ts new file mode 100644 index 0000000..f9bd2e8 --- /dev/null +++ b/web/src/services/api/axios.config/ErrorInterceptor.ts @@ -0,0 +1,13 @@ +import { AxiosError } from "axios"; + +export const errorInterceptor = (error: AxiosError) => { + if(error.message === 'Network Error'){ + return Promise.reject(new Error('Erro de conexão.')); + } + + if(error.response?.status === 500){ + return Promise.reject(new Error('Erro de servidor.')); + } + + return Promise.reject(error); +} \ No newline at end of file diff --git a/web/src/services/api/axios.config/ResponseInterceptor.ts b/web/src/services/api/axios.config/ResponseInterceptor.ts new file mode 100644 index 0000000..a468959 --- /dev/null +++ b/web/src/services/api/axios.config/ResponseInterceptor.ts @@ -0,0 +1,5 @@ +import { AxiosResponse } from "axios"; + +export const responseInterceptor = (response: AxiosResponse) => { + return response; +} \ No newline at end of file diff --git a/web/src/services/api/axios.config/index.ts b/web/src/services/api/axios.config/index.ts new file mode 100644 index 0000000..9625b70 --- /dev/null +++ b/web/src/services/api/axios.config/index.ts @@ -0,0 +1,14 @@ +import axios from 'axios'; +import { responseInterceptor } from './ResponseInterceptor'; +import { errorInterceptor } from './ErrorInterceptor'; + +const Api = axios.create({ + baseURL: 'http://localhost:8080' +}); + +Api.interceptors.response.use( + response => responseInterceptor(response), + error => errorInterceptor(error) +); + +export { Api }; \ No newline at end of file diff --git a/web/src/services/api/words/WordsService.ts b/web/src/services/api/words/WordsService.ts new file mode 100644 index 0000000..50fd4db --- /dev/null +++ b/web/src/services/api/words/WordsService.ts @@ -0,0 +1,20 @@ +import { Api } from "../axios.config"; + +export interface IWord { + id: number, + word: String, + translation: String, + status: String +} + +const updateStatus = async (id: number, wordStatus: string): Promise => { + try { + await Api.put(`/word/updateStatus?wordId=${id}&status=${wordStatus}`); + } catch (error) { + return new Error((error as { message: string }).message || 'Erro ao listar Gold List'); + } +}; + +export const WordsService = { + updateStatus +} \ No newline at end of file