@@ -15,109 +15,114 @@ public protocol BatchElementType {
1515 var request : Request { get }
1616 var version : String { get }
1717 var id : Id ? { get }
18- var body : AnyObject { get }
18+ var body : Any { get }
1919
20- func responseFromObject( object: AnyObject ) throws -> Request . Response
21- func responseFromBatchObjects( objects: [ AnyObject ] ) throws -> Request . Response
20+ func responseFromObject( _ object: Any ) throws -> Request . Response
21+ func responseFromBatchObjects( _ objects: [ Any ] ) throws -> Request . Response
2222
23- func resultFromObject( object: AnyObject ) -> Result < Request . Response , JSONRPCError >
24- func resultFromBatchObjects( objects: [ AnyObject ] ) -> Result < Request . Response , JSONRPCError >
23+ func resultFromObject( _ object: Any ) -> Result < Request . Response , JSONRPCError >
24+ func resultFromBatchObjects( _ objects: [ Any ] ) -> Result < Request . Response , JSONRPCError >
2525}
2626
2727public extension BatchElementType {
2828 /// - Throws: JSONRPCError
29- public func responseFromObject( object: AnyObject ) throws -> Request . Response {
29+ public func responseFromObject( _ object: Any ) throws -> Request . Response {
3030 switch resultFromObject ( object) {
31- case . Success ( let response) :
31+ case . success ( let response) :
3232 return response
3333
34- case . Failure ( let error) :
34+ case . failure ( let error) :
3535 throw error
3636 }
3737 }
3838
3939 /// - Throws: JSONRPCError
40- public func responseFromBatchObjects( objects: [ AnyObject ] ) throws -> Request . Response {
40+ public func responseFromBatchObjects( _ objects: [ Any ] ) throws -> Request . Response {
4141 switch resultFromBatchObjects ( objects) {
42- case . Success ( let response) :
42+ case . success ( let response) :
4343 return response
4444
45- case . Failure ( let error) :
45+ case . failure ( let error) :
4646 throw error
4747 }
4848 }
4949
50- public func resultFromObject( object: AnyObject ) -> Result < Request . Response , JSONRPCError > {
51- let receivedVersion = object [ " jsonrpc " ] as? String
50+ public func resultFromObject( _ object: Any ) -> Result < Request . Response , JSONRPCError > {
51+ guard let dictionary = object as? [ String : Any ] else {
52+ fatalError ( " FIXME " )
53+ }
54+
55+ let receivedVersion = dictionary [ " jsonrpc " ] as? String
5256 guard version == receivedVersion else {
53- return . Failure ( . UnsupportedVersion ( receivedVersion) )
57+ return . failure ( . unsupportedVersion ( receivedVersion) )
5458 }
5559
56- guard id == object [ " id " ] . flatMap ( Id . init) else {
57- return . Failure ( . ResponseNotFound ( requestId: id, object: object ) )
60+ guard id == dictionary [ " id " ] . flatMap ( Id . init) else {
61+ return . failure ( . responseNotFound ( requestId: id, object: dictionary ) )
5862 }
5963
60- let resultObject : AnyObject ? = object [ " result " ]
61- let errorObject : AnyObject ? = object [ " error " ]
64+ let resultObject = dictionary [ " result " ]
65+ let errorObject = dictionary [ " error " ]
6266
6367 switch ( resultObject, errorObject) {
6468 case ( nil , let errorObject? ) :
65- return . Failure ( JSONRPCError ( errorObject: errorObject) )
69+ return . failure ( JSONRPCError ( errorObject: errorObject) )
6670
6771 case ( let resultObject? , nil ) :
6872 do {
69- return . Success ( try request. responseFromResultObject ( resultObject) )
73+ return . success ( try request. responseFromResultObject ( resultObject) )
7074 } catch {
71- return . Failure ( . ResultObjectParseError ( error) )
75+ return . failure ( . resultObjectParseError ( error) )
7276 }
7377
7478 default :
75- return . Failure ( . MissingBothResultAndError ( object ) )
79+ return . failure ( . missingBothResultAndError ( dictionary ) )
7680 }
7781 }
7882
79- public func resultFromBatchObjects( objects: [ AnyObject ] ) -> Result < Request . Response , JSONRPCError > {
83+ public func resultFromBatchObjects( _ objects: [ Any ] ) -> Result < Request . Response , JSONRPCError > {
8084 let matchedObject = objects
85+ . flatMap { $0 as? [ String : Any ] }
8186 . filter { $0 [ " id " ] . flatMap ( Id . init) == id }
8287 . first
8388
8489 guard let object = matchedObject else {
85- return . Failure ( . ResponseNotFound ( requestId: id, object: objects) )
90+ return . failure ( . responseNotFound ( requestId: id, object: objects) )
8691 }
8792
8893 return resultFromObject ( object)
8994 }
9095}
9196
9297public extension BatchElementType where Request. Response == Void {
93- public func responseFromObject( object: AnyObject ) throws -> Request . Response {
98+ public func responseFromObject( _ object: Any ) throws -> Request . Response {
9499 return ( )
95100 }
96101
97- public func responseFromBatchObjects( objects: [ AnyObject ] ) throws -> Request . Response {
102+ public func responseFromBatchObjects( _ objects: [ Any ] ) throws -> Request . Response {
98103 return ( )
99104 }
100105
101- public func resultFromObject( object: AnyObject ) -> Result < Request . Response , JSONRPCError > {
102- return . Success ( )
106+ public func resultFromObject( _ object: Any ) -> Result < Request . Response , JSONRPCError > {
107+ return . success ( )
103108 }
104109
105- public func resultFromBatchObjects( objects: [ AnyObject ] ) -> Result < Request . Response , JSONRPCError > {
106- return . Success ( )
110+ public func resultFromBatchObjects( _ objects: [ Any ] ) -> Result < Request . Response , JSONRPCError > {
111+ return . success ( )
107112 }
108113}
109114
110115public struct BatchElement < Request: RequestType > : BatchElementType {
111116 public let request : Request
112117 public let version : String
113118 public let id : Id ?
114- public let body : AnyObject
119+ public let body : Any
115120
116121 public init ( request: Request , version: String , id: Id ) {
117122 let id : Id ? = request. isNotification ? nil : id
118- var body : [ String : AnyObject ] = [
119- " jsonrpc " : version,
120- " method " : request. method,
123+ var body : [ String : Any ] = [
124+ " jsonrpc " : version as Any ,
125+ " method " : request. method as Any ,
121126 ]
122127
123128 if let id = id {
@@ -135,7 +140,7 @@ public struct BatchElement<Request: RequestType>: BatchElementType {
135140 self . request = request
136141 self . version = version
137142 self . id = id
138- self . body = body
143+ self . body = body as Any
139144 }
140145}
141146
0 commit comments