From 09a387f472889078a98793a2f80851f3a9ab0bae Mon Sep 17 00:00:00 2001 From: d_yanis Date: Fri, 16 Feb 2024 11:33:21 +0100 Subject: [PATCH] edit image implemented --- front/Constants.ts | 2 +- front/views/Settings.tsx | 74 +++++++++++++++++++++++++++------------ package.json | 4 ++- src/Proxy/server-proxy.js | 22 ++++++++++++ 4 files changed, 78 insertions(+), 24 deletions(-) create mode 100644 src/Proxy/server-proxy.js diff --git a/front/Constants.ts b/front/Constants.ts index 013db50..a37cc16 100644 --- a/front/Constants.ts +++ b/front/Constants.ts @@ -6,4 +6,4 @@ export const API = import.meta.env.VITE_API_ENDPOINT /** * This constant defines the base app's endpoint. */ -export const BASE = import.meta.env.VITE_BASE +export const BASE = import.meta.env.VITE_BASE \ No newline at end of file diff --git a/front/views/Settings.tsx b/front/views/Settings.tsx index 75c6793..2da2d1d 100644 --- a/front/views/Settings.tsx +++ b/front/views/Settings.tsx @@ -1,3 +1,4 @@ +import { BASE } from "../Constants" import "../style/settings/settings.css" import 'bootstrap/dist/css/bootstrap.min.css'; import { MainTitle, SecondTitle } from "./component/Title" @@ -112,6 +113,8 @@ function updateAccountPicture(lien: string) { function MyVerticallyCenteredModal(props: any) { const urlRef = useRef(null); + const [invalidShow, setInvalidShow] = useState(false); + return ( Nouvelle image - + - + ); } -async function handleNewImage(lien: string) { +async function handleNewImage(lien: string, invalidRef : React.Dispatch>) { let exist = await testImage(lien); console.log(exist); if (exist) { + invalidRef(false); updateAccountPicture(lien); } + else { + invalidRef(true); + } } async function testImage(lien: string) { - // try { - // const response = await axios.head(lien); - // console.log(response); - // // Vérifier le statut de la réponse (200 OK est considéré comme valide) - // if (response.status === 200) { - // // Vérifier le type de contenu pour s'assurer qu'il s'agit d'une image - // const contentType = response.headers['content-type']; - // if (contentType && contentType.startsWith('image/')) { - // return true; - // } - // return true; - // } - // return false; - // } catch (error) { - // console.error("Erreur lors de la requête HEAD:", error); - // return false; - // } - return true; -} \ No newline at end of file + try { + const response = await axios.head(lien); + console.log(response); + // Vérifier le statut de la réponse (200 OK est considéré comme valide) + if (response.status === 200) { + // Vérifier le type de contenu pour s'assurer qu'il s'agit d'une image + const contentType = response.headers['content-type']; + if (contentType && contentType.startsWith('image/')) { + return true; + } + return true; + } + return false; + } catch (error) { + console.error("Erreur lors de la requête HEAD: ", error); + return false; + } + // return true; +} + +// async function testImage(imageUrl: string) { +// try { +// const response = await axios.head(`${BASE.PROXY}?url=${encodeURIComponent(imageUrl)}`); + +// console.log(response); + +// // Check the response status (200 OK is considered valid) +// if (response.status === 200) { +// // Check the content type to ensure it's an image +// const contentType = response.headers['content-type']; +// if (contentType && contentType.startsWith('image/')) { +// return true; +// } +// return false; +// } + +// return false; +// } catch (error) { +// console.error("Error during HEAD request: ", error); +// return false; +// } +// } \ No newline at end of file diff --git a/package.json b/package.json index 609dacf..f6ae21e 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "@types/react-dom": "^18.2.14", "axios": "^1.6.7", "bootstrap": "^5.3.2", + "express": "^4.18.2", "node-fetch": "^3.3.2", "react": "^18.2.0", "react-bootstrap": "^2.10.0", @@ -26,7 +27,8 @@ "build": "vite build", "test": "vite test", "format": "prettier --config .prettierrc 'front' --write", - "tsc": "tsc" + "tsc": "tsc", + "proxy" : "node src/Proxy/server-proxy.js" }, "eslintConfig": { "extends": [ diff --git a/src/Proxy/server-proxy.js b/src/Proxy/server-proxy.js new file mode 100644 index 0000000..e4f2ea9 --- /dev/null +++ b/src/Proxy/server-proxy.js @@ -0,0 +1,22 @@ +const express = require('express'); +const axios = require('axios'); + +const app = express(); +const PORT = 8080; + +app.use(express.json()); + +app.use('/proxy', async (req, res) => { + try { + const response = await axios.head(req.query.url); + res.status(response.status).send(response.headers); + } catch (error) { + console.log("test"); + console.error("Error during HEAD request: ", error); + res.status(500).send("Internal Server Error"); + } +}); + +app.listen(PORT, () => { + console.log(`Proxy server listening on port ${PORT}`); +});