Skip to content
Snippets Groups Projects
Select Git revision
  • 4ae1a96adbe700a706f9d78eee1e015101f739df
  • main default protected
  • development
  • integration
  • v1.1.5
  • v1.1.4
  • v1.1.3
  • v1.1.2
  • v1.1.1
  • v1.1.0
  • v1.0.0
11 results

Errors.swift

Blame
  • RestlikeCallback.swift 1.18 KiB
    import Bindings
    import XCTestDynamicOverlay
    
    public struct RestlikeCallback {
      public init(handle: @escaping (Result<RestlikeMessage, NSError>) -> Void) {
        self.handle = handle
      }
    
      public var handle: (Result<RestlikeMessage, NSError>) -> Void
    }
    
    extension RestlikeCallback {
      public static let unimplemented = RestlikeCallback(
        handle: XCTUnimplemented("\(Self.self)")
      )
    }
    
    extension RestlikeCallback {
      func makeBindingsRestlikeCallback() -> BindingsRestlikeCallbackProtocol {
        class CallbackObject: NSObject, BindingsRestlikeCallbackProtocol {
          init(_ callback: RestlikeCallback) {
            self.callback = callback
          }
    
          let callback: RestlikeCallback
    
          func callback(_ p0: Data?, p1: Error?) {
            if let error = p1 {
              callback.handle(.failure(error as NSError))
            } else if let messageData = p0 {
              do {
                callback.handle(.success(try RestlikeMessage.decode(messageData)))
              } catch {
                callback.handle(.failure(error as NSError))
              }
            } else {
              fatalError("BindingsRestlikeCallback received `nil` message and `nil` error")
            }
          }
        }
    
        return CallbackObject(self)
      }
    }