From 39661938852a316197301d7d2d068d430b5e4e39 Mon Sep 17 00:00:00 2001 From: Henrik Storch Date: Fri, 5 Nov 2021 15:37:48 +0100 Subject: [PATCH] Move `NCHovercard` to NCCommunicationModel.swift Signed-off-by: Henrik Storch --- .../NCCommunication+Hovercard.swift | 53 +++---------------- NCCommunication/NCCommunicationModel.swift | 40 ++++++++++++++ 2 files changed, 47 insertions(+), 46 deletions(-) diff --git a/NCCommunication/NCCommunication+Hovercard.swift b/NCCommunication/NCCommunication+Hovercard.swift index 9a5ac25..717499d 100644 --- a/NCCommunication/NCCommunication+Hovercard.swift +++ b/NCCommunication/NCCommunication+Hovercard.swift @@ -25,52 +25,13 @@ import Foundation import Alamofire import SwiftyJSON -public class Hovercard: NSObject { - internal init?(jsonData: JSON) { - guard let userId = jsonData["userId"].string, - let displayName = jsonData["displayName"].string, - let actions = jsonData["actions"].array?.compactMap(Action.init) - else { - return nil - } - self.userId = userId - self.displayName = displayName - self.actions = actions - } - - class Action: NSObject { - internal init?(jsonData: JSON) { - guard let title = jsonData["title"].string, - let icon = jsonData["icon"].string, - let hyperlink = jsonData["hyperlink"].string, - let appId = jsonData["appId"].string - else { - return nil - } - self.title = title - self.icon = icon - self.hyperlink = hyperlink - self.appId = appId - } - - let title: String - let icon: String - let hyperlink: String - var hyperlinkUrl: URL? { URL(string: hyperlink) } - let appId: String - } - - let userId, displayName: String - let actions: [Action] -} - extension NCCommunication { - + // available in NC >= 23 (beta 2) @objc public func getHovercard(for userId: String, customUserAgent: String? = nil, addCustomHeaders: [String: String]? = nil, queue: DispatchQueue = .main, completionHandler: @escaping (_ result: Hovercard?, _ errorCode: Int, _ errorDescription: String) -> Void) { - + let endpoint = "ocs/v2.php/hovercard/v1/\(userId)?format=json" - + guard let url = NCCommunicationCommon.shared.createStandardUrl(serverUrl: NCCommunicationCommon.shared.urlBase, endpoint: endpoint) else { queue.async { @@ -78,14 +39,14 @@ extension NCCommunication { } return } - + let method = HTTPMethod(rawValue: "GET") - + let headers = NCCommunicationCommon.shared.getStandardHeaders(addCustomHeaders, customUserAgent: customUserAgent) - + sessionManager.request(url, method: method, parameters: nil, encoding: URLEncoding.default, headers: headers, interceptor: nil).validate(statusCode: 200..<300).responseJSON(queue: NCCommunicationCommon.shared.backgroundQueue) { (response) in debugPrint(response) - + switch response.result { case .failure(let error): let error = NCCommunicationError().getError(error: error, httResponse: response.response) diff --git a/NCCommunication/NCCommunicationModel.swift b/NCCommunication/NCCommunicationModel.swift index e502641..9b2c322 100644 --- a/NCCommunication/NCCommunicationModel.swift +++ b/NCCommunication/NCCommunicationModel.swift @@ -26,6 +26,46 @@ import MobileCoreServices import SwiftyXMLParser import SwiftyJSON +@objc public class NCHovercard: NSObject { + internal init?(jsonData: JSON) { + guard let userId = jsonData["userId"].string, + let displayName = jsonData["displayName"].string, + let actions = jsonData["actions"].array?.compactMap(Action.init) + else { + return nil + } + self.userId = userId + self.displayName = displayName + self.actions = actions + } + + @objc public class Action: NSObject { + internal init?(jsonData: JSON) { + guard let title = jsonData["title"].string, + let icon = jsonData["icon"].string, + let hyperlink = jsonData["hyperlink"].string, + let appId = jsonData["appId"].string + else { + return nil + } + self.title = title + self.icon = icon + self.hyperlink = hyperlink + self.appId = appId + } + + @objc public let title: String + @objc public let icon: String + @objc public let hyperlink: String + @objc public var hyperlinkUrl: URL? { URL(string: hyperlink) } + @objc public let appId: String + } + + @objc public let userId, displayName: String + @objc public let actions: [Action] +} + + //MARK: - File @objc public class NCCommunicationActivity: NSObject {