mirror of
https://github.com/rikkaneko/paste.git
synced 2025-09-23 05:10:10 +01:00
Add support to generate QR code for paste link
This commit is contained in:
parent
f7273ceb79
commit
fb3f8d1ef1
5 changed files with 187 additions and 123 deletions
27
README.md
27
README.md
|
@ -1,4 +1,5 @@
|
|||
# Paste
|
||||
|
||||
This is a pastebin-like, simple file sharing application targeted to run on Cloudflare Worker.
|
||||
[pb.nekoul.com](http://pb.nekoul.com) is the current deployment of this project.
|
||||
The maximum upload file size is limited to **10 MB** and the paste will be kept for **28 days** only by default.
|
||||
|
@ -6,6 +7,7 @@ The maximum upload file size is limited to **10 MB** and the paste will be kept
|
|||
Please **DO NOT** abuse this service.
|
||||
|
||||
## Supported features
|
||||
|
||||
- [x] Upload paste
|
||||
- [x] Download paste
|
||||
- [x] Delete paste
|
||||
|
@ -15,8 +17,10 @@ Please **DO NOT** abuse this service.
|
|||
- [x] View paste in browsers (only for text and media file)
|
||||
- [ ] Expiring paste (*not support directly, see [this section](#expiring-paste)*)
|
||||
- [ ] Render paste code with syntax highlighting
|
||||
- [x] Generate QR code for paste link
|
||||
|
||||
## Service architecture
|
||||
|
||||
This project is designed to use a S3-compatible object storage (via [aws4fetch](https://github.com/mhart/aws4fetch)) as the backend storage
|
||||
and [Cloudflare Worker KV](https://developers.cloudflare.com/workers/runtime-apis/kv) as index.
|
||||
All requests are handled by [Cloudflare Worker](https://developers.cloudflare.com/workers) with the entry point `fetch()`.
|
||||
|
@ -24,6 +28,7 @@ It is worth noting that Cloudflare Worker is run *before* the cache. Therefore,
|
|||
[Cache API](https://developers.cloudflare.com/workers/runtime-apis/cache/) is used instead to interact with Cloudflare cache.
|
||||
|
||||
## Environment variable
|
||||
|
||||
|Name|Description|
|
||||
|-|-|
|
||||
|`SERVICE_URL`|The URL of the service|
|
||||
|
@ -38,26 +43,36 @@ It is worth noting that Cloudflare Worker is run *before* the cache. Therefore,
|
|||
**`AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY` and `ENDPOINT` should be kept secret, i.e., [put into the encrypted store](https://developers.cloudflare.com/workers/platform/environment-variables/#adding-secrets-via-wrangler).**
|
||||
|
||||
## API Specification
|
||||
|
||||
### GET /
|
||||
|
||||
Fetch the Web frontpage HTML for uploading text/file (used for browsers)
|
||||
|
||||
### GET /api
|
||||
|
||||
Fetch API specification
|
||||
|
||||
### GET /\<uuid\>
|
||||
Fetch the paste by uuid. *If the password is set, this request requires additional `x-pass` header or to use [HTTP Basic authentication](https://en.wikipedia.org/wiki/Basic_access_authentication).*
|
||||
|
||||
Fetch the paste by uuid. *If the password is set, this request requires additional `x-pass` header or to
|
||||
use [HTTP Basic authentication](https://en.wikipedia.org/wiki/Basic_access_authentication).*
|
||||
|
||||
### POST /
|
||||
Create new paste. Currently, only `multipart/form-data` and raw request are supported.
|
||||
|
||||
Create new paste. Currently, only `multipart/form-data` and raw request are supported.
|
||||
Add `?qr=1` to enable QR code generation for paste link.
|
||||
|
||||
#### For `multipart/form-data` request,
|
||||
|Form Key|Description|
|
||||
|
||||
|Form Key|Description|
|
||||
|-|-|
|
||||
|`u`|Upload content|
|
||||
|`pass`|Paste's password|
|
||||
|`read-limit`|The maximum access count|
|
||||
|`qrcode`|Toggle QR code generation|
|
||||
|
||||
#### For raw request,
|
||||
|
||||
|Header Key|Description|
|
||||
|-|-|
|
||||
|`content-type`|The media type (MIME) of the data and encoding|
|
||||
|
@ -68,7 +83,9 @@ Create new paste. Currently, only `multipart/form-data` and raw request are supp
|
|||
The request body contains the upload content.
|
||||
|
||||
### GET /\<uuid\>/\<option\> (Not implemented)
|
||||
|
||||
Fetch the paste (code) in rendered HTML with syntax highlighting
|
||||
Add `?qr=1` to enable QR code generation for paste link.
|
||||
Currently, only the following options is supported for `option`
|
||||
|Option|Meaning|
|
||||
|-|-|
|
||||
|
@ -79,17 +96,21 @@ Currently, only the following options is supported for `option`
|
|||
*The authentication requirement is as same as `GET /<uuid>`.*
|
||||
|
||||
### DELETE /\<uuid\>
|
||||
|
||||
Delete paste by uuid. *If the password is set, this request requires additional `x-pass` header*
|
||||
|
||||
### POST /\<uuid\>/settings (Not implemented)
|
||||
|
||||
Update paste setting. *If the password is set, this request requires additional `x-pass` header*
|
||||
|
||||
## Expiring paste
|
||||
|
||||
S3 object lifecycle rules and Cloudflare KV's expiring key can be used to implemented expiring paste.
|
||||
Reference for Amazon S3 can be found in [here](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)
|
||||
, and Blackblaze B2 in [here](https://www.backblaze.com/b2/docs/lifecycle_rules.html).
|
||||
|
||||
## Remark
|
||||
|
||||
You are welcome to use my project and depoly your own service.
|
||||
Due to the fact that the `SERVICE_URL` is hard-coded into the `paste.html`,
|
||||
you may simply use `Ctrl`+`R` to replace `pb.nekoul.com` with your own service URL.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue