diff --git a/Cartfile b/Cartfile deleted file mode 100644 index e8557b4..0000000 --- a/Cartfile +++ /dev/null @@ -1 +0,0 @@ -github "Alamofire/Alamofire" "5.0.0" diff --git a/Cartfile.resolved b/Cartfile.resolved deleted file mode 100644 index e8557b4..0000000 --- a/Cartfile.resolved +++ /dev/null @@ -1 +0,0 @@ -github "Alamofire/Alamofire" "5.0.0" diff --git a/Example/API.swift b/Example/API.swift deleted file mode 100644 index f577858..0000000 --- a/Example/API.swift +++ /dev/null @@ -1,54 +0,0 @@ -// -// API.swift -// Fetch -// -// Created by Michael Heinzl on 02.04.19. -// Copyright © 2019 aaa - all about apps GmbH. All rights reserved. -// - -import Foundation -import Alamofire -import Fetch - -public struct API { - - public struct BlogPosts { - - public static func list() -> Resource<[BlogPost]> { - return Resource( - method: .get, - path: "/posts") - } - - public static func detail(id: Int) -> Resource { - return Resource( - method: .get, - path: "/posts/\(id)") - } - - public static func create(_ post: BlogPost) -> Resource { - return Resource( - method: .post, - path: "/posts", - body: .encodable([ - "title": post.title, - "author": post.author - ])) - } - - public static func nestedTest() -> Resource { - return Resource( - method: .get, - path: "/mocked", - rootKeys: ["super", "deep", "nesting"], - shouldStub: true, - stub: StubResponse(statusCode: 200, fileName: "nested-post.json", delay: 1)) - } - } - - public static func getEmpty() -> Resource { - return Resource( - method: .get, - path: "/posts") - } -} diff --git a/Example/AppDelegate.swift b/Example/AppDelegate.swift deleted file mode 100644 index 1e96994..0000000 --- a/Example/AppDelegate.swift +++ /dev/null @@ -1,34 +0,0 @@ -import UIKit -import Fetch - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - var window: UIWindow? - - func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - let url = URL(string: "https://f4a4ddde.ngrok.io")! - - APIClient.shared.setup(with: Fetch.Config( - baseURL: url, - cache: MemoryCache(defaultExpiration: .seconds(60)), - shouldStub: false)) - - return true - } - - func applicationWillResignActive(_: UIApplication) { - } - - func applicationDidEnterBackground(_: UIApplication) { - } - - func applicationWillEnterForeground(_: UIApplication) { - } - - func applicationDidBecomeActive(_: UIApplication) { - } - - func applicationWillTerminate(_: UIApplication) { - } -} diff --git a/Example/Config.swift b/Example/Config.swift deleted file mode 100644 index 0a42186..0000000 --- a/Example/Config.swift +++ /dev/null @@ -1,13 +0,0 @@ -import Foundation - -/// Global set of configuration values for this application. -public struct Config { - static let keyPrefix = "at.allaboutapps" - - // MARK: Keychain - - public struct Keychain { - static let credentialStorageKey = "CredentialsStorage" - static let credentialsKey = "credentials" - } -} diff --git a/Example/ReactiveFetch.swift b/Example/ReactiveFetch.swift deleted file mode 100644 index b5e2bfa..0000000 --- a/Example/ReactiveFetch.swift +++ /dev/null @@ -1,68 +0,0 @@ -// -// ReactiveFetch.swift -// Example -// -// Created by Michael Heinzl on 09.04.19. -// Copyright © 2019 aaa - all about apps GmbH. All rights reserved. -// - -import ReactiveSwift -import Fetch - -// MARK: - Request - -extension Resource { - - func request() -> SignalProducer, FetchError> { - return SignalProducer { (observer, lifetime) in - let strongSelf = self - let token = strongSelf.request { (result) in - switch result { - case .success(let response): - observer.send(value: response) - observer.sendCompleted() - case .failure(let error): - observer.send(error: error) - } - } - - lifetime.observeEnded { - token?.cancel() - } - } - } - - func requestModel() -> SignalProducer { - return request().map { $0.model } - } -} - -// MARK: - Fetch - -extension Resource where T: Cacheable { - - func fetch(cachePolicy: CachePolicy? = nil) -> SignalProducer, FetchError> { - return SignalProducer { (observer, lifetime) in - let strongSelf = self - let token = strongSelf.fetch(cachePolicy: cachePolicy) { (result, isFinished) in - switch result { - case .success(let response): - observer.send(value: response) - if isFinished { - observer.sendCompleted() - } - case .failure(let error): - observer.send(error: error) - } - } - - lifetime.observeEnded { - token.cancel() - } - } - } - - func fetchModel(cachePolicy: CachePolicy? = nil) -> SignalProducer { - return fetch(cachePolicy: cachePolicy).map { $0.model } - } -} diff --git a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Contents.json b/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 1f29156..0000000 --- a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "images" : [ - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-20@2x.png", - "scale" : "2x" - }, - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-20@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-29@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-40@3x.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-60@3x.png", - "scale" : "3x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-20.png", - "scale" : "1x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-20@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-29.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-29@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-40.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-40@2x.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-76.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-76@2x.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "Icon-83.5@2x.png", - "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-1024.png", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-1024.png b/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-1024.png deleted file mode 100644 index 59c8e7e..0000000 Binary files a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-1024.png and /dev/null differ diff --git a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-20.png b/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-20.png deleted file mode 100644 index 6cd6cdb..0000000 Binary files a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-20.png and /dev/null differ diff --git a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-20@2x.png b/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-20@2x.png deleted file mode 100644 index c4e1640..0000000 Binary files a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-20@2x.png and /dev/null differ diff --git a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-20@3x.png b/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-20@3x.png deleted file mode 100644 index 7faa52f..0000000 Binary files a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-20@3x.png and /dev/null differ diff --git a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-29.png b/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-29.png deleted file mode 100644 index 359126d..0000000 Binary files a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-29.png and /dev/null differ diff --git a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png b/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png deleted file mode 100644 index 1c712c3..0000000 Binary files a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png and /dev/null differ diff --git a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png b/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png deleted file mode 100644 index 61beca9..0000000 Binary files a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png and /dev/null differ diff --git a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-40.png b/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-40.png deleted file mode 100644 index c4e1640..0000000 Binary files a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-40.png and /dev/null differ diff --git a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png b/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png deleted file mode 100644 index 71ab8fe..0000000 Binary files a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png and /dev/null differ diff --git a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png b/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png deleted file mode 100644 index 29bf828..0000000 Binary files a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png and /dev/null differ diff --git a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png b/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png deleted file mode 100644 index bcb1cf3..0000000 Binary files a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png and /dev/null differ diff --git a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png b/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png deleted file mode 100644 index 9d8a365..0000000 Binary files a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png and /dev/null differ diff --git a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-76.png b/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-76.png deleted file mode 100644 index e451518..0000000 Binary files a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-76.png and /dev/null differ diff --git a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png b/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png deleted file mode 100644 index 6d3f68c..0000000 Binary files a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png and /dev/null differ diff --git a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png b/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png deleted file mode 100644 index 24defae..0000000 Binary files a/Example/Storyboards/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png and /dev/null differ diff --git a/Example/Storyboards/Base.lproj/Main.storyboard b/Example/Storyboards/Base.lproj/Main.storyboard deleted file mode 100644 index b433aed..0000000 --- a/Example/Storyboards/Base.lproj/Main.storyboard +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Example/Stubs/post.json b/Example/Stubs/post.json deleted file mode 100644 index 3eeaa3c..0000000 --- a/Example/Stubs/post.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "id": 1234, - "title": "Fetch the awesome networking framework!", - "author": "iOS Developer" -} diff --git a/Example/SupportingFiles/Info.plist b/Example/SupportingFiles/Info.plist deleted file mode 100644 index 14d8beb..0000000 --- a/Example/SupportingFiles/Info.plist +++ /dev/null @@ -1,44 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - ITSAppUsesNonExemptEncryption - - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UIRequiredDeviceCapabilities - - armv7 - - UIRequiresFullScreen - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - _Configuration - $(CONFIGURATION) - - diff --git a/CombineExample/CombineExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Examples/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata similarity index 100% rename from CombineExample/CombineExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to Examples/.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata diff --git a/CombineExample/CombineExample.xcodeproj/project.pbxproj b/Examples/CombineExample/CombineExample.xcodeproj/project.pbxproj similarity index 99% rename from CombineExample/CombineExample.xcodeproj/project.pbxproj rename to Examples/CombineExample/CombineExample.xcodeproj/project.pbxproj index 171f2e0..f051bc6 100644 --- a/CombineExample/CombineExample.xcodeproj/project.pbxproj +++ b/Examples/CombineExample/CombineExample.xcodeproj/project.pbxproj @@ -33,7 +33,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 19A24D652761F5B6008EC55C /* Fetch */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Fetch; path = ..; sourceTree = ""; }; + 19A31BD5278584B20078638C /* Fetch */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = Fetch; path = ../..; sourceTree = ""; }; 19E1DF2D22F4331600ACF220 /* CombineExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CombineExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 19E1DF3022F4331600ACF220 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 19E1DF3222F4331600ACF220 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; @@ -81,7 +81,7 @@ 19E1DF2422F4331600ACF220 = { isa = PBXGroup; children = ( - 19A24D652761F5B6008EC55C /* Fetch */, + 19A31BD5278584B20078638C /* Fetch */, 19E1DF2F22F4331600ACF220 /* CombineExample */, 19E1DF4622F4331700ACF220 /* CombineExampleTests */, 19E1DF2E22F4331600ACF220 /* Products */, diff --git a/Fetch.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Examples/CombineExample/CombineExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from Fetch.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to Examples/CombineExample/CombineExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/CombineExample/CombineExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Examples/CombineExample/CombineExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from CombineExample/CombineExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to Examples/CombineExample/CombineExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Fetch.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Examples/CombineExample/CombineExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved similarity index 71% rename from Fetch.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved rename to Examples/CombineExample/CombineExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 60cdbeb..878d8d2 100644 --- a/Fetch.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Examples/CombineExample/CombineExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/Alamofire/Alamofire.git", "state": { "branch": null, - "revision": "d120af1e8638c7da36c8481fd61a66c0c08dc4fc", - "version": "5.4.4" + "revision": "f82c23a8a7ef8dc1a49a8bfc6a96883e79121864", + "version": "5.5.0" } } ] diff --git a/CombineExample/CombineExample/AppDelegate.swift b/Examples/CombineExample/CombineExample/AppDelegate.swift similarity index 100% rename from CombineExample/CombineExample/AppDelegate.swift rename to Examples/CombineExample/CombineExample/AppDelegate.swift diff --git a/CombineExample/CombineExample/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json b/Examples/CombineExample/CombineExample/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from CombineExample/CombineExample/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Examples/CombineExample/CombineExample/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/CombineExample/CombineExample/Assets/Assets.xcassets/Contents.json b/Examples/CombineExample/CombineExample/Assets/Assets.xcassets/Contents.json similarity index 100% rename from CombineExample/CombineExample/Assets/Assets.xcassets/Contents.json rename to Examples/CombineExample/CombineExample/Assets/Assets.xcassets/Contents.json diff --git a/CombineExample/CombineExample/Assets/Preview Content/Preview Assets.xcassets/Contents.json b/Examples/CombineExample/CombineExample/Assets/Preview Content/Preview Assets.xcassets/Contents.json similarity index 100% rename from CombineExample/CombineExample/Assets/Preview Content/Preview Assets.xcassets/Contents.json rename to Examples/CombineExample/CombineExample/Assets/Preview Content/Preview Assets.xcassets/Contents.json diff --git a/CombineExample/CombineExample/Base.lproj/LaunchScreen.storyboard b/Examples/CombineExample/CombineExample/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from CombineExample/CombineExample/Base.lproj/LaunchScreen.storyboard rename to Examples/CombineExample/CombineExample/Base.lproj/LaunchScreen.storyboard diff --git a/CombineExample/CombineExample/ContentView.swift b/Examples/CombineExample/CombineExample/ContentView.swift similarity index 100% rename from CombineExample/CombineExample/ContentView.swift rename to Examples/CombineExample/CombineExample/ContentView.swift diff --git a/CombineExample/CombineExample/Networking/GithubAPI.swift b/Examples/CombineExample/CombineExample/Networking/GithubAPI.swift similarity index 100% rename from CombineExample/CombineExample/Networking/GithubAPI.swift rename to Examples/CombineExample/CombineExample/Networking/GithubAPI.swift diff --git a/CombineExample/CombineExample/OrganizationListViewModel.swift b/Examples/CombineExample/CombineExample/OrganizationListViewModel.swift similarity index 100% rename from CombineExample/CombineExample/OrganizationListViewModel.swift rename to Examples/CombineExample/CombineExample/OrganizationListViewModel.swift diff --git a/CombineExample/CombineExample/SceneDelegate.swift b/Examples/CombineExample/CombineExample/SceneDelegate.swift similarity index 100% rename from CombineExample/CombineExample/SceneDelegate.swift rename to Examples/CombineExample/CombineExample/SceneDelegate.swift diff --git a/CombineExample/CombineExample/SupportingFiles/Info.plist b/Examples/CombineExample/CombineExample/SupportingFiles/Info.plist similarity index 100% rename from CombineExample/CombineExample/SupportingFiles/Info.plist rename to Examples/CombineExample/CombineExample/SupportingFiles/Info.plist diff --git a/CombineExample/CombineExampleTests/CombineExampleTests.swift b/Examples/CombineExample/CombineExampleTests/CombineExampleTests.swift similarity index 100% rename from CombineExample/CombineExampleTests/CombineExampleTests.swift rename to Examples/CombineExample/CombineExampleTests/CombineExampleTests.swift diff --git a/CombineExample/CombineExampleTests/Info.plist b/Examples/CombineExample/CombineExampleTests/Info.plist similarity index 100% rename from CombineExample/CombineExampleTests/Info.plist rename to Examples/CombineExample/CombineExampleTests/Info.plist diff --git a/Examples/GithubExample/GithubExample.xcodeproj/project.pbxproj b/Examples/GithubExample/GithubExample.xcodeproj/project.pbxproj new file mode 100644 index 0000000..c37d769 --- /dev/null +++ b/Examples/GithubExample/GithubExample.xcodeproj/project.pbxproj @@ -0,0 +1,507 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 55; + objects = { + +/* Begin PBXBuildFile section */ + 19A31C8F27858C350078638C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A31C8E27858C350078638C /* AppDelegate.swift */; }; + 19A31C9127858C350078638C /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A31C9027858C350078638C /* SceneDelegate.swift */; }; + 19A31C9827858C370078638C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 19A31C9727858C370078638C /* Assets.xcassets */; }; + 19A31CBB27858CD70078638C /* PagedResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A31CA727858CD70078638C /* PagedResource.swift */; }; + 19A31CBC27858CD70078638C /* PageProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A31CA827858CD70078638C /* PageProtocol.swift */; }; + 19A31CBD27858CD70078638C /* RepositoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A31CAA27858CD70078638C /* RepositoryCell.swift */; }; + 19A31CBE27858CD70078638C /* UserCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A31CAB27858CD70078638C /* UserCell.swift */; }; + 19A31CBF27858CD70078638C /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 19A31CAD27858CD70078638C /* LaunchScreen.storyboard */; }; + 19A31CC027858CD70078638C /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 19A31CAF27858CD70078638C /* Main.storyboard */; }; + 19A31CC127858CD70078638C /* RepositoryListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A31CB227858CD70078638C /* RepositoryListViewController.swift */; }; + 19A31CC227858CD70078638C /* OrganizationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A31CB327858CD70078638C /* OrganizationViewController.swift */; }; + 19A31CC327858CD70078638C /* UserListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A31CB427858CD70078638C /* UserListViewController.swift */; }; + 19A31CC427858CD70078638C /* GithubAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A31CB627858CD70078638C /* GithubAPI.swift */; }; + 19A31CC527858CD70078638C /* Organization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A31CB827858CD70078638C /* Organization.swift */; }; + 19A31CC627858CD70078638C /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A31CB927858CD70078638C /* User.swift */; }; + 19A31CC727858CD70078638C /* Repository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A31CBA27858CD70078638C /* Repository.swift */; }; + 19A31CCB27858D060078638C /* Fetch in Frameworks */ = {isa = PBXBuildFile; productRef = 19A31CCA27858D060078638C /* Fetch */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 19A31C8B27858C350078638C /* GithubExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GithubExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 19A31C8E27858C350078638C /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 19A31C9027858C350078638C /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + 19A31C9727858C370078638C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 19A31C9C27858C370078638C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 19A31CA727858CD70078638C /* PagedResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PagedResource.swift; sourceTree = ""; }; + 19A31CA827858CD70078638C /* PageProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PageProtocol.swift; sourceTree = ""; }; + 19A31CAA27858CD70078638C /* RepositoryCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RepositoryCell.swift; sourceTree = ""; }; + 19A31CAB27858CD70078638C /* UserCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserCell.swift; sourceTree = ""; }; + 19A31CAE27858CD70078638C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 19A31CB027858CD70078638C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 19A31CB227858CD70078638C /* RepositoryListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RepositoryListViewController.swift; sourceTree = ""; }; + 19A31CB327858CD70078638C /* OrganizationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OrganizationViewController.swift; sourceTree = ""; }; + 19A31CB427858CD70078638C /* UserListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserListViewController.swift; sourceTree = ""; }; + 19A31CB627858CD70078638C /* GithubAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GithubAPI.swift; sourceTree = ""; }; + 19A31CB827858CD70078638C /* Organization.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Organization.swift; sourceTree = ""; }; + 19A31CB927858CD70078638C /* User.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = ""; }; + 19A31CBA27858CD70078638C /* Repository.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Repository.swift; sourceTree = ""; }; + 19A31CC827858CFE0078638C /* Fetch */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = Fetch; path = ../..; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 19A31C8827858C350078638C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 19A31CCB27858D060078638C /* Fetch in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 19A31C8227858C350078638C = { + isa = PBXGroup; + children = ( + 19A31CC827858CFE0078638C /* Fetch */, + 19A31C8D27858C350078638C /* GithubExample */, + 19A31C8C27858C350078638C /* Products */, + 19A31CC927858D060078638C /* Frameworks */, + ); + sourceTree = ""; + }; + 19A31C8C27858C350078638C /* Products */ = { + isa = PBXGroup; + children = ( + 19A31C8B27858C350078638C /* GithubExample.app */, + ); + name = Products; + sourceTree = ""; + }; + 19A31C8D27858C350078638C /* GithubExample */ = { + isa = PBXGroup; + children = ( + 19A31CA427858C6D0078638C /* Code */, + 19A31CA327858C5A0078638C /* SupportingFiles */, + 19A31CA227858C490078638C /* Assets */, + ); + path = GithubExample; + sourceTree = ""; + }; + 19A31CA227858C490078638C /* Assets */ = { + isa = PBXGroup; + children = ( + 19A31C9727858C370078638C /* Assets.xcassets */, + ); + path = Assets; + sourceTree = ""; + }; + 19A31CA327858C5A0078638C /* SupportingFiles */ = { + isa = PBXGroup; + children = ( + 19A31C9C27858C370078638C /* Info.plist */, + ); + path = SupportingFiles; + sourceTree = ""; + }; + 19A31CA427858C6D0078638C /* Code */ = { + isa = PBXGroup; + children = ( + 19A31C8E27858C350078638C /* AppDelegate.swift */, + 19A31C9027858C350078638C /* SceneDelegate.swift */, + 19A31CB727858CD70078638C /* Models */, + 19A31CB527858CD70078638C /* Networking */, + 19A31CAC27858CD70078638C /* Storyboards */, + 19A31CA527858CD70078638C /* Utilities */, + 19A31CB127858CD70078638C /* ViewControllers */, + 19A31CA927858CD70078638C /* Views */, + ); + path = Code; + sourceTree = ""; + }; + 19A31CA527858CD70078638C /* Utilities */ = { + isa = PBXGroup; + children = ( + 19A31CA627858CD70078638C /* Paging */, + ); + path = Utilities; + sourceTree = ""; + }; + 19A31CA627858CD70078638C /* Paging */ = { + isa = PBXGroup; + children = ( + 19A31CA727858CD70078638C /* PagedResource.swift */, + 19A31CA827858CD70078638C /* PageProtocol.swift */, + ); + path = Paging; + sourceTree = ""; + }; + 19A31CA927858CD70078638C /* Views */ = { + isa = PBXGroup; + children = ( + 19A31CAA27858CD70078638C /* RepositoryCell.swift */, + 19A31CAB27858CD70078638C /* UserCell.swift */, + ); + path = Views; + sourceTree = ""; + }; + 19A31CAC27858CD70078638C /* Storyboards */ = { + isa = PBXGroup; + children = ( + 19A31CAD27858CD70078638C /* LaunchScreen.storyboard */, + 19A31CAF27858CD70078638C /* Main.storyboard */, + ); + path = Storyboards; + sourceTree = ""; + }; + 19A31CB127858CD70078638C /* ViewControllers */ = { + isa = PBXGroup; + children = ( + 19A31CB227858CD70078638C /* RepositoryListViewController.swift */, + 19A31CB327858CD70078638C /* OrganizationViewController.swift */, + 19A31CB427858CD70078638C /* UserListViewController.swift */, + ); + path = ViewControllers; + sourceTree = ""; + }; + 19A31CB527858CD70078638C /* Networking */ = { + isa = PBXGroup; + children = ( + 19A31CB627858CD70078638C /* GithubAPI.swift */, + ); + path = Networking; + sourceTree = ""; + }; + 19A31CB727858CD70078638C /* Models */ = { + isa = PBXGroup; + children = ( + 19A31CB827858CD70078638C /* Organization.swift */, + 19A31CB927858CD70078638C /* User.swift */, + 19A31CBA27858CD70078638C /* Repository.swift */, + ); + path = Models; + sourceTree = ""; + }; + 19A31CC927858D060078638C /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 19A31C8A27858C350078638C /* GithubExample */ = { + isa = PBXNativeTarget; + buildConfigurationList = 19A31C9F27858C370078638C /* Build configuration list for PBXNativeTarget "GithubExample" */; + buildPhases = ( + 19A31C8727858C350078638C /* Sources */, + 19A31C8827858C350078638C /* Frameworks */, + 19A31C8927858C350078638C /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = GithubExample; + packageProductDependencies = ( + 19A31CCA27858D060078638C /* Fetch */, + ); + productName = GithubExample; + productReference = 19A31C8B27858C350078638C /* GithubExample.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 19A31C8327858C350078638C /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = 1; + LastSwiftUpdateCheck = 1320; + LastUpgradeCheck = 1320; + TargetAttributes = { + 19A31C8A27858C350078638C = { + CreatedOnToolsVersion = 13.2.1; + }; + }; + }; + buildConfigurationList = 19A31C8627858C350078638C /* Build configuration list for PBXProject "GithubExample" */; + compatibilityVersion = "Xcode 13.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 19A31C8227858C350078638C; + productRefGroup = 19A31C8C27858C350078638C /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 19A31C8A27858C350078638C /* GithubExample */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 19A31C8927858C350078638C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 19A31CC027858CD70078638C /* Main.storyboard in Resources */, + 19A31CBF27858CD70078638C /* LaunchScreen.storyboard in Resources */, + 19A31C9827858C370078638C /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 19A31C8727858C350078638C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 19A31CC627858CD70078638C /* User.swift in Sources */, + 19A31CC127858CD70078638C /* RepositoryListViewController.swift in Sources */, + 19A31C8F27858C350078638C /* AppDelegate.swift in Sources */, + 19A31CBC27858CD70078638C /* PageProtocol.swift in Sources */, + 19A31CC227858CD70078638C /* OrganizationViewController.swift in Sources */, + 19A31CC327858CD70078638C /* UserListViewController.swift in Sources */, + 19A31CC727858CD70078638C /* Repository.swift in Sources */, + 19A31CBD27858CD70078638C /* RepositoryCell.swift in Sources */, + 19A31C9127858C350078638C /* SceneDelegate.swift in Sources */, + 19A31CBB27858CD70078638C /* PagedResource.swift in Sources */, + 19A31CC427858CD70078638C /* GithubAPI.swift in Sources */, + 19A31CC527858CD70078638C /* Organization.swift in Sources */, + 19A31CBE27858CD70078638C /* UserCell.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 19A31CAD27858CD70078638C /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 19A31CAE27858CD70078638C /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; + 19A31CAF27858CD70078638C /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 19A31CB027858CD70078638C /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 19A31C9D27858C370078638C /* 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++17"; + 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; + 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; + IPHONEOS_DEPLOYMENT_TARGET = 15.2; + 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; + }; + 19A31C9E27858C370078638C /* 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++17"; + 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; + 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; + IPHONEOS_DEPLOYMENT_TARGET = 15.2; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 19A31CA027858C370078638C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = M8F9QH57A6; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = GithubExample/SupportingFiles/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + 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; + PRODUCT_BUNDLE_IDENTIFIER = at.allaboutapps.GithubExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 19A31CA127858C370078638C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = M8F9QH57A6; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = GithubExample/SupportingFiles/Info.plist; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; + INFOPLIST_KEY_UIMainStoryboardFile = Main; + 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; + PRODUCT_BUNDLE_IDENTIFIER = at.allaboutapps.GithubExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 19A31C8627858C350078638C /* Build configuration list for PBXProject "GithubExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 19A31C9D27858C370078638C /* Debug */, + 19A31C9E27858C370078638C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 19A31C9F27858C370078638C /* Build configuration list for PBXNativeTarget "GithubExample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 19A31CA027858C370078638C /* Debug */, + 19A31CA127858C370078638C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCSwiftPackageProductDependency section */ + 19A31CCA27858D060078638C /* Fetch */ = { + isa = XCSwiftPackageProductDependency; + productName = Fetch; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = 19A31C8327858C350078638C /* Project object */; +} diff --git a/ReactiveExample/ReactiveExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Examples/GithubExample/GithubExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 68% rename from ReactiveExample/ReactiveExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to Examples/GithubExample/GithubExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 655b315..919434a 100644 --- a/ReactiveExample/ReactiveExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/Examples/GithubExample/GithubExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:"> diff --git a/Fetch.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Examples/GithubExample/GithubExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from Fetch.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to Examples/GithubExample/GithubExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/CombineExample/CombineExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Examples/GithubExample/GithubExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved similarity index 71% rename from CombineExample/CombineExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved rename to Examples/GithubExample/GithubExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 60cdbeb..878d8d2 100644 --- a/CombineExample/CombineExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Examples/GithubExample/GithubExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/Alamofire/Alamofire.git", "state": { "branch": null, - "revision": "d120af1e8638c7da36c8481fd61a66c0c08dc4fc", - "version": "5.4.4" + "revision": "f82c23a8a7ef8dc1a49a8bfc6a96883e79121864", + "version": "5.5.0" } } ] diff --git a/Examples/GithubExample/GithubExample/Assets/Assets.xcassets/AccentColor.colorset/Contents.json b/Examples/GithubExample/GithubExample/Assets/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 0000000..eb87897 --- /dev/null +++ b/Examples/GithubExample/GithubExample/Assets/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Examples/GithubExample/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json b/Examples/GithubExample/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..9221b9b --- /dev/null +++ b/Examples/GithubExample/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "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" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "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" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Examples/GithubExample/GithubExample/Assets/Assets.xcassets/Contents.json b/Examples/GithubExample/GithubExample/Assets/Assets.xcassets/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Examples/GithubExample/GithubExample/Assets/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Examples/GithubExample/GithubExample/Code/AppDelegate.swift b/Examples/GithubExample/GithubExample/Code/AppDelegate.swift new file mode 100644 index 0000000..6e0ca21 --- /dev/null +++ b/Examples/GithubExample/GithubExample/Code/AppDelegate.swift @@ -0,0 +1,38 @@ +// +// AppDelegate.swift +// GithubExample +// +// Created by Stefan Wieland on 05.01.22. +// + +import UIKit +import Fetch + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + let config = Config(baseURL: URL(string: "https://api.github.com")!, + cache: MemoryCache(defaultExpiration: .seconds(3600)), + cachePolicy: .cacheFirstNetworkAlways) + APIClient.shared.setup(with: config) + return true + } + + // MARK: UISceneSession Lifecycle + + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } + + +} + diff --git a/GithubExample/Code/Models/Organization.swift b/Examples/GithubExample/GithubExample/Code/Models/Organization.swift similarity index 100% rename from GithubExample/Code/Models/Organization.swift rename to Examples/GithubExample/GithubExample/Code/Models/Organization.swift diff --git a/GithubExample/Code/Models/Repository.swift b/Examples/GithubExample/GithubExample/Code/Models/Repository.swift similarity index 100% rename from GithubExample/Code/Models/Repository.swift rename to Examples/GithubExample/GithubExample/Code/Models/Repository.swift diff --git a/GithubExample/Code/Models/User.swift b/Examples/GithubExample/GithubExample/Code/Models/User.swift similarity index 100% rename from GithubExample/Code/Models/User.swift rename to Examples/GithubExample/GithubExample/Code/Models/User.swift diff --git a/GithubExample/Code/Networking/GithubAPI.swift b/Examples/GithubExample/GithubExample/Code/Networking/GithubAPI.swift similarity index 100% rename from GithubExample/Code/Networking/GithubAPI.swift rename to Examples/GithubExample/GithubExample/Code/Networking/GithubAPI.swift diff --git a/Examples/GithubExample/GithubExample/Code/SceneDelegate.swift b/Examples/GithubExample/GithubExample/Code/SceneDelegate.swift new file mode 100644 index 0000000..2fcf529 --- /dev/null +++ b/Examples/GithubExample/GithubExample/Code/SceneDelegate.swift @@ -0,0 +1,52 @@ +// +// SceneDelegate.swift +// GithubExample +// +// Created by Stefan Wieland on 05.01.22. +// + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + guard let _ = (scene as? UIWindowScene) else { return } + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git a/GithubExample/Code/Storyboards/Base.lproj/LaunchScreen.storyboard b/Examples/GithubExample/GithubExample/Code/Storyboards/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from GithubExample/Code/Storyboards/Base.lproj/LaunchScreen.storyboard rename to Examples/GithubExample/GithubExample/Code/Storyboards/Base.lproj/LaunchScreen.storyboard diff --git a/GithubExample/Code/Storyboards/Base.lproj/Main.storyboard b/Examples/GithubExample/GithubExample/Code/Storyboards/Base.lproj/Main.storyboard similarity index 100% rename from GithubExample/Code/Storyboards/Base.lproj/Main.storyboard rename to Examples/GithubExample/GithubExample/Code/Storyboards/Base.lproj/Main.storyboard diff --git a/GithubExample/Code/Utilities/Paging/PageProtocol.swift b/Examples/GithubExample/GithubExample/Code/Utilities/Paging/PageProtocol.swift similarity index 100% rename from GithubExample/Code/Utilities/Paging/PageProtocol.swift rename to Examples/GithubExample/GithubExample/Code/Utilities/Paging/PageProtocol.swift diff --git a/GithubExample/Code/Utilities/Paging/PagedResource.swift b/Examples/GithubExample/GithubExample/Code/Utilities/Paging/PagedResource.swift similarity index 100% rename from GithubExample/Code/Utilities/Paging/PagedResource.swift rename to Examples/GithubExample/GithubExample/Code/Utilities/Paging/PagedResource.swift diff --git a/GithubExample/Code/ViewControllers/OrganizationViewController.swift b/Examples/GithubExample/GithubExample/Code/ViewControllers/OrganizationViewController.swift similarity index 100% rename from GithubExample/Code/ViewControllers/OrganizationViewController.swift rename to Examples/GithubExample/GithubExample/Code/ViewControllers/OrganizationViewController.swift diff --git a/GithubExample/Code/ViewControllers/RepositoryListViewController.swift b/Examples/GithubExample/GithubExample/Code/ViewControllers/RepositoryListViewController.swift similarity index 100% rename from GithubExample/Code/ViewControllers/RepositoryListViewController.swift rename to Examples/GithubExample/GithubExample/Code/ViewControllers/RepositoryListViewController.swift diff --git a/GithubExample/Code/ViewControllers/UserListViewController.swift b/Examples/GithubExample/GithubExample/Code/ViewControllers/UserListViewController.swift similarity index 100% rename from GithubExample/Code/ViewControllers/UserListViewController.swift rename to Examples/GithubExample/GithubExample/Code/ViewControllers/UserListViewController.swift diff --git a/GithubExample/Code/Views/RepositoryCell.swift b/Examples/GithubExample/GithubExample/Code/Views/RepositoryCell.swift similarity index 100% rename from GithubExample/Code/Views/RepositoryCell.swift rename to Examples/GithubExample/GithubExample/Code/Views/RepositoryCell.swift diff --git a/GithubExample/Code/Views/UserCell.swift b/Examples/GithubExample/GithubExample/Code/Views/UserCell.swift similarity index 100% rename from GithubExample/Code/Views/UserCell.swift rename to Examples/GithubExample/GithubExample/Code/Views/UserCell.swift diff --git a/Examples/GithubExample/GithubExample/SupportingFiles/Info.plist b/Examples/GithubExample/GithubExample/SupportingFiles/Info.plist new file mode 100644 index 0000000..dd3c9af --- /dev/null +++ b/Examples/GithubExample/GithubExample/SupportingFiles/Info.plist @@ -0,0 +1,25 @@ + + + + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + + diff --git a/Examples/Package.swift b/Examples/Package.swift new file mode 100644 index 0000000..1454850 --- /dev/null +++ b/Examples/Package.swift @@ -0,0 +1,13 @@ +// swift-tools-version:5.5 + +import PackageDescription + +// Empty manifest to hide example folder from xcode +let package = Package( + name: "", + platforms: [], + products: [], + dependencies: [], + targets: [], + swiftLanguageVersions: [.v5] +) diff --git a/ReactiveExample/ReactiveExample.xcodeproj/project.pbxproj b/Examples/ReactiveExample/ReactiveExample.xcodeproj/project.pbxproj similarity index 75% rename from ReactiveExample/ReactiveExample.xcodeproj/project.pbxproj rename to Examples/ReactiveExample/ReactiveExample.xcodeproj/project.pbxproj index a11b512..449f5ea 100644 --- a/ReactiveExample/ReactiveExample.xcodeproj/project.pbxproj +++ b/Examples/ReactiveExample/ReactiveExample.xcodeproj/project.pbxproj @@ -3,18 +3,18 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 52; objects = { /* Begin PBXBuildFile section */ + 19A31BDA278586960078638C /* ReactiveSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 19A31BD9278586960078638C /* ReactiveSwift */; }; + 19A31BDD278586AC0078638C /* KeychainAccess in Frameworks */ = {isa = PBXBuildFile; productRef = 19A31BDC278586AC0078638C /* KeychainAccess */; }; + 19A31BDF2785878D0078638C /* Fetch in Frameworks */ = {isa = PBXBuildFile; productRef = 19A31BDE2785878D0078638C /* Fetch */; }; 3948AD9C2267146F00DA0B85 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3948AD9B2267146F00DA0B85 /* AppDelegate.swift */; }; 3948AD9E2267146F00DA0B85 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3948AD9D2267146F00DA0B85 /* ViewController.swift */; }; 3948ADA12267146F00DA0B85 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3948AD9F2267146F00DA0B85 /* Main.storyboard */; }; 3948ADA32267147000DA0B85 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3948ADA22267147000DA0B85 /* Assets.xcassets */; }; 3948ADA62267147000DA0B85 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3948ADA42267147000DA0B85 /* LaunchScreen.storyboard */; }; - 3948ADD3226715DF00DA0B85 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3948ADD0226715DF00DA0B85 /* Alamofire.framework */; }; - 3948ADD4226715DF00DA0B85 /* ReactiveSwift.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3948ADD1226715DF00DA0B85 /* ReactiveSwift.framework */; }; - 3948ADD5226715DF00DA0B85 /* KeychainAccess.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3948ADD2226715DF00DA0B85 /* KeychainAccess.framework */; }; 3948ADD8226716F600DA0B85 /* API.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3948ADD7226716F600DA0B85 /* API.swift */; }; 3948ADDA2267172D00DA0B85 /* AuthHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3948ADD92267172D00DA0B85 /* AuthHandler.swift */; }; 3948ADDC2267174100DA0B85 /* Credentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3948ADDB2267174100DA0B85 /* Credentials.swift */; }; @@ -23,56 +23,9 @@ 3948ADE8226718E800DA0B85 /* nested-post.json in Resources */ = {isa = PBXBuildFile; fileRef = 3948ADE02267178500DA0B85 /* nested-post.json */; }; 3948ADE9226718EA00DA0B85 /* posts.json in Resources */ = {isa = PBXBuildFile; fileRef = 3948ADE12267178500DA0B85 /* posts.json */; }; 3948ADEB2267192600DA0B85 /* Config.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3948ADEA2267192600DA0B85 /* Config.swift */; }; - 5C0DDDD12269EEDD009A590A /* Fetch.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3948ADC8226714E500DA0B85 /* Fetch.framework */; }; - 5C0DDDD22269EEDD009A590A /* Fetch.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3948ADC8226714E500DA0B85 /* Fetch.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 5C0DDDD72269EF98009A590A /* authresponse.json in Resources */ = {isa = PBXBuildFile; fileRef = 5C0DDDD62269EF98009A590A /* authresponse.json */; }; /* End PBXBuildFile section */ -/* Begin PBXContainerItemProxy section */ - 3948ADC3226714E500DA0B85 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 3948ADBC226714E500DA0B85 /* Fetch.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 5C011D722260A65800B7526C; - remoteInfo = GithubExample; - }; - 3948ADC5226714E500DA0B85 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 3948ADBC226714E500DA0B85 /* Fetch.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 0049B0AB894997BBC5248D997C60B1FF; - remoteInfo = Example; - }; - 3948ADC7226714E500DA0B85 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 3948ADBC226714E500DA0B85 /* Fetch.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 82FC85EA09AE5BFA043E4AE51F1EB638; - remoteInfo = Fetch; - }; - 3948ADC9226714E500DA0B85 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 3948ADBC226714E500DA0B85 /* Fetch.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = D88B934B2257849700161DB0; - remoteInfo = FetchTests; - }; - 3948ADCC2267155E00DA0B85 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 3948ADBC226714E500DA0B85 /* Fetch.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = F8C358F62DCFA013A4E994E6A1DB050E; - remoteInfo = Fetch; - }; - 5C0DDDD32269EEDD009A590A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 3948ADBC226714E500DA0B85 /* Fetch.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = F8C358F62DCFA013A4E994E6A1DB050E; - remoteInfo = Fetch; - }; -/* End PBXContainerItemProxy section */ - /* Begin PBXCopyFilesBuildPhase section */ 5C0DDDD52269EEDD009A590A /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; @@ -80,7 +33,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 5C0DDDD22269EEDD009A590A /* Fetch.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -88,6 +40,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 19A31BD7278586030078638C /* Fetch */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = Fetch; path = ../..; sourceTree = ""; }; 3948AD982267146F00DA0B85 /* ReactiveExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ReactiveExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 3948AD9B2267146F00DA0B85 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 3948AD9D2267146F00DA0B85 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; @@ -95,7 +48,6 @@ 3948ADA22267147000DA0B85 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 3948ADA52267147000DA0B85 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 3948ADA72267147000DA0B85 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 3948ADBC226714E500DA0B85 /* Fetch.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Fetch.xcodeproj; path = ../Fetch.xcodeproj; sourceTree = ""; }; 3948ADD0226715DF00DA0B85 /* Alamofire.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Alamofire.framework; path = Carthage/Build/iOS/Alamofire.framework; sourceTree = ""; }; 3948ADD1226715DF00DA0B85 /* ReactiveSwift.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReactiveSwift.framework; path = Carthage/Build/iOS/ReactiveSwift.framework; sourceTree = ""; }; 3948ADD2226715DF00DA0B85 /* KeychainAccess.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = KeychainAccess.framework; path = Carthage/Build/iOS/KeychainAccess.framework; sourceTree = ""; }; @@ -115,10 +67,9 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3948ADD3226715DF00DA0B85 /* Alamofire.framework in Frameworks */, - 5C0DDDD12269EEDD009A590A /* Fetch.framework in Frameworks */, - 3948ADD5226715DF00DA0B85 /* KeychainAccess.framework in Frameworks */, - 3948ADD4226715DF00DA0B85 /* ReactiveSwift.framework in Frameworks */, + 19A31BDF2785878D0078638C /* Fetch in Frameworks */, + 19A31BDD278586AC0078638C /* KeychainAccess in Frameworks */, + 19A31BDA278586960078638C /* ReactiveSwift in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -128,7 +79,7 @@ 3948AD8F2267146F00DA0B85 = { isa = PBXGroup; children = ( - 3948ADBC226714E500DA0B85 /* Fetch.xcodeproj */, + 19A31BD7278586030078638C /* Fetch */, 3948AD9A2267146F00DA0B85 /* ReactiveExample */, 3948ADCF226715C200DA0B85 /* Frameworks */, 3948AD992267146F00DA0B85 /* Products */, @@ -159,17 +110,6 @@ path = ReactiveExample; sourceTree = ""; }; - 3948ADBD226714E500DA0B85 /* Products */ = { - isa = PBXGroup; - children = ( - 3948ADC4226714E500DA0B85 /* GithubExample.app */, - 3948ADC6226714E500DA0B85 /* Example.app */, - 3948ADC8226714E500DA0B85 /* Fetch.framework */, - 3948ADCA226714E500DA0B85 /* FetchTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; 3948ADCF226715C200DA0B85 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -244,16 +184,18 @@ 3948AD942267146F00DA0B85 /* Sources */, 3948AD952267146F00DA0B85 /* Frameworks */, 3948AD962267146F00DA0B85 /* Resources */, - 3948ADD6226715FC00DA0B85 /* Carthage */, 5C0DDDD52269EEDD009A590A /* Embed Frameworks */, ); buildRules = ( ); dependencies = ( - 3948ADCD2267155E00DA0B85 /* PBXTargetDependency */, - 5C0DDDD42269EEDD009A590A /* PBXTargetDependency */, ); name = ReactiveExample; + packageProductDependencies = ( + 19A31BD9278586960078638C /* ReactiveSwift */, + 19A31BDC278586AC0078638C /* KeychainAccess */, + 19A31BDE2785878D0078638C /* Fetch */, + ); productName = ReactiveExample; productReference = 3948AD982267146F00DA0B85 /* ReactiveExample.app */; productType = "com.apple.product-type.application"; @@ -282,14 +224,12 @@ Base, ); mainGroup = 3948AD8F2267146F00DA0B85; + packageReferences = ( + 19A31BD8278586960078638C /* XCRemoteSwiftPackageReference "ReactiveSwift" */, + 19A31BDB278586AC0078638C /* XCRemoteSwiftPackageReference "KeychainAccess" */, + ); productRefGroup = 3948AD992267146F00DA0B85 /* Products */; projectDirPath = ""; - projectReferences = ( - { - ProductGroup = 3948ADBD226714E500DA0B85 /* Products */; - ProjectRef = 3948ADBC226714E500DA0B85 /* Fetch.xcodeproj */; - }, - ); projectRoot = ""; targets = ( 3948AD972267146F00DA0B85 /* ReactiveExample */, @@ -297,37 +237,6 @@ }; /* End PBXProject section */ -/* Begin PBXReferenceProxy section */ - 3948ADC4226714E500DA0B85 /* GithubExample.app */ = { - isa = PBXReferenceProxy; - fileType = wrapper.application; - path = GithubExample.app; - remoteRef = 3948ADC3226714E500DA0B85 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 3948ADC6226714E500DA0B85 /* Example.app */ = { - isa = PBXReferenceProxy; - fileType = wrapper.application; - path = Example.app; - remoteRef = 3948ADC5226714E500DA0B85 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 3948ADC8226714E500DA0B85 /* Fetch.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = Fetch.framework; - remoteRef = 3948ADC7226714E500DA0B85 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 3948ADCA226714E500DA0B85 /* FetchTests.xctest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = FetchTests.xctest; - remoteRef = 3948ADC9226714E500DA0B85 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - /* Begin PBXResourcesBuildPhase section */ 3948AD962267146F00DA0B85 /* Resources */ = { isa = PBXResourcesBuildPhase; @@ -344,33 +253,6 @@ }; /* End PBXResourcesBuildPhase section */ -/* Begin PBXShellScriptBuildPhase section */ - 3948ADD6226715FC00DA0B85 /* Carthage */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "$(SRCROOT)/Carthage/Build/iOS/Alamofire.framework", - "$(SRCROOT)/Carthage/Build/iOS/KeychainAccess.framework", - "$(SRCROOT)/Carthage/Build/iOS/ReactiveSwift.framework", - ); - name = Carthage; - outputFileListPaths = ( - ); - outputPaths = ( - "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/Alamofire.framework", - "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/KeychainAccess.framework", - "$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/ReactiveSwift.framework", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "carthage copy-frameworks\n"; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ 3948AD942267146F00DA0B85 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -389,19 +271,6 @@ }; /* End PBXSourcesBuildPhase section */ -/* Begin PBXTargetDependency section */ - 3948ADCD2267155E00DA0B85 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Fetch; - targetProxy = 3948ADCC2267155E00DA0B85 /* PBXContainerItemProxy */; - }; - 5C0DDDD42269EEDD009A590A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Fetch; - targetProxy = 5C0DDDD32269EEDD009A590A /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - /* Begin PBXVariantGroup section */ 3948AD9F2267146F00DA0B85 /* Main.storyboard */ = { isa = PBXVariantGroup; @@ -541,7 +410,6 @@ 3948ADAB2267147000DA0B85 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = M8F9QH57A6; @@ -564,7 +432,6 @@ 3948ADAC2267147000DA0B85 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = M8F9QH57A6; @@ -606,6 +473,42 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + 19A31BD8278586960078638C /* XCRemoteSwiftPackageReference "ReactiveSwift" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/ReactiveCocoa/ReactiveSwift"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 7.0.0; + }; + }; + 19A31BDB278586AC0078638C /* XCRemoteSwiftPackageReference "KeychainAccess" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/kishikawakatsumi/KeychainAccess"; + requirement = { + branch = master; + kind = branch; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 19A31BD9278586960078638C /* ReactiveSwift */ = { + isa = XCSwiftPackageProductDependency; + package = 19A31BD8278586960078638C /* XCRemoteSwiftPackageReference "ReactiveSwift" */; + productName = ReactiveSwift; + }; + 19A31BDC278586AC0078638C /* KeychainAccess */ = { + isa = XCSwiftPackageProductDependency; + package = 19A31BDB278586AC0078638C /* XCRemoteSwiftPackageReference "KeychainAccess" */; + productName = KeychainAccess; + }; + 19A31BDE2785878D0078638C /* Fetch */ = { + isa = XCSwiftPackageProductDependency; + productName = Fetch; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 3948AD902267146F00DA0B85 /* Project object */; } diff --git a/Examples/ReactiveExample/ReactiveExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Examples/ReactiveExample/ReactiveExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..919434a --- /dev/null +++ b/Examples/ReactiveExample/ReactiveExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ReactiveExample/ReactiveExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Examples/ReactiveExample/ReactiveExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from ReactiveExample/ReactiveExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to Examples/ReactiveExample/ReactiveExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Examples/ReactiveExample/ReactiveExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Examples/ReactiveExample/ReactiveExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..38e9fb1 --- /dev/null +++ b/Examples/ReactiveExample/ReactiveExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,34 @@ +{ + "object": { + "pins": [ + { + "package": "Alamofire", + "repositoryURL": "https://github.com/Alamofire/Alamofire.git", + "state": { + "branch": null, + "revision": "f82c23a8a7ef8dc1a49a8bfc6a96883e79121864", + "version": "5.5.0" + } + }, + { + "package": "KeychainAccess", + "repositoryURL": "https://github.com/kishikawakatsumi/KeychainAccess", + "state": { + "branch": "master", + "revision": "6299daec1d74be12164fec090faf9ed14d0da9d6", + "version": null + } + }, + { + "package": "ReactiveSwift", + "repositoryURL": "https://github.com/ReactiveCocoa/ReactiveSwift", + "state": { + "branch": null, + "revision": "efb2f0a6f6c8739cce8fb14148a5bd3c83f2f91d", + "version": "7.0.0" + } + } + ] + }, + "version": 1 +} diff --git a/ReactiveExample/ReactiveExample.xcodeproj/xcshareddata/xcschemes/ReactiveExample.xcscheme b/Examples/ReactiveExample/ReactiveExample.xcodeproj/xcshareddata/xcschemes/ReactiveExample.xcscheme similarity index 100% rename from ReactiveExample/ReactiveExample.xcodeproj/xcshareddata/xcschemes/ReactiveExample.xcscheme rename to Examples/ReactiveExample/ReactiveExample.xcodeproj/xcshareddata/xcschemes/ReactiveExample.xcscheme diff --git a/Examples/ReactiveExample/ReactiveExample/API.swift b/Examples/ReactiveExample/ReactiveExample/API.swift new file mode 100644 index 0000000..dd0903e --- /dev/null +++ b/Examples/ReactiveExample/ReactiveExample/API.swift @@ -0,0 +1,55 @@ +// +// API.swift +// Fetch +// +// Created by Michael Heinzl on 02.04.19. +// Copyright © 2019 aaa - all about apps GmbH. All rights reserved. +// + +import Foundation +import Alamofire +import Fetch + +public struct API { + + public struct StubbedAuth { + + static let baseURL = URL(string: "") + + public static func login(username: String, password: String) -> Resource { + Resource( + method: .post, + baseURL: baseURL, + path: "/api/v1/auth/login", + body: .encodable([ + "username": username, + "password": password + ])) + } + + public static func tokenRefresh(_ refreshToken: String) -> Resource { + Resource( + method: .post, + baseURL: baseURL, + path: "/api/v1/auth/refresh", + body: .encodable([ + "refreshToken": refreshToken + ])) + } + + public static func authorizedRequest() -> Resource { + Resource(path: "/auth/secret") + } + + public static func unauthorizedErrorRequest() -> Resource { + Resource(path: "/fail") + } + } + + public struct BlogPosts { + + public static func list() -> Resource<[BlogPost]> { + Resource(method: .get, path: "/posts") + } + } +} diff --git a/Examples/ReactiveExample/ReactiveExample/AppDelegate.swift b/Examples/ReactiveExample/ReactiveExample/AppDelegate.swift new file mode 100644 index 0000000..833ac77 --- /dev/null +++ b/Examples/ReactiveExample/ReactiveExample/AppDelegate.swift @@ -0,0 +1,59 @@ +// +// AppDelegate.swift +// ReactiveExample +// +// Created by Matthias Buchetics on 17.04.19. +// Copyright © 2019 all about apps Gmbh. All rights reserved. +// + +import UIKit +import Fetch + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + let url = URL(string: "https://f4a4ddde.ngrok.io")! + + APIClient.shared.setup(with: Fetch.Config( + baseURL: url, + interceptor: AuthHandler(), + cache: MemoryCache(defaultExpiration: .seconds(60)), + shouldStub: true)) + + registerStubs() + + CredentialsController.shared.resetOnNewInstallations() + + return true + } + +} + +private extension AppDelegate { + + func registerStubs() { + let stubProvider = APIClient.shared.stubProvider + + let stubAuthResponse = StubResponse(statusCode: 200, fileName: "authresponse.json", delay: 3) + let stubConditional = ClosureStub { () -> Stub in + let unauthorizedStub = StubResponse(statusCode: 401, data: Data(), delay: 2) + let okStub = StubResponse(statusCode: 200, data: Data(), delay: 2) + return CredentialsController.shared.currentCredentials == nil ? unauthorizedStub : okStub + } + let stubAlternating = AlternatingStub(stubs: [ + StubResponse(statusCode: 401, data: Data(), delay: 2), + StubResponse(statusCode: 200, data: Data(), delay: 2) + ]) + let stubBlog = StubResponse(statusCode: 200, fileName: "posts.json", delay: 1) + + stubProvider.register(stub: stubAuthResponse, for: API.StubbedAuth.login(username: "", password: "")) + stubProvider.register(stub: stubAuthResponse, for: API.StubbedAuth.tokenRefresh("")) + stubProvider.register(stub: stubConditional, for: API.StubbedAuth.authorizedRequest()) + stubProvider.register(stub: stubAlternating, for: API.StubbedAuth.unauthorizedErrorRequest()) + + stubProvider.register(stub: stubBlog, for: API.BlogPosts.list()) + } +} diff --git a/ReactiveExample/ReactiveExample/Auth/AuthHandler.swift b/Examples/ReactiveExample/ReactiveExample/Auth/AuthHandler.swift similarity index 100% rename from ReactiveExample/ReactiveExample/Auth/AuthHandler.swift rename to Examples/ReactiveExample/ReactiveExample/Auth/AuthHandler.swift diff --git a/ReactiveExample/ReactiveExample/Auth/Credentials.swift b/Examples/ReactiveExample/ReactiveExample/Auth/Credentials.swift similarity index 100% rename from ReactiveExample/ReactiveExample/Auth/Credentials.swift rename to Examples/ReactiveExample/ReactiveExample/Auth/Credentials.swift diff --git a/ReactiveExample/ReactiveExample/Config.swift b/Examples/ReactiveExample/ReactiveExample/Config.swift similarity index 100% rename from ReactiveExample/ReactiveExample/Config.swift rename to Examples/ReactiveExample/ReactiveExample/Config.swift diff --git a/ReactiveExample/ReactiveExample/Extensions/Resource+Reactive.swift b/Examples/ReactiveExample/ReactiveExample/Extensions/Resource+Reactive.swift similarity index 100% rename from ReactiveExample/ReactiveExample/Extensions/Resource+Reactive.swift rename to Examples/ReactiveExample/ReactiveExample/Extensions/Resource+Reactive.swift diff --git a/Example/Models/BlogPost.swift b/Examples/ReactiveExample/ReactiveExample/Models/BlogPost.swift similarity index 100% rename from Example/Models/BlogPost.swift rename to Examples/ReactiveExample/ReactiveExample/Models/BlogPost.swift diff --git a/ReactiveExample/ReactiveExample/Models/Stubs/authresponse.json b/Examples/ReactiveExample/ReactiveExample/Models/Stubs/authresponse.json similarity index 100% rename from ReactiveExample/ReactiveExample/Models/Stubs/authresponse.json rename to Examples/ReactiveExample/ReactiveExample/Models/Stubs/authresponse.json diff --git a/Example/Stubs/nested-post.json b/Examples/ReactiveExample/ReactiveExample/Models/Stubs/nested-post.json similarity index 100% rename from Example/Stubs/nested-post.json rename to Examples/ReactiveExample/ReactiveExample/Models/Stubs/nested-post.json diff --git a/Example/Stubs/posts.json b/Examples/ReactiveExample/ReactiveExample/Models/Stubs/posts.json similarity index 100% rename from Example/Stubs/posts.json rename to Examples/ReactiveExample/ReactiveExample/Models/Stubs/posts.json diff --git a/ReactiveExample/ReactiveExample/Storyboards/Assets.xcassets/AppIcon.appiconset/Contents.json b/Examples/ReactiveExample/ReactiveExample/Storyboards/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from ReactiveExample/ReactiveExample/Storyboards/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Examples/ReactiveExample/ReactiveExample/Storyboards/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/Example/Storyboards/Assets.xcassets/Contents.json b/Examples/ReactiveExample/ReactiveExample/Storyboards/Assets.xcassets/Contents.json similarity index 100% rename from Example/Storyboards/Assets.xcassets/Contents.json rename to Examples/ReactiveExample/ReactiveExample/Storyboards/Assets.xcassets/Contents.json diff --git a/ReactiveExample/ReactiveExample/Storyboards/Base.lproj/LaunchScreen.storyboard b/Examples/ReactiveExample/ReactiveExample/Storyboards/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from ReactiveExample/ReactiveExample/Storyboards/Base.lproj/LaunchScreen.storyboard rename to Examples/ReactiveExample/ReactiveExample/Storyboards/Base.lproj/LaunchScreen.storyboard diff --git a/ReactiveExample/ReactiveExample/Storyboards/Base.lproj/Main.storyboard b/Examples/ReactiveExample/ReactiveExample/Storyboards/Base.lproj/Main.storyboard similarity index 100% rename from ReactiveExample/ReactiveExample/Storyboards/Base.lproj/Main.storyboard rename to Examples/ReactiveExample/ReactiveExample/Storyboards/Base.lproj/Main.storyboard diff --git a/GithubExample/SupportingFiles/Info.plist b/Examples/ReactiveExample/ReactiveExample/SupportingFiles/Info.plist similarity index 100% rename from GithubExample/SupportingFiles/Info.plist rename to Examples/ReactiveExample/ReactiveExample/SupportingFiles/Info.plist diff --git a/ReactiveExample/ReactiveExample/ViewController.swift b/Examples/ReactiveExample/ReactiveExample/ViewController.swift similarity index 100% rename from ReactiveExample/ReactiveExample/ViewController.swift rename to Examples/ReactiveExample/ReactiveExample/ViewController.swift diff --git a/Fetch.podspec b/Fetch.podspec deleted file mode 100644 index a012608..0000000 --- a/Fetch.podspec +++ /dev/null @@ -1,32 +0,0 @@ -# -# Be sure to run `pod lib lint Fetch.podspec' to ensure this is a -# valid spec before submitting. -# -# Any lines starting with a # are optional, but their use is encouraged -# To learn more about a Podspec see https://guides.cocoapods.org/syntax/podspec.html -# - -Pod::Spec.new do |s| - s.name = 'Fetch' - s.version = '2.3.0' - s.summary = 'A resource based network abstraction based on Alamofire' - - - s.description = <<-DESC - 'A resource based network abstraction based on Alamofire' - DESC - s.homepage = 'https://github.com/allaboutapps/Fetch' - s.license = { :type => 'MIT', :file => 'LICENSE' } - s.author = { 'https://www.allaboutapps.at' => 'office@allaboutapps.at' } - s.source = { :git => 'https://github.com/allaboutapps/Fetch.git', :tag => s.version.to_s } - - s.ios.deployment_target = '11.0' - s.swift_version = '5.0' - s.source_files = 'Fetch/Code/**/*.swift' - s.platforms = { - "ios": "11.0" - } - - s.dependency 'Alamofire', '~> 5.0.0-rc.2' - -end diff --git a/Fetch.xcodeproj/project.pbxproj b/Fetch.xcodeproj/project.pbxproj deleted file mode 100644 index 37bb916..0000000 --- a/Fetch.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1080 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 52; - objects = { - -/* Begin PBXBuildFile section */ - 19827A9427672E4500087629 /* Fetch in Frameworks */ = {isa = PBXBuildFile; productRef = 19827A9327672E4500087629 /* Fetch */; }; - 19A24D6A2762051B008EC55C /* StubProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A24D692762051B008EC55C /* StubProviderTests.swift */; }; - 19A24D6F27620CFD008EC55C /* Fetch in Frameworks */ = {isa = PBXBuildFile; productRef = 19A24D6E27620CFD008EC55C /* Fetch */; }; - 19A24D7127620E61008EC55C /* Fetch in Frameworks */ = {isa = PBXBuildFile; productRef = 19A24D7027620E61008EC55C /* Fetch */; }; - 397735B7225CC83500E380E8 /* MemoryCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 397735B6225CC83500E380E8 /* MemoryCacheTests.swift */; }; - 39CD55802264B6A100F38B47 /* DiskCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39CD557F2264B6A100F38B47 /* DiskCacheTests.swift */; }; - 39CD55842265CA1300F38B47 /* HybridCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39CD55832265CA1200F38B47 /* HybridCacheTests.swift */; }; - 5C011D752260A65900B7526C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C011D742260A65900B7526C /* AppDelegate.swift */; }; - 5C011D7A2260A65900B7526C /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5C011D782260A65900B7526C /* Main.storyboard */; }; - 5C011D7C2260A65A00B7526C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5C011D7B2260A65A00B7526C /* Assets.xcassets */; }; - 5C011D7F2260A65A00B7526C /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5C011D7D2260A65A00B7526C /* LaunchScreen.storyboard */; }; - 5C011D892260A6C300B7526C /* OrganizationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C011D6022609AAB00B7526C /* OrganizationViewController.swift */; }; - 5C011D922260A8B600B7526C /* Organization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C011D6722609C2000B7526C /* Organization.swift */; }; - 5C011D932260A8C400B7526C /* GithubAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C011D6A22609CD200B7526C /* GithubAPI.swift */; }; - 5C011D982260AC7E00B7526C /* UserListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C011D972260AC7E00B7526C /* UserListViewController.swift */; }; - 5C011D9A2260AD0900B7526C /* User.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C011D992260AD0900B7526C /* User.swift */; }; - 5C011DA32260B43A00B7526C /* UserCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C011DA22260B43A00B7526C /* UserCell.swift */; }; - 5C011DA52260B79A00B7526C /* RepositoryListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C011DA42260B79A00B7526C /* RepositoryListViewController.swift */; }; - 5C011DA72260B7B400B7526C /* Repository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C011DA62260B7B400B7526C /* Repository.swift */; }; - 5C011DA92260BAD900B7526C /* RepositoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C011DA82260BAD900B7526C /* RepositoryCell.swift */; }; - 5C1D60422265B6D40084F6E7 /* PageProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C011DB02260D2CC00B7526C /* PageProtocol.swift */; }; - 5C1D60442265B71C0084F6E7 /* PagedResource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C011DB22260D43400B7526C /* PagedResource.swift */; }; - 5C1D607E2265D0850084F6E7 /* CacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1D607D2265D0850084F6E7 /* CacheTests.swift */; }; - 5C5E3E3E2268B10000101A4F /* post.json in Resources */ = {isa = PBXBuildFile; fileRef = 5C5E3E3D2268B10000101A4F /* post.json */; }; - 6482057655BEFFD01580D0AF1DFCE7E7 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7F127ACF1B2327F2E08AF7842C675E48 /* Main.storyboard */; }; - C6182E1666FB0E0913C499F5CAD06E56 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = C369C92266286A4292809F7ADD231550 /* Assets.xcassets */; }; - D81B06542268A14200688B45 /* FullPathTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D81B06532268A14200688B45 /* FullPathTests.swift */; }; - D834F4F9225F1A6200D1B3A2 /* BlogPost.swift in Sources */ = {isa = PBXBuildFile; fileRef = D88B931E2253902500161DB0 /* BlogPost.swift */; }; - D834F4FB225F225B00D1B3A2 /* URLRequestTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D834F4FA225F225B00D1B3A2 /* URLRequestTests.swift */; }; - D834F4FF225F373800D1B3A2 /* StubTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D834F4FE225F373800D1B3A2 /* StubTests.swift */; }; - D834F501225F37EA00D1B3A2 /* NestingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D834F500225F37EA00D1B3A2 /* NestingTests.swift */; }; - D834F503225F385B00D1B3A2 /* MultipleStubsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D834F502225F385B00D1B3A2 /* MultipleStubsTests.swift */; }; - D834F505225F389D00D1B3A2 /* CancelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D834F504225F389D00D1B3A2 /* CancelTests.swift */; }; - D84633EC228EB8D50050C3A2 /* IgnoreBodyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D84633EB228EB8D40050C3A2 /* IgnoreBodyTests.swift */; }; - D8463434229058920050C3A2 /* CustomValidationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8463433229058920050C3A2 /* CustomValidationTests.swift */; }; - D84E96E422646C820095006A /* DispatchQueueTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D84E96E322646C820095006A /* DispatchQueueTests.swift */; }; - D84E96E622647E490095006A /* ShouldStubTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D84E96E522647E490095006A /* ShouldStubTests.swift */; }; - D88B9341225776EB00161DB0 /* API.swift in Sources */ = {isa = PBXBuildFile; fileRef = D88B931A22538FDC00161DB0 /* API.swift */; }; - D88B93442257788300161DB0 /* Config.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8D0B3896584A2347CD7065E71D5ACDB /* Config.swift */; }; - D88B934622577F8500161DB0 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = C46633DE2D0EA0915FC71674994375A2 /* AppDelegate.swift */; }; - D88B9357225784BF00161DB0 /* TestAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = D88B9356225784BF00161DB0 /* TestAPI.swift */; }; - D8BB861F225DFEE600F21D45 /* modela.json in Resources */ = {isa = PBXBuildFile; fileRef = D8BB861E225DFEE600F21D45 /* modela.json */; }; - D8BB8620225E03E300F21D45 /* nested-post.json in Resources */ = {isa = PBXBuildFile; fileRef = D88B93342255FB4400161DB0 /* nested-post.json */; }; - D8BB8621225E03E800F21D45 /* posts.json in Resources */ = {isa = PBXBuildFile; fileRef = B4E367A897230D11650A284D56A96F6D /* posts.json */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 0049B0AB894997BBC5248D997C60B1FF /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 19827A9227672E1800087629 /* Fetch */ = {isa = PBXFileReference; lastKnownFileType = folder; name = Fetch; sourceTree = ""; }; - 19A24D632761EF39008EC55C /* StubProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StubProvider.swift; sourceTree = ""; }; - 19A24D692762051B008EC55C /* StubProviderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StubProviderTests.swift; sourceTree = ""; }; - 3945386223AA358B004B59F8 /* Fetch+Combine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Fetch+Combine.swift"; sourceTree = ""; }; - 3948AD8D22670C9300DA0B85 /* FetchError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FetchError.swift; sourceTree = ""; }; - 397735AC225CC36E00E380E8 /* MemoryCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MemoryCache.swift; sourceTree = ""; }; - 397735AD225CC36E00E380E8 /* Cache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Cache.swift; sourceTree = ""; }; - 397735B0225CC39700E380E8 /* Resource+Fetch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Resource+Fetch.swift"; sourceTree = ""; }; - 397735B2225CC3A800E380E8 /* Crypto.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Crypto.swift; sourceTree = ""; }; - 397735B6225CC83500E380E8 /* MemoryCacheTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MemoryCacheTests.swift; sourceTree = ""; }; - 39CD557922646F2700F38B47 /* Cacheable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Cacheable.swift; sourceTree = ""; }; - 39CD557B226489A700F38B47 /* DiskCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiskCache.swift; sourceTree = ""; }; - 39CD557D22648BD100F38B47 /* Expiration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Expiration.swift; sourceTree = ""; }; - 39CD557F2264B6A100F38B47 /* DiskCacheTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiskCacheTests.swift; sourceTree = ""; }; - 39CD55812265BFFF00F38B47 /* HybridCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HybridCache.swift; sourceTree = ""; }; - 39CD55832265CA1200F38B47 /* HybridCacheTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HybridCacheTests.swift; sourceTree = ""; }; - 5C011D582260951B00B7526C /* ResourceDecoderProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResourceDecoderProtocol.swift; sourceTree = ""; }; - 5C011D5A226095A700B7526C /* ResourceEncoderProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ResourceEncoderProtocol.swift; sourceTree = ""; }; - 5C011D5C226096B800B7526C /* JSONEncoder+ResourceEncoder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "JSONEncoder+ResourceEncoder.swift"; sourceTree = ""; }; - 5C011D6022609AAB00B7526C /* OrganizationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OrganizationViewController.swift; sourceTree = ""; }; - 5C011D6722609C2000B7526C /* Organization.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Organization.swift; sourceTree = ""; }; - 5C011D6A22609CD200B7526C /* GithubAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GithubAPI.swift; sourceTree = ""; }; - 5C011D722260A65800B7526C /* GithubExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = GithubExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 5C011D742260A65900B7526C /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 5C011D792260A65900B7526C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - 5C011D7B2260A65A00B7526C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 5C011D7E2260A65A00B7526C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - 5C011D802260A65A00B7526C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 5C011D972260AC7E00B7526C /* UserListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserListViewController.swift; sourceTree = ""; }; - 5C011D992260AD0900B7526C /* User.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = User.swift; sourceTree = ""; }; - 5C011DA22260B43A00B7526C /* UserCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserCell.swift; sourceTree = ""; }; - 5C011DA42260B79A00B7526C /* RepositoryListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RepositoryListViewController.swift; sourceTree = ""; }; - 5C011DA62260B7B400B7526C /* Repository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Repository.swift; sourceTree = ""; }; - 5C011DA82260BAD900B7526C /* RepositoryCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RepositoryCell.swift; sourceTree = ""; }; - 5C011DB02260D2CC00B7526C /* PageProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PageProtocol.swift; sourceTree = ""; }; - 5C011DB22260D43400B7526C /* PagedResource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PagedResource.swift; sourceTree = ""; }; - 5C1D607D2265D0850084F6E7 /* CacheTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CacheTests.swift; sourceTree = ""; }; - 5C48F2DF22708B6400B85D3D /* ClosureStub.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClosureStub.swift; sourceTree = ""; }; - 5C5E3E3D2268B10000101A4F /* post.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = post.json; sourceTree = ""; }; - 8F67E303E8991613A4D5FB3DFF62CD20 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 958C4D8854808AC3BA9039533F7DF325 /* ResourceAPIKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ResourceAPIKit.h; sourceTree = ""; }; - 9891D313D796C514ADEFDA0E93FB9424 /* Alamofire.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Alamofire.framework; sourceTree = ""; }; - B4E367A897230D11650A284D56A96F6D /* posts.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = posts.json; sourceTree = ""; }; - B8BF5F8BE5312917A2921BECDEAF90BF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B8D0B3896584A2347CD7065E71D5ACDB /* Config.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Config.swift; sourceTree = ""; }; - C369C92266286A4292809F7ADD231550 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - C46633DE2D0EA0915FC71674994375A2 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - CAB9545096304FE07C47099D0E7B674D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - D335CAE788547E462F0DC50CFA1B3E46 /* AnyEncodable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnyEncodable.swift; sourceTree = ""; }; - D81B06532268A14200688B45 /* FullPathTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FullPathTests.swift; sourceTree = ""; }; - D834F4F0225E325B00D1B3A2 /* AlternatingStub.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlternatingStub.swift; sourceTree = ""; }; - D834F4F2225E327A00D1B3A2 /* RandomStub.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RandomStub.swift; sourceTree = ""; }; - D834F4FA225F225B00D1B3A2 /* URLRequestTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLRequestTests.swift; sourceTree = ""; }; - D834F4FE225F373800D1B3A2 /* StubTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StubTests.swift; sourceTree = ""; }; - D834F500225F37EA00D1B3A2 /* NestingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NestingTests.swift; sourceTree = ""; }; - D834F502225F385B00D1B3A2 /* MultipleStubsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultipleStubsTests.swift; sourceTree = ""; }; - D834F504225F389D00D1B3A2 /* CancelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CancelTests.swift; sourceTree = ""; }; - D84633E9228EB4870050C3A2 /* IgnoreBody.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IgnoreBody.swift; sourceTree = ""; }; - D84633EB228EB8D40050C3A2 /* IgnoreBodyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IgnoreBodyTests.swift; sourceTree = ""; }; - D8463433229058920050C3A2 /* CustomValidationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomValidationTests.swift; sourceTree = ""; }; - D84E96E322646C820095006A /* DispatchQueueTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DispatchQueueTests.swift; sourceTree = ""; }; - D84E96E522647E490095006A /* ShouldStubTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShouldStubTests.swift; sourceTree = ""; }; - D88B931822538FC800161DB0 /* Resource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Resource.swift; sourceTree = ""; }; - D88B931A22538FDC00161DB0 /* API.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = API.swift; sourceTree = ""; }; - D88B931C2253900300161DB0 /* APIClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIClient.swift; sourceTree = ""; }; - D88B931E2253902500161DB0 /* BlogPost.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlogPost.swift; sourceTree = ""; }; - D88B932C22539D1C00161DB0 /* APILogger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APILogger.swift; sourceTree = ""; }; - D88B93342255FB4400161DB0 /* nested-post.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "nested-post.json"; sourceTree = ""; }; - D88B9338225607C900161DB0 /* Decoder+Keys.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Decoder+Keys.swift"; sourceTree = ""; }; - D88B933C225640CE00161DB0 /* HTTPContentType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPContentType.swift; sourceTree = ""; }; - D88B933E2257469100161DB0 /* StubbedURL.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StubbedURL.swift; sourceTree = ""; }; - D88B934B2257849700161DB0 /* FetchTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FetchTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - D88B934F2257849700161DB0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - D88B9356225784BF00161DB0 /* TestAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestAPI.swift; sourceTree = ""; }; - D8BB861C225DD1C500F21D45 /* Stub.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Stub.swift; sourceTree = ""; }; - D8BB861E225DFEE600F21D45 /* modela.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = modela.json; sourceTree = ""; }; - D8CADBE4225CB3EE00DFCEF3 /* RequestToken.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RequestToken.swift; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 5C011D6F2260A65800B7526C /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 19A24D6F27620CFD008EC55C /* Fetch in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 99CAC1BAE8990BFA8C6A4E6FE6991409 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 19827A9427672E4500087629 /* Fetch in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D88B93482257849700161DB0 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 19A24D7127620E61008EC55C /* Fetch in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 0E8E0F07E8BD7723AAFE80843261248D /* Fetch */ = { - isa = PBXGroup; - children = ( - 593A47013E192037561B14D1916C6CCD /* Code */, - 643D0A4F87885D6FB4C0E144BBD7A0EB /* SupportingFiles */, - ); - path = Fetch; - sourceTree = ""; - }; - 19A24D622761EF24008EC55C /* StubProvider */ = { - isa = PBXGroup; - children = ( - 19A24D632761EF39008EC55C /* StubProvider.swift */, - ); - path = StubProvider; - sourceTree = ""; - }; - 23EFB87AF2F22858DA31353C3DD1191A /* Network */ = { - isa = PBXGroup; - children = ( - D88B931C2253900300161DB0 /* APIClient.swift */, - D88B932C22539D1C00161DB0 /* APILogger.swift */, - 3948AD8D22670C9300DA0B85 /* FetchError.swift */, - D88B931822538FC800161DB0 /* Resource.swift */, - 397735B0225CC39700E380E8 /* Resource+Fetch.swift */, - ); - path = Network; - sourceTree = ""; - }; - 3055DD3FF3876F4A5B3E170D7F9A9317 /* Products */ = { - isa = PBXGroup; - children = ( - 0049B0AB894997BBC5248D997C60B1FF /* Example.app */, - D88B934B2257849700161DB0 /* FetchTests.xctest */, - 5C011D722260A65800B7526C /* GithubExample.app */, - ); - name = Products; - sourceTree = ""; - }; - 3948ADDE2267176F00DA0B85 /* Stubs */ = { - isa = PBXGroup; - children = ( - 5C5E3E3D2268B10000101A4F /* post.json */, - B4E367A897230D11650A284D56A96F6D /* posts.json */, - D88B93342255FB4400161DB0 /* nested-post.json */, - ); - path = Stubs; - sourceTree = ""; - }; - 3948ADED2267194300DA0B85 /* Storyboards */ = { - isa = PBXGroup; - children = ( - C369C92266286A4292809F7ADD231550 /* Assets.xcassets */, - 7F127ACF1B2327F2E08AF7842C675E48 /* Main.storyboard */, - ); - path = Storyboards; - sourceTree = ""; - }; - 397735AB225CC36E00E380E8 /* Cache */ = { - isa = PBXGroup; - children = ( - 397735AD225CC36E00E380E8 /* Cache.swift */, - 39CD557922646F2700F38B47 /* Cacheable.swift */, - 39CD557B226489A700F38B47 /* DiskCache.swift */, - 39CD557D22648BD100F38B47 /* Expiration.swift */, - 39CD55812265BFFF00F38B47 /* HybridCache.swift */, - 397735AC225CC36E00E380E8 /* MemoryCache.swift */, - ); - path = Cache; - sourceTree = ""; - }; - 3A61669FD54D6BC9A55128CEE5C4CA7F /* Carthage */ = { - isa = PBXGroup; - children = ( - E97B1E6BD7852A70A1843EEA1C3B77DD /* iOS */, - ); - name = Carthage; - path = Carthage/Build; - sourceTree = ""; - }; - 4D1B35BAAD5824C5B5E0B7DDC77CF22E /* Utilities */ = { - isa = PBXGroup; - children = ( - D335CAE788547E462F0DC50CFA1B3E46 /* AnyEncodable.swift */, - 397735B2225CC3A800E380E8 /* Crypto.swift */, - D88B9338225607C900161DB0 /* Decoder+Keys.swift */, - 3945386223AA358B004B59F8 /* Fetch+Combine.swift */, - D88B933C225640CE00161DB0 /* HTTPContentType.swift */, - D84633E9228EB4870050C3A2 /* IgnoreBody.swift */, - 5C011D5C226096B800B7526C /* JSONEncoder+ResourceEncoder.swift */, - D8CADBE4225CB3EE00DFCEF3 /* RequestToken.swift */, - 5C011D582260951B00B7526C /* ResourceDecoderProtocol.swift */, - 5C011D5A226095A700B7526C /* ResourceEncoderProtocol.swift */, - ); - path = Utilities; - sourceTree = ""; - }; - 593A47013E192037561B14D1916C6CCD /* Code */ = { - isa = PBXGroup; - children = ( - 397735AB225CC36E00E380E8 /* Cache */, - 23EFB87AF2F22858DA31353C3DD1191A /* Network */, - D8BB861B225DD19E00F21D45 /* Stub */, - 19A24D622761EF24008EC55C /* StubProvider */, - 4D1B35BAAD5824C5B5E0B7DDC77CF22E /* Utilities */, - ); - path = Code; - sourceTree = ""; - }; - 5C011D732260A65900B7526C /* GithubExample */ = { - isa = PBXGroup; - children = ( - 5C011D872260A68C00B7526C /* Assets */, - 5C011D862260A68000B7526C /* Code */, - 5C011D842260A66900B7526C /* SupportingFiles */, - ); - path = GithubExample; - sourceTree = ""; - }; - 5C011D842260A66900B7526C /* SupportingFiles */ = { - isa = PBXGroup; - children = ( - 5C011D802260A65A00B7526C /* Info.plist */, - ); - path = SupportingFiles; - sourceTree = ""; - }; - 5C011D852260A67400B7526C /* Storyboards */ = { - isa = PBXGroup; - children = ( - 5C011D782260A65900B7526C /* Main.storyboard */, - 5C011D7D2260A65A00B7526C /* LaunchScreen.storyboard */, - ); - path = Storyboards; - sourceTree = ""; - }; - 5C011D862260A68000B7526C /* Code */ = { - isa = PBXGroup; - children = ( - 5C011D742260A65900B7526C /* AppDelegate.swift */, - 5C011DA12260B42B00B7526C /* Views */, - 5C011D852260A67400B7526C /* Storyboards */, - 5C011D882260A6AB00B7526C /* ViewControllers */, - 5C011D8C2260A6D900B7526C /* Networking */, - 5C1D60482265BFCD0084F6E7 /* Utilities */, - 5C011D8B2260A6CF00B7526C /* Models */, - ); - path = Code; - sourceTree = ""; - }; - 5C011D872260A68C00B7526C /* Assets */ = { - isa = PBXGroup; - children = ( - 5C011D7B2260A65A00B7526C /* Assets.xcassets */, - ); - path = Assets; - sourceTree = ""; - }; - 5C011D882260A6AB00B7526C /* ViewControllers */ = { - isa = PBXGroup; - children = ( - 5C011D6022609AAB00B7526C /* OrganizationViewController.swift */, - 5C011D972260AC7E00B7526C /* UserListViewController.swift */, - 5C011DA42260B79A00B7526C /* RepositoryListViewController.swift */, - ); - path = ViewControllers; - sourceTree = ""; - }; - 5C011D8B2260A6CF00B7526C /* Models */ = { - isa = PBXGroup; - children = ( - 5C011D6722609C2000B7526C /* Organization.swift */, - 5C011D992260AD0900B7526C /* User.swift */, - 5C011DA62260B7B400B7526C /* Repository.swift */, - ); - path = Models; - sourceTree = ""; - }; - 5C011D8C2260A6D900B7526C /* Networking */ = { - isa = PBXGroup; - children = ( - 5C011D6A22609CD200B7526C /* GithubAPI.swift */, - ); - path = Networking; - sourceTree = ""; - }; - 5C011DA12260B42B00B7526C /* Views */ = { - isa = PBXGroup; - children = ( - 5C011DA22260B43A00B7526C /* UserCell.swift */, - 5C011DA82260BAD900B7526C /* RepositoryCell.swift */, - ); - path = Views; - sourceTree = ""; - }; - 5C1D60482265BFCD0084F6E7 /* Utilities */ = { - isa = PBXGroup; - children = ( - 5CC973952264B64E00A5FB23 /* Paging */, - ); - path = Utilities; - sourceTree = ""; - }; - 5C1D607C2265D06C0084F6E7 /* Cache */ = { - isa = PBXGroup; - children = ( - 5C1D607D2265D0850084F6E7 /* CacheTests.swift */, - 39CD557F2264B6A100F38B47 /* DiskCacheTests.swift */, - 39CD55832265CA1200F38B47 /* HybridCacheTests.swift */, - 397735B6225CC83500E380E8 /* MemoryCacheTests.swift */, - ); - path = Cache; - sourceTree = ""; - }; - 5C5E3E3F2268BB3000101A4F /* ViewControllers */ = { - isa = PBXGroup; - children = ( - ); - path = ViewControllers; - sourceTree = ""; - }; - 5CC973952264B64E00A5FB23 /* Paging */ = { - isa = PBXGroup; - children = ( - 5C011DB02260D2CC00B7526C /* PageProtocol.swift */, - 5C011DB22260D43400B7526C /* PagedResource.swift */, - ); - path = Paging; - sourceTree = ""; - }; - 5CFD3BC92269B83000F92F97 /* ViewModels */ = { - isa = PBXGroup; - children = ( - ); - path = ViewModels; - sourceTree = ""; - }; - 643D0A4F87885D6FB4C0E144BBD7A0EB /* SupportingFiles */ = { - isa = PBXGroup; - children = ( - 8F67E303E8991613A4D5FB3DFF62CD20 /* Info.plist */, - 958C4D8854808AC3BA9039533F7DF325 /* ResourceAPIKit.h */, - ); - path = SupportingFiles; - sourceTree = ""; - }; - B35403319B2E8DB8EEBF20F115F39A00 = { - isa = PBXGroup; - children = ( - 19827A9227672E1800087629 /* Fetch */, - 5C011D732260A65900B7526C /* GithubExample */, - EF59E5BBE6D5893D23E3FF972D245A53 /* Example */, - 0E8E0F07E8BD7723AAFE80843261248D /* Fetch */, - D88B934C2257849700161DB0 /* FetchTests */, - DC053534422A3D1A9AFF3E2E9B5C1A18 /* Frameworks */, - 3055DD3FF3876F4A5B3E170D7F9A9317 /* Products */, - ); - sourceTree = ""; - }; - BE3662EFF68615852F0D1591B986B646 /* SupportingFiles */ = { - isa = PBXGroup; - children = ( - B8BF5F8BE5312917A2921BECDEAF90BF /* Info.plist */, - ); - path = SupportingFiles; - sourceTree = ""; - }; - D88B9340225776A800161DB0 /* Models */ = { - isa = PBXGroup; - children = ( - D88B931E2253902500161DB0 /* BlogPost.swift */, - ); - path = Models; - sourceTree = ""; - }; - D88B934C2257849700161DB0 /* FetchTests */ = { - isa = PBXGroup; - children = ( - 5C1D607C2265D06C0084F6E7 /* Cache */, - D834F504225F389D00D1B3A2 /* CancelTests.swift */, - D8463433229058920050C3A2 /* CustomValidationTests.swift */, - D84E96E322646C820095006A /* DispatchQueueTests.swift */, - D81B06532268A14200688B45 /* FullPathTests.swift */, - D84633EB228EB8D40050C3A2 /* IgnoreBodyTests.swift */, - D88B934F2257849700161DB0 /* Info.plist */, - D8BB861E225DFEE600F21D45 /* modela.json */, - D834F502225F385B00D1B3A2 /* MultipleStubsTests.swift */, - D834F500225F37EA00D1B3A2 /* NestingTests.swift */, - D84E96E522647E490095006A /* ShouldStubTests.swift */, - 19A24D692762051B008EC55C /* StubProviderTests.swift */, - D834F4FE225F373800D1B3A2 /* StubTests.swift */, - D88B9356225784BF00161DB0 /* TestAPI.swift */, - D834F4FA225F225B00D1B3A2 /* URLRequestTests.swift */, - ); - path = FetchTests; - sourceTree = ""; - }; - D8BB861B225DD19E00F21D45 /* Stub */ = { - isa = PBXGroup; - children = ( - D8BB861C225DD1C500F21D45 /* Stub.swift */, - D834F4F0225E325B00D1B3A2 /* AlternatingStub.swift */, - D834F4F2225E327A00D1B3A2 /* RandomStub.swift */, - D88B933E2257469100161DB0 /* StubbedURL.swift */, - 5C48F2DF22708B6400B85D3D /* ClosureStub.swift */, - ); - path = Stub; - sourceTree = ""; - }; - DC053534422A3D1A9AFF3E2E9B5C1A18 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 3A61669FD54D6BC9A55128CEE5C4CA7F /* Carthage */, - ); - name = Frameworks; - sourceTree = ""; - }; - E97B1E6BD7852A70A1843EEA1C3B77DD /* iOS */ = { - isa = PBXGroup; - children = ( - 9891D313D796C514ADEFDA0E93FB9424 /* Alamofire.framework */, - ); - path = iOS; - sourceTree = ""; - }; - EF59E5BBE6D5893D23E3FF972D245A53 /* Example */ = { - isa = PBXGroup; - children = ( - D88B931A22538FDC00161DB0 /* API.swift */, - C46633DE2D0EA0915FC71674994375A2 /* AppDelegate.swift */, - B8D0B3896584A2347CD7065E71D5ACDB /* Config.swift */, - D88B9340225776A800161DB0 /* Models */, - 5CFD3BC92269B83000F92F97 /* ViewModels */, - 5C5E3E3F2268BB3000101A4F /* ViewControllers */, - 3948ADDE2267176F00DA0B85 /* Stubs */, - 3948ADED2267194300DA0B85 /* Storyboards */, - BE3662EFF68615852F0D1591B986B646 /* SupportingFiles */, - ); - path = Example; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 14DF97133E42B2E827EBFA04F39C1682 /* Example */ = { - isa = PBXNativeTarget; - buildConfigurationList = 43E361F5B9A997F8E2BBD88DB8D3C51C /* Build configuration list for PBXNativeTarget "Example" */; - buildPhases = ( - D18C8CB4CACF6754467C3C67965195DA /* Sources */, - A0ED2CB87C11E98C88D6E0EFFA5117DC /* SwiftLint */, - DAFEA1A301E39D5D07E7F17E2633422B /* Resources */, - 99CAC1BAE8990BFA8C6A4E6FE6991409 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Example; - packageProductDependencies = ( - 19827A9327672E4500087629 /* Fetch */, - ); - productName = ResourceAPI; - productReference = 0049B0AB894997BBC5248D997C60B1FF /* Example.app */; - productType = "com.apple.product-type.application"; - }; - 5C011D712260A65800B7526C /* GithubExample */ = { - isa = PBXNativeTarget; - buildConfigurationList = 5C011D812260A65A00B7526C /* Build configuration list for PBXNativeTarget "GithubExample" */; - buildPhases = ( - 5C011D6E2260A65800B7526C /* Sources */, - 5C011D6F2260A65800B7526C /* Frameworks */, - 5C011D702260A65800B7526C /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = GithubExample; - packageProductDependencies = ( - 19A24D6E27620CFD008EC55C /* Fetch */, - ); - productName = GithubExample; - productReference = 5C011D722260A65800B7526C /* GithubExample.app */; - productType = "com.apple.product-type.application"; - }; - D88B934A2257849700161DB0 /* FetchTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = D88B93532257849700161DB0 /* Build configuration list for PBXNativeTarget "FetchTests" */; - buildPhases = ( - D88B93472257849700161DB0 /* Sources */, - D88B93482257849700161DB0 /* Frameworks */, - D88B93492257849700161DB0 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = FetchTests; - packageProductDependencies = ( - 19A24D7027620E61008EC55C /* Fetch */, - ); - productName = ResourceAPIKitTests; - productReference = D88B934B2257849700161DB0 /* FetchTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 0DC8363EE1D15BA9A5B8CCCCB91F804B /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 1020; - LastUpgradeCheck = 1310; - ORGANIZATIONNAME = "aaa - all about apps GmbH"; - TargetAttributes = { - 14DF97133E42B2E827EBFA04F39C1682 = { - DevelopmentTeam = M8F9QH57A6; - }; - 5C011D712260A65800B7526C = { - CreatedOnToolsVersion = 10.2; - }; - D88B934A2257849700161DB0 = { - CreatedOnToolsVersion = 10.2; - }; - }; - }; - buildConfigurationList = 5A8DA2D9D3FFC49DF79BC0E23BA93093 /* Build configuration list for PBXProject "Fetch" */; - compatibilityVersion = "Xcode 9.3"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = B35403319B2E8DB8EEBF20F115F39A00; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 5C011D712260A65800B7526C /* GithubExample */, - 14DF97133E42B2E827EBFA04F39C1682 /* Example */, - D88B934A2257849700161DB0 /* FetchTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 5C011D702260A65800B7526C /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 5C011D7F2260A65A00B7526C /* LaunchScreen.storyboard in Resources */, - 5C011D7C2260A65A00B7526C /* Assets.xcassets in Resources */, - 5C011D7A2260A65900B7526C /* Main.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D88B93492257849700161DB0 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D8BB861F225DFEE600F21D45 /* modela.json in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DAFEA1A301E39D5D07E7F17E2633422B /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 5C5E3E3E2268B10000101A4F /* post.json in Resources */, - D8BB8620225E03E300F21D45 /* nested-post.json in Resources */, - C6182E1666FB0E0913C499F5CAD06E56 /* Assets.xcassets in Resources */, - 6482057655BEFFD01580D0AF1DFCE7E7 /* Main.storyboard in Resources */, - D8BB8621225E03E800F21D45 /* posts.json in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - A0ED2CB87C11E98C88D6E0EFFA5117DC /* SwiftLint */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - ); - name = SwiftLint; - outputFileListPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "if which swiftlint >/dev/null; then\n swiftlint\nelse\n echo \"warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint\"\nfi\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 5C011D6E2260A65800B7526C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 5C011DA52260B79A00B7526C /* RepositoryListViewController.swift in Sources */, - 5C011D982260AC7E00B7526C /* UserListViewController.swift in Sources */, - 5C011D892260A6C300B7526C /* OrganizationViewController.swift in Sources */, - 5C011D9A2260AD0900B7526C /* User.swift in Sources */, - 5C011D922260A8B600B7526C /* Organization.swift in Sources */, - 5C011DA92260BAD900B7526C /* RepositoryCell.swift in Sources */, - 5C011D752260A65900B7526C /* AppDelegate.swift in Sources */, - 5C011D932260A8C400B7526C /* GithubAPI.swift in Sources */, - 5C011DA32260B43A00B7526C /* UserCell.swift in Sources */, - 5C011DA72260B7B400B7526C /* Repository.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D18C8CB4CACF6754467C3C67965195DA /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 5C1D60442265B71C0084F6E7 /* PagedResource.swift in Sources */, - D88B934622577F8500161DB0 /* AppDelegate.swift in Sources */, - 5C1D60422265B6D40084F6E7 /* PageProtocol.swift in Sources */, - D834F4F9225F1A6200D1B3A2 /* BlogPost.swift in Sources */, - D88B9341225776EB00161DB0 /* API.swift in Sources */, - D88B93442257788300161DB0 /* Config.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D88B93472257849700161DB0 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 39CD55842265CA1300F38B47 /* HybridCacheTests.swift in Sources */, - 39CD55802264B6A100F38B47 /* DiskCacheTests.swift in Sources */, - 5C1D607E2265D0850084F6E7 /* CacheTests.swift in Sources */, - D88B9357225784BF00161DB0 /* TestAPI.swift in Sources */, - D834F503225F385B00D1B3A2 /* MultipleStubsTests.swift in Sources */, - D834F4FF225F373800D1B3A2 /* StubTests.swift in Sources */, - 397735B7225CC83500E380E8 /* MemoryCacheTests.swift in Sources */, - D84E96E422646C820095006A /* DispatchQueueTests.swift in Sources */, - D81B06542268A14200688B45 /* FullPathTests.swift in Sources */, - D84E96E622647E490095006A /* ShouldStubTests.swift in Sources */, - D834F505225F389D00D1B3A2 /* CancelTests.swift in Sources */, - D834F501225F37EA00D1B3A2 /* NestingTests.swift in Sources */, - D834F4FB225F225B00D1B3A2 /* URLRequestTests.swift in Sources */, - D84633EC228EB8D50050C3A2 /* IgnoreBodyTests.swift in Sources */, - 19A24D6A2762051B008EC55C /* StubProviderTests.swift in Sources */, - D8463434229058920050C3A2 /* CustomValidationTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - 5C011D782260A65900B7526C /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 5C011D792260A65900B7526C /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - 5C011D7D2260A65A00B7526C /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 5C011D7E2260A65A00B7526C /* Base */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; - 7F127ACF1B2327F2E08AF7842C675E48 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - CAB9545096304FE07C47099D0E7B674D /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - 4B85267FF8C73D5BD65C106B5FA26DC5 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/iOS", - ); - INFOPLIST_FILE = Example/SupportingFiles/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = at.allaboutapps.Example; - PRODUCT_NAME = Example; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 50D4412AA2BEA2DA2F4A9B8F93BDB14D /* 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_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; - DEVELOPMENT_TEAM = M8F9QH57A6; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "$(inherited)", - "DEBUG=1", - ); - 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; - IPHONEOS_DEPLOYMENT_TARGET = 11; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - 5C011D822260A65A00B7526C /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_OBJC_WEAK = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = M8F9QH57A6; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/iOS", - ); - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = "$(SRCROOT)/GithubExample/SupportingFiles/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = at.allaboutapps.GithubExample; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 5C011D832260A65A00B7526C /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_OBJC_WEAK = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = M8F9QH57A6; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/iOS", - ); - INFOPLIST_FILE = "$(SRCROOT)/GithubExample/SupportingFiles/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = at.allaboutapps.GithubExample; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - B61D64E965C6A1FB2F945DBEB6C77449 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_IDENTITY = "iPhone Developer"; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/iOS", - ); - INFOPLIST_FILE = Example/SupportingFiles/Info.plist; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = at.allaboutapps.Example; - PRODUCT_NAME = Example; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - D88B93542257849700161DB0 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = M8F9QH57A6; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/iOS", - ); - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = FetchTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.2; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = at.allboutapps.FetchTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - D88B93552257849700161DB0 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = YES; - CODE_SIGN_IDENTITY = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - DEVELOPMENT_TEAM = M8F9QH57A6; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "$(PROJECT_DIR)/Carthage/Build/iOS", - ); - INFOPLIST_FILE = FetchTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 12.2; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = at.allboutapps.FetchTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - FC821B9E2F152867AD00FC9D89138950 /* 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_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"; - DEVELOPMENT_TEAM = M8F9QH57A6; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = 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; - IPHONEOS_DEPLOYMENT_TARGET = 11; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 5.0; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 43E361F5B9A997F8E2BBD88DB8D3C51C /* Build configuration list for PBXNativeTarget "Example" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4B85267FF8C73D5BD65C106B5FA26DC5 /* Debug */, - B61D64E965C6A1FB2F945DBEB6C77449 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = ""; - }; - 5A8DA2D9D3FFC49DF79BC0E23BA93093 /* Build configuration list for PBXProject "Fetch" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 50D4412AA2BEA2DA2F4A9B8F93BDB14D /* Debug */, - FC821B9E2F152867AD00FC9D89138950 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - 5C011D812260A65A00B7526C /* Build configuration list for PBXNativeTarget "GithubExample" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 5C011D822260A65A00B7526C /* Debug */, - 5C011D832260A65A00B7526C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; - D88B93532257849700161DB0 /* Build configuration list for PBXNativeTarget "FetchTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D88B93542257849700161DB0 /* Debug */, - D88B93552257849700161DB0 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Debug; - }; -/* End XCConfigurationList section */ - -/* Begin XCSwiftPackageProductDependency section */ - 19827A9327672E4500087629 /* Fetch */ = { - isa = XCSwiftPackageProductDependency; - productName = Fetch; - }; - 19A24D6E27620CFD008EC55C /* Fetch */ = { - isa = XCSwiftPackageProductDependency; - productName = Fetch; - }; - 19A24D7027620E61008EC55C /* Fetch */ = { - isa = XCSwiftPackageProductDependency; - productName = Fetch; - }; -/* End XCSwiftPackageProductDependency section */ - }; - rootObject = 0DC8363EE1D15BA9A5B8CCCCB91F804B /* Project object */; -} diff --git a/Fetch.xcodeproj/xcshareddata/xcschemes/Example.xcscheme b/Fetch.xcodeproj/xcshareddata/xcschemes/Example.xcscheme deleted file mode 100644 index cb863d1..0000000 --- a/Fetch.xcodeproj/xcshareddata/xcschemes/Example.xcscheme +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Fetch.xcodeproj/xcshareddata/xcschemes/Fetch.xcscheme b/Fetch.xcodeproj/xcshareddata/xcschemes/Fetch.xcscheme deleted file mode 100644 index f80404d..0000000 --- a/Fetch.xcodeproj/xcshareddata/xcschemes/Fetch.xcscheme +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Fetch/SupportingFiles/Info.plist b/Fetch/SupportingFiles/Info.plist deleted file mode 100644 index e1fe4cf..0000000 --- a/Fetch/SupportingFiles/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleVersion - $(CURRENT_PROJECT_VERSION) - - diff --git a/Fetch/SupportingFiles/ResourceAPIKit.h b/Fetch/SupportingFiles/ResourceAPIKit.h deleted file mode 100644 index 595617f..0000000 --- a/Fetch/SupportingFiles/ResourceAPIKit.h +++ /dev/null @@ -1,9 +0,0 @@ -#import - -//! Project version number for Fetch. -FOUNDATION_EXPORT double FetchVersionNumber; - -//! Project version string for Fetch. -FOUNDATION_EXPORT const unsigned char FetchVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import diff --git a/FetchTests/Info.plist b/FetchTests/Info.plist deleted file mode 100644 index 6c40a6c..0000000 --- a/FetchTests/Info.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - - diff --git a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json b/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 1f29156..0000000 --- a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,116 +0,0 @@ -{ - "images" : [ - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-20@2x.png", - "scale" : "2x" - }, - { - "size" : "20x20", - "idiom" : "iphone", - "filename" : "Icon-20@3x.png", - "scale" : "3x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-29@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "Icon-29@3x.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-40@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "Icon-40@3x.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-60@2x.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "Icon-60@3x.png", - "scale" : "3x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-20.png", - "scale" : "1x" - }, - { - "size" : "20x20", - "idiom" : "ipad", - "filename" : "Icon-20@2x.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-29.png", - "scale" : "1x" - }, - { - "size" : "29x29", - "idiom" : "ipad", - "filename" : "Icon-29@2x.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-40.png", - "scale" : "1x" - }, - { - "size" : "40x40", - "idiom" : "ipad", - "filename" : "Icon-40@2x.png", - "scale" : "2x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-76.png", - "scale" : "1x" - }, - { - "size" : "76x76", - "idiom" : "ipad", - "filename" : "Icon-76@2x.png", - "scale" : "2x" - }, - { - "size" : "83.5x83.5", - "idiom" : "ipad", - "filename" : "Icon-83.5@2x.png", - "scale" : "2x" - }, - { - "size" : "1024x1024", - "idiom" : "ios-marketing", - "filename" : "Icon-1024.png", - "scale" : "1x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-1024.png b/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-1024.png deleted file mode 100644 index 59c8e7e..0000000 Binary files a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-1024.png and /dev/null differ diff --git a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-20.png b/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-20.png deleted file mode 100644 index 6cd6cdb..0000000 Binary files a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-20.png and /dev/null differ diff --git a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-20@2x.png b/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-20@2x.png deleted file mode 100644 index c4e1640..0000000 Binary files a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-20@2x.png and /dev/null differ diff --git a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-20@3x.png b/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-20@3x.png deleted file mode 100644 index 7faa52f..0000000 Binary files a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-20@3x.png and /dev/null differ diff --git a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-29.png b/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-29.png deleted file mode 100644 index 359126d..0000000 Binary files a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-29.png and /dev/null differ diff --git a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png b/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png deleted file mode 100644 index 1c712c3..0000000 Binary files a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-29@2x.png and /dev/null differ diff --git a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png b/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png deleted file mode 100644 index 61beca9..0000000 Binary files a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-29@3x.png and /dev/null differ diff --git a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-40.png b/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-40.png deleted file mode 100644 index c4e1640..0000000 Binary files a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-40.png and /dev/null differ diff --git a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png b/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png deleted file mode 100644 index 71ab8fe..0000000 Binary files a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png and /dev/null differ diff --git a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png b/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png deleted file mode 100644 index 29bf828..0000000 Binary files a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png and /dev/null differ diff --git a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png b/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png deleted file mode 100644 index bcb1cf3..0000000 Binary files a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png and /dev/null differ diff --git a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png b/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png deleted file mode 100644 index 9d8a365..0000000 Binary files a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png and /dev/null differ diff --git a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-76.png b/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-76.png deleted file mode 100644 index e451518..0000000 Binary files a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-76.png and /dev/null differ diff --git a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png b/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png deleted file mode 100644 index 6d3f68c..0000000 Binary files a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png and /dev/null differ diff --git a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png b/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png deleted file mode 100644 index 24defae..0000000 Binary files a/GithubExample/Assets/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png and /dev/null differ diff --git a/GithubExample/Assets/Assets.xcassets/Contents.json b/GithubExample/Assets/Assets.xcassets/Contents.json deleted file mode 100644 index da4a164..0000000 --- a/GithubExample/Assets/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/GithubExample/Code/AppDelegate.swift b/GithubExample/Code/AppDelegate.swift deleted file mode 100644 index 65d046c..0000000 --- a/GithubExample/Code/AppDelegate.swift +++ /dev/null @@ -1,42 +0,0 @@ -// -// AppDelegate.swift -// GithubExample -// -// Created by Oliver Krakora on 12.04.19. -// Copyright © 2019 aaa - all about apps GmbH. All rights reserved. -// - -import UIKit -import Fetch - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - var window: UIWindow? - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - let config = Config(baseURL: URL(string: "https://api.github.com")!, - cache: MemoryCache(defaultExpiration: .seconds(3600)), - cachePolicy: .cacheFirstNetworkAlways) - APIClient.shared.setup(with: config) - return true - } - - func applicationWillResignActive(_ application: UIApplication) { - - } - - func applicationDidEnterBackground(_ application: UIApplication) { - - } - - func applicationWillEnterForeground(_ application: UIApplication) { - } - - func applicationDidBecomeActive(_ application: UIApplication) { - } - - func applicationWillTerminate(_ application: UIApplication) { - } - -} diff --git a/Package.resolved b/Package.resolved index 60cdbeb..878d8d2 100644 --- a/Package.resolved +++ b/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/Alamofire/Alamofire.git", "state": { "branch": null, - "revision": "d120af1e8638c7da36c8481fd61a66c0c08dc4fc", - "version": "5.4.4" + "revision": "f82c23a8a7ef8dc1a49a8bfc6a96883e79121864", + "version": "5.5.0" } } ] diff --git a/Package.swift b/Package.swift index ec18a7e..fe7b10e 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:5.0 +// swift-tools-version:5.5 import PackageDescription @@ -14,10 +14,16 @@ let package = Package( .library(name: "Fetch", targets: ["Fetch"]) ], dependencies: [ - .package(url: "https://github.com/Alamofire/Alamofire.git", from: "5.0.0") + .package(url: "https://github.com/Alamofire/Alamofire.git", from: "5.5.0") ], targets: [ - .target(name: "Fetch", dependencies: ["Alamofire"], path: "Fetch/Code") + .target(name: "Fetch", + dependencies: ["Alamofire"]), + .testTarget(name: "FetchTests", + dependencies: ["Fetch"], + resources: [ + .process("modela.json") + ]) ], swiftLanguageVersions: [.v5] ) diff --git a/README.md b/README.md index f316a5f..5e34545 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ # Fetch -![Bitrise](https://app.bitrise.io/app/c7d1932e4398ffc9/status.svg?token=2gddfiJReIY_-JaeahuRAg&branch=master) -[![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) +![Swift Package Manager](https://img.shields.io/badge/Swift_Package_Manager-compatible-orange?style=flat) Fetch is a resource based network abstraction based on [Alamofire](https://github.com/Alamofire/Alamofire) @@ -302,16 +301,6 @@ resource.fetch(cachePolicy: .cacheFirstNetworkAlways) { (result, finishedLoading For an overview of policies check out the implementation in [Cache.swift](https://github.com/allaboutapps/Fetch/blob/master/Fetch/Code/Cache/Cache.swift) -## Carthage - -Add the following line to your [Cartfile](https://github.com/Carthage/Carthage/blob/master/Documentation/Artifacts.md#cartfile). - -``` -github "allaboutapps/Fetch", ~> 1.0 -``` - -Then run `carthage update`. - ## Swift Package Manager Use Xcode 11+: diff --git a/ReactiveExample/Cartfile b/ReactiveExample/Cartfile deleted file mode 100644 index 0e18a5e..0000000 --- a/ReactiveExample/Cartfile +++ /dev/null @@ -1,3 +0,0 @@ -github "ReactiveCocoa/ReactiveSwift" ~> 6.0 -github "kishikawakatsumi/KeychainAccess" ~> 3.2 -github "Alamofire/Alamofire" "5.0.0-beta.5" diff --git a/ReactiveExample/Cartfile.resolved b/ReactiveExample/Cartfile.resolved deleted file mode 100644 index 56b386a..0000000 --- a/ReactiveExample/Cartfile.resolved +++ /dev/null @@ -1,3 +0,0 @@ -github "Alamofire/Alamofire" "5.0.0-beta.5" -github "ReactiveCocoa/ReactiveSwift" "6.0.0" -github "kishikawakatsumi/KeychainAccess" "v3.2.0" diff --git a/ReactiveExample/ReactiveExample/API.swift b/ReactiveExample/ReactiveExample/API.swift deleted file mode 100644 index ebb49d6..0000000 --- a/ReactiveExample/ReactiveExample/API.swift +++ /dev/null @@ -1,78 +0,0 @@ -// -// API.swift -// Fetch -// -// Created by Michael Heinzl on 02.04.19. -// Copyright © 2019 aaa - all about apps GmbH. All rights reserved. -// - -import Foundation -import Alamofire -import Fetch - -public struct API { - - public struct StubbedAuth { - - static let baseURL = URL(string: "") - - public static func login(username: String, password: String) -> Resource { - return Resource( - method: .post, - baseURL: baseURL, - path: "/api/v1/auth/login", - body: [ - "username": username, - "password": password - ], shouldStub: true, - stub: StubResponse(statusCode: 200, fileName: "authresponse.json", delay: 3)) - } - - public static func tokenRefresh(_ refreshToken: String) -> Resource { - return Resource( - method: .post, - baseURL: baseURL, - path: "/api/v1/auth/refresh", - body: [ - "refreshToken": refreshToken - ], shouldStub: true, - stub: StubResponse(statusCode: 200, fileName: "authresponse.json", delay: 4)) - } - - public static func authorizedRequest() -> Resource { - let conditionalStub = ClosureStub { () -> Stub in - let unauthorizedStub = StubResponse(statusCode: 401, data: Data(), delay: 2) - let okStub = StubResponse(statusCode: 200, data: Data(), delay: 2) - return CredentialsController.shared.currentCredentials == nil ? unauthorizedStub : okStub - } - - return Resource( - path: "/auth/secret", - shouldStub: true, - stub: conditionalStub - ) - } - - public static func unauthorizedErrorRequest() -> Resource { - let failingStub = StubResponse(statusCode: 401, data: Data(), delay: 2) - let okStub = StubResponse(statusCode: 200, data: Data(), delay: 2) - - return Resource( - path: "/fail", - shouldStub: true, - stub: AlternatingStub(stubs: [failingStub, okStub]) - ) - } - } - - public struct BlogPosts { - - public static func list() -> Resource<[BlogPost]> { - return Resource( - method: .get, - path: "/posts", - shouldStub: true, - stub: StubResponse(statusCode: 200, fileName: "posts.json", delay: 1)) - } - } -} diff --git a/ReactiveExample/ReactiveExample/AppDelegate.swift b/ReactiveExample/ReactiveExample/AppDelegate.swift deleted file mode 100644 index 9ad4264..0000000 --- a/ReactiveExample/ReactiveExample/AppDelegate.swift +++ /dev/null @@ -1,31 +0,0 @@ -// -// AppDelegate.swift -// ReactiveExample -// -// Created by Matthias Buchetics on 17.04.19. -// Copyright © 2019 all about apps Gmbh. All rights reserved. -// - -import UIKit -import Fetch - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - var window: UIWindow? - - func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - let url = URL(string: "https://f4a4ddde.ngrok.io")! - - APIClient.shared.setup(with: Fetch.Config( - baseURL: url, - interceptor: AuthHandler(), - cache: MemoryCache(defaultExpiration: .seconds(60)), - shouldStub: false)) - - CredentialsController.shared.resetOnNewInstallations() - - return true - } - -} diff --git a/ReactiveExample/ReactiveExample/Models/BlogPost.swift b/ReactiveExample/ReactiveExample/Models/BlogPost.swift deleted file mode 100644 index 1123df4..0000000 --- a/ReactiveExample/ReactiveExample/Models/BlogPost.swift +++ /dev/null @@ -1,24 +0,0 @@ -// -// Post.swift -// Fetch -// -// Created by Michael Heinzl on 02.04.19. -// Copyright © 2019 aaa - all about apps GmbH. All rights reserved. -// - -import Foundation -import Fetch - -public struct BlogPost: Codable, Equatable { - public let id: Int - public let title: String - public let author: String - - public init(id: Int, title: String, author: String) { - self.id = id - self.title = title - self.author = author - } -} - -extension BlogPost: Cacheable { } diff --git a/ReactiveExample/ReactiveExample/Models/Stubs/nested-post.json b/ReactiveExample/ReactiveExample/Models/Stubs/nested-post.json deleted file mode 100644 index 4c788ef..0000000 --- a/ReactiveExample/ReactiveExample/Models/Stubs/nested-post.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "super": { - "deep": { - "nesting": { - "id": 1, - "title": "json-server", - "author": "typicode" - } - } - } -} diff --git a/ReactiveExample/ReactiveExample/Models/Stubs/posts.json b/ReactiveExample/ReactiveExample/Models/Stubs/posts.json deleted file mode 100644 index 9cae47c..0000000 --- a/ReactiveExample/ReactiveExample/Models/Stubs/posts.json +++ /dev/null @@ -1,12 +0,0 @@ -[ - { - "id": 1, - "title": "json-server", - "author": "typicode" - }, - { - "id": 2, - "author": "mheinzl", - "title": "new post" - } -] diff --git a/ReactiveExample/ReactiveExample/Storyboards/Assets.xcassets/Contents.json b/ReactiveExample/ReactiveExample/Storyboards/Assets.xcassets/Contents.json deleted file mode 100644 index da4a164..0000000 --- a/ReactiveExample/ReactiveExample/Storyboards/Assets.xcassets/Contents.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/ReactiveExample/ReactiveExample/SupportingFiles/Info.plist b/ReactiveExample/ReactiveExample/SupportingFiles/Info.plist deleted file mode 100644 index 16be3b6..0000000 --- a/ReactiveExample/ReactiveExample/SupportingFiles/Info.plist +++ /dev/null @@ -1,45 +0,0 @@ - - - - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - LSRequiresIPhoneOS - - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UISupportedInterfaceOrientations~ipad - - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - - diff --git a/Fetch/Code/Cache/Cache.swift b/Sources/Fetch/Cache/Cache.swift similarity index 100% rename from Fetch/Code/Cache/Cache.swift rename to Sources/Fetch/Cache/Cache.swift diff --git a/Fetch/Code/Cache/Cacheable.swift b/Sources/Fetch/Cache/Cacheable.swift similarity index 100% rename from Fetch/Code/Cache/Cacheable.swift rename to Sources/Fetch/Cache/Cacheable.swift diff --git a/Fetch/Code/Cache/DiskCache.swift b/Sources/Fetch/Cache/DiskCache.swift similarity index 100% rename from Fetch/Code/Cache/DiskCache.swift rename to Sources/Fetch/Cache/DiskCache.swift diff --git a/Fetch/Code/Cache/Expiration.swift b/Sources/Fetch/Cache/Expiration.swift similarity index 100% rename from Fetch/Code/Cache/Expiration.swift rename to Sources/Fetch/Cache/Expiration.swift diff --git a/Fetch/Code/Cache/HybridCache.swift b/Sources/Fetch/Cache/HybridCache.swift similarity index 100% rename from Fetch/Code/Cache/HybridCache.swift rename to Sources/Fetch/Cache/HybridCache.swift diff --git a/Fetch/Code/Cache/MemoryCache.swift b/Sources/Fetch/Cache/MemoryCache.swift similarity index 100% rename from Fetch/Code/Cache/MemoryCache.swift rename to Sources/Fetch/Cache/MemoryCache.swift diff --git a/Fetch/Code/Network/APIClient.swift b/Sources/Fetch/Network/APIClient.swift similarity index 100% rename from Fetch/Code/Network/APIClient.swift rename to Sources/Fetch/Network/APIClient.swift diff --git a/Fetch/Code/Network/APILogger.swift b/Sources/Fetch/Network/APILogger.swift similarity index 100% rename from Fetch/Code/Network/APILogger.swift rename to Sources/Fetch/Network/APILogger.swift diff --git a/Fetch/Code/Network/FetchError.swift b/Sources/Fetch/Network/FetchError.swift similarity index 100% rename from Fetch/Code/Network/FetchError.swift rename to Sources/Fetch/Network/FetchError.swift diff --git a/Fetch/Code/Network/Resource+Fetch.swift b/Sources/Fetch/Network/Resource+Fetch.swift similarity index 100% rename from Fetch/Code/Network/Resource+Fetch.swift rename to Sources/Fetch/Network/Resource+Fetch.swift diff --git a/Fetch/Code/Network/Resource.swift b/Sources/Fetch/Network/Resource.swift similarity index 100% rename from Fetch/Code/Network/Resource.swift rename to Sources/Fetch/Network/Resource.swift diff --git a/Fetch/Code/Stub/AlternatingStub.swift b/Sources/Fetch/Stub/AlternatingStub.swift similarity index 100% rename from Fetch/Code/Stub/AlternatingStub.swift rename to Sources/Fetch/Stub/AlternatingStub.swift diff --git a/Fetch/Code/Stub/ClosureStub.swift b/Sources/Fetch/Stub/ClosureStub.swift similarity index 100% rename from Fetch/Code/Stub/ClosureStub.swift rename to Sources/Fetch/Stub/ClosureStub.swift diff --git a/Fetch/Code/Stub/RandomStub.swift b/Sources/Fetch/Stub/RandomStub.swift similarity index 100% rename from Fetch/Code/Stub/RandomStub.swift rename to Sources/Fetch/Stub/RandomStub.swift diff --git a/Fetch/Code/Stub/Stub.swift b/Sources/Fetch/Stub/Stub.swift similarity index 100% rename from Fetch/Code/Stub/Stub.swift rename to Sources/Fetch/Stub/Stub.swift diff --git a/Fetch/Code/Stub/StubbedURL.swift b/Sources/Fetch/Stub/StubbedURL.swift similarity index 100% rename from Fetch/Code/Stub/StubbedURL.swift rename to Sources/Fetch/Stub/StubbedURL.swift diff --git a/Fetch/Code/StubProvider/StubProvider.swift b/Sources/Fetch/StubProvider/StubProvider.swift similarity index 100% rename from Fetch/Code/StubProvider/StubProvider.swift rename to Sources/Fetch/StubProvider/StubProvider.swift diff --git a/Fetch/Code/Utilities/AnyEncodable.swift b/Sources/Fetch/Utilities/AnyEncodable.swift similarity index 100% rename from Fetch/Code/Utilities/AnyEncodable.swift rename to Sources/Fetch/Utilities/AnyEncodable.swift diff --git a/Fetch/Code/Utilities/Crypto.swift b/Sources/Fetch/Utilities/Crypto.swift similarity index 100% rename from Fetch/Code/Utilities/Crypto.swift rename to Sources/Fetch/Utilities/Crypto.swift diff --git a/Fetch/Code/Utilities/Decoder+Keys.swift b/Sources/Fetch/Utilities/Decoder+Keys.swift similarity index 100% rename from Fetch/Code/Utilities/Decoder+Keys.swift rename to Sources/Fetch/Utilities/Decoder+Keys.swift diff --git a/Fetch/Code/Utilities/Fetch+Combine.swift b/Sources/Fetch/Utilities/Fetch+Combine.swift similarity index 100% rename from Fetch/Code/Utilities/Fetch+Combine.swift rename to Sources/Fetch/Utilities/Fetch+Combine.swift diff --git a/Fetch/Code/Utilities/HTTPContentType.swift b/Sources/Fetch/Utilities/HTTPContentType.swift similarity index 100% rename from Fetch/Code/Utilities/HTTPContentType.swift rename to Sources/Fetch/Utilities/HTTPContentType.swift diff --git a/Fetch/Code/Utilities/IgnoreBody.swift b/Sources/Fetch/Utilities/IgnoreBody.swift similarity index 100% rename from Fetch/Code/Utilities/IgnoreBody.swift rename to Sources/Fetch/Utilities/IgnoreBody.swift diff --git a/Fetch/Code/Utilities/JSONEncoder+ResourceEncoder.swift b/Sources/Fetch/Utilities/JSONEncoder+ResourceEncoder.swift similarity index 100% rename from Fetch/Code/Utilities/JSONEncoder+ResourceEncoder.swift rename to Sources/Fetch/Utilities/JSONEncoder+ResourceEncoder.swift diff --git a/Fetch/Code/Utilities/RequestToken.swift b/Sources/Fetch/Utilities/RequestToken.swift similarity index 100% rename from Fetch/Code/Utilities/RequestToken.swift rename to Sources/Fetch/Utilities/RequestToken.swift diff --git a/Fetch/Code/Utilities/ResourceDecoderProtocol.swift b/Sources/Fetch/Utilities/ResourceDecoderProtocol.swift similarity index 100% rename from Fetch/Code/Utilities/ResourceDecoderProtocol.swift rename to Sources/Fetch/Utilities/ResourceDecoderProtocol.swift diff --git a/Fetch/Code/Utilities/ResourceEncoderProtocol.swift b/Sources/Fetch/Utilities/ResourceEncoderProtocol.swift similarity index 100% rename from Fetch/Code/Utilities/ResourceEncoderProtocol.swift rename to Sources/Fetch/Utilities/ResourceEncoderProtocol.swift diff --git a/FetchTests/Cache/CacheTests.swift b/Tests/FetchTests/Cache/CacheTests.swift similarity index 100% rename from FetchTests/Cache/CacheTests.swift rename to Tests/FetchTests/Cache/CacheTests.swift diff --git a/FetchTests/Cache/DiskCacheTests.swift b/Tests/FetchTests/Cache/DiskCacheTests.swift similarity index 100% rename from FetchTests/Cache/DiskCacheTests.swift rename to Tests/FetchTests/Cache/DiskCacheTests.swift diff --git a/FetchTests/Cache/HybridCacheTests.swift b/Tests/FetchTests/Cache/HybridCacheTests.swift similarity index 100% rename from FetchTests/Cache/HybridCacheTests.swift rename to Tests/FetchTests/Cache/HybridCacheTests.swift diff --git a/FetchTests/Cache/MemoryCacheTests.swift b/Tests/FetchTests/Cache/MemoryCacheTests.swift similarity index 100% rename from FetchTests/Cache/MemoryCacheTests.swift rename to Tests/FetchTests/Cache/MemoryCacheTests.swift diff --git a/FetchTests/CancelTests.swift b/Tests/FetchTests/CancelTests.swift similarity index 100% rename from FetchTests/CancelTests.swift rename to Tests/FetchTests/CancelTests.swift diff --git a/FetchTests/CustomValidationTests.swift b/Tests/FetchTests/CustomValidationTests.swift similarity index 100% rename from FetchTests/CustomValidationTests.swift rename to Tests/FetchTests/CustomValidationTests.swift diff --git a/FetchTests/DispatchQueueTests.swift b/Tests/FetchTests/DispatchQueueTests.swift similarity index 100% rename from FetchTests/DispatchQueueTests.swift rename to Tests/FetchTests/DispatchQueueTests.swift diff --git a/FetchTests/FullPathTests.swift b/Tests/FetchTests/FullPathTests.swift similarity index 100% rename from FetchTests/FullPathTests.swift rename to Tests/FetchTests/FullPathTests.swift diff --git a/FetchTests/IgnoreBodyTests.swift b/Tests/FetchTests/IgnoreBodyTests.swift similarity index 100% rename from FetchTests/IgnoreBodyTests.swift rename to Tests/FetchTests/IgnoreBodyTests.swift diff --git a/FetchTests/MultipleStubsTests.swift b/Tests/FetchTests/MultipleStubsTests.swift similarity index 100% rename from FetchTests/MultipleStubsTests.swift rename to Tests/FetchTests/MultipleStubsTests.swift diff --git a/FetchTests/NestingTests.swift b/Tests/FetchTests/NestingTests.swift similarity index 100% rename from FetchTests/NestingTests.swift rename to Tests/FetchTests/NestingTests.swift diff --git a/FetchTests/ShouldStubTests.swift b/Tests/FetchTests/ShouldStubTests.swift similarity index 100% rename from FetchTests/ShouldStubTests.swift rename to Tests/FetchTests/ShouldStubTests.swift diff --git a/FetchTests/StubProviderTests.swift b/Tests/FetchTests/StubProviderTests.swift similarity index 100% rename from FetchTests/StubProviderTests.swift rename to Tests/FetchTests/StubProviderTests.swift diff --git a/FetchTests/StubTests.swift b/Tests/FetchTests/StubTests.swift similarity index 99% rename from FetchTests/StubTests.swift rename to Tests/FetchTests/StubTests.swift index 44a8e67..61b7cb0 100644 --- a/FetchTests/StubTests.swift +++ b/Tests/FetchTests/StubTests.swift @@ -66,7 +66,7 @@ class StubTests: XCTestCase { method: .get, path: "/test") - APIClient.shared.stubProvider.register(stub: StubResponse(statusCode: 200, fileName: "modela.json", delay: 0.1, bundle: Bundle(for: type(of: self))), for: resource) + APIClient.shared.stubProvider.register(stub: StubResponse(statusCode: 200, fileName: "modela.json", delay: 0.1, bundle: Bundle.module), for: resource) resource.request { (result) in switch result { diff --git a/FetchTests/TestAPI.swift b/Tests/FetchTests/TestAPI.swift similarity index 100% rename from FetchTests/TestAPI.swift rename to Tests/FetchTests/TestAPI.swift diff --git a/FetchTests/URLRequestTests.swift b/Tests/FetchTests/URLRequestTests.swift similarity index 100% rename from FetchTests/URLRequestTests.swift rename to Tests/FetchTests/URLRequestTests.swift diff --git a/FetchTests/modela.json b/Tests/FetchTests/modela.json similarity index 100% rename from FetchTests/modela.json rename to Tests/FetchTests/modela.json diff --git a/db.json b/db.json deleted file mode 100644 index c68bbd2..0000000 --- a/db.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "posts": [ - { - "id": 1, - "title": "json-server", - "author": "typicode" - }, - { - "id": 2, - "author": "mheinzl", - "title": "new post" - } - ], - "comments": [ - { - "id": 1, - "body": "some comment", - "postId": 1 - } - ], - "profile": { - "name": "typicode" - } -} \ No newline at end of file