mirror of
https://github.com/OpenCut-app/OpenCut.git
synced 2026-07-13 21:52:53 +02:00
feat: add opencut blog
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
import type { MarbleAuthorList, MarbleCategoryList, MarblePost, MarblePostList, MarbleTagList } from '@/types/post';
|
||||
import { unified } from "unified";
|
||||
import rehypeParse from "rehype-parse";
|
||||
import rehypeStringify from "rehype-stringify";
|
||||
import rehypeSlug from "rehype-slug";
|
||||
import rehypeAutolinkHeadings from "rehype-autolink-headings";
|
||||
|
||||
const url = process.env.MARBLE_API_URL;
|
||||
const key = process.env.MARBLE_WORKSPACE_KEY;
|
||||
|
||||
export async function getPosts() {
|
||||
try {
|
||||
const raw = await fetch(`${url}/${key}/posts`);
|
||||
const data: MarblePostList = await raw.json();
|
||||
return data;
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
}
|
||||
|
||||
export async function getTags() {
|
||||
try {
|
||||
const raw = await fetch(`${url}/${key}/tags`);
|
||||
const data: MarbleTagList = await raw.json();
|
||||
return data;
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
}
|
||||
|
||||
export async function getSinglePost(slug: string) {
|
||||
try {
|
||||
const raw = await fetch(`${url}/${key}/posts/${slug}`);
|
||||
const data: MarblePost = await raw.json();
|
||||
return data;
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
}
|
||||
|
||||
export async function getCategories() {
|
||||
try {
|
||||
const raw = await fetch(`${url}/${key}/categories`);
|
||||
const data: MarbleCategoryList = await raw.json();
|
||||
return data;
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
}
|
||||
|
||||
export async function getAuthors() {
|
||||
try {
|
||||
const raw = await fetch(`${url}/${key}/authors`);
|
||||
const data: MarbleAuthorList = await raw.json();
|
||||
return data;
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
}
|
||||
|
||||
export async function processHtmlContent(html: string): Promise<string> {
|
||||
const processor = unified()
|
||||
.use(rehypeParse, { fragment: true })
|
||||
.use(rehypeSlug)
|
||||
.use(rehypeAutolinkHeadings, { behavior: "append" })
|
||||
.use(rehypeStringify);
|
||||
|
||||
const file = await processor.process(html);
|
||||
return String(file);
|
||||
}
|
||||
Reference in New Issue
Block a user