{"id":16677335,"url":"https://github.com/kernelerr/courier-backend-v1","last_synced_at":"2026-04-29T02:09:47.994Z","repository":{"id":129726240,"uuid":"319995962","full_name":"KernelErr/courier-backend-v1","owner":"KernelErr","description":"北邮Paste Bin初代后端代码。","archived":false,"fork":false,"pushed_at":"2020-12-09T15:20:09.000Z","size":13,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-09T03:07:33.288Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KernelErr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-12-09T15:18:33.000Z","updated_at":"2020-12-09T15:20:52.000Z","dependencies_parsed_at":"2023-08-30T16:24:49.561Z","dependency_job_id":null,"html_url":"https://github.com/KernelErr/courier-backend-v1","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KernelErr%2Fcourier-backend-v1","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KernelErr%2Fcourier-backend-v1/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KernelErr%2Fcourier-backend-v1/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KernelErr%2Fcourier-backend-v1/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KernelErr","download_url":"https://codeload.github.com/KernelErr/courier-backend-v1/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243352035,"owners_count":20276916,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-12T13:26:02.429Z","updated_at":"2025-12-29T02:17:28.545Z","avatar_url":"https://github.com/KernelErr.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Courier Backend\n\n这是北邮Paste Bin，或内部代号Courier的初代后端代码，现以MPL 2.0协议开源。北邮Paste Bin是一款基于MongoDB和S3服务的代码、文件分享应用。\n\n## 依赖\n\n- FastAPI\n- S3-like\n- MongoDB\n\n## API参考文档\n\n#### 登录用户\n\nEndpoint: /v1/user\n\nMethod: Post\n\nBody: JSON\n\n```json\n{\n  \"username\": \"111\",\n  \"password\": \"123\",\n  \"type\": 1\n}\n```\n\nusername - 用户名\n\npassword - 密码\n\ntype - 认证类型，目前只有1\n\nResponse: JSON\n\n```json\n{\n    \"token\": \"RtqSjc21xkxEqD7e6hFn5vr37QpTFVa5\"\n}\n```\n\n代表当前用户的Token\n\n#### 上传代码/文件\n\nEndpoint: /v1/record\n\nMethod: Post\n\nAuthoritarian: Bearer Token\n\nBody: JSON\n\n```json\n{\n    \"nickname\":\"li\",\n    \"validPeriod\": 3,\n    \"contentType\": \"application/x-iso9660-image\",\n    \"contentLength\": 2502909952,\n    \"contentHash\": \"rA1gLZ8LdHJcADtqWhGShg==\",\n    \"filename\": \"System.iso\"\n}\n```\n\nnickname - 用户填写的昵称\n\nvalidPeriod - 有效期，整数天数\n\ncontentType - 文件类型，如果为代码的话使用“text/语言”，如\"text/python\"，文件则保持原状\n\ncontentLength - 文件长度\n\ncontentHash - 2进制MD5哈希后Base64，openssl的生成方法是`openssl dgst -md5 -binary System.iso | base64`\n\nfileName - 文件名称，注意，如果用户没有指定代码的文件名称的话，那就生成`语言 日期.后缀`，如`Python 2020-11-3 21:24.py`\n\nResponse: JSON\n\n```json\n{\n    \"link\": \"BKMTjFc3\",\n    \"validPeriod\": 3,\n    \"endpoint\": \"http://127.0.0.1:9000/***********\",\n    \"headers\": {\n        \"Content-Type\": \"application/x-iso9660-image\",\n        \"Content-Length\": 2502909952,\n        \"Content-MD5\": \"rA1gLZ8LdHJcADtqWhGShg==\",\n        \"x-amz-meta-link\": \"QktNVGpGYzM=\",\n        \"x-amz-meta-nickname\": \"bGk=\",\n        \"x-amz-meta-filename\": \"*********\",\n        \"x-amz-meta-validperiod\": \"Mw==\",\n        \"x-amz-meta-token\": \"*********\",\n        \"x-amz-meta-crypto\": \"*********\"\n    },\n    \"cURL\": \"curl -X PUT -H 'Content-Type: application/x-iso9660-image' -H 'Content-Length: 2502909952' -H 'Content-MD5: rA1gLZ8LdHJcADtqWhGShg==' -H 'x-amz-meta-link: QktNVGpGYzM=' -H 'x-amz-meta-nickname: bGk=' -H 'x-amz-meta-filename: V2luZG93c183XzMy5L2NX+S4reaWh+S4k+S4mueJiC5pc28=' -H 'x-amz-meta-validperiod: Mw==' -H 'x-amz-meta-token: U2wrOVUvZk1FT0xrb240Uzg2VDRheVZYK1BVYkZnOGQ4OVRHTjhEeUJtbz0=' -H 'x-amz-meta-crypto: ZmtyMGJSSkJxZTJEVGpRS0lnb1Bmdz09' 'http://127.0.0.1:9000/***********' --data-binary [CURLFILE]\"\n}\n```\n\nlink - 生成的短链接\n\nvalidPeriod - 有效期，用于确认\n\nendpoint - 上传文件的链接，直接put即可\n\nheaders - 上传文件应该带有的header，错误即无法上传\n\ncURL - cURL命令示例\n\n#### 下载文件\n\n有两个链接，用户从 http://domain/s/link 或者 http://domain/raw/link 进入\n\n##### s\n\n这时候会从后台查询数据展示在网页上，注意判断是文件还是代码。（如果文件类型以text开头且大小小于3M算代码，否则让用户下载）\n\nEndpoint: v1/record/{link}\n\nMethod: Get\n\nResponse: JSON\n\n```json\n{\n    \"link\": \"HY3UZRbp\",\n    \"nickname\": \"li\",\n    \"filename\": \"sun.png\",\n    \"contentType\": \"image/png\",\n    \"contentLength\": 4039,\n    \"contentHash\": \"398319897239c86b21ad901f88dc4a4b\",\n    \"visitTimes\": 2,\n    \"endpoint\": \"http://127.0.0.1:9000/***********\"\n}\n```\n\nlink - 链接\n\nnickname - 上传者昵称\n\nfilename - 文件名\n\ncontentType - 文件类型\n\ncontentLength - 文件大小\n\ncontentHash - 十进制的md5，`md5sum`即可生成\n\nvisitTimes - 访问次数\n\nendpoint - 直链下载地址\n\n##### raw\n\n会直接跳转到下载的直链地址，可以直接放进第三方下载工具。\n\nEndpoint: /raw/{link}\n\n## 搭建开发环境\n\n1. 修改 `utils/config.py` 中的相关配置。\n\n2. 安装Python依赖:\n\n   ```\n   python -m pip install -r requirements.txt\n   ```\n\n3. 运行！\n\n   ```\n   uvicorn main:app --reload\n   ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkernelerr%2Fcourier-backend-v1","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkernelerr%2Fcourier-backend-v1","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkernelerr%2Fcourier-backend-v1/lists"}