unpuber_core 0.0.1
unpuber_core: ^0.0.1 copied to clipboard
A server app using the shelf package and Docker.
A custom pub.flutter-io.cn server package
follow the repository-spec-v2 specification package.tar.gz upload to local machine. package information stored in sqlite.
Usually, you only need to use the Dart command line and do not need to separately use an HTTP client for calls.
api #
1、 get all packages that uploaded on this machine.
method: get
path: /api/packages?size=10&page=1&sort=download&q=<package>
response:
{
"data": [
{
"name": "",
"tags": [""],
"letest": "",
"updatedAt": "",
"description": "",
"plats": [1, 2, 3],
"isDart3Compatible": true
}
]
}
(TODO: support other storage such as s3)
2、get target package information of all versions
method: get
path: api/packages/<package>
resonse:
3、get upload package target link
method: get
path: api/packages/version/new
response:
4、upload package
method: post
path: /api/packages/versions/newUpload
response:
or
{
"error": {
"message": "internal server error: "
}
}
5、upload package finished
method: get
path: /api/packages/versions/newUploadFinish
response:
{
"success": {
"message": "upload finish"
}
}
6、get specific version package
method: get
path: /api/packages/<name>/versions/<version>
response:
7、get package tar.gz
method: get
path: /packages/<name>/versions/<version>.tar.gz
response:
8、add package uploader
method: post
path: /api/packages/<name>/uploaders
response:
{
"success": {
"message": "uploader added!",
"code": 200
}
}
or
{
"error": {
"message": "$email has no permission!", // or $email already exists!
// or not found email information!
"code": 400
}
}
9、remove pacakge uploader
method: delete
path: /api/packages/<name>/uploaders/<email>
response:
{
"success": {
"message": "uploader removed!",
"code": 200
}
}
or
{
"error": {
"message": "$email has no permission!", // or $email not exists in uploader!
"code": 400
}
}