support markdown pages
This commit is contained in:
79
res/include/md/about.md
Normal file
79
res/include/md/about.md
Normal file
@@ -0,0 +1,79 @@
|
||||
# Questions and Answers
|
||||
|
||||
## For how long will my files be stored?
|
||||
|
||||
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).
|
||||
|
||||
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.
|
||||
|
||||
## Does pixeldrain cost any money?
|
||||
|
||||
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:
|
||||
|
||||
* <a href="https://www.patreon.com/join/pixeldrain" target="_blank">
|
||||
{{template `patreon.svg` .}} Support me on Patreon and get some perks too!
|
||||
</a>
|
||||
* Bitcoin:
|
||||
[1Ne7hGuvnfz9EFTRD3PLWVeaJTX9oA1QUr](bitcoin:1Ne7hGuvnfz9EFTRD3PLWVeaJTX9oA1QUr?label=Pixeldrain%20Donation)
|
||||
* 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.
|
||||
* Siacoin:
|
||||
26117c19ca3975b315d663dcbbc19cf9c07274f441689d4392ed380b2337589ef1aacfbdc93f
|
||||
(this address points directly at the storage backend. Donations will be used
|
||||
for paying storage contracts with Sia hosts)
|
||||
* 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>
|
||||
|
||||
## Do I need to register an account?
|
||||
|
||||
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 [history page](/history).
|
||||
This page only shows files which were uploaded anonymously in this web browser.
|
||||
|
||||
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 [personal home
|
||||
page](/user).
|
||||
|
||||
## What cookies does pixeldrain use?
|
||||
|
||||
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.
|
||||
|
||||
When you use the style selector on the [Appearance](/appearance) page a cookie
|
||||
called 'style' will be set. This cookie controls the appearance of the website
|
||||
for you.
|
||||
|
||||
When uploading a file pixeldrain will save a list of file links on your
|
||||
browser's local storage. This data is **only** used for viewing your upload
|
||||
history on the [history page](/history).
|
||||
|
||||
## Legality
|
||||
|
||||
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
|
||||
[abuse@pixeldrain.com](mailto:abuse@pixeldrain.com), and I'll take care of it.
|
||||
|
||||
Please share responsibly.
|
||||
|
||||
For other questions you can reach me at
|
||||
[support@pixeldrain.com](mailto:support@pixeldrain.com)
|
644
res/include/md/apidoc.md
Normal file
644
res/include/md/apidoc.md
Normal file
@@ -0,0 +1,644 @@
|
||||
# Pixeldrain API documentation
|
||||
|
||||
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 **do** require an API key.
|
||||
|
||||
API keys can be obtained from the login API.
|
||||
|
||||
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".
|
||||
|
||||
The base URL for the API is "{{apiUrl}}", all paths below are relative to that
|
||||
URL.
|
||||
|
||||
## Form value order
|
||||
|
||||
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.
|
||||
|
||||
## File Methods
|
||||
|
||||
<details class="request_post">
|
||||
<summary><span class="method">POST</span>/file</summary>
|
||||
<div>
|
||||
|
||||
### Description
|
||||
|
||||
Upload a file.
|
||||
|
||||
### Parameters
|
||||
|
||||
Param | Type | Required | Maximum Size | Default | Description
|
||||
----------|----------------|----------|----------------|---------------------|-----------------------------------
|
||||
name | string | false | 255 characters | multipart file name | Name of the file to upload
|
||||
anonymous | boolean | false | N/A | false | File is not linked to user if true
|
||||
file | multipart file | true | 1000^3 bytes | none | File to upload
|
||||
|
||||
### Returns
|
||||
|
||||
HTTP 200: OK
|
||||
```
|
||||
{
|
||||
"success": true,
|
||||
"id": "abc123" // ID of the newly uploaded file
|
||||
}
|
||||
```
|
||||
|
||||
HTTP 422: Unprocessable Entity
|
||||
```
|
||||
{
|
||||
"success": false,
|
||||
"value": "no_file",
|
||||
"message": "The file does not exist or is empty."
|
||||
}
|
||||
```
|
||||
|
||||
HTTP 500: Internal Server Error
|
||||
```
|
||||
{
|
||||
"success": false,
|
||||
"value": "internal",
|
||||
"message": "An internal server error occurred."
|
||||
}
|
||||
```
|
||||
|
||||
HTTP 413: Payload Too Large
|
||||
```
|
||||
{
|
||||
"success": false,
|
||||
"value": "file_too_large",
|
||||
"message": "The file you tried to upload is too large"
|
||||
}
|
||||
```
|
||||
|
||||
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."
|
||||
}
|
||||
```
|
||||
|
||||
HTTP 413: Payload Too Large
|
||||
```
|
||||
{
|
||||
"success": false,
|
||||
"value": "name_too_long",
|
||||
"message": "File Name is too long, Max 255 characters allowed."
|
||||
}
|
||||
```
|
||||
</div>
|
||||
</details>
|
||||
|
||||
<details class="api_doc_details request_get">
|
||||
<summary><span class="method">GET</span>/file/{id}</summary>
|
||||
<div>
|
||||
|
||||
### Description
|
||||
|
||||
Returns the full file associated with the ID. Supports byte range requests.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
### Parameters
|
||||
|
||||
Param | Required | Location | Description
|
||||
---------|----------|----------|------------------------------------------
|
||||
id | true | URL | ID of the file to request
|
||||
download | false | URL | Sends attachment header instead of inline
|
||||
|
||||
### Returns
|
||||
|
||||
```
|
||||
HTTP 200: OK
|
||||
|
||||
Requested file data
|
||||
```
|
||||
|
||||
HTTP 404: Not Found
|
||||
```
|
||||
{
|
||||
"success": false,
|
||||
"value": "not_found",
|
||||
"message": "The entity you requested could not be found"
|
||||
}
|
||||
```
|
||||
|
||||
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"
|
||||
}
|
||||
```
|
||||
|
||||
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"
|
||||
}
|
||||
```
|
||||
</div>
|
||||
</details>
|
||||
|
||||
<details class="api_doc_details request_get">
|
||||
<summary><span class="method">GET</span>/file/{id}/info</summary>
|
||||
<div>
|
||||
|
||||
### Description
|
||||
|
||||
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.
|
||||
|
||||
### Parameters
|
||||
|
||||
Param | Required | Location | Description
|
||||
------|----------|----------|---------------
|
||||
id | true | URL | ID of the file
|
||||
|
||||
### Returns
|
||||
|
||||
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
|
||||
}
|
||||
```
|
||||
|
||||
HTTP 404: Not Found
|
||||
```
|
||||
{
|
||||
"success": false,
|
||||
"value": "file_not_found"
|
||||
}
|
||||
```
|
||||
</div>
|
||||
</details>
|
||||
|
||||
<!--
|
||||
<details class="api_doc_details request_get">
|
||||
<summary><span class="method">GET</span>/file/{id}/thumbnail?width=x&height=x</summary>
|
||||
<div>
|
||||
|
||||
### Description
|
||||
|
||||
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.
|
||||
|
||||
### Parameters
|
||||
|
||||
Param | Required | Location | Description
|
||||
-------|----------|----------|--------------------------------------
|
||||
id | true | URL | ID of the file to get a thumbnail for
|
||||
width | false | URL | Width of the thumbnail image
|
||||
height | false | URL | Height of the thumbnail image
|
||||
|
||||
### Returns
|
||||
|
||||
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.
|
||||
</div>
|
||||
</details>
|
||||
|
||||
<details class="api_doc_details request_delete">
|
||||
<summary><span class="method">DELETE</span>/file/{id}</summary>
|
||||
<div>
|
||||
|
||||
### Description
|
||||
|
||||
Deletes a file. Only works when the users owns the file.
|
||||
|
||||
### Parameters
|
||||
|
||||
Param | Required | Location | Description
|
||||
------|----------|----------|-------------------------
|
||||
id | true | URL | ID of the file to delete
|
||||
|
||||
### Returns
|
||||
|
||||
HTTP 200: OK
|
||||
```
|
||||
{
|
||||
"success": true,
|
||||
"value": "file_deleted",
|
||||
"message": "The file has been deleted."
|
||||
}
|
||||
```
|
||||
|
||||
HTTP 404: Not Found
|
||||
```
|
||||
{
|
||||
"success": false,
|
||||
"value": "file_not_found",
|
||||
"message": "File ID was not found in the database."
|
||||
}
|
||||
```
|
||||
|
||||
HTTP 401: Unauthorized
|
||||
```
|
||||
{
|
||||
"success": false,
|
||||
"value": "unauthorized",
|
||||
"message": "You are not logged in."
|
||||
}
|
||||
```
|
||||
|
||||
HTTP 403: Forbidden
|
||||
```
|
||||
{
|
||||
"success": false,
|
||||
"value": "forbidden",
|
||||
"message": "This is not your file."
|
||||
}
|
||||
```
|
||||
</div>
|
||||
</details>
|
||||
-->
|
||||
|
||||
## List Methods
|
||||
|
||||
<details class="api_doc_details request_post">
|
||||
<summary><span class="method">POST</span>/list</summary>
|
||||
<div>
|
||||
|
||||
### Description
|
||||
|
||||
Creates a list of files that can be viewed together on the file viewer page.
|
||||
|
||||
### Parameters
|
||||
|
||||
POST body should be a JSON object, example below. A list can contain at most
|
||||
10000 files. If you try to add more the request will fail.
|
||||
|
||||
#### Example
|
||||
```
|
||||
{
|
||||
"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"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### Returns
|
||||
|
||||
HTTP 200: OK
|
||||
```
|
||||
{
|
||||
"success": true,
|
||||
"id": "yay137" // ID of the newly created list
|
||||
}
|
||||
```
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
HTTP 413: Payload too large
|
||||
```
|
||||
{
|
||||
"success": false,
|
||||
"value": "too_many_files",
|
||||
"message": "This list contains too many files, max 10000 allowed."
|
||||
}
|
||||
```
|
||||
|
||||
HTTP 422: Unprocessable Entity
|
||||
```
|
||||
{
|
||||
"success": false,
|
||||
"value": "json_parse_failed",
|
||||
"message": "The JSON object in the request body could not be read."
|
||||
}
|
||||
```
|
||||
|
||||
HTTP 413: Payload too large
|
||||
```
|
||||
{
|
||||
"success": false,
|
||||
"value": "title_too_long",
|
||||
"message": "The title of this list is too long, max 300 characters allowed."
|
||||
}
|
||||
```
|
||||
|
||||
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."
|
||||
}
|
||||
```
|
||||
|
||||
HTTP 422: Unprocessable Entity
|
||||
```
|
||||
{
|
||||
"success": false,
|
||||
"value": "cannot_create_empty_list",
|
||||
"message": "You cannot make a list with no files."
|
||||
}
|
||||
```
|
||||
</div>
|
||||
</details>
|
||||
|
||||
<details class="api_doc_details request_get">
|
||||
<summary><span class="method">GET</span>/list/{id}</summary>
|
||||
<div>
|
||||
|
||||
### Description
|
||||
|
||||
Returns information about a file list and the files in it.
|
||||
|
||||
### Parameters
|
||||
|
||||
|
||||
Param | Required | Location | Description
|
||||
------|----------|----------|---------------
|
||||
id | true | URL | ID of the list
|
||||
|
||||
### Returns
|
||||
|
||||
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.
|
||||
|
||||
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"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
HTTP 404: Not Found
|
||||
```
|
||||
{
|
||||
"success": false,
|
||||
"value": "list_not_found",
|
||||
}
|
||||
```
|
||||
</div>
|
||||
</details>
|
||||
|
||||
<!-- ## Filesystem Methods
|
||||
<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>
|
||||
|
||||
<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>
|
||||
|
||||
<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> -->
|
25
res/include/md/donation.md
Normal file
25
res/include/md/donation.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# Thank you for supporting pixeldrain!
|
||||
|
||||
{{$success := .URLQuery.Get "success"}}
|
||||
{{if eq $success "true"}}
|
||||
{{if .Authenticated}}
|
||||
Dear {{.User.Username}},
|
||||
|
||||
Thank you for your donation. I really appreciate it!
|
||||
|
||||
Sincerely, Fornax.
|
||||
{{else}}
|
||||
Thank you for your donation! You are amazing.
|
||||
|
||||
Sincerely, Fornax.
|
||||
{{end}}
|
||||
{{else}}
|
||||
It seems you have canceled your donation. I don't blame you, money is expensive :)
|
||||
|
||||
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>
|
||||
|
||||
Sincerely, Fornax.
|
||||
{{end}}
|
@@ -305,7 +305,7 @@ a:hover {text-decoration: underline;}
|
||||
}
|
||||
table:not(.form) {border-collapse: collapse; width: 100%;}
|
||||
tr:not(.form) {border-bottom: 1px var(--layer_2_color_border) solid;}
|
||||
tr > td {padding: 0.3em;}
|
||||
tr > td, tr > th {padding: 0.3em;}
|
||||
@media(max-width: 30em) {
|
||||
/* Forms will be stacked on small screens */
|
||||
tr.form > td {
|
||||
@@ -319,7 +319,7 @@ tr > td {padding: 0.3em;}
|
||||
pre{
|
||||
padding: 2px;
|
||||
border-bottom: 1px var(--layer_2_color_border) solid;
|
||||
overflow-x: scroll;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.big_button{
|
||||
@@ -371,6 +371,31 @@ pre{
|
||||
color: var(--highlight_color);
|
||||
}
|
||||
|
||||
/* API documentation markup */
|
||||
|
||||
details {
|
||||
border-top: 1px solid;
|
||||
border-bottom: 1px solid;
|
||||
margin: 15px 0 15px 0;
|
||||
}
|
||||
details > summary {
|
||||
padding: 2px;
|
||||
font-family: monospace;
|
||||
}
|
||||
details > summary > .method {
|
||||
display: inline-block;
|
||||
width: 80px;
|
||||
}
|
||||
details > div {
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
details.request_get { border-color: #3636ff; background-color: rgba(32, 32, 255, 0.2); }
|
||||
details.request_post { border-color: #00d000; background-color: rgba(0, 255, 0, 0.05); }
|
||||
details.request_delete { border-color: #B00000; background-color: rgba(255, 0, 0, 0.05); }
|
||||
details.request_put { border-color: #B06000; background-color: rgba(255, 128, 0, 0.05); }
|
||||
details.request_patch { border-color: #6000B0; background-color: rgba(128, 0, 255, 0.1); }
|
||||
|
||||
/* Form fields */
|
||||
|
||||
.form_input {width: 100%;}
|
||||
|
Reference in New Issue
Block a user