support markdown pages
This commit is contained in:
@@ -1,128 +0,0 @@
|
||||
{{define "about"}}<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{template "meta_tags" "About"}}
|
||||
{{template "user_style" .}}
|
||||
</head>
|
||||
|
||||
<body>
|
||||
{{template "page_top" .}}
|
||||
<h1>About pixeldrain</h1>
|
||||
<div class="page_content"><div class="limit_width">
|
||||
<h2>Questions and Answers</h2>
|
||||
|
||||
<h3>For how long will my files be stored?</h3>
|
||||
<p>
|
||||
Files will be removed if they have not been viewed for 30 days.
|
||||
A view is counted when someone visits the file's download page
|
||||
(pixeldrain.com/u/somefile) or views the file through a list the
|
||||
file is included in (pixeldrain.com/l/somelist).
|
||||
</p>
|
||||
<p>
|
||||
If you upload a file while logged into your pixeldrain account
|
||||
you will be able to delete the file yourself from the download
|
||||
page of the file. If you are not logged in and you accidentally
|
||||
upload something you shouldn't have, just don't share the link.
|
||||
The file will expire eventually. File links are not indexed or
|
||||
published anywhere. As long as you don't share it nobody will
|
||||
see it.
|
||||
</p>
|
||||
|
||||
<h3>Does pixeldrain cost any money?</h3>
|
||||
<p>
|
||||
No, pixeldrain is completely free at the moment. While there is
|
||||
an advertisement on the file downloading page, it doesn't
|
||||
generate nearly enough revenue to pay for maintaining this
|
||||
service. That's why I'd really appreciate it if you could spare
|
||||
some coins. Possible methods for donating are:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://www.patreon.com/join/pixeldrain" target="_blank">
|
||||
{{template `patreon.svg` .}} Support me on Patreon and get some perks too!
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
Bitcoin:
|
||||
<a href="bitcoin:1Ne7hGuvnfz9EFTRD3PLWVeaJTX9oA1QUr?label=Pixeldrain%20Donation">1Ne7hGuvnfz9EFTRD3PLWVeaJTX9oA1QUr</a>
|
||||
</li>
|
||||
<li>
|
||||
BasicAttentionToken: Donate BAT by clicking the BAT icon in
|
||||
your address bar. If you don't have Brave browser yet you
|
||||
can download it here:
|
||||
<a class="button button_highlight" href="https://brave.com/pix009" target="_blank">Install Brave</a>.
|
||||
Installing and using Brave with this referral link also
|
||||
counts as a 5$ donation.
|
||||
</li>
|
||||
<li>
|
||||
Siacoin:
|
||||
26117c19ca3975b315d663dcbbc19cf9c07274f441689d4392ed380b2337589ef1aacfbdc93f
|
||||
(this address points directly at the storage backend.
|
||||
Donations will be used for paying storage contracts with Sia
|
||||
hosts)
|
||||
</li>
|
||||
<li>
|
||||
PayPal:
|
||||
<a class="button button_highlight" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=WU49A5NHPAZ9G&source=url">Donate with PayPal</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h3>Do I need to register an account?</h3>
|
||||
<p>
|
||||
Not if you don't want to. You're free to use pixeldrain
|
||||
completely anonymously. Without a pixeldrain account you can
|
||||
upload files, download files and create lists of files. And view
|
||||
your uploaded files on the <a href="/history">history page</a>.
|
||||
This page only shows files which were uploaded anonymously in
|
||||
this web browser.
|
||||
</p>
|
||||
<p>
|
||||
By registering an account on pixeldrain you will be able to
|
||||
access your files from any device with a web browser. Files you
|
||||
upload and lists you create will be linked to your pixeldrain
|
||||
account and will show up on your <a href="/user">personal home
|
||||
page</a>.
|
||||
</p>
|
||||
|
||||
<h3>What cookies does pixeldrain use?</h3>
|
||||
<p>
|
||||
When logging in to a pixeldrain account a cookie named
|
||||
'pd_auth_key' will be installed. This cookie keeps your login
|
||||
session active. When you delete it you will be logged out of
|
||||
your account.
|
||||
</p>
|
||||
<p>
|
||||
When you use the style selector on the <a
|
||||
href="/appearance">Appearance</a> page a cookie called 'style'
|
||||
will be set. This cookie controls the appearance of the website
|
||||
for you.
|
||||
</p>
|
||||
<p>
|
||||
When uploading a file pixeldrain will save a list of file links
|
||||
on your browser's local storage. This data is
|
||||
<b>only</b> used for viewing your upload history on the <a
|
||||
href="/history">history page</a>.
|
||||
</p>
|
||||
|
||||
<h3 id="legality">Legality</h3>
|
||||
<p>
|
||||
I cannot be held liable for any illegal and / or copyrighted
|
||||
material that's uploaded by the users of this application. Files
|
||||
uploaded to this website are subjected to local laws. If laws
|
||||
are being broken, and I've been notified of the fact I'll have
|
||||
to delete the offending content. If you find any files on this
|
||||
domain that break the law, please contact me at
|
||||
<a href="mailto:abuse@pixeldrain.com">abuse@pixeldrain.com</a>,
|
||||
and I'll take care of it.
|
||||
<br/>Please share responsibly.
|
||||
</p>
|
||||
<p>
|
||||
For other questions you can reach me at
|
||||
<a href="mailto:support@pixeldrain.com">support@pixeldrain.com</a>
|
||||
</p>
|
||||
</div></div>
|
||||
{{template "page_bottom" .}}
|
||||
{{template "analytics"}}
|
||||
</body>
|
||||
</html>
|
||||
{{end}}
|
@@ -1,92 +0,0 @@
|
||||
{{define "apidoc"}}<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{template "meta_tags" "API Documentation"}}
|
||||
{{template "user_style" .}}
|
||||
<style>
|
||||
.api_doc_details{
|
||||
border-top: 1px solid;
|
||||
border-bottom: 1px solid;
|
||||
margin: 15px 0 15px 0;
|
||||
}
|
||||
.api_doc_details > summary {
|
||||
padding: 2px;
|
||||
font-family: monospace;
|
||||
}
|
||||
.api_doc_details > summary > .method {
|
||||
display: inline-block;
|
||||
width: 80px;
|
||||
}
|
||||
.api_doc_details > div {
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.api_doc_details.request_get{ border-color: #3636ff; background-color: rgba(32, 32, 255, 0.2);} /* GET requests */
|
||||
.api_doc_details.request_post{ border-color: #00d000; background-color: rgba(0, 255, 0, 0.05);} /* POST requests */
|
||||
.api_doc_details.request_delete{border-color: #B00000; background-color: rgba(255, 0, 0, 0.05);} /* DELETE requests */
|
||||
.api_doc_details.request_put{ border-color: #B06000; background-color: rgba(255, 128, 0, 0.05);} /* PUT requests */
|
||||
.api_doc_details.request_patch{ border-color: #6000B0; background-color: rgba(128, 0, 255, 0.1);} /* PATCH requests */
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
{{template "page_top" .}}
|
||||
<h1>Pixeldrain API documentation</h1>
|
||||
|
||||
<div class="page_content"><div class="limit_width">
|
||||
<p>
|
||||
Welcome to the pixeldrain API documentation.
|
||||
<br/>
|
||||
The methods for uploading and retrieving files don't require an
|
||||
API key. The methods for creating and retrieving lists also
|
||||
don't require an API key. All methods which delete or modify a
|
||||
resource <strong>do</strong> require an API key.
|
||||
<br/>
|
||||
API keys can be obtained from the login API.
|
||||
</p>
|
||||
<p>
|
||||
Some JSON responses include fields which end in "_href" (some
|
||||
people don't know this, but "href" stands for "Hypertext
|
||||
Reference", the more you know). These point to different places
|
||||
in the API, which you can retrieve with a GET request. The path
|
||||
is to be appended to the API URL, so "/file/someid/thumbnail"
|
||||
becomes "{{apiUrl}}/file/someid/thumbnail".
|
||||
</p>
|
||||
<p>
|
||||
The base URL for the API is "{{apiUrl}}", all paths below are
|
||||
relative to that URL.
|
||||
</p>
|
||||
|
||||
<h2>Form value order</h2>
|
||||
<p>
|
||||
I recommend you put files at the end of every file upload form.
|
||||
By doing this the pixeldrain server can respond to malformed
|
||||
requests before the file upload finishes and this may save you a
|
||||
lot of time and bandwidth when uploading large files. Make sure
|
||||
your HTTP client has support for premature responses, pixeldrain
|
||||
uses them a lot. If the server responds before your request is
|
||||
finished it will always indicate an error and you may abort the
|
||||
connection.
|
||||
</p>
|
||||
|
||||
<h2>File Methods</h2>
|
||||
{{template "api-file-post"}}
|
||||
{{template "api-file-id-get"}}
|
||||
{{template "api-file-id-info-get"}}
|
||||
{{template "api-file-id-thumbnail-get"}}
|
||||
{{/*template "api-file-id-delete"*/}}
|
||||
|
||||
<h2>List Methods</h2>
|
||||
{{template "api-list-post"}}
|
||||
{{template "api-list-get"}}
|
||||
|
||||
<!--<h2>Filesystem Methods</h2>-->
|
||||
{{/*template "api-filesystem-path-post"*/}}
|
||||
{{/*template "api-filesystem-path-get"*/}}
|
||||
{{/*template "api-filesystem-path-delete"*/}}
|
||||
</div></div>
|
||||
{{template "page_bottom" .}}
|
||||
{{template "analytics"}}
|
||||
</body>
|
||||
</html>
|
||||
{{end}}
|
@@ -1,41 +0,0 @@
|
||||
{{define "donation"}}
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{template "meta_tags" "Thank you for supporting pixeldrain!"}}
|
||||
{{template "user_style" .}}
|
||||
</head>
|
||||
<body>
|
||||
{{template "page_top" .}}
|
||||
<div class="page_content"><div class="limit_width">
|
||||
<br/>
|
||||
{{$success := .URLQuery.Get "success"}}
|
||||
{{if eq $success "true"}}
|
||||
{{if .Authenticated}}
|
||||
Dear {{.User.Username}},
|
||||
<br/><br/>
|
||||
Thank you for your donation. I really appreciate it!
|
||||
<br/><br/>
|
||||
Sincerely,<br/>
|
||||
Fornax
|
||||
{{else}}
|
||||
Thank you for your donation! You are amazing.
|
||||
<br/><br/>
|
||||
Sincerely,<br/>
|
||||
Fornax
|
||||
{{end}}
|
||||
{{else}}
|
||||
It seems you have canceled your donation. I don't blame you, money is expensive :)
|
||||
<br/><br/>
|
||||
If this was not your intention, you're welcome to try again by clicking this button:
|
||||
<a class="button" href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=WU49A5NHPAZ9G&source=url">Donate with PayPal</a>
|
||||
<br/><br/>
|
||||
Sincerely,<br/>
|
||||
Fornax
|
||||
{{end}}
|
||||
</div></div>
|
||||
{{template "page_bottom" .}}
|
||||
{{template "analytics"}}
|
||||
</body>
|
||||
</html>
|
||||
{{end}}
|
@@ -1,311 +0,0 @@
|
||||
{{define "api-file-post"}}
|
||||
<details class="api_doc_details request_post">
|
||||
<summary><span class="method">POST</span>/file</summary>
|
||||
<div>
|
||||
<h3>Description</h3>
|
||||
<p>
|
||||
Upload a file.
|
||||
</p>
|
||||
|
||||
<h3>Parameters</h3>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Param</td>
|
||||
<td>Type</td>
|
||||
<td>Required</td>
|
||||
<td>Maximum Size</td>
|
||||
<td>Default</td>
|
||||
<td>Description</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>name</td>
|
||||
<td>string</td>
|
||||
<td>false</td>
|
||||
<td>255 Characters</td>
|
||||
<td>Multipart file name</td>
|
||||
<td>Name of the file to upload</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>anonymous</td>
|
||||
<td>boolean</td>
|
||||
<td>false</td>
|
||||
<td>N/A</td>
|
||||
<td>false</td>
|
||||
<td>If the file should be uploaded anonymously</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>file</td>
|
||||
<td>multipart file</td>
|
||||
<td>true</td>
|
||||
<td>10 000 000 000 Bytes</td>
|
||||
<td>none</td>
|
||||
<td>Multipart file to upload</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h3>Returns</h3>
|
||||
<pre>HTTP 200: OK
|
||||
{
|
||||
"success": true,
|
||||
"id": "abc123" // ID of the newly uploaded file
|
||||
}</pre>
|
||||
<pre>HTTP 422: Unprocessable Entity
|
||||
{
|
||||
"success": false,
|
||||
"value": "no_file",
|
||||
"message": "The file does not exist or is empty."
|
||||
}</pre>
|
||||
<pre>HTTP 500: Internal Server Error
|
||||
{
|
||||
"success": false,
|
||||
"value": "internal",
|
||||
"message": "An internal server error occurred."
|
||||
}</pre>
|
||||
<pre>HTTP 413: Payload Too Large
|
||||
{
|
||||
"success": false,
|
||||
"value": "file_too_large",
|
||||
"message": "The file you tried to upload is too large"
|
||||
}</pre>
|
||||
<pre>HTTP 500: Internal Server Error
|
||||
{
|
||||
"success": false,
|
||||
"value": "writing",
|
||||
"message": "Something went wrong while writing the file to disk, the server may be out of storage space."
|
||||
}</pre>
|
||||
<pre>HTTP 413: Payload Too Large
|
||||
{
|
||||
"success": false,
|
||||
"value": "name_too_long",
|
||||
"message": "File Name is too long, Max 255 characters allowed."
|
||||
}</pre>
|
||||
</div>
|
||||
</details>
|
||||
{{end}}
|
||||
{{define "api-file-id-get"}}
|
||||
<details class="api_doc_details request_get">
|
||||
<summary><span class="method">GET</span>/file/{id}</summary>
|
||||
<div>
|
||||
<h3>Description</h3>
|
||||
<p>
|
||||
Returns the full file associated with the ID. Supports
|
||||
byte range requests.
|
||||
</p>
|
||||
<p>
|
||||
When '?download' is added to the URL the server will send an
|
||||
attachment header instead of inline rendering, which causes the
|
||||
browser to show a 'Save File' dialog.
|
||||
</p>
|
||||
<p>
|
||||
Warning: If a file is using too much bandwidth it can be rate
|
||||
limited. The rate limit will be enabled if a file has ten times more
|
||||
downloads than views. The owner of a file can always download it.
|
||||
When a file is rate limited the user will need to fill out a captcha
|
||||
in order to continue downloading the file. The captcha will only
|
||||
appear on the file viewer page (pixeldrain.com/u/{id}). Rate
|
||||
limiting has been added to prevent the spread of viruses and to stop
|
||||
direct linking.
|
||||
</p>
|
||||
<p>
|
||||
Pixeldrain also includes a virus scanner. If a virus has been
|
||||
detected in a file the user will also have to fill in a captcha to
|
||||
download it.
|
||||
</p>
|
||||
<h3>Parameters</h3>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Param</td>
|
||||
<td>Required</td>
|
||||
<td>Location</td>
|
||||
<td>Description</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>id</td>
|
||||
<td>true</td>
|
||||
<td>URL</td>
|
||||
<td>ID of the file to request</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>download</td>
|
||||
<td>false</td>
|
||||
<td>URL</td>
|
||||
<td>Sends file attachment instead of inline</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3>Returns</h3>
|
||||
<pre>HTTP 200: OK
|
||||
The requested file.
|
||||
</pre>
|
||||
|
||||
<pre>HTTP 404: Not Found
|
||||
{
|
||||
"success": false,
|
||||
"value": "not_found",
|
||||
"message": "The entity you requested could not be found"
|
||||
}
|
||||
</pre>
|
||||
<pre>HTTP 403: Forbidden
|
||||
{
|
||||
"success": false,
|
||||
"value": "file_rate_limited_captcha_required",
|
||||
"message": "This file is using too much bandwidth. For anonymous downloads a captcha is required now. The captcha entry is available on the download page"
|
||||
}
|
||||
</pre>
|
||||
<pre>HTTP 403: Forbidden
|
||||
{
|
||||
"success": false,
|
||||
"value": "virus_detected_captcha_required",
|
||||
"message": "This file has been marked as malware by our scanning systems. To avoid infecting other systems through automated downloads we require you to enter a captcha. The captcha entry is available on the download page"
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</details>
|
||||
{{end}}
|
||||
{{define "api-file-id-info-get"}}
|
||||
<details class="api_doc_details request_get">
|
||||
<summary><span class="method">GET</span>/file/{id}/info</summary>
|
||||
<div>
|
||||
<h3>Description</h3>
|
||||
<p>
|
||||
Returns information about one or more files.
|
||||
You can also put a comma separated list of file IDs in
|
||||
the URL and it will return an array of file info,
|
||||
instead of a single object.
|
||||
</p>
|
||||
<h3>Parameters</h3>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Param</td>
|
||||
<td>Required</td>
|
||||
<td>Location</td>
|
||||
<td>Description</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>id</td>
|
||||
<td>true</td>
|
||||
<td>URL</td>
|
||||
<td>ID(s) of the file</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3>Returns</h3>
|
||||
<pre>HTTP 200: OK
|
||||
{
|
||||
"success": true,
|
||||
"id": "1234abcd",
|
||||
"name": "screenshot.png",
|
||||
"date_upload": 2020-02-04T18:34:05.706801Z,
|
||||
"date_last_view": 2020-02-04T18:34:05.706801Z,
|
||||
"size": 5694837, // Bytes
|
||||
"views" 1234, // Amount of unique file views
|
||||
"bandwidth_used": 1234567890, // Bytes
|
||||
"mime_type" "image/png",
|
||||
"thumbnail_href": "/file/1234abcd/thumbnail" // Link to a thumbnail of this file
|
||||
}</pre>
|
||||
<pre>HTTP 404: Not Found
|
||||
{
|
||||
"success": false,
|
||||
"value": "file_not_found"
|
||||
}</pre>
|
||||
</div>
|
||||
</details>
|
||||
{{end}}
|
||||
{{define "api-file-id-thumbnail-get"}}
|
||||
<details class="api_doc_details request_get">
|
||||
<summary><span class="method">GET</span>/file/{id}/thumbnail?width=x&height=x</summary>
|
||||
<div>
|
||||
<h3>Description</h3>
|
||||
<p>
|
||||
Returns a PNG thumbnail image representing the file. The thumbnail
|
||||
image will be 128x128 px by default. You can specify the width and
|
||||
height with parameters in the URL. The width and height parameters
|
||||
need to be a multiple of 16. So the allowed values are 16, 32, 48,
|
||||
64, 80, 96, 112 and 128. If a thumbnail cannot be generated for the
|
||||
file you will be redirected to a mime type image of 128x128 px.
|
||||
</p>
|
||||
<h3>Parameters</h3>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Param</td>
|
||||
<td>Required</td>
|
||||
<td>Location</td>
|
||||
<td>Description</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>id</td>
|
||||
<td>true</td>
|
||||
<td>URL</td>
|
||||
<td>ID of the file to get a thumbnail for</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>width</td>
|
||||
<td>false</td>
|
||||
<td>URL</td>
|
||||
<td>Width of the thumbnail image</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>height</td>
|
||||
<td>false</td>
|
||||
<td>URL</td>
|
||||
<td>Height of the thumbnail image</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3>Returns</h3>
|
||||
<p>
|
||||
A PNG image if a thumbnail can be generated. If a thumbnail cannot
|
||||
be generated you will get a 301 redirect to an image representing
|
||||
the type of the file.
|
||||
</p>
|
||||
</div>
|
||||
</details>
|
||||
{{end}}
|
||||
{{define "api-file-id-delete"}}
|
||||
<details class="api_doc_details request_delete">
|
||||
<summary><span class="method">DELETE</span>/file/{id}</summary>
|
||||
<div>
|
||||
<h3>Description</h3>
|
||||
<p>
|
||||
Deletes a file. Only works when the users owns the file.
|
||||
</p>
|
||||
<h3>Parameters</h3>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Param</td>
|
||||
<td>Required</td>
|
||||
<td>Location</td>
|
||||
<td>Description</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>id</td>
|
||||
<td>true</td>
|
||||
<td>URL</td>
|
||||
<td>ID of the file to delete</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3>Returns</h3>
|
||||
<pre>HTTP 200: OK
|
||||
{
|
||||
"success": true,
|
||||
"value": "file_deleted",
|
||||
"message": "The file has been deleted."
|
||||
}</pre>
|
||||
<pre>HTTP 404: Not Found
|
||||
{
|
||||
"success": false,
|
||||
"value": "file_not_found",
|
||||
"message": "File ID was not found in the database."
|
||||
}</pre>
|
||||
<pre>HTTP 401: Unauthorized
|
||||
{
|
||||
"success": false,
|
||||
"value": "unauthorized",
|
||||
"message": "You are not logged in."
|
||||
}</pre>
|
||||
<pre>HTTP 403: Forbidden
|
||||
{
|
||||
"success": false,
|
||||
"value": "forbidden",
|
||||
"message": "This is not your file."
|
||||
}</pre>
|
||||
</div>
|
||||
</details>
|
||||
{{end}}
|
@@ -1,162 +0,0 @@
|
||||
{{define "api-filesystem-path-post"}}
|
||||
<details class="api_doc_details request_post">
|
||||
<summary><span class="method">POST</span>/filesystem/{path}</summary>
|
||||
<div>
|
||||
<h3>Description</h3>
|
||||
<p>
|
||||
Creates a new directory or uploads a file to an existing directory.
|
||||
</p>
|
||||
|
||||
<h3>Parameters</h3>
|
||||
<p>
|
||||
The form parameters <b>must</b> be sent in the order displayed below
|
||||
for the realtime error checking to work. If 'name' comes after
|
||||
'file' it will be ignored.
|
||||
</p>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Param</td>
|
||||
<td>Location</td>
|
||||
<td>Description</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>type</td>
|
||||
<td>Form Values</td>
|
||||
<td>The type of node to create, can either be 'directory', or 'file'</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>name</td>
|
||||
<td>Form Values</td>
|
||||
<td>
|
||||
Name of the directory to create, or of file to create. Not
|
||||
required if 'type' is 'file'
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>file</td>
|
||||
<td>Form Values</td>
|
||||
<td>
|
||||
Multipart file to upload to the directory. Will be ignored
|
||||
if 'type' is 'directory'
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h3>Returns</h3>
|
||||
<pre>HTTP 200: OK
|
||||
{
|
||||
"success": true,
|
||||
"id": "abc123" // ID of the newly uploaded file
|
||||
}</pre>
|
||||
todo
|
||||
</div>
|
||||
</details>
|
||||
{{end}}
|
||||
{{define "api-filesystem-path-get"}}
|
||||
<details class="api_doc_details request_get">
|
||||
<summary><span class="method">GET</span>/filesystem/{path}</summary>
|
||||
<div>
|
||||
<h3>Description</h3>
|
||||
<p>
|
||||
Returns information about the requested path.
|
||||
</p>
|
||||
<h3>Parameters</h3>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Param</td>
|
||||
<td>Required</td>
|
||||
<td>Location</td>
|
||||
<td>Description</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>path</td>
|
||||
<td>true</td>
|
||||
<td>URL</td>
|
||||
<td>Path to the directory or file to request</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>download</td>
|
||||
<td>false</td>
|
||||
<td>URL</td>
|
||||
<td>
|
||||
If the URL paramater '?download' is passed the requested
|
||||
file will be downloaded (if it is a file)
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3>Returns</h3>
|
||||
<h4>When the requested entity is a directory:</h4>
|
||||
<pre>HTTP 200: OK
|
||||
{
|
||||
"success": true,
|
||||
"name": "some dir",
|
||||
"path": "/some dir",
|
||||
"type": "directory",
|
||||
"child_directories": [
|
||||
{
|
||||
"name": "some other directory",
|
||||
"type": "directory",
|
||||
"path": "/some dir/some other directory"
|
||||
}
|
||||
],
|
||||
"child_files": [
|
||||
{
|
||||
"name": "11. Lenny Kravitz - Fly away.ogg",
|
||||
"type": "file",
|
||||
"path": "/some dir/11. Lenny Kravitz - Fly away.ogg"
|
||||
}
|
||||
]
|
||||
}</pre>
|
||||
<h4>When the requested entity is a file:</h4>
|
||||
<pre>HTTP 200: OK
|
||||
{
|
||||
"success": true,
|
||||
"name": "11. Lenny Kravitz - Fly away.ogg",
|
||||
"path": "/some dir/11. Lenny Kravitz - Fly away.ogg",
|
||||
"type": "file",
|
||||
"file_info": {
|
||||
"success": true,
|
||||
"id": "Jf_u5TI9",
|
||||
"name": "11. Lenny Kravitz - Fly away.ogg",
|
||||
"date_upload": "2018-07-04T22:24:48Z",
|
||||
"date_last_view": "2018-07-04T22:24:48Z",
|
||||
"size": 9757269,
|
||||
"views": 0,
|
||||
"mime_type": "application/ogg",
|
||||
"thumbnail_href": "/file/Jf_u5TI9/thumbnail"
|
||||
}
|
||||
}</pre>
|
||||
</div>
|
||||
</details>
|
||||
{{end}}
|
||||
{{define "api-filesystem-path-delete"}}
|
||||
<details class="api_doc_details request_delete">
|
||||
<summary><span class="method">DELETE</span>/filesystem/{path}</summary>
|
||||
<div>
|
||||
<h3>Description</h3>
|
||||
<p>
|
||||
Deletes a filesystem node.
|
||||
</p>
|
||||
<h3>Parameters</h3>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Param</td>
|
||||
<td>Required</td>
|
||||
<td>Location</td>
|
||||
<td>Description</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>path</td>
|
||||
<td>true</td>
|
||||
<td>URL</td>
|
||||
<td>Path of the entity to delete</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3>Returns</h3>
|
||||
<pre>HTTP 200: OK
|
||||
{
|
||||
"success": true
|
||||
}</pre>
|
||||
</div>
|
||||
</details>
|
||||
{{end}}
|
@@ -1,180 +0,0 @@
|
||||
{{define "api-list-post"}}
|
||||
<details class="api_doc_details request_post">
|
||||
<summary><span class="method">POST</span>/list</summary>
|
||||
<div>
|
||||
<h3>Description</h3>
|
||||
<p>
|
||||
Creates a list of files that can be viewed together on the file
|
||||
viewer page.
|
||||
</p>
|
||||
<h3>Parameters</h3>
|
||||
<p>
|
||||
POST body should be a JSON object, example below. A list can contain
|
||||
maximally 10000 files. If you try to add more the request will fail.
|
||||
</p>
|
||||
<h4>Example</h4>
|
||||
<pre>
|
||||
{
|
||||
"title": "My beautiful photos", // Defaults to "Pixeldrain List"
|
||||
"anonymous": false / true, // If true this list will not be linked to your user account. Defaults to "false"
|
||||
"files": [ // Ordered array of files to add to the list
|
||||
{
|
||||
"id": "abc123",
|
||||
"description": "First photo of the week, such a beautiful valley"
|
||||
},
|
||||
{
|
||||
"id": "123abc",
|
||||
"description": "The week went by so quickly, here's a photo from the plane back"
|
||||
}
|
||||
]
|
||||
}
|
||||
</pre>
|
||||
<h3>Returns</h3>
|
||||
<pre>HTTP 200: OK
|
||||
{
|
||||
"success": true,
|
||||
"id": "yay137" // ID of the newly created list
|
||||
}
|
||||
</pre>
|
||||
<pre>HTTP 422: Unprocessable Entity
|
||||
{
|
||||
"success": false,
|
||||
"value": "list_file_not_found",
|
||||
"message": "File Oh42No was not found in the database.",
|
||||
"extra": {
|
||||
"file_not_found": "0h42No" // The file you tried to add with this ID does not exist
|
||||
}
|
||||
}
|
||||
</pre>
|
||||
<pre>HTTP 413: Payload too large
|
||||
{
|
||||
"success": false,
|
||||
"value": "too_many_files",
|
||||
"message": "This list contains too many files, max 10000 allowed."
|
||||
}
|
||||
</pre>
|
||||
<pre>HTTP 422: Unprocessable Entity
|
||||
{
|
||||
"success": false,
|
||||
"value": "json_parse_failed",
|
||||
"message": "The JSON object in the request body could not be read."
|
||||
}
|
||||
</pre>
|
||||
<pre>HTTP 413: Payload too large
|
||||
{
|
||||
"success": false,
|
||||
"value": "title_too_long",
|
||||
"message": "The title of this list is too long, max 300 characters allowed."
|
||||
}
|
||||
</pre>
|
||||
<pre>HTTP 413: Payload too large
|
||||
{
|
||||
"success": false,
|
||||
"value": "description_too_long",
|
||||
"message": "The description of one of the files in the list is too long, max 3000 characters allowed."
|
||||
}
|
||||
</pre>
|
||||
<pre>HTTP 422: Unprocessable Entity
|
||||
{
|
||||
"success": false,
|
||||
"value": "cannot_create_empty_list",
|
||||
"message": "You cannot make a list with no files."
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</details>
|
||||
{{end}}
|
||||
{{define "api-list-get"}}
|
||||
<details class="api_doc_details request_get">
|
||||
<summary><span class="method">GET</span>/list/{id}</summary>
|
||||
<div>
|
||||
<h3>Description</h3>
|
||||
<p>
|
||||
Returns information about a file list and the files in it.
|
||||
</p>
|
||||
<h3>Parameters</h3>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Param</td>
|
||||
<td>Required</td>
|
||||
<td>Location</td>
|
||||
<td>Description</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>id</td>
|
||||
<td>true</td>
|
||||
<td>URL</td>
|
||||
<td>ID of the list</td>
|
||||
</tr>
|
||||
</table>
|
||||
<h3>Returns</h3>
|
||||
<p>
|
||||
The API will return some basic information about every file.
|
||||
Every file also has a "detail_href" field which contains a URL
|
||||
to the info API of the file. Follow that link to get more
|
||||
information about the file like size, checksum, mime type, etc.
|
||||
The address is relative to the API URL and should be appended to
|
||||
the end.
|
||||
</p>
|
||||
<pre>HTTP 200: OK
|
||||
{
|
||||
"success": true,
|
||||
"id": "L8bhwx",
|
||||
"title": "Rust in Peace",
|
||||
"date_created": 2020-02-04T18:34:13.466276Z,
|
||||
"files": [
|
||||
// These structures are the same as the file info response, except for the detail_href and description fields
|
||||
{
|
||||
"detail_href": "/file/_SqVWi/info",
|
||||
"description": "",
|
||||
"success": true,
|
||||
"id": "_SqVWi",
|
||||
"name": "01 Holy Wars... The Punishment Due.mp3",
|
||||
"size": 123456,
|
||||
"date_created": 2020-02-04T18:34:13.466276Z,
|
||||
"date_last_view": 2020-02-04T18:34:13.466276Z,
|
||||
"mime_type": "audio/mp3",
|
||||
"views": 1,
|
||||
"bandwidth_used": 1234567890,
|
||||
"thumbnail_href": "/file/_SqVWi/thumbnail"
|
||||
},
|
||||
{
|
||||
"detail_href": "/file/RKwgZb/info",
|
||||
"description": "",
|
||||
"success": true,
|
||||
"id": "RKwgZb",
|
||||
"name": "02 Hangar 18.mp3",
|
||||
"size": 123456,
|
||||
"date_created": 2020-02-04T18:34:13.466276Z,
|
||||
"date_last_view": 2020-02-04T18:34:13.466276Z,
|
||||
"mime_type": "audio/mp3",
|
||||
"views": 2,
|
||||
"bandwidth_used": 1234567890,
|
||||
"thumbnail_href": "/file/RKwgZb/thumbnail"
|
||||
},
|
||||
{
|
||||
"detail_href": "/file/DRaL_e/info",
|
||||
"description": "",
|
||||
"success": true,
|
||||
"id": "DRaL_e",
|
||||
"name": "03 Take No Prisoners.mp3",
|
||||
"size": 123456,
|
||||
"date_created": 2020-02-04T18:34:13.466276Z,
|
||||
"date_last_view": 2020-02-04T18:34:13.466276Z,
|
||||
"mime_type": "audio/mp3",
|
||||
"views": 3,
|
||||
"bandwidth_used": 1234567890,
|
||||
"thumbnail_href": "/file/DRaL_e/thumbnail"
|
||||
}
|
||||
]
|
||||
}
|
||||
</pre>
|
||||
<pre>HTTP 404: Not Found
|
||||
{
|
||||
"success": false,
|
||||
"value": "list_not_found",
|
||||
}
|
||||
</pre>
|
||||
</div>
|
||||
</details>
|
||||
{{end}}
|
18
res/template/fragments/markdown_wrapper.html
Normal file
18
res/template/fragments/markdown_wrapper.html
Normal file
@@ -0,0 +1,18 @@
|
||||
{{define "markdown_wrapper"}}<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
{{template "meta_tags" .Title}}
|
||||
{{template "user_style" .}}
|
||||
</head>
|
||||
|
||||
<body>
|
||||
{{template "page_top" .}}
|
||||
<h1>{{.Title}}</h1>
|
||||
<div class="page_content"><div class="limit_width">
|
||||
{{.Other}}
|
||||
</div></div>
|
||||
{{template "page_bottom" .}}
|
||||
{{template "analytics"}}
|
||||
</body>
|
||||
</html>
|
||||
{{end}}
|
Reference in New Issue
Block a user