123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- import Butter from "buttercms";
- let butter;
- const previewSetting = process.env.PREVIEW;
- // make preview mode by default
- const preview =
- previewSetting === "true" || previewSetting === undefined ? 1 : 0;
- try {
- butter = Butter(process.env.NEXT_PUBLIC_BUTTER_CMS_API_KEY, preview);
- } catch (e) {
- console.log(e);
- }
- const defaultPageSize = 100;
- const defaultPostCount = 10;
- export async function getLandingPage(slug) {
- try {
- const page = await butter.page.retrieve("landing-page", slug);
- return page?.data?.data;
- } catch (e) {
- throw e.response.data.detail;
- }
- }
- export async function getLandingPages() {
- let paginatedLandingPages = [];
- let currentPage = 1;
- while (!!currentPage) {
- const landingPagesData = await getLandingPagesData(currentPage);
- paginatedLandingPages.push(...landingPagesData.pages);
- currentPage = landingPagesData.nextPage;
- }
- return paginatedLandingPages;
- }
- async function getLandingPagesData(page, pageSize = defaultPageSize) {
- try {
- const params = {
- page,
- page_size: pageSize,
- };
- const response = await butter.page.list("landing-page", params);
- return {
- pages: response?.data?.data,
- prevPage: response?.data?.meta.previous_page,
- nextPage: response?.data?.meta.next_page,
- };
- } catch (e) {
- throw e.response.data.detail;
- }
- }
- export async function getPostsData(
- { page, pageSize, tag, category } = { page: 1, pageSize: defaultPostCount }
- ) {
- try {
- // https://buttercms.com/docs/api/node?javascript#get-your-blog-posts
- const params = {
- page_size: pageSize || defaultPostCount,
- page: page || 1,
- };
- if (tag) {
- params.tag_slug = tag;
- }
- if (category) {
- params.category_slug = category;
- }
- const response = await butter.post.list(params);
- return {
- posts: response?.data?.data,
- prevPage: response?.data?.meta.previous_page,
- nextPage: response?.data?.meta.next_page,
- };
- } catch (e) {
- throw e.response.data.detail;
- }
- }
- export async function getPost(slug) {
- try {
- const response = await butter.post.retrieve(slug);
- return response?.data?.data;
- } catch (e) {
- throw e.response.data.detail;
- }
- }
- export async function getMainMenu() {
- try {
- const mainMenu = {
- meta: {
- id: 740357,
- },
- name: "Main menu",
- menu_items: [
- {
- meta: {
- id: 740351,
- },
- label: "222",
- url: "#home",
- },
- {
- meta: {
- id: 740352,
- },
- label: "About",
- url: "#about",
- },
- {
- meta: {
- id: 740353,
- },
- label: "Features",
- url: "#features",
- },
- {
- meta: {
- id: 740354,
- },
- label: "Try It",
- url: "#tryit",
- },
- {
- meta: {
- id: 740355,
- },
- label: "Testimonials",
- url: "#testimonials",
- },
- {
- meta: {
- id: 740356,
- },
- label: "Blog",
- url: "#blog",
- },
- ],
- };
- return mainMenu ? mainMenu.menu_items : [];
- } catch (e) {
- throw e.response.data.detail;
- }
- }
- export async function getCategories() {
- try {
- const response = await butter.category.list();
- return response?.data?.data;
- } catch (e) {
- throw e.response.data.detail;
- }
- }
- export async function getTags() {
- try {
- const response = await butter.tag.list();
- return response?.data?.data;
- } catch (e) {
- throw e.response.data.detail;
- }
- }
- export async function searchPosts({ query }) {
- try {
- const response = await butter.post.search(query);
- return response?.data?.data;
- } catch (e) {
- throw e.response.data.detail;
- }
- }
|