private static var subsystem = Bundle.main.bundleIdentifier!
static let actionViewController = Logger(subsystem: subsystem, category: "actionViewController")
+ static let shareCapabilities = Logger(subsystem: subsystem, category: "shareCapabilities")
static let shareController = Logger(subsystem: subsystem, category: "shareController")
static let sharesDataSource = Logger(subsystem: subsystem, category: "sharesDataSource")
static let shareOptionsView = Logger(subsystem: subsystem, category: "shareOptionsView")
private(set) var defaultPermissions = 0
private(set) var email = EmailCapabilities(dict: [:])
private(set) var publicLink = PublicLinkCapabilities(dict: [:])
+
+ init(json: Data) {
+ guard let anyJson = try? JSONSerialization.jsonObject(with: json, options: []),
+ let jsonDict = anyJson as? [String : Any],
+ let sharingCapabilities = jsonDict["files_sharing"] as? [String : Any]
+ else {
+ Logger.shareCapabilities.error("Could not parse share capabilities!")
+ return
+ }
+ apiEnabled = sharingCapabilities["api_enabled"] as? Bool ?? false
+
+ if let emailCapabilities = sharingCapabilities["sharebymail"] as? [String : Any] {
+ email = EmailCapabilities(dict: emailCapabilities)
+ }
+
+ if let publicLinkCapabilities = sharingCapabilities["public"] as? [String : Any] {
+ publicLink = PublicLinkCapabilities(dict: publicLinkCapabilities)
+ }
+ }
}