mono0926
4/30/2017 - 11:22 AM

APIKitのsynchronous send method

APIKitのsynchronous send method

import Foundation
import APIKit
import Result

extension Session: ExtensionCompatible {}

extension Extension where Base: Session {
    func sendSync<T: Request>(_ request: T) -> Result<T.Response, SessionTaskError> {
        var result: Result<T.Response, SessionTaskError>!
        let semaphor = DispatchSemaphore(value: 0)
        self.base.send(request, callbackQueue: .sessionQueue) { _result in
            result = _result
            semaphor.signal()
        }
        semaphor.wait()
        return result
    }
}