Pour tout problème contactez-nous par mail : support@froggit.fr | La FAQ :grey_question: | Rejoignez-nous sur le Chat :speech_balloon:

Skip to content
Snippets Groups Projects
xhr.js 3.49 KiB
Newer Older
  • Learn to ignore specific revisions
  • Pierre Jarriges's avatar
    Pierre Jarriges committed
    async function fetch_article(article_id) {
        return new Promise((resolve, reject) => {
            fetch(`/article/${article_id}`).then(async res => {
                if (res.status >= 400 && res.status < 600) {
                    const text = await res.text();
                    reject(text);
                } else {
                    resolve(await res.json());
                }
            }).catch(e => reject(e))
        })
    }
    
    async function fetch_article_by_title(article_title) {
        const form_data = new FormData();
        form_data.append("title", article_title);
    
        return new Promise((resolve, reject) => {
            fetch(`/article-by-title/`, {
    
    Pierre Jarriges's avatar
    Pierre Jarriges committed
                body: new URLSearchParams(form_data),
            }).then(async res => {
                if (res.status >= 400 && res.status < 600) {
                    const text = await res.text();
                    reject(text);
                } else {
                    resolve(await res.json());
                }
            }).catch(e => reject(e))
        })
    }
    
    async function fetch_articles_by_category(category) {
        return new Promise((resolve, reject) => {
            fetch(`/articles/${category}`).then(async res => {
                if (res.status >= 400 && res.status < 600) {
                    const text = await res.text();
                    reject(text);
                } else {
                    resolve(await res.json());
                }
            }).catch(e => reject(e))
        })
    }
    
    async function fetch_post_article(article_data) {
        return new Promise((resolve, reject) => {
            fetch("/post-article", {
                credentials: 'include',
                method: "POST",
                headers: {
                    "Content-Type": "application/json"
                },
                body: JSON.stringify(article_data),
            })
                .then(async res => {
                    if (res.status >= 400 && res.status < 600) {
    
                        const text = await res.text();
    
    Pierre Jarriges's avatar
    Pierre Jarriges committed
                        reject(text)
                    } else {
    
                        const json = await res.json();
                        resolve(json);
    
    Pierre Jarriges's avatar
    Pierre Jarriges committed
                    }
                })
                .catch(err => reject(err))
        })
    }
    
    async function fetch_update_article(article_data) {
        return new Promise((resolve, reject) => {
            fetch(`/update-article/${article_data._id.$oid}`, {
                credentials: 'include',
                method: "PUT",
                headers: {
                    "Content-Type": "application/json"
                },
                body: JSON.stringify(article_data),
            })
                .then(async res => {
                    if (res.status >= 400 && res.status < 600) {
    
                        const text = await res.text();
    
    Pierre Jarriges's avatar
    Pierre Jarriges committed
                        reject(text)
                    } else {
    
                        const json = await res.json();
                        resolve(json);
    
    Pierre Jarriges's avatar
    Pierre Jarriges committed
                    }
                })
                .catch(err => reject(err))
        })
    }
    
    async function fetch_delete_article(article_id) {
        return new Promise((resolve, reject) => {
    
            fetch(`/delete-article/${article_id}`, {
    
    Pierre Jarriges's avatar
    Pierre Jarriges committed
                credentials: 'include',
                method: "DELETE"
            })
                .then(async res => {
                    const text = await res.text();
                    if (res.status >= 400 && res.status < 600) {
                        reject(text)
                    } else {
                        resolve(text);
                    }
                })
                .catch(err => reject(err))
        });
    }
    
    
    module.exports = {
        fetch_article,
        fetch_article_by_title,
        fetch_articles_by_category,
        fetch_post_article,
        fetch_update_article,
        fetch_delete_article,
    }