Compare commits
2 Commits
66596f5ecc
...
29ed8c1073
Author | SHA1 | Date |
---|---|---|
Chris W | 29ed8c1073 | |
Chris W | a4156f82d8 |
|
@ -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>
|
||||
|
||||
<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">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>
|
||||
|
||||
<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>
|
||||
|
||||
|
|
|
@ -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');
|
||||
}
|
||||
};
|
Loading…
Reference in New Issue