extension Alamofire.Request { func processMap(map:(AnyObject)->N?) -> Observable { return Observable.create { observer in self.responseData { response in let result = response.result if result.isSuccess { guard let o = map(result.value!) else{ observer.on(Event.Error(ObjectMapError.MapError(result.value))) return } observer.on(Event.Next(o)) observer.on(Event.Completed) }else{ observer.on(Event.Error(result.error!)) } } return AnonymousDisposable{ self.cancel() } } } func rx_responseArray(type:T.Type) -> Observable<[T]> { return self.processMap{ Mapper().mapArray($0)} } func rx_responseObject(type:T.Type) -> Observable { return self.processMap{ Mapper().map($0) } } }