import common import Alamofire class PlainClient : IPlainClient { func get(baseUrl: String, path: String, token: String) -> PlainResponse { print("bclient get: baseUrl=\(baseUrl) path=\(path) token=\(token)") let semaphore = DispatchSemaphore(value: 0) var stringResponse: String = "" var code: Int32 = -1 let headers: HTTPHeaders = [ "Authorization" : "Bearer \(token)" ] let url = "\(baseUrl)\(path)" let queue = DispatchQueue(label: "plainclient", qos: .userInitiated, attributes: .concurrent) AF.request(url, method: .get, headers: headers).responseJSON(queue: queue) { response in //print("bclient response: \(response)") code = Int32(response.response!.statusCode) if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) { stringResponse = utf8Text } semaphore.signal() } _ = semaphore.wait(timeout: .distantFuture) return PlainResponse(statusCode: code, payload: stringResponse) } func postFormData(baseUrl: String, path: String, token: String, params: Dictionary) -> PlainResponse { print("bclient post: baseUrl=\(baseUrl) path=\(path) token=\(token)") let semaphore = DispatchSemaphore(value: 0) var stringResponse: String = "" var code: Int32 = -1 let headers: HTTPHeaders = [ "Authorization" : "Bearer \(token)" ] let url = "\(baseUrl)\(path)" let queue = DispatchQueue(label: "plainclient", qos: .userInitiated, attributes: .concurrent) AF.request( url, method: .post, parameters: params, headers: headers ).responseJSON(queue: queue) { response in print("bclient response: \(response)") code = Int32(response.response!.statusCode) if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) { stringResponse = utf8Text } semaphore.signal() } _ = semaphore.wait(timeout: .distantFuture) return PlainResponse(statusCode: code, payload: stringResponse) } func post(baseUrl: String, path: String, token: String) { //todo } }