51 lines
1.9 KiB
JavaScript
51 lines
1.9 KiB
JavaScript
import { r as requireApiToken } from '../../../chunks/apiAuth_DcNSM7D5.mjs';
|
|
import { p as publishPost } from '../../../chunks/publisher_Dj_UvF8J.mjs';
|
|
import { d as downloadAndStoreImage } from '../../../chunks/images_DSuHPXn1.mjs';
|
|
export { renderers } from '../../../renderers.mjs';
|
|
|
|
const POST = async (context) => {
|
|
const unauthorized = requireApiToken(context);
|
|
if (unauthorized) {
|
|
return unauthorized;
|
|
}
|
|
try {
|
|
const payload = await context.request.json();
|
|
let image = payload.image;
|
|
let thumbnail = payload.thumbnail;
|
|
if (payload.imageUrl && !image) {
|
|
const storedImage = await downloadAndStoreImage(String(payload.imageUrl));
|
|
image = storedImage?.image;
|
|
thumbnail = storedImage?.thumbnail;
|
|
}
|
|
const post = await publishPost({
|
|
title: String(payload.title ?? ""),
|
|
slug: payload.slug ? String(payload.slug) : void 0,
|
|
category: payload.category ? String(payload.category) : void 0,
|
|
time: payload.time ? String(payload.time) : void 0,
|
|
readTime: payload.readTime ? String(payload.readTime) : void 0,
|
|
excerpt: payload.excerpt ? String(payload.excerpt) : void 0,
|
|
body: Array.isArray(payload.body) ? payload.body.map(String) : String(payload.body ?? ""),
|
|
status: payload.status === "approved" ? "approved" : "pending",
|
|
image,
|
|
thumbnail
|
|
});
|
|
return new Response(JSON.stringify({ ok: true, post }), {
|
|
headers: { "content-type": "application/json; charset=utf-8" }
|
|
});
|
|
} catch (error) {
|
|
return new Response(JSON.stringify({ ok: false, error: error instanceof Error ? error.message : "Invalid request" }), {
|
|
status: 400,
|
|
headers: { "content-type": "application/json; charset=utf-8" }
|
|
});
|
|
}
|
|
};
|
|
|
|
const _page = /*#__PURE__*/Object.freeze(/*#__PURE__*/Object.defineProperty({
|
|
__proto__: null,
|
|
POST
|
|
}, Symbol.toStringTag, { value: 'Module' }));
|
|
|
|
const page = () => _page;
|
|
|
|
export { page };
|