From c3fb1b6025d28339792084573049e5041ade246f Mon Sep 17 00:00:00 2001 From: Aleksandar Gotev Date: Fri, 10 May 2019 17:01:01 +0200 Subject: [PATCH] Fixed `Optional("string")` sent in requests --- ReactiveAPI.xcodeproj/project.pbxproj | 4 ---- ReactiveAPI/Extensions/Array+CSV.swift | 2 +- .../Extensions/Dictionary+compactMapValues.swift | 13 ------------- ReactiveAPI/Extensions/URLRequest+ReactiveAPI.swift | 7 +++++-- ReactiveAPI/Info.plist | 2 +- build | 8 ++++++++ 6 files changed, 15 insertions(+), 21 deletions(-) delete mode 100755 ReactiveAPI/Extensions/Dictionary+compactMapValues.swift create mode 100755 build diff --git a/ReactiveAPI.xcodeproj/project.pbxproj b/ReactiveAPI.xcodeproj/project.pbxproj index fbcf920..1dd082d 100644 --- a/ReactiveAPI.xcodeproj/project.pbxproj +++ b/ReactiveAPI.xcodeproj/project.pbxproj @@ -11,7 +11,6 @@ D195F1E522086DB200530339 /* ReactiveAPIRequestInterceptor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D195F1D622086DB100530339 /* ReactiveAPIRequestInterceptor.swift */; }; D195F1E622086DB200530339 /* JSONReactiveAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = D195F1D722086DB200530339 /* JSONReactiveAPI.swift */; }; D195F1E722086DB200530339 /* URLRequest+ReactiveAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = D195F1D922086DB200530339 /* URLRequest+ReactiveAPI.swift */; }; - D195F1E822086DB200530339 /* Dictionary+compactMapValues.swift in Sources */ = {isa = PBXBuildFile; fileRef = D195F1DA22086DB200530339 /* Dictionary+compactMapValues.swift */; }; D195F1E922086DB200530339 /* Encodable+Dictionary.swift in Sources */ = {isa = PBXBuildFile; fileRef = D195F1DB22086DB200530339 /* Encodable+Dictionary.swift */; }; D195F1EA22086DB200530339 /* Array+CSV.swift in Sources */ = {isa = PBXBuildFile; fileRef = D195F1DC22086DB200530339 /* Array+CSV.swift */; }; D195F1EB22086DB200530339 /* ReactiveAPIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = D195F1DD22086DB200530339 /* ReactiveAPIError.swift */; }; @@ -30,7 +29,6 @@ D195F1D622086DB100530339 /* ReactiveAPIRequestInterceptor.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReactiveAPIRequestInterceptor.swift; sourceTree = ""; }; D195F1D722086DB200530339 /* JSONReactiveAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = JSONReactiveAPI.swift; sourceTree = ""; }; D195F1D922086DB200530339 /* URLRequest+ReactiveAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "URLRequest+ReactiveAPI.swift"; sourceTree = ""; }; - D195F1DA22086DB200530339 /* Dictionary+compactMapValues.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Dictionary+compactMapValues.swift"; sourceTree = ""; }; D195F1DB22086DB200530339 /* Encodable+Dictionary.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Encodable+Dictionary.swift"; sourceTree = ""; }; D195F1DC22086DB200530339 /* Array+CSV.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Array+CSV.swift"; sourceTree = ""; }; D195F1DD22086DB200530339 /* ReactiveAPIError.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReactiveAPIError.swift; sourceTree = ""; }; @@ -101,7 +99,6 @@ isa = PBXGroup; children = ( D195F1DC22086DB200530339 /* Array+CSV.swift */, - D195F1DA22086DB200530339 /* Dictionary+compactMapValues.swift */, D195F1DB22086DB200530339 /* Encodable+Dictionary.swift */, D195F1D922086DB200530339 /* URLRequest+ReactiveAPI.swift */, ); @@ -204,7 +201,6 @@ D195F1F122086DB200530339 /* MaxAgeCache.swift in Sources */, D195F1F022086DB200530339 /* ReactiveAPIDecoder.swift in Sources */, D195F1E522086DB200530339 /* ReactiveAPIRequestInterceptor.swift in Sources */, - D195F1E822086DB200530339 /* Dictionary+compactMapValues.swift in Sources */, D195F1E922086DB200530339 /* Encodable+Dictionary.swift in Sources */, D195F1E622086DB200530339 /* JSONReactiveAPI.swift in Sources */, D195F1EB22086DB200530339 /* ReactiveAPIError.swift in Sources */, diff --git a/ReactiveAPI/Extensions/Array+CSV.swift b/ReactiveAPI/Extensions/Array+CSV.swift index 83f0924..063f4f4 100755 --- a/ReactiveAPI/Extensions/Array+CSV.swift +++ b/ReactiveAPI/Extensions/Array+CSV.swift @@ -2,6 +2,6 @@ import Foundation extension Array { public var csv: String { - return map { String(describing: $0) }.joined(separator: ",") + return compactMap { "\($0)" }.joined(separator: ",") } } diff --git a/ReactiveAPI/Extensions/Dictionary+compactMapValues.swift b/ReactiveAPI/Extensions/Dictionary+compactMapValues.swift deleted file mode 100755 index 6c0253f..0000000 --- a/ReactiveAPI/Extensions/Dictionary+compactMapValues.swift +++ /dev/null @@ -1,13 +0,0 @@ -import Foundation - -// Proposal for Swift 5 -// https://github.com/apple/swift-evolution/blob/master/proposals/0218-introduce-compact-map-values.md -extension Dictionary { - public func compactMapValues(_ transform: (Value) throws -> T?) rethrows -> [Key: T] { - return try self.reduce(into: [Key: T](), { (result, x) in - if let value = try transform(x.value) { - result[x.key] = value - } - }) - } -} diff --git a/ReactiveAPI/Extensions/URLRequest+ReactiveAPI.swift b/ReactiveAPI/Extensions/URLRequest+ReactiveAPI.swift index dc325eb..cf220f6 100755 --- a/ReactiveAPI/Extensions/URLRequest+ReactiveAPI.swift +++ b/ReactiveAPI/Extensions/URLRequest+ReactiveAPI.swift @@ -2,7 +2,10 @@ import Foundation extension URLRequest { public mutating func setHeaders(_ headers: [String: Any?]? = nil) { - headers?.forEach { setValue(String(describing: $1), forHTTPHeaderField: $0) } + headers?.compactMapValues({ $0 }) + .forEach { + setValue("\($1)", forHTTPHeaderField: $0) + } } public static func createForJSON(with url: URL, @@ -16,7 +19,7 @@ extension URLRequest { if let queryParams = queryParams { urlComponents.queryItems = (urlComponents.queryItems ?? [URLQueryItem]()) + queryParams .compactMapValues({ $0 }) - .compactMap({ URLQueryItem(name: $0, value: String(describing: $1)) }) + .compactMap({ URLQueryItem(name: $0, value: "\($1)") }) } var request = URLRequest(url: urlComponents.url!) diff --git a/ReactiveAPI/Info.plist b/ReactiveAPI/Info.plist index 0ec4fe6..4eae3b4 100644 --- a/ReactiveAPI/Info.plist +++ b/ReactiveAPI/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.3.3 + 1.3.4 CFBundleVersion $(CURRENT_PROJECT_VERSION) diff --git a/build b/build new file mode 100755 index 0000000..4b10527 --- /dev/null +++ b/build @@ -0,0 +1,8 @@ +#!/bin/bash -e + +VERSION=$(cat "ReactiveAPI/Info.plist" | grep -A 1 "CFBundleShortVersionString" | tail -n 1 | tr '>' '\n' | tr '<' '\n' | head -n 3 | tail -n 1) + +rm -rf Carthage +carthage bootstrap --platform iOS +carthage build --archive +hub release create -a ReactiveAPI.framework.zip -m "$VERSION" "$VERSION"