From 6a10e97299fc28d0958407ca9d30ddf3942695a2 Mon Sep 17 00:00:00 2001 From: Brendan Date: Tue, 12 Jan 2021 10:00:58 -0800 Subject: [PATCH 1/4] fix requestSuccess receiving a finalized result as Request instead of just Any --- CHANGELOG.md | 5 +++++ Netable.podspec | 4 ++-- Netable/Netable.xcodeproj/project.pbxproj | 4 ++-- Netable/Netable/LogDestination.swift | 4 ++-- Netable/Netable/Netable.swift | 9 ++++++++- 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dc25532..a439328 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## [0.10.3] - 12-01-21 +### Changed +- Fixed an issue with logging successful requests that was preventing finalized data from being printed properly. +- Fixed a couple small tpyos. + ## [0.10.2] - 10-08-20 ### Added - Added support for `DELETE` requests. diff --git a/Netable.podspec b/Netable.podspec index 548a644..63a03f0 100644 --- a/Netable.podspec +++ b/Netable.podspec @@ -1,12 +1,12 @@ Pod::Spec.new do |s| s.name = 'Netable' - s.version = '0.10.2' + s.version = '0.10.3' s.summary = 'A simple and swifty networking library.' s.description = 'Netable is a simple Swift framework for working with both simple and non-REST-compliant HTTP endpoints.' s.homepage = 'https://github.com/steamclock/netable/' s.license = { :type => 'MIT', :file => 'LICENSE' } s.author = { 'Brendan Lensink' => 'brendan@steamclock.com' } - s.source = { :git => 'https://github.com/steamclock/netable.git', :tag => 'v0.10.2' } + s.source = { :git => 'https://github.com/steamclock/netable.git', :tag => 'v0.10.3' } s.ios.deployment_target = '11.0' s.osx.deployment_target = '10.14' s.source_files = 'Netable/Netable/*.{swift,h,m}' diff --git a/Netable/Netable.xcodeproj/project.pbxproj b/Netable/Netable.xcodeproj/project.pbxproj index e329b17..07d8931 100644 --- a/Netable/Netable.xcodeproj/project.pbxproj +++ b/Netable/Netable.xcodeproj/project.pbxproj @@ -686,7 +686,7 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 0.10.2; + MARKETING_VERSION = 0.10.3; PRODUCT_BUNDLE_IDENTIFIER = com.steamclock.Netable; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SKIP_INSTALL = YES; @@ -716,7 +716,7 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MARKETING_VERSION = 0.10.2; + MARKETING_VERSION = 0.10.3; PRODUCT_BUNDLE_IDENTIFIER = com.steamclock.Netable; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SKIP_INSTALL = YES; diff --git a/Netable/Netable/LogDestination.swift b/Netable/Netable/LogDestination.swift index f286d4f..ef94fe3 100644 --- a/Netable/Netable/LogDestination.swift +++ b/Netable/Netable/LogDestination.swift @@ -29,9 +29,9 @@ public enum LogEvent: CustomDebugStringConvertible { /// Request has been successfully initiated. case requestStarted(request: RequestInfo) - /// Request has sucessfully completed. + /// Request has successfully completed. /// Note: taskTime only covers the time it took the current network request to run, in retry scenarios the time for the whole request may be longer. - case requestSuccess(request: RequestInfo, taskTime: TimeInterval, statusCode: Int, responseData: Data?, finalizedResult: Any?) + case requestSuccess(request: RequestInfo, taskTime: TimeInterval, statusCode: Int, responseData: Data?, finalizedResult: Any) /// Sent when a request fails but will be retried. Note: taskTime only cover the time it took the current network request to run, in retry scenarios the time for the whole request may be longer. case requestRetrying(request: RequestInfo, taskTime: TimeInterval, error: NetableError) diff --git a/Netable/Netable/Netable.swift b/Netable/Netable/Netable.swift index bfda176..3857fce 100644 --- a/Netable/Netable/Netable.swift +++ b/Netable/Netable/Netable.swift @@ -125,7 +125,14 @@ open class Netable { switch decoded { case .success(let raw): let finalizedData = request.finalize(raw: raw) - self.log(.requestSuccess(request: requestInfo, taskTime: time, statusCode: response.statusCode, responseData: data, finalizedResult: finalizedData)) + + switch finalizedData { + case .success(let finalizedResult): + self.log(.requestSuccess(request: requestInfo, taskTime: time, statusCode: response.statusCode, responseData: data, finalizedResult: finalizedResult)) + case .failure(let error): + self.log(.requestFailed(request: requestInfo, taskTime: time, error: error)) + } + completion(finalizedData) case .failure(let error): throw error From 4373885f70ad97af233ed7dcb501dc3d3b2acc34 Mon Sep 17 00:00:00 2001 From: Brendan Date: Tue, 12 Jan 2021 10:44:13 -0800 Subject: [PATCH 2/4] throw error when finalize fails instead of returning result to allow for retries --- Netable/Netable/Netable.swift | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Netable/Netable/Netable.swift b/Netable/Netable/Netable.swift index 3857fce..6f6b3da 100644 --- a/Netable/Netable/Netable.swift +++ b/Netable/Netable/Netable.swift @@ -126,11 +126,12 @@ open class Netable { case .success(let raw): let finalizedData = request.finalize(raw: raw) - switch finalizedData { - case .success(let finalizedResult): + if case let .success(finalizedResult) = finalizedData { self.log(.requestSuccess(request: requestInfo, taskTime: time, statusCode: response.statusCode, responseData: data, finalizedResult: finalizedResult)) - case .failure(let error): - self.log(.requestFailed(request: requestInfo, taskTime: time, error: error)) + } else if case let .failure(finalizedError) = finalizedData { + throw NetableError.decodingError(finalizedError, data) + } else { + throw NetableError.resourceExtractionError("Failed to parse the result of `Finalize`.") } completion(finalizedData) From fefd130a3500c87e7f5038aa82a8ffc865f35eec Mon Sep 17 00:00:00 2001 From: Brendan Date: Tue, 12 Jan 2021 11:34:23 -0800 Subject: [PATCH 3/4] dont wrap finalization error --- Netable/Netable/Netable.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Netable/Netable/Netable.swift b/Netable/Netable/Netable.swift index 6f6b3da..aa94a89 100644 --- a/Netable/Netable/Netable.swift +++ b/Netable/Netable/Netable.swift @@ -129,7 +129,7 @@ open class Netable { if case let .success(finalizedResult) = finalizedData { self.log(.requestSuccess(request: requestInfo, taskTime: time, statusCode: response.statusCode, responseData: data, finalizedResult: finalizedResult)) } else if case let .failure(finalizedError) = finalizedData { - throw NetableError.decodingError(finalizedError, data) + throw finalizedError } else { throw NetableError.resourceExtractionError("Failed to parse the result of `Finalize`.") } From fb124202bd90ae04fad05a455806527f7a2624c9 Mon Sep 17 00:00:00 2001 From: Brendan Date: Tue, 12 Jan 2021 11:53:07 -0800 Subject: [PATCH 4/4] simplify success logging unwrap --- Netable/Netable/Netable.swift | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Netable/Netable/Netable.swift b/Netable/Netable/Netable.swift index aa94a89..42ca33b 100644 --- a/Netable/Netable/Netable.swift +++ b/Netable/Netable/Netable.swift @@ -126,12 +126,11 @@ open class Netable { case .success(let raw): let finalizedData = request.finalize(raw: raw) - if case let .success(finalizedResult) = finalizedData { + switch finalizedData { + case .success(let finalizedResult): self.log(.requestSuccess(request: requestInfo, taskTime: time, statusCode: response.statusCode, responseData: data, finalizedResult: finalizedResult)) - } else if case let .failure(finalizedError) = finalizedData { + case .failure(let finalizedError): throw finalizedError - } else { - throw NetableError.resourceExtractionError("Failed to parse the result of `Finalize`.") } completion(finalizedData)