Files
directus/docs/netlify/functions/feedback.ts
Connor 5e1f02dba1 Add TypeDocs to Docs (#18867)
* Create package

* TypeDoc Init Config

* Start Config

* Configure Packages

* Generation

* Add Plugins

* Vitepress Generation

* More Generation

* Fix Lock File

* Fix Connections

* Build Step

* Deployment Testing

* Fix Sidebar

* Fix Lock File

* Deployment Fix

* Change Sidebar

* Final POC/MVP Updates

* fix commands

* fix dev deps

* fix netlify functions

* CHANGELOG: Create warm-spiders-double.md

* Fix typing

* Remove double title

---------

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2023-06-13 10:18:22 -04:00

84 lines
1.7 KiB
TypeScript

import fetch from 'node-fetch';
const feedbackUrl = process.env.DIRECTUS_URL + '/items/docs_feedback';
const token = process.env.DIRECTUS_TOKEN;
const headers = {
'Content-Type': 'application/json',
Accept: 'application/json',
Authorization: `Bearer ${token}`,
};
type Submission = {
id?: string;
title: string;
url: string;
rating: number;
comments: string;
};
async function createSubmission(submission: Submission) {
try {
const response = await fetch(feedbackUrl, {
method: 'POST',
body: JSON.stringify(submission),
headers,
});
if (!response.ok) throw Error(response.statusText);
const { data } = (await response.json()) as { data: any };
return data;
} catch (error) {
return error;
}
}
async function updateSubmission(id: string, submission: Submission) {
try {
const response = await fetch(`${feedbackUrl}/${id}`, {
method: 'PATCH',
body: JSON.stringify(submission),
headers,
});
if (!response.ok) throw Error(response.statusText);
const { data } = (await response.json()) as { data: any };
return data;
} catch (error) {
return error;
}
}
export const handler = async (event) => {
if (event.httpMethod !== 'POST') {
return { statusCode: 405, body: 'Method Not Allowed' };
}
try {
const { id, ...data } = JSON.parse(event.body);
let response: any;
if (id) {
response = await updateSubmission(id, data);
} else {
response = await createSubmission(data);
}
return {
statusCode: 200,
body: JSON.stringify(response),
};
} catch (error) {
// eslint-disable-next-line no-console
console.log(error);
return {
statusCode: 500,
body: JSON.stringify({ error: 'Feedback submission failed!' }),
};
}
};