From effcc01b2710d7cd383b8d4d7439b6cd92bddb51 Mon Sep 17 00:00:00 2001 From: Ivan Smolin Date: Wed, 12 Oct 2016 11:27:34 +0300 Subject: [PATCH] temporary (I hope) rollback to Hearst-DD/ObjectMapper --- Cartfile | 4 +-- Cartfile.resolved | 3 +- LeadKit.podspec | 6 ++-- LeadKit/LeadKit.xcodeproj/project.pbxproj | 19 +++-------- LeadKit/LeadKit/Enums/RequestError.swift | 22 ------------ .../AlamofireRequest+Extensions.swift | 34 ++++++++----------- 6 files changed, 25 insertions(+), 63 deletions(-) delete mode 100644 LeadKit/LeadKit/Enums/RequestError.swift diff --git a/Cartfile b/Cartfile index 173d9cfc..2bcdd983 100644 --- a/Cartfile +++ b/Cartfile @@ -1,5 +1,5 @@ github "CocoaLumberjack/CocoaLumberjack" ~> 3.0.0 github "ReactiveX/RxSwift" "3.0.0-beta.1" +github "Hearst-DD/ObjectMapper" ~> 2.1 github "Alamofire/Alamofire" ~> 4.0.0 -github "RxSwiftCommunity/RxAlamofire" "3.0.0-beta.1" -github "petropavel13/Convertible" "1.1.0" \ No newline at end of file +github "RxSwiftCommunity/RxAlamofire" "3.0.0-beta.1" \ No newline at end of file diff --git a/Cartfile.resolved b/Cartfile.resolved index beebf306..4d142dbd 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,6 +1,5 @@ github "Alamofire/Alamofire" "4.0.1" github "CocoaLumberjack/CocoaLumberjack" "3.0.0" -github "petropavel13/Reflection" "0.15.0" +github "Hearst-DD/ObjectMapper" "2.1.0" github "ReactiveX/RxSwift" "3.0.0-beta.1" -github "petropavel13/Convertible" "1.1.0" github "RxSwiftCommunity/RxAlamofire" "3.0.0-beta.1" diff --git a/LeadKit.podspec b/LeadKit.podspec index e5520400..8a9d9eca 100644 --- a/LeadKit.podspec +++ b/LeadKit.podspec @@ -1,12 +1,12 @@ Pod::Spec.new do |s| s.name = "LeadKit" - s.version = "0.2.1" + s.version = "0.2.2" s.summary = "iOS framework with a bunch of tools for rapid development" s.homepage = "https://github.com/TouchInstinct/LeadKit" s.license = "Apache License, Version 2.0" s.author = "Touch Instinct" s.platform = :ios, "9.0" - s.source = { :git => "https://github.com/TouchInstinct/LeadKit.git" } + s.source = { :git => "https://github.com/TouchInstinct/LeadKit.git", :tag => s.version } s.source_files = "LeadKit/LeadKit/**/*.swift" s.dependency "CocoaLumberjack/Swift", '~> 3.0.0' @@ -14,5 +14,5 @@ Pod::Spec.new do |s| s.dependency "RxCocoa", '3.0.0-beta.1' s.dependency "Alamofire", '~> 4.0.0' s.dependency "RxAlamofire", '3.0.0-beta.1' - s.dependency "Convertible", '~> 1.1.0' + s.dependency "ObjectMapper", '~> 2.1' end diff --git a/LeadKit/LeadKit.xcodeproj/project.pbxproj b/LeadKit/LeadKit.xcodeproj/project.pbxproj index c0a0a6b3..6e4f7d0b 100644 --- a/LeadKit/LeadKit.xcodeproj/project.pbxproj +++ b/LeadKit/LeadKit.xcodeproj/project.pbxproj @@ -13,10 +13,7 @@ 780D23461DA416F80084620D /* CGContext+Initializers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 780D23451DA416F80084620D /* CGContext+Initializers.swift */; }; 7837F60F1CBCF5C0000D74C1 /* EstimatedViewHeightProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7837F60E1CBCF5C0000D74C1 /* EstimatedViewHeightProtocol.swift */; }; 786D78E81D53C378006B2CEA /* AlamofireRequest+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 786D78E71D53C378006B2CEA /* AlamofireRequest+Extensions.swift */; }; - 786D78EA1D53C43E006B2CEA /* RequestError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 786D78E91D53C43E006B2CEA /* RequestError.swift */; }; 786D78EC1D53C46E006B2CEA /* AlamofireManager+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 786D78EB1D53C46E006B2CEA /* AlamofireManager+Extensions.swift */; }; - 786FFEB71DA7F604008F28A7 /* Convertible.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 786FFEB51DA7F604008F28A7 /* Convertible.framework */; }; - 786FFEB81DA7F604008F28A7 /* Reflection.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 786FFEB61DA7F604008F28A7 /* Reflection.framework */; }; 787682FA1CAD40C300532AB3 /* StaticEstimatedViewHeightProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 787682F91CAD40C200532AB3 /* StaticEstimatedViewHeightProtocol.swift */; }; 787783631CA03CA0001CDC9B /* IndexPath+ImmutableIndexPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 787783621CA03CA0001CDC9B /* IndexPath+ImmutableIndexPath.swift */; }; 787783671CA04D4A001CDC9B /* String+SizeCalculation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 787783661CA04D4A001CDC9B /* String+SizeCalculation.swift */; }; @@ -36,6 +33,7 @@ 78B0FC7D1C6B2BE200358B64 /* LogFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78B0FC7C1C6B2BE200358B64 /* LogFormatter.swift */; }; 78B0FC7F1C6B2C4D00358B64 /* Log.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78B0FC7E1C6B2C4D00358B64 /* Log.swift */; }; 78B0FC811C6B2CD500358B64 /* App.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78B0FC801C6B2CD500358B64 /* App.swift */; }; + 78B891941DAE192B001CA8B4 /* ObjectMapper.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 78B891931DAE192B001CA8B4 /* ObjectMapper.framework */; }; 78C36F7E1D801E3E00E7EBEA /* Double+Rounding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78C36F7D1D801E3E00E7EBEA /* Double+Rounding.swift */; }; 78C36F811D8021DD00E7EBEA /* UIColor+Hex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78C36F801D8021DD00E7EBEA /* UIColor+Hex.swift */; }; 78CFEE2E1C5C456B00F50370 /* LeadKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 78CFEE2D1C5C456B00F50370 /* LeadKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -73,10 +71,7 @@ 780D23451DA416F80084620D /* CGContext+Initializers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CGContext+Initializers.swift"; sourceTree = ""; }; 7837F60E1CBCF5C0000D74C1 /* EstimatedViewHeightProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EstimatedViewHeightProtocol.swift; sourceTree = ""; }; 786D78E71D53C378006B2CEA /* AlamofireRequest+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AlamofireRequest+Extensions.swift"; sourceTree = ""; }; - 786D78E91D53C43E006B2CEA /* RequestError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestError.swift; sourceTree = ""; }; 786D78EB1D53C46E006B2CEA /* AlamofireManager+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AlamofireManager+Extensions.swift"; sourceTree = ""; }; - 786FFEB51DA7F604008F28A7 /* Convertible.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Convertible.framework; path = ../../../Carthage/Build/iOS/Convertible.framework; sourceTree = ""; }; - 786FFEB61DA7F604008F28A7 /* Reflection.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Reflection.framework; path = ../../../Carthage/Build/iOS/Reflection.framework; sourceTree = ""; }; 787682F91CAD40C200532AB3 /* StaticEstimatedViewHeightProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StaticEstimatedViewHeightProtocol.swift; sourceTree = ""; }; 787783621CA03CA0001CDC9B /* IndexPath+ImmutableIndexPath.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "IndexPath+ImmutableIndexPath.swift"; sourceTree = ""; }; 787783661CA04D4A001CDC9B /* String+SizeCalculation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+SizeCalculation.swift"; sourceTree = ""; }; @@ -96,6 +91,7 @@ 78B0FC7C1C6B2BE200358B64 /* LogFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LogFormatter.swift; sourceTree = ""; }; 78B0FC7E1C6B2C4D00358B64 /* Log.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Log.swift; sourceTree = ""; }; 78B0FC801C6B2CD500358B64 /* App.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = App.swift; sourceTree = ""; }; + 78B891931DAE192B001CA8B4 /* ObjectMapper.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ObjectMapper.framework; path = ../../../Carthage/Build/iOS/ObjectMapper.framework; sourceTree = ""; }; 78C36F7D1D801E3E00E7EBEA /* Double+Rounding.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Double+Rounding.swift"; sourceTree = ""; }; 78C36F801D8021DD00E7EBEA /* UIColor+Hex.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIColor+Hex.swift"; sourceTree = ""; }; 78CFEE2A1C5C456B00F50370 /* LeadKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LeadKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -124,12 +120,11 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 78B891941DAE192B001CA8B4 /* ObjectMapper.framework in Frameworks */, 78B0365F1DA624C10021D5CC /* CocoaLumberjack.framework in Frameworks */, 78B036631DA624C10021D5CC /* RxSwift.framework in Frameworks */, 78B0365E1DA624C10021D5CC /* Alamofire.framework in Frameworks */, - 786FFEB81DA7F604008F28A7 /* Reflection.framework in Frameworks */, 78B036621DA624C10021D5CC /* RxCocoa.framework in Frameworks */, - 786FFEB71DA7F604008F28A7 /* Convertible.framework in Frameworks */, 78B036611DA624C10021D5CC /* RxAlamofire.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -153,8 +148,7 @@ 78B0365B1DA624C10021D5CC /* RxAlamofire.framework */, 78B0365C1DA624C10021D5CC /* RxCocoa.framework */, 78B0365D1DA624C10021D5CC /* RxSwift.framework */, - 786FFEB51DA7F604008F28A7 /* Convertible.framework */, - 786FFEB61DA7F604008F28A7 /* Reflection.framework */, + 78B891931DAE192B001CA8B4 /* ObjectMapper.framework */, ); path = Frameworks; sourceTree = ""; @@ -162,7 +156,6 @@ 78011A651D47AF3000EA16A2 /* Enums */ = { isa = PBXGroup; children = ( - 786D78E91D53C43E006B2CEA /* RequestError.swift */, ); path = Enums; sourceTree = ""; @@ -540,9 +533,8 @@ "$(SRCROOT)/../Carthage/Build/iOS/RxSwift.framework", "$(SRCROOT)/../Carthage/Build/iOS/RxCocoa.framework", "$(SRCROOT)/../Carthage/Build/iOS/Alamofire.framework", + "$(SRCROOT)/../Carthage/Build/iOS/ObjectMapper.framework", "$(SRCROOT)/../Carthage/Build/iOS/RxAlamofire.framework", - "$(SRCROOT)/../Carthage/Build/iOS/Reflection.framework", - "$(SRCROOT)/../Carthage/Build/iOS/Convertible.framework", ); name = "Carthage copy-frameworks"; outputPaths = ( @@ -573,7 +565,6 @@ 786D78EC1D53C46E006B2CEA /* AlamofireManager+Extensions.swift in Sources */, 78B0FC811C6B2CD500358B64 /* App.swift in Sources */, 78B036491DA562C30021D5CC /* CGImage+Template.swift in Sources */, - 786D78EA1D53C43E006B2CEA /* RequestError.swift in Sources */, 780D23461DA416F80084620D /* CGContext+Initializers.swift in Sources */, 95B39A861D9D51250057BD54 /* String+Localization.swift in Sources */, 78C36F7E1D801E3E00E7EBEA /* Double+Rounding.swift in Sources */, diff --git a/LeadKit/LeadKit/Enums/RequestError.swift b/LeadKit/LeadKit/Enums/RequestError.swift deleted file mode 100644 index 82b4969e..00000000 --- a/LeadKit/LeadKit/Enums/RequestError.swift +++ /dev/null @@ -1,22 +0,0 @@ -// -// RequestError.swift -// LeadKit -// -// Created by Ivan Smolin on 04/08/16. -// Copyright © 2016 Touch Instinct. All rights reserved. -// - -/** - enum which describes type of api request error - - - Network: network error - - JSONSerialization: JSON serialization error - - ObjectSerialization: object mapping error - */ -public enum RequestError: Error { - - case network(error: Error) - case jsonSerialization(error: Error) - case mapping(error: Error) - -} diff --git a/LeadKit/LeadKit/Extensions/Alamofire/AlamofireRequest+Extensions.swift b/LeadKit/LeadKit/Extensions/Alamofire/AlamofireRequest+Extensions.swift index 15a4ec04..24f9bc76 100644 --- a/LeadKit/LeadKit/Extensions/Alamofire/AlamofireRequest+Extensions.swift +++ b/LeadKit/LeadKit/Extensions/Alamofire/AlamofireRequest+Extensions.swift @@ -8,9 +8,15 @@ import Alamofire import RxSwift +import ObjectMapper import RxAlamofire import struct RxCocoa.Reactive -import Convertible + +public enum ApiResponseMappingError: Error { + + case incorrectValueType(message: String) + +} public extension Reactive where Base: DataRequest { @@ -19,28 +25,16 @@ public extension Reactive where Base: DataRequest { - returns: Observable with HTTP URL Response and target object */ - func apiResponse(convertibleOptions: [ConvertibleOption] = []) -> Observable<(HTTPURLResponse, T)> { - let mapperSerializer = DataResponseSerializer { request, response, data, error in - if let err = error { - return .failure(RequestError.network(error: err)) - } + func apiResponse() -> Observable<(HTTPURLResponse, T)> { + return responseJSON().map { resp, value in + if let json = value as? [String: Any] { + return (resp, try T(map: Map(mappingType: .fromJSON, JSON: json))) + } else { + let failureReason = "Value has incorrect type: \(type(of: value)), expected: [String: Any]" - let jsonResponseSerializer = DataRequest.jsonResponseSerializer() - let result = jsonResponseSerializer.serializeResponse(request, response, data, error) - - switch result { - case .success(let value): - do { - return .success(try T.initializeWithJson(JsonValue(object: value), options: convertibleOptions)) - } catch let err { - return .failure(RequestError.mapping(error: err)) - } - case .failure(let error): - return .failure(RequestError.jsonSerialization(error: error)) + throw ApiResponseMappingError.incorrectValueType(message: failureReason) } } - - return responseResult(responseSerializer: mapperSerializer) } }