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/`, { method: "POST", 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(); reject(text) } else { const json = await res.json(); resolve(json); } }) .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(); reject(text) } else { const json = await res.json(); resolve(json); } }) .catch(err => reject(err)) }) } async function fetch_delete_article(article_id) { return new Promise((resolve, reject) => { fetch(`/delete-article/${article_id}`, { 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, }