Skip to content

Commit

Permalink
Move NCHovercard to NCCommunicationModel.swift
Browse files Browse the repository at this point in the history
  • Loading branch information
Henrik Storch committed Nov 5, 2021
1 parent d3f1cbb commit 828ae30
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 46 deletions.
53 changes: 7 additions & 46 deletions NCCommunication/NCCommunication+Hovercard.swift
Original file line number Diff line number Diff line change
Expand Up @@ -25,67 +25,28 @@ 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 {
completionHandler(nil, NSURLErrorBadURL, NSLocalizedString("_invalid_url_", value: "Invalid server url", comment: ""))
}
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)
Expand Down
40 changes: 40 additions & 0 deletions NCCommunication/NCCommunicationModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down

0 comments on commit 828ae30

Please sign in to comment.