Sign in

    q2316367743/open-list/share does not have a README file

    ShareApi

    pub struct ShareApi {
    // private fields
    }

    分享域:/api/share/*。

    这里管的是分享记录(创建、查询、启停、删除);分享出来的内容浏览走另一组 /sd/:sid/*path 下载路径,不在本模块内。

    服务端给这组路由挂了 AuthNotGuest:需要登录,且访客账号会被拒。普通用户 只能看到/操作自己创建的分享,管理员能看到全部;别人的分享会以 404 (sharing not found)的形式「不存在」。

    ShareApi::create

    新建分享(POST /api/share/create),返回创建后的完整记录。

    ShareApi::delete

    async fn ShareApi::delete(self : ShareApi, id : String) -> Unit raise
    OpenListError

    删除分享(POST /api/share/delete?id=)。

    ShareApi::disable

    async fn ShareApi::disable(self : ShareApi, id : String) -> Unit raise
    OpenListError

    禁用分享(POST /api/share/disable?id=)。

    ShareApi::enable

    async fn ShareApi::enable(self : ShareApi, id : String) -> Unit raise
    OpenListError

    启用分享(POST /api/share/enable?id=)。

    ShareApi::get

    按 ID 取一条分享记录(GET /api/share/get?id=)。

    不是自己的分享(且自己不是管理员)时服务端返回 404。

    ShareApi::list

    分页列出分享记录(GET /api/share/list?page=&per_page=)。

    ShareApi::new

    由根包创建。

    ShareApi::update

    更新分享(POST /api/share/update),返回更新后的完整记录。

    request.id 必填,且与 create 一样必须给出非空的 files;new_id 非空时 顺带改分享 ID(需要相应权限)。

    SharingUpdateRequest

    pub struct SharingUpdateRequest {
    files : Array[String]
    expires : String?
    pwd : String?
    max_accessed : Int?
    disabled : Bool?
    remark : String?
    readme : String?
    header : String?
    order_by : String?
    order_direction : String?
    extract_folder : String?
    creator : String?
    accessed : Int?
    id : String?
    new_id : String?
    } derive(ToJson)

    分享域的请求模型。

    服务端 handles.UpdateSharingReq 同时服务 create 与 update,这里保持一致:

    • 可空字段留空时会以 null 发出去,服务端对 null 取零值(字符串空串、 数值 0、布尔假、时间指针 nil),与我们想要的「不设置」完全等价;
    • 服务端会忽略它不认识的字段,所以这里比服务端多/少一个字段都不会出错,但 反之我们自己也不能依赖多发的字段生效。

    SharingUpdateRequest::new

    fn SharingUpdateRequest::new(files : Array[String], expires? : String, pwd? : String, max_accessed? : Int, disabled? : Bool, remark? : String, readme? : String, header? : String, order_by? : String, order_direction? : String, extract_folder? : String, creator? : String, accessed? : Int, id? : String, new_id? : String) -> SharingUpdateRequest

    构造分享请求:files 必填,其余按需给。

    结构体字段本身也是公开的,需要在此函数之外微调时可以直接改(或配合 { ..request, pwd: Some("x") } 做函数式更新)。

    SharingUpdateRequest::to_json

    显式声明 derive 出来的 ToJson 实现以普通方法暴露。

    Source Files