From 762da1361df6654548ce4a39ad18b5bfd8f7f4f5 Mon Sep 17 00:00:00 2001 From: dankinsoid <30962149+dankinsoid@users.noreply.github.com> Date: Mon, 8 Apr 2024 11:09:07 +0300 Subject: [PATCH] 1.5.9 --- Example/{ => Petstore}/Package.resolved | 0 Example/{ => Petstore}/Package.swift | 2 +- .../Sources/PetStore/CustomDecoder.swift | 0 .../Sources/PetStore/ExampleOfCalls.swift | 0 .../Sources/PetStore/Models.swift | 0 .../Sources/PetStore/PetStore.swift | 0 .../Sources/PetStore/PetStoreBaseURL.swift | 0 .../PetStoreWithMacros/CustomDecoder.swift | 0 .../PetStoreWithMacros/ExampleOfCalls.swift | 0 .../Sources/PetStoreWithMacros/Models.swift | 0 .../Sources/PetStoreWithMacros/PetStore.swift | 0 .../PetStoreWithMacros/PetStoreBaseURL.swift | 0 Example/Search/README.md | 6 + .../Search/Search.xcodeproj/project.pbxproj | 391 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/swiftpm/Package.resolved | 32 ++ .../UserInterfaceState.xcuserstate | Bin 0 -> 153463 bytes .../xcshareddata/xcschemes/Search.xcscheme | 88 ++++ .../xcdebugger/Breakpoints_v2.xcbkptlist | 22 + .../xcschemes/xcschememanagement.plist | 14 + .../AppIcon.appiconset/AppIcon-60@2x.png | Bin 0 -> 7569 bytes .../AppIcon.appiconset/AppIcon-76@2x.png | Bin 0 -> 9893 bytes .../AppIcon.appiconset/AppIcon-iPadPro@2x.png | Bin 0 -> 15226 bytes .../AppIcon.appiconset/AppIcon.png | Bin 0 -> 8460 bytes .../AppIcon.appiconset/Contents.json | 103 +++++ .../AppIcon.appiconset/transparent.png | Bin 0 -> 221 bytes .../Search/Assets.xcassets/Contents.json | 6 + Example/Search/Search/Models/Forecast.swift | 59 +++ .../Search/Models/GeocodingSearch.swift | 51 +++ Example/Search/Search/Search.swift | 205 +++++++++ Example/Search/Search/SearchApp.swift | 11 + Example/Search/Search/WeatherClient.swift | 58 +++ README.md | 2 +- Sources/SwiftAPIClient/APIClient.swift | 8 +- Sources/SwiftAPIClient/APIClientConfigs.swift | 2 +- .../Modifiers/TimeoutModifiers.swift | 4 +- .../SwiftAPIClient/Types/TimeoutError.swift | 2 +- .../Utils/Publishers+Task.swift | 8 +- .../SwiftAPIClient/Utils/Reachability.swift | 4 +- .../SwiftAPIClientMacros.swift | 30 +- 41 files changed, 1092 insertions(+), 31 deletions(-) rename Example/{ => Petstore}/Package.resolved (100%) rename Example/{ => Petstore}/Package.swift (96%) rename Example/{ => Petstore}/Sources/PetStore/CustomDecoder.swift (100%) rename Example/{ => Petstore}/Sources/PetStore/ExampleOfCalls.swift (100%) rename Example/{ => Petstore}/Sources/PetStore/Models.swift (100%) rename Example/{ => Petstore}/Sources/PetStore/PetStore.swift (100%) rename Example/{ => Petstore}/Sources/PetStore/PetStoreBaseURL.swift (100%) rename Example/{ => Petstore}/Sources/PetStoreWithMacros/CustomDecoder.swift (100%) rename Example/{ => Petstore}/Sources/PetStoreWithMacros/ExampleOfCalls.swift (100%) rename Example/{ => Petstore}/Sources/PetStoreWithMacros/Models.swift (100%) rename Example/{ => Petstore}/Sources/PetStoreWithMacros/PetStore.swift (100%) rename Example/{ => Petstore}/Sources/PetStoreWithMacros/PetStoreBaseURL.swift (100%) create mode 100644 Example/Search/README.md create mode 100644 Example/Search/Search.xcodeproj/project.pbxproj create mode 100644 Example/Search/Search.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Example/Search/Search.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Example/Search/Search.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100644 Example/Search/Search.xcodeproj/project.xcworkspace/xcuserdata/danil.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Example/Search/Search.xcodeproj/xcshareddata/xcschemes/Search.xcscheme create mode 100644 Example/Search/Search.xcodeproj/xcuserdata/danil.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 Example/Search/Search.xcodeproj/xcuserdata/danil.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 Example/Search/Search/Assets.xcassets/AppIcon.appiconset/AppIcon-60@2x.png create mode 100644 Example/Search/Search/Assets.xcassets/AppIcon.appiconset/AppIcon-76@2x.png create mode 100644 Example/Search/Search/Assets.xcassets/AppIcon.appiconset/AppIcon-iPadPro@2x.png create mode 100644 Example/Search/Search/Assets.xcassets/AppIcon.appiconset/AppIcon.png create mode 100644 Example/Search/Search/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Example/Search/Search/Assets.xcassets/AppIcon.appiconset/transparent.png create mode 100644 Example/Search/Search/Assets.xcassets/Contents.json create mode 100644 Example/Search/Search/Models/Forecast.swift create mode 100644 Example/Search/Search/Models/GeocodingSearch.swift create mode 100644 Example/Search/Search/Search.swift create mode 100644 Example/Search/Search/SearchApp.swift create mode 100644 Example/Search/Search/WeatherClient.swift diff --git a/Example/Package.resolved b/Example/Petstore/Package.resolved similarity index 100% rename from Example/Package.resolved rename to Example/Petstore/Package.resolved diff --git a/Example/Package.swift b/Example/Petstore/Package.swift similarity index 96% rename from Example/Package.swift rename to Example/Petstore/Package.swift index e6a01f3..0bc1912 100644 --- a/Example/Package.swift +++ b/Example/Petstore/Package.swift @@ -16,7 +16,7 @@ var package = Package( .library(name: "PetStoreWithMacros", targets: ["PetStoreWithMacros"]), ], dependencies: [ - .package(path: "../"), + .package(path: "../../"), ], targets: [ .target( diff --git a/Example/Sources/PetStore/CustomDecoder.swift b/Example/Petstore/Sources/PetStore/CustomDecoder.swift similarity index 100% rename from Example/Sources/PetStore/CustomDecoder.swift rename to Example/Petstore/Sources/PetStore/CustomDecoder.swift diff --git a/Example/Sources/PetStore/ExampleOfCalls.swift b/Example/Petstore/Sources/PetStore/ExampleOfCalls.swift similarity index 100% rename from Example/Sources/PetStore/ExampleOfCalls.swift rename to Example/Petstore/Sources/PetStore/ExampleOfCalls.swift diff --git a/Example/Sources/PetStore/Models.swift b/Example/Petstore/Sources/PetStore/Models.swift similarity index 100% rename from Example/Sources/PetStore/Models.swift rename to Example/Petstore/Sources/PetStore/Models.swift diff --git a/Example/Sources/PetStore/PetStore.swift b/Example/Petstore/Sources/PetStore/PetStore.swift similarity index 100% rename from Example/Sources/PetStore/PetStore.swift rename to Example/Petstore/Sources/PetStore/PetStore.swift diff --git a/Example/Sources/PetStore/PetStoreBaseURL.swift b/Example/Petstore/Sources/PetStore/PetStoreBaseURL.swift similarity index 100% rename from Example/Sources/PetStore/PetStoreBaseURL.swift rename to Example/Petstore/Sources/PetStore/PetStoreBaseURL.swift diff --git a/Example/Sources/PetStoreWithMacros/CustomDecoder.swift b/Example/Petstore/Sources/PetStoreWithMacros/CustomDecoder.swift similarity index 100% rename from Example/Sources/PetStoreWithMacros/CustomDecoder.swift rename to Example/Petstore/Sources/PetStoreWithMacros/CustomDecoder.swift diff --git a/Example/Sources/PetStoreWithMacros/ExampleOfCalls.swift b/Example/Petstore/Sources/PetStoreWithMacros/ExampleOfCalls.swift similarity index 100% rename from Example/Sources/PetStoreWithMacros/ExampleOfCalls.swift rename to Example/Petstore/Sources/PetStoreWithMacros/ExampleOfCalls.swift diff --git a/Example/Sources/PetStoreWithMacros/Models.swift b/Example/Petstore/Sources/PetStoreWithMacros/Models.swift similarity index 100% rename from Example/Sources/PetStoreWithMacros/Models.swift rename to Example/Petstore/Sources/PetStoreWithMacros/Models.swift diff --git a/Example/Sources/PetStoreWithMacros/PetStore.swift b/Example/Petstore/Sources/PetStoreWithMacros/PetStore.swift similarity index 100% rename from Example/Sources/PetStoreWithMacros/PetStore.swift rename to Example/Petstore/Sources/PetStoreWithMacros/PetStore.swift diff --git a/Example/Sources/PetStoreWithMacros/PetStoreBaseURL.swift b/Example/Petstore/Sources/PetStoreWithMacros/PetStoreBaseURL.swift similarity index 100% rename from Example/Sources/PetStoreWithMacros/PetStoreBaseURL.swift rename to Example/Petstore/Sources/PetStoreWithMacros/PetStoreBaseURL.swift diff --git a/Example/Search/README.md b/Example/Search/README.md new file mode 100644 index 0000000..5313866 --- /dev/null +++ b/Example/Search/README.md @@ -0,0 +1,6 @@ +# Search + +This application demonstrates how to build a search feature in the swift-api-client: + +* Typing into the search field executes an API request to search for locations. +* Tapping a location runs another API request to fetch the weather for that location, and when a response is received the data is displayed inline in that row. diff --git a/Example/Search/Search.xcodeproj/project.pbxproj b/Example/Search/Search.xcodeproj/project.pbxproj new file mode 100644 index 0000000..87e5664 --- /dev/null +++ b/Example/Search/Search.xcodeproj/project.pbxproj @@ -0,0 +1,391 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 8326FD652BC3CC8F00B7AB65 /* SwiftAPIClient in Frameworks */ = {isa = PBXBuildFile; productRef = 8326FD642BC3CC8F00B7AB65 /* SwiftAPIClient */; }; + 8326FD682BC3CD2E00B7AB65 /* GeocodingSearch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8326FD672BC3CD2E00B7AB65 /* GeocodingSearch.swift */; }; + 8326FD6A2BC3CD4800B7AB65 /* Forecast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8326FD692BC3CD4800B7AB65 /* Forecast.swift */; }; + CA66690B242547B000A639B3 /* WeatherClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA66690A242547B000A639B3 /* WeatherClient.swift */; }; + CA86E49D24253C2500357AD9 /* SearchApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA86E49C24253C2500357AD9 /* SearchApp.swift */; }; + CA86E49F24253C2500357AD9 /* Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA86E49E24253C2500357AD9 /* Search.swift */; }; + CA86E4A124253C2700357AD9 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CA86E4A024253C2700357AD9 /* Assets.xcassets */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + CA86E4C324253C5400357AD9 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 8326FD672BC3CD2E00B7AB65 /* GeocodingSearch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GeocodingSearch.swift; sourceTree = ""; }; + 8326FD692BC3CD4800B7AB65 /* Forecast.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Forecast.swift; sourceTree = ""; }; + CA66690A242547B000A639B3 /* WeatherClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WeatherClient.swift; sourceTree = ""; }; + CA86E49724253C2500357AD9 /* Search.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Search.app; sourceTree = BUILT_PRODUCTS_DIR; }; + CA86E49C24253C2500357AD9 /* SearchApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchApp.swift; sourceTree = ""; }; + CA86E49E24253C2500357AD9 /* Search.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Search.swift; sourceTree = ""; }; + CA86E4A024253C2700357AD9 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + DC85B4A7242D07A6009784B0 /* swiftapiclient */ = {isa = PBXFileReference; lastKnownFileType = folder; name = swiftapiclient; path = ../..; sourceTree = ""; }; + DCB9EA3E26B21EC800497C03 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + CA86E49424253C2500357AD9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8326FD652BC3CC8F00B7AB65 /* SwiftAPIClient in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 8326FD662BC3CD2600B7AB65 /* Models */ = { + isa = PBXGroup; + children = ( + 8326FD672BC3CD2E00B7AB65 /* GeocodingSearch.swift */, + 8326FD692BC3CD4800B7AB65 /* Forecast.swift */, + ); + path = Models; + sourceTree = ""; + }; + 83E5F5ED2A90165500C772A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; + CA86E48E24253C2500357AD9 = { + isa = PBXGroup; + children = ( + DC85B4A7242D07A6009784B0 /* swiftapiclient */, + DCB9EA3E26B21EC800497C03 /* README.md */, + CA86E49824253C2500357AD9 /* Products */, + CA86E49924253C2500357AD9 /* Search */, + 83E5F5ED2A90165500C772A0 /* Frameworks */, + ); + sourceTree = ""; + }; + CA86E49824253C2500357AD9 /* Products */ = { + isa = PBXGroup; + children = ( + CA86E49724253C2500357AD9 /* Search.app */, + ); + name = Products; + sourceTree = ""; + }; + CA86E49924253C2500357AD9 /* Search */ = { + isa = PBXGroup; + children = ( + 8326FD662BC3CD2600B7AB65 /* Models */, + CA86E49C24253C2500357AD9 /* SearchApp.swift */, + CA86E49E24253C2500357AD9 /* Search.swift */, + CA66690A242547B000A639B3 /* WeatherClient.swift */, + CA86E4A024253C2700357AD9 /* Assets.xcassets */, + ); + path = Search; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + CA86E49624253C2500357AD9 /* Search */ = { + isa = PBXNativeTarget; + buildConfigurationList = CA86E4B624253C2700357AD9 /* Build configuration list for PBXNativeTarget "Search" */; + buildPhases = ( + CA86E49324253C2500357AD9 /* Sources */, + CA86E49424253C2500357AD9 /* Frameworks */, + CA86E49524253C2500357AD9 /* Resources */, + CA86E4C324253C5400357AD9 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Search; + packageProductDependencies = ( + 8326FD642BC3CC8F00B7AB65 /* SwiftAPIClient */, + ); + productName = Search; + productReference = CA86E49724253C2500357AD9 /* Search.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + CA86E48F24253C2500357AD9 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastSwiftUpdateCheck = 1140; + LastUpgradeCheck = 1500; + ORGANIZATIONNAME = "Brandon Williams"; + TargetAttributes = { + CA86E49624253C2500357AD9 = { + CreatedOnToolsVersion = 11.4; + }; + }; + }; + buildConfigurationList = CA86E49224253C2500357AD9 /* Build configuration list for PBXProject "Search" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = CA86E48E24253C2500357AD9; + packageReferences = ( + ); + productRefGroup = CA86E49824253C2500357AD9 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + CA86E49624253C2500357AD9 /* Search */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + CA86E49524253C2500357AD9 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + CA86E4A124253C2700357AD9 /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + CA86E49324253C2500357AD9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + CA66690B242547B000A639B3 /* WeatherClient.swift in Sources */, + 8326FD682BC3CD2E00B7AB65 /* GeocodingSearch.swift in Sources */, + CA86E49D24253C2500357AD9 /* SearchApp.swift in Sources */, + CA86E49F24253C2500357AD9 /* Search.swift in Sources */, + 8326FD6A2BC3CD4800B7AB65 /* Forecast.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + CA86E4B424253C2700357AD9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + CA86E4B524253C2700357AD9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + CA86E4B724253C2700357AD9 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 4733T56UZW; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + OTHER_SWIFT_FLAGS = "-Xfrontend -warn-concurrency -Xfrontend -enable-actor-data-race-checks"; + PRODUCT_BUNDLE_IDENTIFIER = co.pointfree.Search; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + CA86E4B824253C2700357AD9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 4733T56UZW; + ENABLE_PREVIEWS = YES; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.0; + OTHER_SWIFT_FLAGS = "-Xfrontend -warn-concurrency -Xfrontend -enable-actor-data-race-checks"; + PRODUCT_BUNDLE_IDENTIFIER = co.pointfree.Search; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + CA86E49224253C2500357AD9 /* Build configuration list for PBXProject "Search" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CA86E4B424253C2700357AD9 /* Debug */, + CA86E4B524253C2700357AD9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + CA86E4B624253C2700357AD9 /* Build configuration list for PBXNativeTarget "Search" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CA86E4B724253C2700357AD9 /* Debug */, + CA86E4B824253C2700357AD9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCSwiftPackageProductDependency section */ + 8326FD642BC3CC8F00B7AB65 /* SwiftAPIClient */ = { + isa = XCSwiftPackageProductDependency; + productName = SwiftAPIClient; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = CA86E48F24253C2500357AD9 /* Project object */; +} diff --git a/Example/Search/Search.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Example/Search/Search.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Example/Search/Search.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Example/Search/Search.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Example/Search/Search.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Example/Search/Search.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Example/Search/Search.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Example/Search/Search.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..9ed30fe --- /dev/null +++ b/Example/Search/Search.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,32 @@ +{ + "pins" : [ + { + "identity" : "swift-http-types", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-http-types.git", + "state" : { + "revision" : "12358d55a3824bd5fed310b999ea8cf83a9a1a65", + "version" : "1.0.3" + } + }, + { + "identity" : "swift-log", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-log.git", + "state" : { + "revision" : "e97a6fcb1ab07462881ac165fdbb37f067e205d5", + "version" : "1.5.4" + } + }, + { + "identity" : "swift-syntax", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-syntax.git", + "state" : { + "revision" : "64889f0c732f210a935a0ad7cda38f77f876262d", + "version" : "509.1.1" + } + } + ], + "version" : 2 +} diff --git a/Example/Search/Search.xcodeproj/project.xcworkspace/xcuserdata/danil.xcuserdatad/UserInterfaceState.xcuserstate b/Example/Search/Search.xcodeproj/project.xcworkspace/xcuserdata/danil.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..2c6204822e260d30eb9c49e69ff5d7aeaf5afa35 GIT binary patch literal 153463 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 UzuEu(oVMTp{`~*{2V=wk1)c&Ag#Z8m literal 0 HcmV?d00001 diff --git a/Example/Search/Search.xcodeproj/xcshareddata/xcschemes/Search.xcscheme b/Example/Search/Search.xcodeproj/xcshareddata/xcschemes/Search.xcscheme new file mode 100644 index 0000000..c780970 --- /dev/null +++ b/Example/Search/Search.xcodeproj/xcshareddata/xcschemes/Search.xcscheme @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/Search/Search.xcodeproj/xcuserdata/danil.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Example/Search/Search.xcodeproj/xcuserdata/danil.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..792efd7 --- /dev/null +++ b/Example/Search/Search.xcodeproj/xcuserdata/danil.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,22 @@ + + + + + + + + + diff --git a/Example/Search/Search.xcodeproj/xcuserdata/danil.xcuserdatad/xcschemes/xcschememanagement.plist b/Example/Search/Search.xcodeproj/xcuserdata/danil.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..6fbdf70 --- /dev/null +++ b/Example/Search/Search.xcodeproj/xcuserdata/danil.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + Search.xcscheme_^#shared#^_ + + orderHint + 1 + + + + diff --git a/Example/Search/Search/Assets.xcassets/AppIcon.appiconset/AppIcon-60@2x.png b/Example/Search/Search/Assets.xcassets/AppIcon.appiconset/AppIcon-60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b1516e5a122b534ae5a9d14706d6248718aeb03a GIT binary patch literal 7569 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 literal 0 HcmV?d00001 diff --git a/Example/Search/Search/Assets.xcassets/AppIcon.appiconset/AppIcon-76@2x.png b/Example/Search/Search/Assets.xcassets/AppIcon.appiconset/AppIcon-76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..869cd81f3aee14834f60b9fb9bb87b3ec53a2840 GIT binary patch literal 9893 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 XN$)>5c`(j700000NkvXXu0mjfLN#h7 literal 0 HcmV?d00001 diff --git a/Example/Search/Search/Assets.xcassets/AppIcon.appiconset/AppIcon-iPadPro@2x.png b/Example/Search/Search/Assets.xcassets/AppIcon.appiconset/AppIcon-iPadPro@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..94a32fd65c0f0b6cd8af035b2d10286b49c8732b GIT binary patch literal 15226 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 literal 0 HcmV?d00001 diff --git a/Example/Search/Search/Assets.xcassets/AppIcon.appiconset/Contents.json b/Example/Search/Search/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..4f45077 --- /dev/null +++ b/Example/Search/Search/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,103 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "filename" : "AppIcon-60@2x.png", + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "filename" : "AppIcon.png", + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "filename" : "AppIcon-76@2x.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "filename" : "AppIcon-iPadPro@2x.png", + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "filename" : "transparent.png", + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/Search/Search/Assets.xcassets/AppIcon.appiconset/transparent.png b/Example/Search/Search/Assets.xcassets/AppIcon.appiconset/transparent.png new file mode 100644 index 0000000000000000000000000000000000000000..bae1e0d7424038acc03d0981da831baf5752e49e GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0y~yU;#2&7#M*hLwK5)9*|-x3GxeOU?`h>)&j_z=IP=X tQo;E4U?WJ$;RU~g? + private var searchResultTappedTask: Task? + + @MainActor + func searchQueryChanged(query: String) { + guard query != state.searchQuery else { return } + searchQueryChangeDebouncedTask?.cancel() + if !query.isEmpty { + searchQueryChangeDebouncedTask = Task { + await self.searchQueryChangeDebounced() + } + } else { + state.results = [] + state.weather = nil + } + state.searchQuery = query + } + + @MainActor + func searchResultTapped(location: GeocodingSearch.Result) { + searchResultTappedTask?.cancel() + searchResultTappedTask = Task { + await self.searchResultTapped(location: location) + } + } + + @MainActor + private func searchQueryChangeDebounced() async { + try? await Task.sleep(nanoseconds: NSEC_PER_SEC / 3) + guard !state.searchQuery.isEmpty, !Task.isCancelled else { + return + } + do { + let response = try await WeatherClient().search(name: state.searchQuery) + try Task.checkCancellation() + state.results = response.results ?? [] + } catch { + guard !Task.isCancelled, !(error is CancellationError) else { return } + state.results = [] + } + } + + @MainActor + private func searchResultTapped(location: GeocodingSearch.Result) async { + state.resultForecastRequestInFlight = location + defer { state.resultForecastRequestInFlight = nil } + do { + let forecast = try await WeatherClient().forecast( + latitude: location.latitude, + longitude: location.longitude + ) + state.weather = Search.Weather( + id: location.id, + days: forecast.daily.time.indices.map { + Search.Weather.Day( + date: forecast.daily.time[$0], + temperatureMax: forecast.daily.temperatureMax[$0], + temperatureMaxUnit: forecast.dailyUnits.temperatureMax, + temperatureMin: forecast.daily.temperatureMin[$0], + temperatureMinUnit: forecast.dailyUnits.temperatureMin + ) + } + ) + } catch { + state.weather = nil + } + } +} + +// MARK: - Search feature view + +struct SearchView: View { + + @State var vm = SearchViewModel() + + var body: some View { + NavigationStack { + VStack(alignment: .leading) { + Text("Search weather app example") + .padding() + + HStack { + Image(systemName: "magnifyingglass") + TextField( + "New York, San Francisco, ...", + text: Binding { + vm.state.searchQuery + } set: { text in + vm.searchQueryChanged(query: text) + } + ) + .textFieldStyle(.roundedBorder) + .autocapitalization(.none) + .disableAutocorrection(true) + } + .padding(.horizontal, 16) + + List { + ForEach(vm.state.results) { location in + VStack(alignment: .leading) { + Button { + vm.searchResultTapped(location: location) + } label: { + HStack { + Text(location.name) + + if vm.state.resultForecastRequestInFlight?.id == location.id { + ProgressView() + } + } + } + + if location.id == vm.state.weather?.id { + weatherView(locationWeather: vm.state.weather) + } + } + } + } + + Button("Weather API provided by Open-Meteo") { + UIApplication.shared.open(URL(string: "https://open-meteo.com/en")!) + } + .foregroundColor(.gray) + .padding(.all, 16) + } + .navigationTitle("Search") + } + } + + @ViewBuilder + func weatherView(locationWeather: Search.Weather?) -> some View { + if let locationWeather { + let days = locationWeather.days + .enumerated() + .map { idx, weather in formattedWeather(day: weather, isToday: idx == 0) } + + VStack(alignment: .leading) { + ForEach(days, id: \.self) { day in + Text(day) + } + } + .padding(.leading, 16) + } + } +} + +// MARK: - Private helpers + +private func formattedWeather(day: Search.Weather.Day, isToday: Bool) -> String { + let date = + isToday + ? "Today" + : dateFormatter.string(from: day.date).capitalized + let min = "\(day.temperatureMin)\(day.temperatureMinUnit)" + let max = "\(day.temperatureMax)\(day.temperatureMaxUnit)" + + return "\(date), \(min) – \(max)" +} + +private let dateFormatter: DateFormatter = { + let formatter = DateFormatter() + formatter.dateFormat = "EEEE" + return formatter +}() + +// MARK: - SwiftUI previews + +struct SearchView_Previews: PreviewProvider { + + static var previews: some View { + SearchView() + } +} diff --git a/Example/Search/Search/SearchApp.swift b/Example/Search/Search/SearchApp.swift new file mode 100644 index 0000000..c7461af --- /dev/null +++ b/Example/Search/Search/SearchApp.swift @@ -0,0 +1,11 @@ +import SwiftUI + +@main +struct SearchApp: App { + + var body: some Scene { + WindowGroup { + SearchView() + } + } +} diff --git a/Example/Search/Search/WeatherClient.swift b/Example/Search/Search/WeatherClient.swift new file mode 100644 index 0000000..e9250fe --- /dev/null +++ b/Example/Search/Search/WeatherClient.swift @@ -0,0 +1,58 @@ +import Foundation +import SwiftAPIClient + +@API +struct WeatherClient { + + init() { + client = APIClient(baseURL: \.weatherURL.url) + .path("v1") + .bodyDecoder(jsonDecoder) + .queryEncoder(.urlQuery(arrayEncodingStrategy: .commaSeparator)) + } + + @GET + func forecast( + @Query latitude: Double, + @Query longitude: Double, + @Query daily: [Forecast.DailyUnits.CodingKeys] = [.temperatureMin, .temperatureMax], + @Query timezone: String = TimeZone.autoupdatingCurrent.identifier + ) async throws -> Forecast {} + + @GET + func search(@Query name: String) async throws -> GeocodingSearch { + client.configs(\.weatherURL, .geocoding) + } +} + +extension WeatherClient { + + enum BaseURL: String { + + case base = "https://api.open-meteo.com" + case geocoding = "https://geocoding-api.open-meteo.com" + + var url: URL { URL(string: rawValue)! } + } +} + +extension APIClient.Configs { + + var weatherURL: WeatherClient.BaseURL { + get { self[\.weatherURL] ?? .base } + set { self[\.weatherURL] = newValue } + } +} + +// MARK: - Private helpers + +private let jsonDecoder: JSONDecoder = { + let decoder = JSONDecoder() + let formatter = DateFormatter() + formatter.calendar = Calendar(identifier: .iso8601) + formatter.dateFormat = "yyyy-MM-dd" + formatter.timeZone = TimeZone(secondsFromGMT: 0) + formatter.locale = Locale(identifier: "en_US_POSIX") + decoder.dateDecodingStrategy = .formatted(formatter) + return decoder +}() diff --git a/README.md b/README.md index 5e3aa8f..faee5ba 100644 --- a/README.md +++ b/README.md @@ -326,7 +326,7 @@ import PackageDescription let package = Package( name: "SomeProject", dependencies: [ - .package(url: "https://github.com/dankinsoid/swift-api-client.git", from: "1.5.8") + .package(url: "https://github.com/dankinsoid/swift-api-client.git", from: "1.5.9") ], targets: [ .target( diff --git a/Sources/SwiftAPIClient/APIClient.swift b/Sources/SwiftAPIClient/APIClient.swift index 8f3f2d3..573924f 100644 --- a/Sources/SwiftAPIClient/APIClient.swift +++ b/Sources/SwiftAPIClient/APIClient.swift @@ -4,7 +4,7 @@ import Foundation #endif /// A network client for handling url requests with configurable request and configuration handling. -public struct APIClient { +public struct APIClient: @unchecked Sendable { private var _createRequest: (Configs) throws -> HTTPRequest private var _modifyRequest: (inout HTTPRequest, Configs) throws -> Void = { _, _ in } @@ -204,8 +204,8 @@ public extension APIClient { /// } /// ``` static func withModifiers( - _ modifiers: @escaping (APIClient) -> APIClient, - operation: () async throws -> T + _ modifiers: @escaping @Sendable (APIClient) -> APIClient, + operation: @Sendable () async throws -> T ) async rethrows -> T { let current = APIClient.globalModifier return try await APIClient.$globalModifier.withValue( @@ -218,5 +218,5 @@ public extension APIClient { private extension APIClient { @TaskLocal - static var globalModifier: (APIClient) -> APIClient = { $0 } + static var globalModifier: @Sendable (APIClient) -> APIClient = { $0 } } diff --git a/Sources/SwiftAPIClient/APIClientConfigs.swift b/Sources/SwiftAPIClient/APIClientConfigs.swift index 6805522..200a3db 100644 --- a/Sources/SwiftAPIClient/APIClientConfigs.swift +++ b/Sources/SwiftAPIClient/APIClientConfigs.swift @@ -7,7 +7,7 @@ import FoundationNetworking public extension APIClient { /// A struct representing the configuration settings for a `APIClient`. - struct Configs { + struct Configs: @unchecked Sendable { private var values: [PartialKeyPath: Any] = [:] diff --git a/Sources/SwiftAPIClient/Modifiers/TimeoutModifiers.swift b/Sources/SwiftAPIClient/Modifiers/TimeoutModifiers.swift index 3d78b6e..7445532 100644 --- a/Sources/SwiftAPIClient/Modifiers/TimeoutModifiers.swift +++ b/Sources/SwiftAPIClient/Modifiers/TimeoutModifiers.swift @@ -75,8 +75,8 @@ public extension APIClient { ) -> APIClient where C.Duration == Duration { self.timeout( timeout, - seconds: { Double($0.components.seconds) + Double($0.components.attoseconds) * pow(10.0, -18.0) }, - sleep: { try await clock.sleep(until: clock.now.advanced(by: $0), tolerance: tolerance) }, + seconds: { Double($0.components.seconds) + Double($0.components.attoseconds) * pow(10.0, -18.0) }, + sleep: { try await clock.sleep(until: clock.now.advanced(by: $0), tolerance: tolerance) }, fileID: fileID, line: line ) diff --git a/Sources/SwiftAPIClient/Types/TimeoutError.swift b/Sources/SwiftAPIClient/Types/TimeoutError.swift index 6ef4f4f..f43ac8a 100644 --- a/Sources/SwiftAPIClient/Types/TimeoutError.swift +++ b/Sources/SwiftAPIClient/Types/TimeoutError.swift @@ -44,7 +44,7 @@ public func withTimeout( try await withTimeout( timeout, seconds: { Double($0.components.seconds) + (Double($0.components.attoseconds) * pow(10, -18)) }, - sleep: { try await clock.sleep(until: clock.now.advanced(by: $0), tolerance: tolerance) }, + sleep: { try await clock.sleep(until: clock.now.advanced(by: $0), tolerance: tolerance) }, fileID: fileID, line: line, operation: operation diff --git a/Sources/SwiftAPIClient/Utils/Publishers+Task.swift b/Sources/SwiftAPIClient/Utils/Publishers+Task.swift index f0810ce..a243557 100644 --- a/Sources/SwiftAPIClient/Utils/Publishers+Task.swift +++ b/Sources/SwiftAPIClient/Utils/Publishers+Task.swift @@ -2,17 +2,17 @@ import Combine import Foundation -extension Publishers { +public extension Publishers { - public struct Run: Publisher { + struct Run: Publisher { fileprivate let task: ((Result) -> Void) async -> Void - public init(_ task: @escaping ((Result) -> Void) async -> Void) { + public init(_ task: @escaping ((Result) -> Void) async -> Void) { self.task = task } - public func receive(subscriber: S) where Failure == S.Failure, Output == S.Input { + public func receive(subscriber: S) where Failure == S.Failure, Output == S.Input { Publishers.Create { onOutput, onCompletion, cancellationHandler in let concurrencyTask = Task { await task { diff --git a/Sources/SwiftAPIClient/Utils/Reachability.swift b/Sources/SwiftAPIClient/Utils/Reachability.swift index 2fbe445..3f98485 100644 --- a/Sources/SwiftAPIClient/Utils/Reachability.swift +++ b/Sources/SwiftAPIClient/Utils/Reachability.swift @@ -358,9 +358,9 @@ private extension Reachability { let notify = { [weak self] in guard let self else { return } let connection = self.connection - self.lock.lock() + self.lock.lock() let subscriptions = self.subscriptions - self.lock.unlock() + self.lock.unlock() for subscription in subscriptions { subscription.value(connection) } diff --git a/Sources/SwiftAPIClientMacros/SwiftAPIClientMacros.swift b/Sources/SwiftAPIClientMacros/SwiftAPIClientMacros.swift index f50e1cc..bf1985e 100644 --- a/Sources/SwiftAPIClientMacros/SwiftAPIClientMacros.swift +++ b/Sources/SwiftAPIClientMacros/SwiftAPIClientMacros.swift @@ -55,29 +55,29 @@ public struct SwiftAPIClientCallMacro: PeerMacro { } var queryParams: ([String], [(String, String)]) = ([], []) var bodyParams: ([String], [(String, String)]) = ([], []) - var fileIDName = "fileID" - var lineName = "line" + var fileIDName = "fileID" + var lineName = "line" for var param in funcDecl.signature.parameterClause.parameters { let name = (param.secondName ?? param.firstName).trimmed.text if param.attributes.contains("Body") || name == "body", attribute.method == ".get" { throw MacroError("Body parameter is not allowed with GET method") } - if param.defaultValue?.value.description == "#fileID" { - fileIDName = name - } else if param.defaultValue?.value.description == "#line" { - lineName = name - } else { - let count = params.count - params += try scanParameters(name: name, type: "Query", param: ¶m, into: &queryParams) - params += try scanParameters(name: name, type: "Body", param: ¶m, into: &bodyParams) - if count == params.count { - params.append(param) - } - } + if param.defaultValue?.value.description == "#fileID" { + fileIDName = name + } else if param.defaultValue?.value.description == "#line" { + lineName = name + } else { + let count = params.count + params += try scanParameters(name: name, type: "Query", param: ¶m, into: &queryParams) + params += try scanParameters(name: name, type: "Body", param: ¶m, into: &bodyParams) + if count == params.count { + params.append(param) + } + } } params += [ - "\n\(raw: fileIDName): String = #fileID,", + "\n\(raw: fileIDName): String = #fileID,", "\n\(raw: lineName): UInt = #line", ] funcDecl.signature.parameterClause.rightParen.leadingTrivia = .newline