123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- //
- // KMCloudDocumentTools.swift
- // PDF Reader Pro
- //
- // Created by tangchao on 2023/2/10.
- //
- import Cocoa
- class KMCloudDocumentTools: NSObject {
-
- class public func canOpenDocument(_ file: KMServicesCloudFile) -> Bool {
- if (file.filetype != .file) {
- return false
- }
-
- let fileName = file.fileName
- let exe: String = (fileName?.components(separatedBy: ".").last)!
- if (exe.lowercased() != "pdf") {
- return false
- }
- return true
- }
-
- /// 下载文档
- class public func downloadDocument(_ server: KMCloudServer, _ file: KMServicesCloudFile, callback: @escaping (Bool, URL)->()) {
- let localPath = self.getTempPath(file.fileName)
- if (localPath == nil) {
- return
- }
- // print(localPath)
- if (FileManager.default.fileExists(atPath: localPath!)) {
- try?FileManager.default.removeItem(atPath: localPath!)
- }
-
- server.downloadCloudPath(file, localPath: URL(fileURLWithPath: localPath!)) { cloudFile, progress in
- KMPrint(progress)
- } completion: { cloudFile, finished in
- callback(finished, URL(fileURLWithPath: localPath!))
- }
- }
-
- /// 上传文档
- class public func uploadDocument(_ server: KMCloudServer, _ file: KMServicesCloudFile, callback: @escaping (Bool, URL)->()) {
- let localPath = self.getTempPath(file.fileName)
- if (localPath == nil) {
- return
- }
- server.uploadCloudPath(file, localPath: URL(fileURLWithPath: localPath!)) { cloudFile, progress in
-
- } completion: { cloudFile, finished in
- callback(finished, URL(fileURLWithPath: localPath!))
- }
- }
-
- /// 获取临时路径
- class public func getTempPath(_ fileName: String) -> String? {
- let folderPath: String = (NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last?.stringByAppendingPathComponent(Bundle.main.bundleIdentifier!).stringByAppendingPathComponent("cloudDocuments"))!
- if (!FileManager.default.fileExists(atPath: folderPath)) {
- let create: ()? = try?FileManager.default.createDirectory(atPath: folderPath, withIntermediateDirectories: false)
- if (create == nil) {
- return nil
- }
- }
-
- return folderPath.stringByAppendingPathComponent(fileName)
- }
-
- class public func getFileType(_ server: KMCloudServer, _ file: KMServicesCloudFile) -> String {
- var fileType: String = file.fileName.components(separatedBy: ".").last!
- if (server.serverType == KMGoogleDrive) {
- if (file.mimeType! == "application/vnd.google-apps.presentation") {
- fileType = "pptx"
- } else if (file.mimeType == "application/vnd.google-apps.document") {
- fileType = "docx"
- } else if (file.mimeType == "application/vnd.google-apps.spreadsheet") {
- fileType = "xlsx"
- } else if (file.mimeType == "application/vnd.google-apps.form" || file.mimeType == "application/vnd.google-apps.site") {
- fileType = "pptx"
- } else if (file.mimeType == "application/vnd.google-apps.map") {
- fileType = "kmz"
- } else if (file.mimeType == "application/vnd.google-apps.drawing") {
- fileType = "jpg"
- }
- }
- return fileType
- }
-
- class public func parseDate(_ date: Date) -> String {
- let currentDate = Date()
- let calendar = Calendar.init(identifier: .gregorian)
- let hour = calendar.component(.hour, from: currentDate)
- let minute = calendar.component(.minute, from: currentDate)
- let second = calendar.component(.second, from: currentDate)
-
- let weekday = calendar.component(.weekday, from: currentDate)
- let weekdayOrdinal = calendar.component(.weekdayOrdinal, from: currentDate)
-
- if (hour * 60 * 60 + minute * 60 + second + Int(date.timeIntervalSinceNow) > 0) { /// 当天
- let dateFormatter = DateFormatter()
- dateFormatter.dateFormat = "hh:mm"
- return NSLocalizedString("Today", comment: "").appending(", ").appending(dateFormatter.string(from: date))
- }
-
- if (weekdayOrdinal * 24 * 60 * 60 + hour * 60 * 60 + minute * 60 + second + Int(date.timeIntervalSinceNow) > 0) { /// 当周
- let dateFormatter = DateFormatter()
- dateFormatter.dateFormat = "hh:mm"
- // dateFormatter.locale = Locale(identifier: "NL")
- var weekdayString: String = ""
- if (weekdayOrdinal == 1) {
- weekdayString = "Mon"
- } else if (weekdayOrdinal == 2) {
- weekdayString = "Tue"
- } else if (weekdayOrdinal == 3) {
- weekdayString = "Wed"
- } else if (weekdayOrdinal == 4) {
- weekdayString = "Thu"
- } else if (weekdayOrdinal == 5) {
- weekdayString = "Fri"
- } else if (weekdayOrdinal == 6) {
- weekdayString = "Sat"
- } else if (weekdayOrdinal == 7) {
- weekdayString = "Sun"
- }
-
- return NSLocalizedString(weekdayString, comment: "").appending(", ").appending(dateFormatter.string(from: date))
- }
-
- let dateFormatter = DateFormatter()
- dateFormatter.dateFormat = "yyyy/MM/dd"
- return dateFormatter.string(from: date)
- }
-
- /// 获取标记
- class private func tagString() -> String {
- var result: String = ""
-
- let dateFormatter = DateFormatter()
- dateFormatter.dateFormat = "yyMMddHHmmss"
- result.append(dateFormatter.string(from: Date()))
- result = result.appendingFormat("%04d", arc4random()%10000)
-
- return result
- }
- }
|