Compare commits

..

2 Commits

Author SHA1 Message Date
Chris W 29ed8c1073 stop saving url in paste 2023-10-22 13:16:34 -06:00
Chris W a4156f82d8 fix bugs in curl stuff; update about 2023-10-22 13:14:49 -06:00
2 changed files with 40 additions and 14 deletions

View File

@ -168,11 +168,28 @@
<h4 class="h4 mt-4 mb-2">Examples</h4>
<code class="bg-gray-900 py-2 px-4 mb-2 block rounded-lg">curl -X POST -H "Content-Type: application/json" -d '{'{'}"contents": "paste contents"{'}'}' https://0x45.st/api/pastes</code>
<pre class="bg-gray-900 py-4 px-4 mb-2 block rounded-lg whitespace-normal">
<div class="text-sm font-medium text-gray-500 mb-2">JSON Request</div>
<code class="whitespace-normal">
$ curl -X POST -H "Content-Type: application/json" -d '{'{'}"contents": "paste contents"{'}'}' https://0x45.st/api/pastes
</code>
</pre>
<code class="bg-gray-900 py-2 px-4 mb-2 block rounded-lg">curl -X POST -F "contents=paste contents" https://0x45.st/api/pastes</code>
<pre class="bg-gray-900 py-4 px-4 mb-2 block rounded-lg whitespace-normal">
<div class="text-sm font-medium text-gray-500 mb-2">Form Request</div>
<code class="whitespace-normal">
$ curl -X POST -F "contents=paste contents" https://0x45.st/api/pastes<br />
# or, with a file<br />
$ curl -X POST -F "contents=@file-name.txt" https://0x45.st/api/pastes
</code>
</pre>
<code class="bg-gray-900 py-2 px-4 mb-2 block rounded-lg">curl -X POST -d "paste contents" https://0x45.st/api/pastes</code>
<pre class="bg-gray-900 py-4 px-4 mb-2 block rounded-lg whitespace-normal">
<div class="text-sm font-medium text-gray-500 mb-2">Plaintext Request</div>
<code class="whitespace-normal">
$ curl -X POST -H "Content-Type: text/plain" -d "paste contents" https://0x45.st/api/pastes
</code>
</pre>
<p class="mb-4 mt-4">If the paste was successfully created, the API will respond with the following JSON:</p>

View File

@ -28,18 +28,26 @@ const isTrue = (value: string | boolean | undefined): boolean => {
// Extract the options from the form data.
const extractOptionsFromForm = async (req: Request): Promise<PasteOptions> => {
const form = await req.formData();
const contents = form.get('contents') as string;
const contents = form.get('contents');
const language = form.get('language') as string;
const password = form.get('password') as string;
const burnAfterReading = form.get('burnAfterReading') as string;
const raw = form.get('raw') as string;
if (!contents || contents.length === 0) {
let text: string;
// Check if contents is a file, if so read it.
if (contents instanceof File) {
text = await contents.text();
} else {
text = contents as string;
}
if (!text || text.length === 0) {
throw error(400, 'No contents provided for your paste.')
}
return {
contents,
contents: text,
language,
password,
burnAfterReading: isTrue(burnAfterReading),
@ -50,7 +58,6 @@ const extractOptionsFromForm = async (req: Request): Promise<PasteOptions> => {
// Extract the options from the JSON body.
const extractOptionsFromJSON = async (req: Request): Promise<PasteOptions> => {
const { contents, language, password, burnAfterReading, raw } = await req.json();
console.log(contents, language, password, burnAfterReading, raw);
if (!contents || contents.length === 0) {
throw error(400, 'No contents provided for your paste.')
@ -70,9 +77,7 @@ const extractOptionsFromQuery = async (req: Request): Promise<PasteOptions> => {
const url = new URL(req.url);
const query = url.searchParams;
const reader = req.body?.getReader();
const body = await reader?.read();
const contents = body?.value?.toString();
const contents = await req.text();
if (!contents) {
throw error(400, 'No contents provided for your paste.')
@ -132,7 +137,6 @@ export const POST: RequestHandler = async ({ request }) => {
const data = {
id,
url: `${env.SITE_URL}/${id}.${highlight}`,
highlight,
encrypted: !!password,
contents: pasteContents,
@ -143,15 +147,20 @@ export const POST: RequestHandler = async ({ request }) => {
const pastes = await Mongo.getNamedCollection("pastes");
const res = await pastes.insertOne(data);
const url = `${env.SITE_URL}/${id}.${highlight}`;
if (!res.acknowledged) {
throw error(500, 'Failed to create paste');
}
if (raw) {
return json(data, {
return json({
...data,
url,
}, {
status: 201,
});
} else {
return text(data.url);
return text(url + '\n');
}
};