Skip to content

Instantly share code, notes, and snippets.

@idrisr
Created July 26, 2016 07:41
Show Gist options
  • Save idrisr/af71436fe41ac60d11675b9f8d990b70 to your computer and use it in GitHub Desktop.
Save idrisr/af71436fe41ac60d11675b9f8d990b70 to your computer and use it in GitHub Desktop.
public func responseArray<T: ResponseJSONObjectSerializable>(completionHandler: Response<[T], NSError> -> Void) -> Self {
let serializer = ResponseSerializer<[T], NSError> { request, response, data, error in
guard error == nil else {
return .Failure(error!)
}
guard let responseData = data else {
let failureReason = "Array could not be serialized because input data was nil."
let error = Error.errorWithCode(.DataSerializationFailed,
failureReason: failureReason)
return .Failure(error)
}
let JSONResponseSerializer = Request.JSONResponseSerializer(options: .AllowFragments)
let result = JSONResponseSerializer.serializeResponse(request, response,
responseData, error)
switch result {
case .Failure(let error):
return .Failure(error)
case .Success(let value):
let json = SwiftyJSON.JSON(value)
// check for "message" errors in the JSON
if let errorMessage = json["message"].string {
let error = Error.errorWithCode(.DataSerializationFailed,
failureReason: errorMessage)
return .Failure(error)
}
var objects: [T] = []
for (_, item) in json {
if let object = T(json: item) {
objects.append(object)
}
}
return .Success(objects)
}
}
return response(responseSerializer: serializer, completionHandler: completionHandler)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment