166 lines
3.9 KiB
Swift
166 lines
3.9 KiB
Swift
//
|
||
// CloudDriveModels.swift
|
||
// suixinkan
|
||
//
|
||
|
||
import Foundation
|
||
|
||
/// 云盘文件/文件夹实体,对齐 Android `CloudFileEntity`。
|
||
struct CloudFile: Codable, Sendable, Equatable, Hashable {
|
||
let id: Int
|
||
let parentFolderId: Int
|
||
let fileUrl: String
|
||
let coverUrl: String
|
||
let updatedAt: String
|
||
let name: String
|
||
let createdAt: String
|
||
let childNum: Int
|
||
let type: Int
|
||
let fileSize: Int64
|
||
|
||
enum CodingKeys: String, CodingKey {
|
||
case id
|
||
case parentFolderId = "parent_folder_id"
|
||
case fileUrl = "file_url"
|
||
case coverUrl = "cover_url"
|
||
case updatedAt = "updated_at"
|
||
case name
|
||
case createdAt = "created_at"
|
||
case childNum = "child_num"
|
||
case type
|
||
case fileSize = "file_size"
|
||
}
|
||
|
||
init(
|
||
id: Int = 0,
|
||
parentFolderId: Int = 0,
|
||
fileUrl: String = "",
|
||
coverUrl: String = "",
|
||
updatedAt: String = "",
|
||
name: String = "",
|
||
createdAt: String = "",
|
||
childNum: Int = 0,
|
||
type: Int = 0,
|
||
fileSize: Int64 = 0
|
||
) {
|
||
self.id = id
|
||
self.parentFolderId = parentFolderId
|
||
self.fileUrl = fileUrl
|
||
self.coverUrl = coverUrl
|
||
self.updatedAt = updatedAt
|
||
self.name = name
|
||
self.createdAt = createdAt
|
||
self.childNum = childNum
|
||
self.type = type
|
||
self.fileSize = fileSize
|
||
}
|
||
|
||
/// 是否为文件夹。
|
||
var isFolder: Bool { type == 99 }
|
||
|
||
/// 是否为图片。
|
||
var isImage: Bool { type == 2 }
|
||
|
||
/// 是否为视频。
|
||
var isVideo: Bool { type == 1 }
|
||
|
||
/// 是否为可导入的媒体文件。
|
||
var isSelectableMedia: Bool { isImage || isVideo }
|
||
}
|
||
|
||
/// 云盘列表响应。
|
||
struct CloudFileListResponse: Codable, Sendable, Equatable {
|
||
let total: Int
|
||
let list: [CloudFile]
|
||
|
||
init(total: Int = 0, list: [CloudFile] = []) {
|
||
self.total = total
|
||
self.list = list
|
||
}
|
||
}
|
||
|
||
/// 云盘路径节点,用于面包屑导航。
|
||
struct CloudPathItem: Codable, Sendable, Equatable, Hashable {
|
||
let id: Int
|
||
let name: String
|
||
}
|
||
|
||
/// 云盘上传权限响应。
|
||
struct CloudUploadPermissionResponse: Decodable, Sendable, Equatable {
|
||
let canUpload: Bool
|
||
let reason: String
|
||
|
||
enum CodingKeys: String, CodingKey {
|
||
case canUpload = "can_upload"
|
||
case reason
|
||
}
|
||
}
|
||
|
||
/// 云盘删除请求体。
|
||
struct CloudFileDeleteRequest: Encodable, Sendable, Equatable {
|
||
let list: [CloudFileOperationItem]
|
||
}
|
||
|
||
/// 云盘移动请求体。
|
||
struct CloudFileMoveRequest: Encodable, Sendable, Equatable {
|
||
let targetFolderId: Int
|
||
let list: [CloudFileOperationItem]
|
||
|
||
enum CodingKeys: String, CodingKey {
|
||
case targetFolderId = "target_folder_id"
|
||
case list
|
||
}
|
||
}
|
||
|
||
/// 云盘删除/移动文件项。
|
||
struct CloudFileOperationItem: Codable, Sendable, Equatable {
|
||
let id: Int
|
||
let type: Int
|
||
}
|
||
|
||
/// 云盘创建文件夹请求体。
|
||
struct CloudFolderCreateRequest: Encodable, Sendable, Equatable {
|
||
let parentFolderId: Int
|
||
let name: String
|
||
|
||
enum CodingKeys: String, CodingKey {
|
||
case parentFolderId = "parent_folder_id"
|
||
case name
|
||
}
|
||
}
|
||
|
||
/// 云盘文件上传登记请求体。
|
||
struct CloudFileUploadRequest: Encodable, Sendable, Equatable {
|
||
let parentFolderId: Int
|
||
let fileUrl: String
|
||
let fileName: String
|
||
|
||
enum CodingKeys: String, CodingKey {
|
||
case parentFolderId = "parent_folder_id"
|
||
case fileUrl = "file_url"
|
||
case fileName = "file_name"
|
||
}
|
||
}
|
||
|
||
/// 云盘文件夹改名请求体。
|
||
struct CloudFolderModifyRequest: Encodable, Sendable, Equatable {
|
||
let fileId: Int
|
||
let name: String
|
||
|
||
enum CodingKeys: String, CodingKey {
|
||
case fileId = "id"
|
||
case name
|
||
}
|
||
}
|
||
|
||
/// 云盘文件改名请求体。
|
||
struct CloudFileModifyRequest: Encodable, Sendable, Equatable {
|
||
let fileId: Int
|
||
let fileName: String
|
||
|
||
enum CodingKeys: String, CodingKey {
|
||
case fileId = "id"
|
||
case fileName = "file_name"
|
||
}
|
||
}
|