From 9799fc3fa6d4ef6f80f79a9ec536365379e9ad82 Mon Sep 17 00:00:00 2001 From: mohssenfathi Date: Fri, 9 Aug 2024 15:03:31 -0700 Subject: [PATCH 1/2] Remove legacy SwiftSDK sample app --- Sources/UberCore/ConfigurationProvider.swift | 16 +- .../RidesCore/Utilities/RidesUtil.swift | 3 +- .../Swift SDK.xcodeproj/project.pbxproj | 926 ------------------ .../Swift SDK/Swift SDK/AppDelegate.swift | 76 -- .../AppIcon.appiconset/Contents.json | 44 - ...p_icons_dev_sdk_160510_V2_MP_icon120-1.png | Bin 20825 -> 0 bytes ...app_icons_dev_sdk_160510_V2_MP_icon120.png | Bin 20825 -> 0 bytes ...app_icons_dev_sdk_160510_V2_MP_icon180.png | Bin 9465 -> 0 bytes .../app_icons_dev_sdk_160510_V2_MP_icon58.png | Bin 17162 -> 0 bytes .../app_icons_dev_sdk_160510_V2_MP_icon80.png | Bin 18176 -> 0 bytes .../app_icons_dev_sdk_160510_V2_MP_icon87.png | Bin 18397 -> 0 bytes .../AuthorizationBaseViewController.swift | 60 -- ...zationCodeGrantExampleViewController.swift | 228 ----- .../Base.lproj/LaunchScreen.storyboard | 27 - .../Swift SDK/Base.lproj/Main.storyboard | 293 ------ .../ButtonExampleViewController.swift | 75 -- .../DeeplinkExampleViewController.swift | 92 -- .../ExampleTableViewController.swift | 134 --- .../ImplicitGrantExampleViewController.swift | 281 ------ examples/Swift SDK/Swift SDK/Info.plist | 71 -- .../NativeLoginExampleViewController.swift | 113 --- .../Swift SDK/Swift SDK.entitlements | 10 - .../Swift SDK/TestData/testInfo.plist | 41 - .../TestData/testInfoMissingCallbacks.plist | 14 - .../hi-IN.lproj/LaunchScreen.strings | 1 - .../Swift SDK/hi-IN.lproj/Main.strings | 3 - .../zh-Hans.lproj/LaunchScreen.strings | 1 - .../Swift SDK/zh-Hans.lproj/Main.strings | 3 - .../zh-Hant.lproj/LaunchScreen.strings | 1 - .../Swift SDK/zh-Hant.lproj/Main.strings | 3 - examples/Swift SDK/Swift SDKTests/Info.plist | 24 - .../Swift SDKTests/TestAppShim.entitlements | 10 - .../TestData/testInfoNoServerToken.plist | 10 - .../Swift SDK/Swift SDKUITests/Info.plist | 24 - .../Swift SDKUITests/Swift_SDKUITests.swift | 54 - .../UberSDK/UberSDK.xcodeproj/project.pbxproj | 226 +++++ .../UberCore/BaseDeeplinkTests.swift | 7 - .../UberCore/DeeplinkManagerTests.swift | 8 +- .../UberRides/APIManagerTests.swift | 11 +- .../DeeplinkRequestingBehaviorTests.swift | 10 +- .../UberRides/ModalViewControllerTests.swift | 12 - .../UberRides/ObjectMappingTests.swift | 12 - .../UberRides/RequestButtonTests.swift | 10 +- .../UberRides/RequestDeeplinkTests.swift | 16 +- .../UberRides/RequestLayerTests.swift | 8 +- .../UberRides/RequestURLUtilTests.swift | 30 +- .../UberRides/RideParametersTest.swift | 0 .../RideRequestViewControllerTests.swift | 12 +- .../RideRequestViewErrorFactoryTests.swift | 0 ...deRequestViewRequestingBehaviorTests.swift | 12 - .../UberRides/RideRequestViewTests.swift | 16 +- ...RidesAuthenticationErrorFactoryTests.swift | 0 .../UberRides/RidesClientTests.swift | 35 +- .../UberSDKTests}/UberRides/RidesMocks.swift | 2 +- .../UberRides/RidesScopeExtensionsTests.swift | 0 .../UberRides/TestData/getHistory.json | 0 .../UberRides/TestData/getMe.json | 0 .../UberRides/TestData/getPaymentMethods.json | 0 .../UberRides/TestData/getPriceEstimates.json | 0 .../TestData/getPriceEstimatesEmpty.json | 0 .../UberRides/TestData/getProductID.json | 0 .../UberRides/TestData/getProducts.json | 0 .../TestData/getRequestAccepted.json | 0 .../TestData/getRequestArriving.json | 0 .../TestData/getRequestCompleted.json | 0 .../TestData/getRequestInProgress.json | 0 .../TestData/getRequestProcessing.json | 0 .../TestData/getTimeEstimateProduct.json | 0 .../UberRides/TestData/getTimeEstimates.json | 0 .../TestData/getTimeEstimatesEmpty.json | 0 .../UberRides/TestData/place.json | 0 .../UberRides/TestData/postRequests.json | 0 .../UberRides/TestData/refresh.json | 0 .../UberRides/TestData/requestEstimate.json | 0 .../TestData/requestEstimateNoCars.json | 0 .../TestData/requestEstimateNoUpfront.json | 0 .../UberRides/TestData/rideMap.json | 0 .../UberRides/TestData/rideReceipt.json | 0 .../URLComponentsExtensionsTests.swift | 0 .../UberRides/WidgetsEndpointTests.swift | 17 +- examples/UberSDK/UberSDKTests/testInfo.plist | 19 + .../UberSDKTests/testInfoNoServerToken.plist | 17 + 82 files changed, 332 insertions(+), 2786 deletions(-) delete mode 100644 examples/Swift SDK/Swift SDK.xcodeproj/project.pbxproj delete mode 100644 examples/Swift SDK/Swift SDK/AppDelegate.swift delete mode 100644 examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/app_icons_dev_sdk_160510_V2_MP_icon120-1.png delete mode 100644 examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/app_icons_dev_sdk_160510_V2_MP_icon120.png delete mode 100644 examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/app_icons_dev_sdk_160510_V2_MP_icon180.png delete mode 100644 examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/app_icons_dev_sdk_160510_V2_MP_icon58.png delete mode 100644 examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/app_icons_dev_sdk_160510_V2_MP_icon80.png delete mode 100644 examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/app_icons_dev_sdk_160510_V2_MP_icon87.png delete mode 100644 examples/Swift SDK/Swift SDK/AuthorizationBaseViewController.swift delete mode 100644 examples/Swift SDK/Swift SDK/AuthorizationCodeGrantExampleViewController.swift delete mode 100644 examples/Swift SDK/Swift SDK/Base.lproj/LaunchScreen.storyboard delete mode 100644 examples/Swift SDK/Swift SDK/Base.lproj/Main.storyboard delete mode 100644 examples/Swift SDK/Swift SDK/ButtonExampleViewController.swift delete mode 100644 examples/Swift SDK/Swift SDK/DeeplinkExampleViewController.swift delete mode 100644 examples/Swift SDK/Swift SDK/ExampleTableViewController.swift delete mode 100644 examples/Swift SDK/Swift SDK/ImplicitGrantExampleViewController.swift delete mode 100644 examples/Swift SDK/Swift SDK/Info.plist delete mode 100644 examples/Swift SDK/Swift SDK/NativeLoginExampleViewController.swift delete mode 100644 examples/Swift SDK/Swift SDK/Swift SDK.entitlements delete mode 100644 examples/Swift SDK/Swift SDK/TestData/testInfo.plist delete mode 100644 examples/Swift SDK/Swift SDK/TestData/testInfoMissingCallbacks.plist delete mode 100644 examples/Swift SDK/Swift SDK/hi-IN.lproj/LaunchScreen.strings delete mode 100644 examples/Swift SDK/Swift SDK/hi-IN.lproj/Main.strings delete mode 100644 examples/Swift SDK/Swift SDK/zh-Hans.lproj/LaunchScreen.strings delete mode 100644 examples/Swift SDK/Swift SDK/zh-Hans.lproj/Main.strings delete mode 100644 examples/Swift SDK/Swift SDK/zh-Hant.lproj/LaunchScreen.strings delete mode 100644 examples/Swift SDK/Swift SDK/zh-Hant.lproj/Main.strings delete mode 100644 examples/Swift SDK/Swift SDKTests/Info.plist delete mode 100644 examples/Swift SDK/Swift SDKTests/TestAppShim.entitlements delete mode 100644 examples/Swift SDK/Swift SDKTests/UberRides/TestData/testInfoNoServerToken.plist delete mode 100644 examples/Swift SDK/Swift SDKUITests/Info.plist delete mode 100644 examples/Swift SDK/Swift SDKUITests/Swift_SDKUITests.swift rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberCore/BaseDeeplinkTests.swift (93%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberCore/DeeplinkManagerTests.swift (90%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/APIManagerTests.swift (98%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/DeeplinkRequestingBehaviorTests.swift (93%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/ModalViewControllerTests.swift (92%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/ObjectMappingTests.swift (99%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/RequestButtonTests.swift (98%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/RequestDeeplinkTests.swift (97%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/RequestLayerTests.swift (98%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/RequestURLUtilTests.swift (94%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/RideParametersTest.swift (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/RideRequestViewControllerTests.swift (95%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/RideRequestViewErrorFactoryTests.swift (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/RideRequestViewRequestingBehaviorTests.swift (92%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/RideRequestViewTests.swift (94%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/RidesAuthenticationErrorFactoryTests.swift (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/RidesClientTests.swift (97%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/RidesMocks.swift (97%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/RidesScopeExtensionsTests.swift (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/getHistory.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/getMe.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/getPaymentMethods.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/getPriceEstimates.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/getPriceEstimatesEmpty.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/getProductID.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/getProducts.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/getRequestAccepted.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/getRequestArriving.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/getRequestCompleted.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/getRequestInProgress.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/getRequestProcessing.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/getTimeEstimateProduct.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/getTimeEstimates.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/getTimeEstimatesEmpty.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/place.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/postRequests.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/refresh.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/requestEstimate.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/requestEstimateNoCars.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/requestEstimateNoUpfront.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/rideMap.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/TestData/rideReceipt.json (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/URLComponentsExtensionsTests.swift (100%) rename examples/{Swift SDK/Swift SDKTests => UberSDK/UberSDKTests}/UberRides/WidgetsEndpointTests.swift (89%) create mode 100644 examples/UberSDK/UberSDKTests/testInfo.plist create mode 100644 examples/UberSDK/UberSDKTests/testInfoNoServerToken.plist diff --git a/Sources/UberCore/ConfigurationProvider.swift b/Sources/UberCore/ConfigurationProvider.swift index 902a6447..98f6978a 100644 --- a/Sources/UberCore/ConfigurationProvider.swift +++ b/Sources/UberCore/ConfigurationProvider.swift @@ -19,7 +19,11 @@ public protocol ConfigurationProviding { } public struct ConfigurationProvider: ConfigurationProviding { - + + // MARK: Public Properties + + public static var plistName: String = "Info" + // MARK: Private Properties private let parser: PlistParser @@ -27,10 +31,10 @@ public struct ConfigurationProvider: ConfigurationProviding { // MARK: Initializers public init() { - let parser = PlistParser(plistName: "Info") + let parser = PlistParser(plistName: Self.plistName) self.parser = parser - guard let contents: [String: String] = parser[ConfigurationKey.base] else { + guard let contents: [String: Any] = parser[ConfigurationKey.base] else { preconditionFailure("Configuration item not found: \(ConfigurationKey.base)") } @@ -44,8 +48,8 @@ public struct ConfigurationProvider: ConfigurationProviding { self.clientID = clientID self.redirectURI = redirectURI - Self.isSandbox = Bool(contents[ConfigurationKey.sandbox] ?? "") ?? false - self.serverToken = contents[ConfigurationKey.serverToken] + Self.isSandbox = (contents[ConfigurationKey.sandbox] as? Bool) ?? false + self.serverToken = contents[ConfigurationKey.serverToken] as? String } // MARK: ConfigurationProviding @@ -90,7 +94,7 @@ public struct ConfigurationProvider: ConfigurationProviding { static let base = "Uber" static let clientID = "ClientID" static let redirectURI = "RedirectURI" - static let serverToken = "RedirectURI" + static let serverToken = "ServerToken" static let sandbox = "Sandbox" } } diff --git a/Sources/UberRides/RidesCore/Utilities/RidesUtil.swift b/Sources/UberRides/RidesCore/Utilities/RidesUtil.swift index 59215d73..373c18ff 100644 --- a/Sources/UberRides/RidesCore/Utilities/RidesUtil.swift +++ b/Sources/UberRides/RidesCore/Utilities/RidesUtil.swift @@ -98,7 +98,6 @@ class RequestURLUtil { case Dropoff = "dropoff" } - private static let configurationProvider = ConfigurationProvider() static let actionKey = "action" static let setPickupValue = "setPickup" static let clientIDKey = "client_id" @@ -110,7 +109,7 @@ class RequestURLUtil { static let formattedAddressKey = "[formatted_address]" static let userAgentKey = "user-agent" - static func buildRequestQueryParameters(_ rideParameters: RideParameters) -> [URLQueryItem] { + static func buildRequestQueryParameters(_ rideParameters: RideParameters, configurationProvider: ConfigurationProviding = ConfigurationProvider()) -> [URLQueryItem] { var queryItems = [URLQueryItem]() queryItems.append(URLQueryItem(name: RequestURLUtil.actionKey, value: RequestURLUtil.setPickupValue)) diff --git a/examples/Swift SDK/Swift SDK.xcodeproj/project.pbxproj b/examples/Swift SDK/Swift SDK.xcodeproj/project.pbxproj deleted file mode 100644 index 406dac9a..00000000 --- a/examples/Swift SDK/Swift SDK.xcodeproj/project.pbxproj +++ /dev/null @@ -1,926 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 60; - objects = { - -/* Begin PBXBuildFile section */ - AC0404A81BFAD0C800AC1501 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC0404A71BFAD0C800AC1501 /* AppDelegate.swift */; }; - AC0404AA1BFAD0C800AC1501 /* DeeplinkExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC0404A91BFAD0C800AC1501 /* DeeplinkExampleViewController.swift */; }; - AC0404AD1BFAD0C800AC1501 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AC0404AB1BFAD0C800AC1501 /* Main.storyboard */; }; - AC0404AF1BFAD0C800AC1501 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = AC0404AE1BFAD0C800AC1501 /* Assets.xcassets */; }; - AC0404B21BFAD0C800AC1501 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AC0404B01BFAD0C800AC1501 /* LaunchScreen.storyboard */; }; - AC0404C81BFAD0C800AC1501 /* Swift_SDKUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC0404C71BFAD0C800AC1501 /* Swift_SDKUITests.swift */; }; - B206F1F72B7AC9F20006C554 /* UberAuth in Frameworks */ = {isa = PBXBuildFile; productRef = B206F1F62B7AC9F20006C554 /* UberAuth */; }; - B206F1F92B7AC9F20006C554 /* UberCore in Frameworks */ = {isa = PBXBuildFile; productRef = B206F1F82B7AC9F20006C554 /* UberCore */; }; - B206F1FB2B7AC9F20006C554 /* UberRides in Frameworks */ = {isa = PBXBuildFile; productRef = B206F1FA2B7AC9F20006C554 /* UberRides */; }; - B206F2442B7ACAFA0006C554 /* RideParametersTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F2032B7ACAFA0006C554 /* RideParametersTest.swift */; }; - B206F2452B7ACAFA0006C554 /* RequestLayerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F2042B7ACAFA0006C554 /* RequestLayerTests.swift */; }; - B206F2462B7ACAFA0006C554 /* getProductID.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F2062B7ACAFA0006C554 /* getProductID.json */; }; - B206F2472B7ACAFA0006C554 /* getProducts.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F2072B7ACAFA0006C554 /* getProducts.json */; }; - B206F2482B7ACAFA0006C554 /* getRequestAccepted.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F2082B7ACAFA0006C554 /* getRequestAccepted.json */; }; - B206F2492B7ACAFA0006C554 /* getTimeEstimateProduct.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F2092B7ACAFA0006C554 /* getTimeEstimateProduct.json */; }; - B206F24A2B7ACAFA0006C554 /* getRequestInProgress.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F20A2B7ACAFA0006C554 /* getRequestInProgress.json */; }; - B206F24B2B7ACAFA0006C554 /* getTimeEstimates.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F20B2B7ACAFA0006C554 /* getTimeEstimates.json */; }; - B206F24C2B7ACAFA0006C554 /* requestEstimateNoCars.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F20C2B7ACAFA0006C554 /* requestEstimateNoCars.json */; }; - B206F24D2B7ACAFA0006C554 /* getPaymentMethods.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F20D2B7ACAFA0006C554 /* getPaymentMethods.json */; }; - B206F24E2B7ACAFA0006C554 /* requestEstimateNoUpfront.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F20E2B7ACAFA0006C554 /* requestEstimateNoUpfront.json */; }; - B206F24F2B7ACAFA0006C554 /* getPriceEstimates.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F20F2B7ACAFA0006C554 /* getPriceEstimates.json */; }; - B206F2502B7ACAFA0006C554 /* getMe.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F2102B7ACAFA0006C554 /* getMe.json */; }; - B206F2512B7ACAFA0006C554 /* getRequestCompleted.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F2112B7ACAFA0006C554 /* getRequestCompleted.json */; }; - B206F2522B7ACAFA0006C554 /* getRequestProcessing.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F2122B7ACAFA0006C554 /* getRequestProcessing.json */; }; - B206F2532B7ACAFA0006C554 /* rideReceipt.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F2132B7ACAFA0006C554 /* rideReceipt.json */; }; - B206F2542B7ACAFA0006C554 /* testInfoNoServerToken.plist in Resources */ = {isa = PBXBuildFile; fileRef = B206F2142B7ACAFA0006C554 /* testInfoNoServerToken.plist */; }; - B206F2552B7ACAFA0006C554 /* getTimeEstimatesEmpty.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F2152B7ACAFA0006C554 /* getTimeEstimatesEmpty.json */; }; - B206F2562B7ACAFA0006C554 /* getPriceEstimatesEmpty.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F2162B7ACAFA0006C554 /* getPriceEstimatesEmpty.json */; }; - B206F2572B7ACAFA0006C554 /* postRequests.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F2172B7ACAFA0006C554 /* postRequests.json */; }; - B206F2582B7ACAFA0006C554 /* place.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F2182B7ACAFA0006C554 /* place.json */; }; - B206F2592B7ACAFA0006C554 /* getRequestArriving.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F2192B7ACAFA0006C554 /* getRequestArriving.json */; }; - B206F25A2B7ACAFA0006C554 /* refresh.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F21A2B7ACAFA0006C554 /* refresh.json */; }; - B206F25B2B7ACAFA0006C554 /* requestEstimate.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F21B2B7ACAFA0006C554 /* requestEstimate.json */; }; - B206F25C2B7ACAFA0006C554 /* getHistory.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F21C2B7ACAFA0006C554 /* getHistory.json */; }; - B206F25D2B7ACAFA0006C554 /* rideMap.json in Resources */ = {isa = PBXBuildFile; fileRef = B206F21D2B7ACAFA0006C554 /* rideMap.json */; }; - B206F25E2B7ACAFA0006C554 /* ObjectMappingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F21E2B7ACAFA0006C554 /* ObjectMappingTests.swift */; }; - B206F25F2B7ACAFA0006C554 /* ModalViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F21F2B7ACAFA0006C554 /* ModalViewControllerTests.swift */; }; - B206F2602B7ACAFA0006C554 /* RequestURLUtilTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F2202B7ACAFA0006C554 /* RequestURLUtilTests.swift */; }; - B206F2612B7ACAFA0006C554 /* RideRequestViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F2212B7ACAFA0006C554 /* RideRequestViewControllerTests.swift */; }; - B206F2622B7ACAFA0006C554 /* APIManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F2222B7ACAFA0006C554 /* APIManagerTests.swift */; }; - B206F2632B7ACAFA0006C554 /* RidesAuthenticationErrorFactoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F2232B7ACAFA0006C554 /* RidesAuthenticationErrorFactoryTests.swift */; }; - B206F2642B7ACAFA0006C554 /* RideRequestViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F2242B7ACAFA0006C554 /* RideRequestViewTests.swift */; }; - B206F2652B7ACAFA0006C554 /* RidesScopeExtensionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F2252B7ACAFA0006C554 /* RidesScopeExtensionsTests.swift */; }; - B206F2662B7ACAFA0006C554 /* WidgetsEndpointTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F2262B7ACAFA0006C554 /* WidgetsEndpointTests.swift */; }; - B206F2672B7ACAFA0006C554 /* URLComponentsExtensionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F2272B7ACAFA0006C554 /* URLComponentsExtensionsTests.swift */; }; - B206F2682B7ACAFA0006C554 /* RequestDeeplinkTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F2282B7ACAFA0006C554 /* RequestDeeplinkTests.swift */; }; - B206F2692B7ACAFA0006C554 /* RideRequestViewRequestingBehaviorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F2292B7ACAFA0006C554 /* RideRequestViewRequestingBehaviorTests.swift */; }; - B206F26A2B7ACAFA0006C554 /* RidesClientTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F22A2B7ACAFA0006C554 /* RidesClientTests.swift */; }; - B206F26B2B7ACAFA0006C554 /* RideRequestViewErrorFactoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F22B2B7ACAFA0006C554 /* RideRequestViewErrorFactoryTests.swift */; }; - B206F26C2B7ACAFA0006C554 /* DeeplinkRequestingBehaviorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F22C2B7ACAFA0006C554 /* DeeplinkRequestingBehaviorTests.swift */; }; - B206F26D2B7ACAFA0006C554 /* RequestButtonTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F22D2B7ACAFA0006C554 /* RequestButtonTests.swift */; }; - B206F26F2B7ACAFA0006C554 /* RidesMocks.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F22F2B7ACAFA0006C554 /* RidesMocks.swift */; }; - B206F27C2B7ACAFA0006C554 /* DeeplinkManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F23E2B7ACAFA0006C554 /* DeeplinkManagerTests.swift */; }; - B206F2812B7ACAFA0006C554 /* BaseDeeplinkTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B206F2432B7ACAFA0006C554 /* BaseDeeplinkTests.swift */; }; - B206F2842B7ACB290006C554 /* OHHTTPStubs in Frameworks */ = {isa = PBXBuildFile; productRef = B206F2832B7ACB290006C554 /* OHHTTPStubs */; }; - B206F2862B7ACB290006C554 /* OHHTTPStubsSwift in Frameworks */ = {isa = PBXBuildFile; productRef = B206F2852B7ACB290006C554 /* OHHTTPStubsSwift */; }; - B206F28A2B7ACBBC0006C554 /* testInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = B206F2882B7ACBBC0006C554 /* testInfo.plist */; }; - B206F28B2B7ACBBC0006C554 /* testInfoMissingCallbacks.plist in Resources */ = {isa = PBXBuildFile; fileRef = B206F2892B7ACBBC0006C554 /* testInfoMissingCallbacks.plist */; }; - D825C5CA1CD19773001FE3A7 /* AuthorizationCodeGrantExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D825C5C91CD19773001FE3A7 /* AuthorizationCodeGrantExampleViewController.swift */; }; - D825C5CC1CD267C0001FE3A7 /* AuthorizationBaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D825C5CB1CD267C0001FE3A7 /* AuthorizationBaseViewController.swift */; }; - DC78EC781CB34AC600850814 /* ExampleTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC78EC771CB34AC600850814 /* ExampleTableViewController.swift */; }; - DC78EC7C1CB35AAB00850814 /* ImplicitGrantExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC78EC7B1CB35AAB00850814 /* ImplicitGrantExampleViewController.swift */; }; - DCD806161CFE7F4300EF6EB1 /* ButtonExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCD806151CFE7F4300EF6EB1 /* ButtonExampleViewController.swift */; }; - DCD806181CFE983B00EF6EB1 /* NativeLoginExampleViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCD806171CFE983B00EF6EB1 /* NativeLoginExampleViewController.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - AC0404B91BFAD0C800AC1501 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = AC04049C1BFAD0C800AC1501 /* Project object */; - proxyType = 1; - remoteGlobalIDString = AC0404A31BFAD0C800AC1501; - remoteInfo = "Swift SDK"; - }; - AC0404C41BFAD0C800AC1501 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = AC04049C1BFAD0C800AC1501 /* Project object */; - proxyType = 1; - remoteGlobalIDString = AC0404A31BFAD0C800AC1501; - remoteInfo = "Swift SDK"; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - DCEB80851D078BB500899810 /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - AC0404A41BFAD0C800AC1501 /* Swift SDK.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Swift SDK.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - AC0404A71BFAD0C800AC1501 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - AC0404A91BFAD0C800AC1501 /* DeeplinkExampleViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeeplinkExampleViewController.swift; sourceTree = ""; }; - AC0404AC1BFAD0C800AC1501 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - AC0404AE1BFAD0C800AC1501 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - AC0404B11BFAD0C800AC1501 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - AC0404B31BFAD0C800AC1501 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - AC0404B81BFAD0C800AC1501 /* Swift SDKTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Swift SDKTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - AC0404BE1BFAD0C800AC1501 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - AC0404C31BFAD0C800AC1501 /* Swift SDKUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Swift SDKUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - AC0404C71BFAD0C800AC1501 /* Swift_SDKUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Swift_SDKUITests.swift; sourceTree = ""; }; - AC0404C91BFAD0C800AC1501 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B206F2032B7ACAFA0006C554 /* RideParametersTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RideParametersTest.swift; sourceTree = ""; }; - B206F2042B7ACAFA0006C554 /* RequestLayerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestLayerTests.swift; sourceTree = ""; }; - B206F2062B7ACAFA0006C554 /* getProductID.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getProductID.json; sourceTree = ""; }; - B206F2072B7ACAFA0006C554 /* getProducts.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getProducts.json; sourceTree = ""; }; - B206F2082B7ACAFA0006C554 /* getRequestAccepted.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getRequestAccepted.json; sourceTree = ""; }; - B206F2092B7ACAFA0006C554 /* getTimeEstimateProduct.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getTimeEstimateProduct.json; sourceTree = ""; }; - B206F20A2B7ACAFA0006C554 /* getRequestInProgress.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getRequestInProgress.json; sourceTree = ""; }; - B206F20B2B7ACAFA0006C554 /* getTimeEstimates.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getTimeEstimates.json; sourceTree = ""; }; - B206F20C2B7ACAFA0006C554 /* requestEstimateNoCars.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = requestEstimateNoCars.json; sourceTree = ""; }; - B206F20D2B7ACAFA0006C554 /* getPaymentMethods.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getPaymentMethods.json; sourceTree = ""; }; - B206F20E2B7ACAFA0006C554 /* requestEstimateNoUpfront.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = requestEstimateNoUpfront.json; sourceTree = ""; }; - B206F20F2B7ACAFA0006C554 /* getPriceEstimates.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getPriceEstimates.json; sourceTree = ""; }; - B206F2102B7ACAFA0006C554 /* getMe.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getMe.json; sourceTree = ""; }; - B206F2112B7ACAFA0006C554 /* getRequestCompleted.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getRequestCompleted.json; sourceTree = ""; }; - B206F2122B7ACAFA0006C554 /* getRequestProcessing.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getRequestProcessing.json; sourceTree = ""; }; - B206F2132B7ACAFA0006C554 /* rideReceipt.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = rideReceipt.json; sourceTree = ""; }; - B206F2142B7ACAFA0006C554 /* testInfoNoServerToken.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = testInfoNoServerToken.plist; sourceTree = ""; }; - B206F2152B7ACAFA0006C554 /* getTimeEstimatesEmpty.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getTimeEstimatesEmpty.json; sourceTree = ""; }; - B206F2162B7ACAFA0006C554 /* getPriceEstimatesEmpty.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getPriceEstimatesEmpty.json; sourceTree = ""; }; - B206F2172B7ACAFA0006C554 /* postRequests.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = postRequests.json; sourceTree = ""; }; - B206F2182B7ACAFA0006C554 /* place.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = place.json; sourceTree = ""; }; - B206F2192B7ACAFA0006C554 /* getRequestArriving.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getRequestArriving.json; sourceTree = ""; }; - B206F21A2B7ACAFA0006C554 /* refresh.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = refresh.json; sourceTree = ""; }; - B206F21B2B7ACAFA0006C554 /* requestEstimate.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = requestEstimate.json; sourceTree = ""; }; - B206F21C2B7ACAFA0006C554 /* getHistory.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getHistory.json; sourceTree = ""; }; - B206F21D2B7ACAFA0006C554 /* rideMap.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = rideMap.json; sourceTree = ""; }; - B206F21E2B7ACAFA0006C554 /* ObjectMappingTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObjectMappingTests.swift; sourceTree = ""; }; - B206F21F2B7ACAFA0006C554 /* ModalViewControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ModalViewControllerTests.swift; sourceTree = ""; }; - B206F2202B7ACAFA0006C554 /* RequestURLUtilTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestURLUtilTests.swift; sourceTree = ""; }; - B206F2212B7ACAFA0006C554 /* RideRequestViewControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RideRequestViewControllerTests.swift; sourceTree = ""; }; - B206F2222B7ACAFA0006C554 /* APIManagerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = APIManagerTests.swift; sourceTree = ""; }; - B206F2232B7ACAFA0006C554 /* RidesAuthenticationErrorFactoryTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RidesAuthenticationErrorFactoryTests.swift; sourceTree = ""; }; - B206F2242B7ACAFA0006C554 /* RideRequestViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RideRequestViewTests.swift; sourceTree = ""; }; - B206F2252B7ACAFA0006C554 /* RidesScopeExtensionsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RidesScopeExtensionsTests.swift; sourceTree = ""; }; - B206F2262B7ACAFA0006C554 /* WidgetsEndpointTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WidgetsEndpointTests.swift; sourceTree = ""; }; - B206F2272B7ACAFA0006C554 /* URLComponentsExtensionsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLComponentsExtensionsTests.swift; sourceTree = ""; }; - B206F2282B7ACAFA0006C554 /* RequestDeeplinkTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestDeeplinkTests.swift; sourceTree = ""; }; - B206F2292B7ACAFA0006C554 /* RideRequestViewRequestingBehaviorTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RideRequestViewRequestingBehaviorTests.swift; sourceTree = ""; }; - B206F22A2B7ACAFA0006C554 /* RidesClientTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RidesClientTests.swift; sourceTree = ""; }; - B206F22B2B7ACAFA0006C554 /* RideRequestViewErrorFactoryTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RideRequestViewErrorFactoryTests.swift; sourceTree = ""; }; - B206F22C2B7ACAFA0006C554 /* DeeplinkRequestingBehaviorTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeeplinkRequestingBehaviorTests.swift; sourceTree = ""; }; - B206F22D2B7ACAFA0006C554 /* RequestButtonTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestButtonTests.swift; sourceTree = ""; }; - B206F22F2B7ACAFA0006C554 /* RidesMocks.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RidesMocks.swift; sourceTree = ""; }; - B206F23E2B7ACAFA0006C554 /* DeeplinkManagerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeeplinkManagerTests.swift; sourceTree = ""; }; - B206F2432B7ACAFA0006C554 /* BaseDeeplinkTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseDeeplinkTests.swift; sourceTree = ""; }; - B206F2882B7ACBBC0006C554 /* testInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = testInfo.plist; sourceTree = ""; }; - B206F2892B7ACBBC0006C554 /* testInfoMissingCallbacks.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = testInfoMissingCallbacks.plist; sourceTree = ""; }; - B2156C1B2C2B58D700C6BDDD /* Swift SDK.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Swift SDK.entitlements"; sourceTree = ""; }; - D825C5C91CD19773001FE3A7 /* AuthorizationCodeGrantExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthorizationCodeGrantExampleViewController.swift; sourceTree = ""; }; - D825C5CB1CD267C0001FE3A7 /* AuthorizationBaseViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthorizationBaseViewController.swift; sourceTree = ""; }; - DC78EC771CB34AC600850814 /* ExampleTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExampleTableViewController.swift; sourceTree = ""; }; - DC78EC7B1CB35AAB00850814 /* ImplicitGrantExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImplicitGrantExampleViewController.swift; sourceTree = ""; }; - DC8FC3671CBDF5C100D58839 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Main.strings"; sourceTree = ""; }; - DC8FC3681CBDF5C100D58839 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/LaunchScreen.strings"; sourceTree = ""; }; - DC8FC3691CBDF5C700D58839 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Main.strings"; sourceTree = ""; }; - DC8FC36A1CBDF5C700D58839 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/LaunchScreen.strings"; sourceTree = ""; }; - DC8FC36B1CBDF5D200D58839 /* hi-IN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "hi-IN"; path = "hi-IN.lproj/Main.strings"; sourceTree = ""; }; - DC8FC36C1CBDF5D200D58839 /* hi-IN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "hi-IN"; path = "hi-IN.lproj/LaunchScreen.strings"; sourceTree = ""; }; - DCD806151CFE7F4300EF6EB1 /* ButtonExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ButtonExampleViewController.swift; sourceTree = ""; }; - DCD806171CFE983B00EF6EB1 /* NativeLoginExampleViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NativeLoginExampleViewController.swift; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - AC0404A11BFAD0C800AC1501 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B206F1F72B7AC9F20006C554 /* UberAuth in Frameworks */, - B206F1FB2B7AC9F20006C554 /* UberRides in Frameworks */, - B206F1F92B7AC9F20006C554 /* UberCore in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AC0404B51BFAD0C800AC1501 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B206F2842B7ACB290006C554 /* OHHTTPStubs in Frameworks */, - B206F2862B7ACB290006C554 /* OHHTTPStubsSwift in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AC0404C01BFAD0C800AC1501 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - AC04049B1BFAD0C800AC1501 = { - isa = PBXGroup; - children = ( - AC0404A61BFAD0C800AC1501 /* Swift SDK */, - AC0404BB1BFAD0C800AC1501 /* Swift SDKTests */, - AC0404C61BFAD0C800AC1501 /* Swift SDKUITests */, - AC0404A51BFAD0C800AC1501 /* Products */, - ); - sourceTree = ""; - }; - AC0404A51BFAD0C800AC1501 /* Products */ = { - isa = PBXGroup; - children = ( - AC0404A41BFAD0C800AC1501 /* Swift SDK.app */, - AC0404B81BFAD0C800AC1501 /* Swift SDKTests.xctest */, - AC0404C31BFAD0C800AC1501 /* Swift SDKUITests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - AC0404A61BFAD0C800AC1501 /* Swift SDK */ = { - isa = PBXGroup; - children = ( - B2156C1B2C2B58D700C6BDDD /* Swift SDK.entitlements */, - B206F2872B7ACB5A0006C554 /* TestData */, - AC0404A71BFAD0C800AC1501 /* AppDelegate.swift */, - DC78EC771CB34AC600850814 /* ExampleTableViewController.swift */, - AC0404A91BFAD0C800AC1501 /* DeeplinkExampleViewController.swift */, - D825C5CB1CD267C0001FE3A7 /* AuthorizationBaseViewController.swift */, - DC78EC7B1CB35AAB00850814 /* ImplicitGrantExampleViewController.swift */, - D825C5C91CD19773001FE3A7 /* AuthorizationCodeGrantExampleViewController.swift */, - DCD806171CFE983B00EF6EB1 /* NativeLoginExampleViewController.swift */, - DCD806151CFE7F4300EF6EB1 /* ButtonExampleViewController.swift */, - AC0404AB1BFAD0C800AC1501 /* Main.storyboard */, - AC0404AE1BFAD0C800AC1501 /* Assets.xcassets */, - AC0404B01BFAD0C800AC1501 /* LaunchScreen.storyboard */, - AC0404B31BFAD0C800AC1501 /* Info.plist */, - ); - path = "Swift SDK"; - sourceTree = ""; - }; - AC0404BB1BFAD0C800AC1501 /* Swift SDKTests */ = { - isa = PBXGroup; - children = ( - B206F2312B7ACAFA0006C554 /* UberCore */, - B206F2022B7ACAFA0006C554 /* UberRides */, - AC0404BE1BFAD0C800AC1501 /* Info.plist */, - ); - path = "Swift SDKTests"; - sourceTree = ""; - }; - AC0404C61BFAD0C800AC1501 /* Swift SDKUITests */ = { - isa = PBXGroup; - children = ( - AC0404C71BFAD0C800AC1501 /* Swift_SDKUITests.swift */, - AC0404C91BFAD0C800AC1501 /* Info.plist */, - ); - path = "Swift SDKUITests"; - sourceTree = ""; - }; - B206F2022B7ACAFA0006C554 /* UberRides */ = { - isa = PBXGroup; - children = ( - B206F2032B7ACAFA0006C554 /* RideParametersTest.swift */, - B206F2042B7ACAFA0006C554 /* RequestLayerTests.swift */, - B206F2052B7ACAFA0006C554 /* TestData */, - B206F21E2B7ACAFA0006C554 /* ObjectMappingTests.swift */, - B206F21F2B7ACAFA0006C554 /* ModalViewControllerTests.swift */, - B206F2202B7ACAFA0006C554 /* RequestURLUtilTests.swift */, - B206F2212B7ACAFA0006C554 /* RideRequestViewControllerTests.swift */, - B206F2222B7ACAFA0006C554 /* APIManagerTests.swift */, - B206F2232B7ACAFA0006C554 /* RidesAuthenticationErrorFactoryTests.swift */, - B206F2242B7ACAFA0006C554 /* RideRequestViewTests.swift */, - B206F2252B7ACAFA0006C554 /* RidesScopeExtensionsTests.swift */, - B206F2262B7ACAFA0006C554 /* WidgetsEndpointTests.swift */, - B206F2272B7ACAFA0006C554 /* URLComponentsExtensionsTests.swift */, - B206F2282B7ACAFA0006C554 /* RequestDeeplinkTests.swift */, - B206F2292B7ACAFA0006C554 /* RideRequestViewRequestingBehaviorTests.swift */, - B206F22A2B7ACAFA0006C554 /* RidesClientTests.swift */, - B206F22B2B7ACAFA0006C554 /* RideRequestViewErrorFactoryTests.swift */, - B206F22C2B7ACAFA0006C554 /* DeeplinkRequestingBehaviorTests.swift */, - B206F22D2B7ACAFA0006C554 /* RequestButtonTests.swift */, - B206F22F2B7ACAFA0006C554 /* RidesMocks.swift */, - ); - path = UberRides; - sourceTree = ""; - }; - B206F2052B7ACAFA0006C554 /* TestData */ = { - isa = PBXGroup; - children = ( - B206F2062B7ACAFA0006C554 /* getProductID.json */, - B206F2072B7ACAFA0006C554 /* getProducts.json */, - B206F2082B7ACAFA0006C554 /* getRequestAccepted.json */, - B206F2092B7ACAFA0006C554 /* getTimeEstimateProduct.json */, - B206F20A2B7ACAFA0006C554 /* getRequestInProgress.json */, - B206F20B2B7ACAFA0006C554 /* getTimeEstimates.json */, - B206F20C2B7ACAFA0006C554 /* requestEstimateNoCars.json */, - B206F20D2B7ACAFA0006C554 /* getPaymentMethods.json */, - B206F20E2B7ACAFA0006C554 /* requestEstimateNoUpfront.json */, - B206F20F2B7ACAFA0006C554 /* getPriceEstimates.json */, - B206F2102B7ACAFA0006C554 /* getMe.json */, - B206F2112B7ACAFA0006C554 /* getRequestCompleted.json */, - B206F2122B7ACAFA0006C554 /* getRequestProcessing.json */, - B206F2132B7ACAFA0006C554 /* rideReceipt.json */, - B206F2142B7ACAFA0006C554 /* testInfoNoServerToken.plist */, - B206F2152B7ACAFA0006C554 /* getTimeEstimatesEmpty.json */, - B206F2162B7ACAFA0006C554 /* getPriceEstimatesEmpty.json */, - B206F2172B7ACAFA0006C554 /* postRequests.json */, - B206F2182B7ACAFA0006C554 /* place.json */, - B206F2192B7ACAFA0006C554 /* getRequestArriving.json */, - B206F21A2B7ACAFA0006C554 /* refresh.json */, - B206F21B2B7ACAFA0006C554 /* requestEstimate.json */, - B206F21C2B7ACAFA0006C554 /* getHistory.json */, - B206F21D2B7ACAFA0006C554 /* rideMap.json */, - ); - path = TestData; - sourceTree = ""; - }; - B206F2312B7ACAFA0006C554 /* UberCore */ = { - isa = PBXGroup; - children = ( - B206F23E2B7ACAFA0006C554 /* DeeplinkManagerTests.swift */, - B206F2432B7ACAFA0006C554 /* BaseDeeplinkTests.swift */, - ); - path = UberCore; - sourceTree = ""; - }; - B206F2872B7ACB5A0006C554 /* TestData */ = { - isa = PBXGroup; - children = ( - B206F2882B7ACBBC0006C554 /* testInfo.plist */, - B206F2892B7ACBBC0006C554 /* testInfoMissingCallbacks.plist */, - ); - path = TestData; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - AC0404A31BFAD0C800AC1501 /* Swift SDK */ = { - isa = PBXNativeTarget; - buildConfigurationList = AC0404CC1BFAD0C800AC1501 /* Build configuration list for PBXNativeTarget "Swift SDK" */; - buildPhases = ( - AC0404A01BFAD0C800AC1501 /* Sources */, - AC0404A11BFAD0C800AC1501 /* Frameworks */, - AC0404A21BFAD0C800AC1501 /* Resources */, - DCEB80851D078BB500899810 /* Embed Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Swift SDK"; - packageProductDependencies = ( - B206F1F62B7AC9F20006C554 /* UberAuth */, - B206F1F82B7AC9F20006C554 /* UberCore */, - B206F1FA2B7AC9F20006C554 /* UberRides */, - ); - productName = "Swift SDK"; - productReference = AC0404A41BFAD0C800AC1501 /* Swift SDK.app */; - productType = "com.apple.product-type.application"; - }; - AC0404B71BFAD0C800AC1501 /* Swift SDKTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = AC0404CF1BFAD0C800AC1501 /* Build configuration list for PBXNativeTarget "Swift SDKTests" */; - buildPhases = ( - AC0404B41BFAD0C800AC1501 /* Sources */, - AC0404B51BFAD0C800AC1501 /* Frameworks */, - AC0404B61BFAD0C800AC1501 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - AC0404BA1BFAD0C800AC1501 /* PBXTargetDependency */, - ); - name = "Swift SDKTests"; - packageProductDependencies = ( - B206F2832B7ACB290006C554 /* OHHTTPStubs */, - B206F2852B7ACB290006C554 /* OHHTTPStubsSwift */, - ); - productName = "Swift SDKTests"; - productReference = AC0404B81BFAD0C800AC1501 /* Swift SDKTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - AC0404C21BFAD0C800AC1501 /* Swift SDKUITests */ = { - isa = PBXNativeTarget; - buildConfigurationList = AC0404D21BFAD0C800AC1501 /* Build configuration list for PBXNativeTarget "Swift SDKUITests" */; - buildPhases = ( - AC0404BF1BFAD0C800AC1501 /* Sources */, - AC0404C01BFAD0C800AC1501 /* Frameworks */, - AC0404C11BFAD0C800AC1501 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - AC0404C51BFAD0C800AC1501 /* PBXTargetDependency */, - ); - name = "Swift SDKUITests"; - productName = "Swift SDKUITests"; - productReference = AC0404C31BFAD0C800AC1501 /* Swift SDKUITests.xctest */; - productType = "com.apple.product-type.bundle.ui-testing"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - AC04049C1BFAD0C800AC1501 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 1500; - LastUpgradeCheck = 1000; - ORGANIZATIONNAME = Uber; - TargetAttributes = { - AC0404A31BFAD0C800AC1501 = { - CreatedOnToolsVersion = 7.1; - DevelopmentTeam = 5F83KRY2FH; - LastSwiftMigration = 0900; - }; - AC0404B71BFAD0C800AC1501 = { - CreatedOnToolsVersion = 7.1; - DevelopmentTeam = 36UPBWHAQE; - LastSwiftMigration = 0900; - TestTargetID = AC0404A31BFAD0C800AC1501; - }; - AC0404C21BFAD0C800AC1501 = { - CreatedOnToolsVersion = 7.1; - DevelopmentTeam = 36UPBWHAQE; - LastSwiftMigration = 0900; - TestTargetID = AC0404A31BFAD0C800AC1501; - }; - }; - }; - buildConfigurationList = AC04049F1BFAD0C800AC1501 /* Build configuration list for PBXProject "Swift SDK" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - English, - en, - Base, - "zh-Hans", - "zh-Hant", - "hi-IN", - ); - mainGroup = AC04049B1BFAD0C800AC1501; - packageReferences = ( - B206F1F52B7AC9F20006C554 /* XCLocalSwiftPackageReference "../.." */, - B206F2822B7ACB290006C554 /* XCRemoteSwiftPackageReference "OHHTTPStubs" */, - ); - productRefGroup = AC0404A51BFAD0C800AC1501 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - AC0404A31BFAD0C800AC1501 /* Swift SDK */, - AC0404B71BFAD0C800AC1501 /* Swift SDKTests */, - AC0404C21BFAD0C800AC1501 /* Swift SDKUITests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - AC0404A21BFAD0C800AC1501 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B206F28A2B7ACBBC0006C554 /* testInfo.plist in Resources */, - AC0404B21BFAD0C800AC1501 /* LaunchScreen.storyboard in Resources */, - B206F28B2B7ACBBC0006C554 /* testInfoMissingCallbacks.plist in Resources */, - AC0404AF1BFAD0C800AC1501 /* Assets.xcassets in Resources */, - AC0404AD1BFAD0C800AC1501 /* Main.storyboard in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AC0404B61BFAD0C800AC1501 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B206F2532B7ACAFA0006C554 /* rideReceipt.json in Resources */, - B206F2522B7ACAFA0006C554 /* getRequestProcessing.json in Resources */, - B206F25C2B7ACAFA0006C554 /* getHistory.json in Resources */, - B206F24E2B7ACAFA0006C554 /* requestEstimateNoUpfront.json in Resources */, - B206F24D2B7ACAFA0006C554 /* getPaymentMethods.json in Resources */, - B206F2472B7ACAFA0006C554 /* getProducts.json in Resources */, - B206F2502B7ACAFA0006C554 /* getMe.json in Resources */, - B206F2482B7ACAFA0006C554 /* getRequestAccepted.json in Resources */, - B206F2562B7ACAFA0006C554 /* getPriceEstimatesEmpty.json in Resources */, - B206F2462B7ACAFA0006C554 /* getProductID.json in Resources */, - B206F2512B7ACAFA0006C554 /* getRequestCompleted.json in Resources */, - B206F2542B7ACAFA0006C554 /* testInfoNoServerToken.plist in Resources */, - B206F24A2B7ACAFA0006C554 /* getRequestInProgress.json in Resources */, - B206F24F2B7ACAFA0006C554 /* getPriceEstimates.json in Resources */, - B206F24C2B7ACAFA0006C554 /* requestEstimateNoCars.json in Resources */, - B206F2592B7ACAFA0006C554 /* getRequestArriving.json in Resources */, - B206F25B2B7ACAFA0006C554 /* requestEstimate.json in Resources */, - B206F2492B7ACAFA0006C554 /* getTimeEstimateProduct.json in Resources */, - B206F24B2B7ACAFA0006C554 /* getTimeEstimates.json in Resources */, - B206F2552B7ACAFA0006C554 /* getTimeEstimatesEmpty.json in Resources */, - B206F2582B7ACAFA0006C554 /* place.json in Resources */, - B206F25A2B7ACAFA0006C554 /* refresh.json in Resources */, - B206F25D2B7ACAFA0006C554 /* rideMap.json in Resources */, - B206F2572B7ACAFA0006C554 /* postRequests.json in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AC0404C11BFAD0C800AC1501 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - AC0404A01BFAD0C800AC1501 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DC78EC781CB34AC600850814 /* ExampleTableViewController.swift in Sources */, - DCD806161CFE7F4300EF6EB1 /* ButtonExampleViewController.swift in Sources */, - DC78EC7C1CB35AAB00850814 /* ImplicitGrantExampleViewController.swift in Sources */, - DCD806181CFE983B00EF6EB1 /* NativeLoginExampleViewController.swift in Sources */, - AC0404AA1BFAD0C800AC1501 /* DeeplinkExampleViewController.swift in Sources */, - AC0404A81BFAD0C800AC1501 /* AppDelegate.swift in Sources */, - D825C5CC1CD267C0001FE3A7 /* AuthorizationBaseViewController.swift in Sources */, - D825C5CA1CD19773001FE3A7 /* AuthorizationCodeGrantExampleViewController.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AC0404B41BFAD0C800AC1501 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B206F2612B7ACAFA0006C554 /* RideRequestViewControllerTests.swift in Sources */, - B206F2672B7ACAFA0006C554 /* URLComponentsExtensionsTests.swift in Sources */, - B206F2682B7ACAFA0006C554 /* RequestDeeplinkTests.swift in Sources */, - B206F26C2B7ACAFA0006C554 /* DeeplinkRequestingBehaviorTests.swift in Sources */, - B206F2632B7ACAFA0006C554 /* RidesAuthenticationErrorFactoryTests.swift in Sources */, - B206F2662B7ACAFA0006C554 /* WidgetsEndpointTests.swift in Sources */, - B206F2652B7ACAFA0006C554 /* RidesScopeExtensionsTests.swift in Sources */, - B206F25F2B7ACAFA0006C554 /* ModalViewControllerTests.swift in Sources */, - B206F2692B7ACAFA0006C554 /* RideRequestViewRequestingBehaviorTests.swift in Sources */, - B206F27C2B7ACAFA0006C554 /* DeeplinkManagerTests.swift in Sources */, - B206F25E2B7ACAFA0006C554 /* ObjectMappingTests.swift in Sources */, - B206F2812B7ACAFA0006C554 /* BaseDeeplinkTests.swift in Sources */, - B206F26A2B7ACAFA0006C554 /* RidesClientTests.swift in Sources */, - B206F2642B7ACAFA0006C554 /* RideRequestViewTests.swift in Sources */, - B206F2442B7ACAFA0006C554 /* RideParametersTest.swift in Sources */, - B206F26D2B7ACAFA0006C554 /* RequestButtonTests.swift in Sources */, - B206F2602B7ACAFA0006C554 /* RequestURLUtilTests.swift in Sources */, - B206F2452B7ACAFA0006C554 /* RequestLayerTests.swift in Sources */, - B206F26B2B7ACAFA0006C554 /* RideRequestViewErrorFactoryTests.swift in Sources */, - B206F2622B7ACAFA0006C554 /* APIManagerTests.swift in Sources */, - B206F26F2B7ACAFA0006C554 /* RidesMocks.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AC0404BF1BFAD0C800AC1501 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - AC0404C81BFAD0C800AC1501 /* Swift_SDKUITests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - AC0404BA1BFAD0C800AC1501 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = AC0404A31BFAD0C800AC1501 /* Swift SDK */; - targetProxy = AC0404B91BFAD0C800AC1501 /* PBXContainerItemProxy */; - }; - AC0404C51BFAD0C800AC1501 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = AC0404A31BFAD0C800AC1501 /* Swift SDK */; - targetProxy = AC0404C41BFAD0C800AC1501 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - AC0404AB1BFAD0C800AC1501 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - AC0404AC1BFAD0C800AC1501 /* Base */, - DC8FC3671CBDF5C100D58839 /* zh-Hans */, - DC8FC3691CBDF5C700D58839 /* zh-Hant */, - DC8FC36B1CBDF5D200D58839 /* hi-IN */, - ); - name = Main.storyboard; - sourceTree = ""; - }; - AC0404B01BFAD0C800AC1501 /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - AC0404B11BFAD0C800AC1501 /* Base */, - DC8FC3681CBDF5C100D58839 /* zh-Hans */, - DC8FC36A1CBDF5C700D58839 /* zh-Hant */, - DC8FC36C1CBDF5D200D58839 /* hi-IN */, - ); - name = LaunchScreen.storyboard; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - AC0404CA1BFAD0C800AC1501 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - 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_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_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - 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 = 8.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - AC0404CB1BFAD0C800AC1501 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - 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_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_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - 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 = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - AC0404CD1BFAD0C800AC1501 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_ENTITLEMENTS = "Swift SDK/Swift SDK.entitlements"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - DEVELOPMENT_TEAM = 5F83KRY2FH; - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - HEADER_SEARCH_PATHS = ""; - INFOPLIST_FILE = "Swift SDK/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.uber.sdk.Swift-SDK"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; - }; - name = Debug; - }; - AC0404CE1BFAD0C800AC1501 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CODE_SIGN_ENTITLEMENTS = "Swift SDK/Swift SDK.entitlements"; - CODE_SIGN_IDENTITY = "iPhone Developer"; - DEVELOPMENT_TEAM = 5F83KRY2FH; - FRAMEWORK_SEARCH_PATHS = "$(inherited)"; - HEADER_SEARCH_PATHS = ""; - INFOPLIST_FILE = "Swift SDK/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.uber.sdk.Swift-SDK"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_SWIFT3_OBJC_INFERENCE = Default; - SWIFT_VERSION = 4.0; - }; - name = Release; - }; - AC0404D01BFAD0C800AC1501 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - INFOPLIST_FILE = "Swift SDKTests/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.uber.sdk.Swift-SDKTests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_SWIFT3_OBJC_INFERENCE = On; - SWIFT_VERSION = 4.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Swift SDK.app/Swift SDK"; - }; - name = Debug; - }; - AC0404D11BFAD0C800AC1501 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - INFOPLIST_FILE = "Swift SDKTests/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.uber.sdk.Swift-SDKTests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_SWIFT3_OBJC_INFERENCE = On; - SWIFT_VERSION = 4.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Swift SDK.app/Swift SDK"; - }; - name = Release; - }; - AC0404D31BFAD0C800AC1501 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - INFOPLIST_FILE = "Swift SDKUITests/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.uber.sdk.Swift-SDKUITests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_SWIFT3_OBJC_INFERENCE = On; - SWIFT_VERSION = 4.0; - TEST_TARGET_NAME = "Swift SDK"; - USES_XCTRUNNER = YES; - }; - name = Debug; - }; - AC0404D41BFAD0C800AC1501 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - INFOPLIST_FILE = "Swift SDKUITests/Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = "com.uber.sdk.Swift-SDKUITests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_SWIFT3_OBJC_INFERENCE = On; - SWIFT_VERSION = 4.0; - TEST_TARGET_NAME = "Swift SDK"; - USES_XCTRUNNER = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - AC04049F1BFAD0C800AC1501 /* Build configuration list for PBXProject "Swift SDK" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - AC0404CA1BFAD0C800AC1501 /* Debug */, - AC0404CB1BFAD0C800AC1501 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - AC0404CC1BFAD0C800AC1501 /* Build configuration list for PBXNativeTarget "Swift SDK" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - AC0404CD1BFAD0C800AC1501 /* Debug */, - AC0404CE1BFAD0C800AC1501 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - AC0404CF1BFAD0C800AC1501 /* Build configuration list for PBXNativeTarget "Swift SDKTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - AC0404D01BFAD0C800AC1501 /* Debug */, - AC0404D11BFAD0C800AC1501 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - AC0404D21BFAD0C800AC1501 /* Build configuration list for PBXNativeTarget "Swift SDKUITests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - AC0404D31BFAD0C800AC1501 /* Debug */, - AC0404D41BFAD0C800AC1501 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - -/* Begin XCLocalSwiftPackageReference section */ - B206F1F52B7AC9F20006C554 /* XCLocalSwiftPackageReference "../.." */ = { - isa = XCLocalSwiftPackageReference; - relativePath = ../..; - }; -/* End XCLocalSwiftPackageReference section */ - -/* Begin XCRemoteSwiftPackageReference section */ - B206F2822B7ACB290006C554 /* XCRemoteSwiftPackageReference "OHHTTPStubs" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/AliSoftware/OHHTTPStubs.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 9.1.0; - }; - }; -/* End XCRemoteSwiftPackageReference section */ - -/* Begin XCSwiftPackageProductDependency section */ - B206F1F62B7AC9F20006C554 /* UberAuth */ = { - isa = XCSwiftPackageProductDependency; - productName = UberAuth; - }; - B206F1F82B7AC9F20006C554 /* UberCore */ = { - isa = XCSwiftPackageProductDependency; - productName = UberCore; - }; - B206F1FA2B7AC9F20006C554 /* UberRides */ = { - isa = XCSwiftPackageProductDependency; - productName = UberRides; - }; - B206F2832B7ACB290006C554 /* OHHTTPStubs */ = { - isa = XCSwiftPackageProductDependency; - package = B206F2822B7ACB290006C554 /* XCRemoteSwiftPackageReference "OHHTTPStubs" */; - productName = OHHTTPStubs; - }; - B206F2852B7ACB290006C554 /* OHHTTPStubsSwift */ = { - isa = XCSwiftPackageProductDependency; - package = B206F2822B7ACB290006C554 /* XCRemoteSwiftPackageReference "OHHTTPStubs" */; - productName = OHHTTPStubsSwift; - }; -/* End XCSwiftPackageProductDependency section */ - }; - rootObject = AC04049C1BFAD0C800AC1501 /* Project object */; -} diff --git a/examples/Swift SDK/Swift SDK/AppDelegate.swift b/examples/Swift SDK/Swift SDK/AppDelegate.swift deleted file mode 100644 index a0a4fea4..00000000 --- a/examples/Swift SDK/Swift SDK/AppDelegate.swift +++ /dev/null @@ -1,76 +0,0 @@ -// -// AppDelegate.swift -// Swift SDK -// -// Copyright © 2015 Uber Technologies, Inc. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -import UIKit -import UberAuth -import UberCore -import UberRides - -@UIApplicationMain -class AppDelegate: UIResponder, UIApplicationDelegate { - - var window: UIWindow? - - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { - return true - } - - func applicationWillResignActive(_ application: UIApplication) { - // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. - // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. - } - - func applicationDidEnterBackground(_ application: UIApplication) { - // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. - // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. - } - - func applicationWillEnterForeground(_ application: UIApplication) { - // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. - } - - func applicationDidBecomeActive(_ application: UIApplication) { - // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. - } - - func applicationWillTerminate(_ application: UIApplication) { - // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. - } - - @available(iOS 9, *) - func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool { - if UberAuth.handle(url) { - return false - } - return true - } - - func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { - if UberAuth.handle(url) { - return false - } - return true - } -} - diff --git a/examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/Contents.json b/examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 69a9899d..00000000 --- a/examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "images" : [ - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "app_icons_dev_sdk_160510_V2_MP_icon58.png", - "scale" : "2x" - }, - { - "size" : "29x29", - "idiom" : "iphone", - "filename" : "app_icons_dev_sdk_160510_V2_MP_icon87.png", - "scale" : "3x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "app_icons_dev_sdk_160510_V2_MP_icon80.png", - "scale" : "2x" - }, - { - "size" : "40x40", - "idiom" : "iphone", - "filename" : "app_icons_dev_sdk_160510_V2_MP_icon120.png", - "scale" : "3x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "app_icons_dev_sdk_160510_V2_MP_icon120-1.png", - "scale" : "2x" - }, - { - "size" : "60x60", - "idiom" : "iphone", - "filename" : "app_icons_dev_sdk_160510_V2_MP_icon180.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/app_icons_dev_sdk_160510_V2_MP_icon120-1.png b/examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/app_icons_dev_sdk_160510_V2_MP_icon120-1.png deleted file mode 100644 index e2fdbecbbf2492d2beaf6ca6512d3b34b7754c17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20825 zcmeI4c|4Tg`~L@J3n4_vmdx0OvCi0c*_Z6u4JP}{XzY}Vgv6wfH4$mE6%j(1$d)a# zkL+X(so$tRz307se80cP_fPlZG49Jbuj@MJeqPr(_dOnu+chHtEn4am)Bpg0_Kdc= z3E>>D_n{;u{46KWzCt)r`D$CC0DvRM_C6$l)Vr(zfUF?mtR>n~Uk~Q&<0b0o;^PDt z4e;_Mr~v?Zr2t5YN~DDeJ>3nSQj&0t>c9}={O0&0QCCm*G6PE&uLBZl;B4Xk&aWNP~jQiKYt4K|-$<#re-Gr1`o)ew5gg#?3l2)WhNepD4VP~XuR;l0NdBoF?p z(;pfCBOYAc5e-))RHU?sn3RaP*jaIDn3N0*0u>RHfr*I`1^KD`OALJ<7ldoz-(o;v zV$v{(BykKPVx!hL@Oe^9NpkxUvD>g@E?st%HMSb zQ}glkK@z3~SCo(k|5G!O*N<9*o$*GY9lf35XVeu54WbBy3ry0<)lo*)86qMkE$u2I zDJdZ-0(Ewk5pi^Mc7np;l9JA1l0P8o>l3^GEws9iv;W?D`4!sbe;Jy{{coWSkqE+G z=jchK*_-|Uc8Grn^S7b25hy~11`<^+p?-htW~OkzKezs;!xQmiSMqg4qTqXLPJ#D7 zi|+R}_IsDw^ZBuMVUEsw`d;W4m{QoBKXM7^}e;)(m4)^|V z3+iX6AF6*3g7R@iV;qri6*odn{LfbV&$xef{ObVn;JrJ5C*sek_}TjB4E?8O|DI9# zy^RePMxYfTzef8@Gm+Qc?)!6NFeN-Fz!jyXq$H%|!GCT3tA`OH0Pbn2jv%aH)LvbR zLkJi4!|AU*|LAG;ubxCbzdU~?i|D5QBbPs036Bhfrxoz;$CW>)`S)V@KQ{ijr2pf< z#NiGGA*QjfeSm9UM8tvvT*Nf?wGVLZi-=fofQy*MzV-pGeGw504sa3E*w;S5wJ#!K z!2vE}8vEJ@xb{UvEI7bLOk-dB0N1{Vhy@3@h-vI=AK=;-5wYL^7cq@}?E_r^3l4A*)7aNOz_l+TV!;6} zVjBC}2e|e{L@YSKMNDH~`vBLzh=>ITxQJ=&Yaig+7ZI`G02eWheeDBW`ywJ19N;3R zv9EoAYhOgff&*N{H1@R*aP5nTSa5)gn8v>L0j_-!5ep7*5!2Y${;#;G|9Alq?oD{> z4?}ppZ(~_%i12D4x3jj1J^&EJ4**0&0svdz3FjFAz+Vgim~{XEV0Qq3<35S@jhX-e zYrz?Hm9qgK=F@}GO#aDDHJcVaJ?WQEH48=LrY%!~kEsWOsK6>3wM|75bXgOA=~kRj zw|DVwO~&o510}(ln4tkb%ms~fikC3HX_|>y%IRpJDk(6>iS*iKH^yO}GZq4*Gw9vL zZ^mZ3+ORW9d@U<{0%(kx#rjgx;3j5i_v6TJXDw8>BU>C3pi;e=cF{uma%N}awdoLp z_imha{vk_YvhO#fJc3`*Mcm{AEVp!jJSVf(QiD+RTlK7> zN%XpTaO?YA5IK?)cnps9DWrNdLnY`ZEC5Jv`rfi09QJWHO(t3qTHG;f6M#E zX62@{ z#ZQ@3n`cwkjLYNSb6nyU-+aSlLasdVW@V;C+&?84z*)(^V{Pe^eV3#l$MaeV559cm z1qc;VpZd)CcrMeG36nEW4}i7x*27*)AO_sY>C>VWe+`smqG7fB29l7Fe8GSZUec0U z&ux+nK0^fuZGwfKF$F*I|sqO2k7fDOKm3AB#%G_dPzG$seQ4um*I<)0SiUrBB zJCv5b(O?6lR!Jgd@l##RW9Lw^DIIZ^lJ<*VS-)*8f(VmYiDf)S-B_j((>ova0B8vWO)Ois#NRbJ`neDKN0oTXy5v8*vCfchL;hyP=_x*b7gi*K^$UewaY zg-o(qn17xrk@So_;}l! zb|J?A&U4atrrcD6Qpjn7Dc-*Fi>4Cp-69)$bM~c`+Y<|>0QHMe)v!V2$C3{BR7)d4C1Dvk1G3_V*15*g z0@i$hee1=NX;*L~c_M8*?Y;Wgl2;WM>oz9gB!^Ril zPAXLKC!f<}HV5ioFA{J+69Rd=V|%1>e2XBVsYBITR#nR8eYKQpC-9W3qBCD0GQrt% zgnS+L4)FKxeaUn}-_*O}8fJ-MbqbKcwK#coRUvdEnk)wO{>2w3gi+HrlVV8qr&5@nM76cqP1~JV$bJAjHH~`*RzXQH>nC%C;wb9L z^ZS8OHk^KMCPN+-S86iF->b7QzIxp-Lx&$v$p~3-(KJ7Or{aE3(0Mx*2rE;Jg~r#u z>gv`u7&@I=Uh)I20F1Tu%17UIlHah zjXm)`2erM`h^ID{t5_ueDG6OMzV5@Iin1Pgb(*J=O$>7~06J&A_xCJbw^j1@-BVzh z#g=D4td<7U z#^pLk0=X+jtydv!HMngZ`#IXG8!wRgcGv7< zgLqIbjk3PtD`6qJ(JqZ=?ymxYin!!?NImwPYx#o;t;t&kndb7(p1QvdXz$@0;?q*! z1^VY3^kvA~8rzx%E;|eeWcFpi$aq(yv?FS#OzCDBXA9+4+(n+MwF)t>>WcVf$Z0M1 zgKqSmKEnpU5But#=gqw0+@Qb8qh5q{g zLmBUnuMmS5D0vy_Nx2gM3@KTBzL=HWHvtV*Ca3^yW;`8Z`q{~24oSsdox+b|`RH|} z@tA<&+29)gB~D!w%+R8#n=s>|O4LB1-0dxE>+j2NY&^ogTQ3wy%Ybwr*IZaH z^bxUaw-D90SPRXK7&(v z$R~x36Ioh)rPJ$=&)X`Rb3Y&dg8wb0N^)1a%zO&h?r2KWw^vVVBTLI(i{D$S_NZ{1 zT#hM>w99NSS7)U>wm^r)%wu;Rj+M;Q_xelDwHU=m`{za!gBtbQq&>hgL2|~)!u+`* zasFE$_J4Wg_!KHDi<7p8jdsxYZ+xj%wOeL=6hXq*n&(13Fa z;SI8q@;wb3o-UfPyo-8_N;)pAHmiDKaV&7DX!prWAKOXv`RT?f$}_IzCwZ%X|H-ZLl5m*i0=<5$Bj? zs+$ryCjR7(J+4iEsK2!%8ihZZBjM@7@5F}>*a=CQQG!kO*4fOfmb z3XV4YOjmC8xh}N0Wr9tj*7VpS#!pB|>tjh=TZZ~irKQ?^%@?p3SnS1j6R0jT#gBYh zfd#HG)#f#7DX#&uT0TsizQO(~;Z^(dW-(+l1mq*!S}ogN-+viU1OI zb#)FJ4gc5UJp=hkE!KTwJCRoYItRX|b2q@u`m8rzbqf|AefMf&Ft;%G!Kuq^@P(oxHQSR31)?vR z>1Y?iw!YB~babpcH08}sLrRie&mGkmGtDPFK?J=MaiX(m!;Dl?h8E&!IZ3CAZ)_%V zzAe8}c|`Z!((Rpx2=$YAm+lwhgjepJysS=f;L@vKNWkHaAbpObjLSQOqL9wLB+@POk16CP%#75RDcwHaisR9I*;vHpD_d)F5_(!``_K^d z0h1!D>rtbrR+D7m97i=CD|0SMyAgM=W$eXbsS1J2tRKew?^u-usWlnWEiW?_Pk^ry%1xauEwK2lVpuPfBon`ZS+(q%!&_k42v z?ks7zRZ{Z_5DKQFBTf25aRKd3?S}n$HceJ_ zdiz~`WYpw0!A_KVK`@TzeQVc?&G`G%#}{6`Tyjw>#(L&mKV+KYls}|`5io?hBMH0x zhvWK{4@6|-g15#Gi=plnja)NbtjdxIBiznyrf}*?XZQvx0V!t{>20Btrj zxkulz2aP`Yo+j8~acd}fIXLa@h(S-&9ofy~%92mQa$uL>27Ty*dr3BCAU5ThHN-UL z5xN&Gmo9~rjZG@1f>Gh7lu5`@pBr9(qX?SKrSd$g8ruNUDua#RgbQ`DI4s&QbXuwy zW-zTV&bQ7T0&0T0SDFA!|XSxfXTx-#+h1KPD_z)ir9l!EG;&d)>)84o| z^fO6|do2C*dkdZ!`!x61M&*IyGs@zRj+M z83&0=E4EFOWWzm$^v=F43hIoqv8@jjiaPB%c8(NV$G|UfED1hm>=k~F`8RlqvnvU#Zew^ z;SMTO@)GR?lm;xAO-L?7`AifYmAqE_c1RK4ovaz%o*Sukn^TcpyZXrSR8Ukg!A3J*1JO@i9 ztisKs&5-6nw32_X2%cqjCCQs~fw~Oy>kgC`T#IHV z=}|FQurFVDAUWs0QDFJe)Tf#@KZ%15*?%qWQqCO?KNHQh>S9L1Uk9S8xK#>u=qL~$ zp4(fGL@`B&jlEWASJW~PfJ${qqSkd*PVlu>=~BVxD%A;z(l%?EDXQ`PoNXbq#@sPt zvpNW~KLV9P!p3}+jay>*{l(@Pb2!S|>{hS?bSaD~X4wer*oTlW{oPAdm@U(=^Y!d$ z8+*_9=R~^*-+YB}1qtwAK_N42m$U?Bdd0rRKn<%rj>bzNzGd%;< zD{U#?iUu&Iy?UU|ZDcLGxYGIdM)gLe$Xn5_yOX{Nh5cC26)Xvm?d_5d1-!qzypAC; z8b`-jAa5SLioIqKH8EE<`D&G`{fWqkzUXndYl1|iqyY5nb>x>2vlt+mUS!xRG6qD^ zF4;YK--RziIbv{d%Y@y&@=j*T)(6ZI7+14Bx1zHcxKRPKzkVN^Zs4BxT%=2DAbA>X zL>J%hg6E@WIHY2{R$g8vccG3_udSw1M#HAYckH&0_p9%XWs0r@0-EF%5MgK0^kPp% zQ%Lg1TP!$+qDQ4tsDhJJDwhbe-CfNvq=2P2ZruwKIF0$9I^ta@ugu2A0^h3=%hRYJ zP^3y^*e3oIAQeRN$WQR5?K`m0PtbXg}$qT8VNGK(&4eJQ55dSnpOLn!6Br*>0 zoT6j+U6|6&?$DIIojiP?OamprQW-^K5aDB6zr|^0?>+RgJ+Q_wIpO+5eyFX%C&{&K7DPYPkW3HkseAh%M&)1>b~BpN20-_aYfaL z2_i$q;Np5FSJ0a22;N;Z0Bl4qTht&}AV|}q%A@hxsCmo*)FQ@Bo192`^?t8@2c$}A z!<@2i*Sxtk>6p>w^%(lz&e7sStG(5_Y!Ta1M)6O-Qzr6U*0&YABb=8=P`(>byEA!@6SjK3@nX~S zkSzQ2WTU$+N`U6w0q`ZR-7AB)i|z)seJlAi^>zC`D~KRjaAxJh%Q*eb365K0krRyOaekA*^^~!x0EzE9W0m(NtSn? z56=uWnwjPkBF8;>2=yDq4E1y zob_;Wa|YO+bk^zjF)LSZrKGHG^pGpA`v7!?wjSo$mE;8AV#Yxu;dAM9%nxI(9u57r zF$gI7GQoZU5}=2z>vaeiFj~x_XzO9GEA!{UF~N8)A=l=ZXxUvE?4Of-TxXc7JZzdH zXY|e=;S=t5I6`1}H*4s_W0*N^$|0b_M6>TYlzt?r2KMnoMZwBVias-r{&T1oE1qf= z_v{-^FzjgT<||Qa7f?Uj8qNOnD5XLc$aiP5-wmkM$*S;V*vj6|;d=!+V58R03$JAf=|KM?(w&vG`$vOF&?j$qr&i#Lwm@C@2qIN`xH{&nc?`bgEi zBUPO<>?W0G*Hief6Yc=6pTA!$4&2_3Art!k^>{ltGuW@)?eyG(4dgX}8k8IA`$ zmnmm&e=x7wfJHQYx`hoG@-v>Ao*~~gNY<6#I@0*ENzbaOUT9>sI3L#0D|q(^Gbsqb(=O7V{MN$>(=e(!>cCZ zxq3DFLhUNT?BVfmw`OBrqHG_tg2=KS_I`aFZc1k-(s!R3PfKPLR;5_x7kd&EDfb4p zEdq~N*Y(1et%Gi`G^(;q-wp0F1m%NHALoOkiB#x~mqz{5Xi}wQ0gRso3ht z1U0_YG=7cdiID+2+$M)`lE7=PE)rUe$(O^)02j&Lmrf`go7?;6hi5bl)E}!lT>5_( CWa;k! diff --git a/examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/app_icons_dev_sdk_160510_V2_MP_icon120.png b/examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/app_icons_dev_sdk_160510_V2_MP_icon120.png deleted file mode 100644 index e2fdbecbbf2492d2beaf6ca6512d3b34b7754c17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20825 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 CWa;k! diff --git a/examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/app_icons_dev_sdk_160510_V2_MP_icon180.png b/examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/app_icons_dev_sdk_160510_V2_MP_icon180.png deleted file mode 100644 index b269aa10209e143db9795197233fc8a1fa3f26ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9465 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 LNkvXXu0mjf0`o5! diff --git a/examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/app_icons_dev_sdk_160510_V2_MP_icon58.png b/examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/app_icons_dev_sdk_160510_V2_MP_icon58.png deleted file mode 100644 index ad4f9ea1b4efaf167bbba853e2253c8e5d3597d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17162 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 Juh_ip{{Zu|&_4hG diff --git a/examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/app_icons_dev_sdk_160510_V2_MP_icon80.png b/examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/app_icons_dev_sdk_160510_V2_MP_icon80.png deleted file mode 100644 index 08fc19246ea447c287b70d37d3ef229c3e15c7ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18176 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 D5y0YA diff --git a/examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/app_icons_dev_sdk_160510_V2_MP_icon87.png b/examples/Swift SDK/Swift SDK/Assets.xcassets/AppIcon.appiconset/app_icons_dev_sdk_160510_V2_MP_icon87.png deleted file mode 100644 index 853669d3540ed28e6cc09430486ef65a14ea49bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18397 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 { - let deadlineTime = DispatchTime.now() + DispatchTimeInterval.seconds(delay) - DispatchQueue.main.asyncAfter(deadline: deadlineTime) { - closure() - } - } - - func showMessage(_ message: String) { - let alert = UIAlertController(title: nil, message: message, preferredStyle: UIAlertControllerStyle.alert) - let okayAction = UIAlertAction(title: "Okay", style: UIAlertActionStyle.default, handler: nil) - alert.addAction(okayAction) - self.present(alert, animated: true, completion: nil) - } - - func checkError(_ response: Response) { - // Unauthorized - if response.statusCode == 401 { - _ = tokenManager.deleteToken() - DispatchQueue.main.async { - self.reset() - } - } - } - - func reset() { - } -} diff --git a/examples/Swift SDK/Swift SDK/AuthorizationCodeGrantExampleViewController.swift b/examples/Swift SDK/Swift SDK/AuthorizationCodeGrantExampleViewController.swift deleted file mode 100644 index 9fdea251..00000000 --- a/examples/Swift SDK/Swift SDK/AuthorizationCodeGrantExampleViewController.swift +++ /dev/null @@ -1,228 +0,0 @@ -// -// AuthorizationCodeGrantExampleViewController.swift -// Swift SDK -// -// Copyright © 2015 Uber Technologies, Inc. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -import CoreLocation -import UberAuth -import UberCore -import UberRides -import UIKit - -/// This class demonstrates how do use the LoginManager to complete Authorization Code Grant Authorization -/// and how to use some of the request endpoints -/// Make sure to replace instances of "YOUR_URL" with the path for your backend service -class AuthorizationCodeGrantExampleViewController: AuthorizationBaseViewController { - - fileprivate let states = ["accepted", "arriving", "in_progress", "completed"] - - /// The RidesClient to use for endpoints - let ridesClient = RidesClient() - - private let tokenManager = TokenManager() - - @IBOutlet weak var driverImageView: UIImageView! - @IBOutlet weak var statusLabel: UILabel! - @IBOutlet weak var loginButton: UIBarButtonItem! - - @IBOutlet weak var carLabel: UILabel! - @IBOutlet weak var carImageView: UIImageView! - @IBOutlet weak var driverLabel: UILabel! - @IBOutlet weak var requestButton: UIButton! - - override func viewDidLoad() { - super.viewDidLoad() - loginButton.isEnabled = true - } - - override func viewWillAppear(_ animated: Bool) { - super.viewWillAppear(animated) - - let loggedIn = tokenManager.getToken() != nil - loginButton.isEnabled = !loggedIn - requestButton.isEnabled = loggedIn - - reset() - } - - override func reset() { - statusLabel.text = "" - carLabel.text = "" - driverLabel.text = "" - carImageView.image = nil - driverImageView.image = nil - } - - @IBAction func login(_ sender: AnyObject) { - // Define which scopes we're requesting - // Need to be authorized on your developer dashboard at developer.uber.com - // Privileged scopes can be used by anyone in sandbox for your own account but must be approved for production - let requestedScopes = [UberScope.request, UberScope.allTrips] - let scopes = requestedScopes.map { $0.rawValue } - - let context = AuthContext( - authDestination: .inApp, - authProvider: .authorizationCode(scopes: scopes, shouldExchangeAuthCode: true) - ) - - UberAuth.login(context: context) { result in - DispatchQueue.main.async { - switch result { - case .success(let client): - guard let accessToken = client.accessToken else { - self.showMessage("Unable to retrieve access token") - return - } - - if !self.tokenManager.saveToken(accessToken) { - self.showMessage("Unable to save access token") - } else { - self.showMessage("Saved an AccessToken!") - self.loginButton.isEnabled = false - self.requestButton.isEnabled = true - } - - case .failure(let error): - self.showMessage(error.localizedDescription) - } - } - } - } - - @IBAction func requestRide(_ sender: AnyObject) { - // Create ride parameters - self.requestButton.isEnabled = false - let pickupLocation = CLLocation(latitude: 37.770, longitude: -122.466) - let dropoffLocation = CLLocation(latitude: 37.791, longitude: -122.405) - - let builder = RideParametersBuilder() - builder.pickupLocation = pickupLocation - builder.pickupNickname = "California Academy of Sciences" - builder.dropoffLocation = dropoffLocation - builder.dropoffNickname = "Pier 39" - builder.productID = "a1111c8c-c720-46c3-8534-2fcdd730040d" - - // Use the POST /v1/requests endpoint to make a ride request (in sandbox) - ridesClient.requestRide(parameters: builder.build(), completion: { ride, response in - DispatchQueue.main.async(execute: { - self.checkError(response) - if let ride = ride, - let requestID = ride.requestID { - self.statusLabel.text = "Processing" - - self.updateRideStatus(requestID, index: 0) - } else { - self.requestButton.isEnabled = true - } - }) - }) - } - - // Uses the the GET /v1/requests/{request_id} endpoint to get information about a ride request - func getRideData(_ requestID: String) { - ridesClient.fetchRideDetails(requestID: requestID) { ride, response in - self.checkError(response) - - // Unwrap some optionals for data we want to use - guard let ride = ride, - let driverName = ride.driver?.name, - let driverNumber = ride.driver?.phoneNumber, - let licensePlate = ride.vehicle?.licensePlate, - let make = ride.vehicle?.make, - let model = ride.vehicle?.model, - let driverImage = ride.driver?.pictureURL, - let carImage = ride.vehicle?.pictureURL else { - return - } - - // Update the UI on the main thread - DispatchQueue.main.async { - self.driverLabel.text = "\(driverName)\n\(driverNumber)" - self.carLabel.text = "\(make) \(model)\n(\(licensePlate)" - - // Asynchronously fetch images - URLSession.shared.dataTask(with: driverImage) { - (data, response, error) in - DispatchQueue.main.async { - guard let data = data else { - return - } - - self.driverImageView.image = UIImage(data: data) - } - }.resume() - URLSession.shared.dataTask(with: carImage) { - (data, response, error) in - DispatchQueue.main.async { - guard let data = data else { - return - } - - self.carImageView.image = UIImage(data: data) - } - }.resume() - self.updateRideStatus(requestID, index: 1) - } - } - } - - // Simulates stepping through ride statuses recursively - func updateRideStatus(_ requestID: String, index: Int) { - guard index < states.count, - let token = tokenManager.getToken()?.tokenString else { - return - } - - let status = states[index] - - // Use the PUT /v1/sandbox/requests/{request_id} to update the ride status - let updateStatusEndpoint = URL(string: "https://sandbox-api.uber.com/v1/sandbox/requests/\(requestID)")! - var request = URLRequest(url: updateStatusEndpoint) - request.httpMethod = "PUT" - request.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization") - request.setValue("application/json", forHTTPHeaderField: "Content-Type") - do { - let data = try JSONSerialization.data(withJSONObject: ["status":status], options: .prettyPrinted) - request.httpBody = data - } catch { } - - URLSession.shared.dataTask(with: request) { (data, response, error) in - DispatchQueue.main.async { - if let response = response as? HTTPURLResponse, response.statusCode != 204 { - return - } - - self.statusLabel.text = status.capitalized - - // Get ride data when in the Accepted state - if status == "accepted" { - self.getRideData(requestID) - return - } - - self.delay(2) { - self.updateRideStatus(requestID, index: index+1) - } - } - }.resume() - } -} diff --git a/examples/Swift SDK/Swift SDK/Base.lproj/LaunchScreen.storyboard b/examples/Swift SDK/Swift SDK/Base.lproj/LaunchScreen.storyboard deleted file mode 100644 index c9b75643..00000000 --- a/examples/Swift SDK/Swift SDK/Base.lproj/LaunchScreen.storyboard +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/Swift SDK/Swift SDK/Base.lproj/Main.storyboard b/examples/Swift SDK/Swift SDK/Base.lproj/Main.storyboard deleted file mode 100644 index 557f4e16..00000000 --- a/examples/Swift SDK/Swift SDK/Base.lproj/Main.storyboard +++ /dev/null @@ -1,293 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/examples/Swift SDK/Swift SDK/ButtonExampleViewController.swift b/examples/Swift SDK/Swift SDK/ButtonExampleViewController.swift deleted file mode 100644 index 4eb18738..00000000 --- a/examples/Swift SDK/Swift SDK/ButtonExampleViewController.swift +++ /dev/null @@ -1,75 +0,0 @@ -// -// ButtonExampleViewController.swift -// Swift SDK -// -// Copyright © 2015 Uber Technologies, Inc. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -import UIKit -import UberRides -import CoreLocation - -/// This class is a base class for all the button examples (two tone background ViewController) -open class ButtonExampleViewController : UIViewController { - - public let topView = UIView() - public let bottomView = UIView() - - override open func viewDidLoad() { - super.viewDidLoad() - - view.addSubview(topView) - view.addSubview(bottomView) - - initialSetup() - addTopViewConstraints() - addBottomViewConstraints() - } - - // Mark: Private Interface - - fileprivate func initialSetup() { - topView.backgroundColor = UIColor.white - bottomView.backgroundColor = UIColor.black - } - - fileprivate func addTopViewConstraints() { - topView.translatesAutoresizingMaskIntoConstraints = false - - let topConstriant = NSLayoutConstraint(item: topView, attribute: .top, relatedBy: .equal, toItem: topLayoutGuide, attribute: .bottom, multiplier: 1.0, constant: 0.0) - let bottomConstraint = NSLayoutConstraint(item: topView, attribute: .bottom, relatedBy: .equal, toItem: view, attribute: .centerY, multiplier: 1.0, constant: 0.0) - let leftConstraint = NSLayoutConstraint(item: topView, attribute: .left, relatedBy: .equal, toItem: view, attribute: .left, multiplier: 1.0, constant: 0.0) - let rightConstraint = NSLayoutConstraint(item: topView, attribute: .right, relatedBy: .equal, toItem: view, attribute: .right, multiplier: 1.0, constant: 0.0) - - view.addConstraints([topConstriant, bottomConstraint, leftConstraint, rightConstraint]) - } - - fileprivate func addBottomViewConstraints() { - bottomView.translatesAutoresizingMaskIntoConstraints = false - - let topConstriant = NSLayoutConstraint(item: bottomView, attribute: .top, relatedBy: .equal, toItem: view, attribute: .centerY, multiplier: 1.0, constant: 0.0) - let bottomConstraint = NSLayoutConstraint(item: bottomView, attribute: .bottom, relatedBy: .equal, toItem: view, attribute: .bottom, multiplier: 1.0, constant: 0.0) - let leftConstraint = NSLayoutConstraint(item: bottomView, attribute: .left, relatedBy: .equal, toItem: view, attribute: .left, multiplier: 1.0, constant: 0.0) - let rightConstraint = NSLayoutConstraint(item: bottomView, attribute: .right, relatedBy: .equal, toItem: view, attribute: .right, multiplier: 1.0, constant: 0.0) - - view.addConstraints([topConstriant, bottomConstraint, leftConstraint, rightConstraint]) - } -} - diff --git a/examples/Swift SDK/Swift SDK/DeeplinkExampleViewController.swift b/examples/Swift SDK/Swift SDK/DeeplinkExampleViewController.swift deleted file mode 100644 index e6011b55..00000000 --- a/examples/Swift SDK/Swift SDK/DeeplinkExampleViewController.swift +++ /dev/null @@ -1,92 +0,0 @@ -// -// DeeplinkExampleViewController.swift -// Swift SDK -// -// Copyright © 2015 Uber Technologies, Inc. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -import UIKit -import UberRides -import CoreLocation - -/// This class provides an example for using the RideRequestButton to initiate a deeplink -/// into the Uber app -open class DeeplinkExampleViewController: ButtonExampleViewController { - - let blackRequestButton = RideRequestButton() - let whiteRequestButton = RideRequestButton() - - override open func viewDidLoad() { - super.viewDidLoad() - - self.navigationItem.title = "Deeplink Buttons" - - topView.addSubview(blackRequestButton) - bottomView.addSubview(whiteRequestButton) - - initialSetup() - addBlackRequestButtonConstraints() - addWhiteRequestButtonConstraints() - } - - override open func viewDidAppear(_ animated: Bool) { - super.viewDidAppear(animated) - whiteRequestButton.loadRideInformation() - } - - // Mark: Private Interface - - fileprivate func initialSetup() { - let deeplinkBehavior = DeeplinkRequestingBehavior() - whiteRequestButton.requestBehavior = deeplinkBehavior - - whiteRequestButton.colorStyle = .white - let pickupLocation = CLLocation(latitude: 37.770, longitude: -122.466) - let dropoffLocation = CLLocation(latitude: 37.791, longitude: -122.405) - - let builder = RideParametersBuilder() - builder.pickupLocation = pickupLocation - builder.pickupNickname = "California Academy of Sciences" - builder.dropoffLocation = dropoffLocation - builder.dropoffNickname = "Pier 39" - builder.productID = "a1111c8c-c720-46c3-8534-2fcdd730040d" - - whiteRequestButton.rideParameters = builder.build() - } - - fileprivate func addBlackRequestButtonConstraints() { - blackRequestButton.translatesAutoresizingMaskIntoConstraints = false - - let centerYConstraint = NSLayoutConstraint(item: blackRequestButton, attribute: .centerY, relatedBy: .equal, toItem: topView, attribute: .centerY, multiplier: 1.0, constant: 0.0) - let centerXConstraint = NSLayoutConstraint(item: blackRequestButton, attribute: .centerX, relatedBy: .equal, toItem: topView, attribute: .centerX, multiplier: 1.0, constant: 0.0) - - topView.addConstraints([centerYConstraint, centerXConstraint]) - } - - fileprivate func addWhiteRequestButtonConstraints() { - whiteRequestButton.translatesAutoresizingMaskIntoConstraints = false - - let centerYConstraint = NSLayoutConstraint(item: whiteRequestButton, attribute: .centerY, relatedBy: .equal, toItem: bottomView, attribute: .centerY, multiplier: 1.0, constant: 0.0) - let centerXConstraint = NSLayoutConstraint(item: whiteRequestButton, attribute: .centerX, relatedBy: .equal, toItem: bottomView, attribute: .centerX, multiplier: 1.0, constant: 0.0) - - bottomView.addConstraints([centerYConstraint, centerXConstraint]) - } -} - diff --git a/examples/Swift SDK/Swift SDK/ExampleTableViewController.swift b/examples/Swift SDK/Swift SDK/ExampleTableViewController.swift deleted file mode 100644 index 3041bb11..00000000 --- a/examples/Swift SDK/Swift SDK/ExampleTableViewController.swift +++ /dev/null @@ -1,134 +0,0 @@ -// -// ExampleTableViewController.swift -// Swift SDK -// -// Copyright © 2015 Uber Technologies, Inc. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -import UIKit -import UberAuth -import UberCore -import UberRides - -class ExampleTableViewController: UITableViewController { - - let authorizationCodeGrantSegueIdentifier = "AuthorizationCodeGrantSegue" - let implicitGrantSegueIdentifier = "ImplicitGrantSegue" - - private let tokenManager = TokenManager() - - override func viewDidLoad() { - super.viewDidLoad() - self.tableView.tableFooterView = UIView(frame: CGRect.zero) - - self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "basicCell") - } - - override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let cell = tableView.dequeueReusableCell(withIdentifier: "basicCell", for: indexPath) - - switch indexPath.section { - case 0: - switch indexPath.row { - case 0: - cell.textLabel?.text = "Deeplink Request Buttons" - cell.textLabel?.textColor = UIColor.black - cell.accessoryType = .disclosureIndicator - case 1: - cell.textLabel?.text = "Implicit Grant / Login Manager" - cell.textLabel?.textColor = UIColor.black - cell.accessoryType = .disclosureIndicator - case 2: - cell.textLabel?.text = "Authorization Code Grant / Login Manager" - cell.textLabel?.textColor = UIColor.black - cell.accessoryType = .disclosureIndicator - case 3: - cell.textLabel?.text = "Native Login" - cell.textLabel?.textColor = UIColor.black - cell.accessoryType = .disclosureIndicator - default: - break - } - case 1: - fallthrough - default: - cell.textLabel?.text = "Logout" - cell.textLabel?.textColor = UIColor.red - cell.accessoryType = .none - } - - - return cell - } - - //MARK: UITableViewDelegate - - override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - - tableView.deselectRow(at: indexPath, animated: true) - - var viewControllerToPush: UIViewController? - - switch indexPath.section { - case 0: - switch indexPath.row { - case 0: - viewControllerToPush = DeeplinkExampleViewController() - case 1: - performSegue(withIdentifier: implicitGrantSegueIdentifier, sender: self) - return - case 2: - performSegue(withIdentifier: authorizationCodeGrantSegueIdentifier, sender: self) - return - case 3: - viewControllerToPush = NativeLoginExampleViewController() - default: - break - } - case 1: - viewControllerToPush = nil - _ = tokenManager.deleteToken() - default: - viewControllerToPush = nil - } - - - if let viewController = viewControllerToPush { - self.navigationController?.pushViewController(viewController, animated: true) - } - } - - //MARK: UITableViewDataSource Methods - - override func numberOfSections(in tableView: UITableView) -> Int { - return 2 - } - - override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - switch section { - case 0: - return 4 - case 1: - return 1 - default: - return 0 - } - } -} diff --git a/examples/Swift SDK/Swift SDK/ImplicitGrantExampleViewController.swift b/examples/Swift SDK/Swift SDK/ImplicitGrantExampleViewController.swift deleted file mode 100644 index 3cd282f4..00000000 --- a/examples/Swift SDK/Swift SDK/ImplicitGrantExampleViewController.swift +++ /dev/null @@ -1,281 +0,0 @@ -// -// ImplicitGrantExampleViewController.swift -// Swift SDK -// -// Copyright © 2015 Uber Technologies, Inc. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -import UIKit -import UberAuth -import UberRides -import UberCore -import CoreLocation - -/// This class demonstrates how do use the LoginManager to complete Implicit Grant Authorization -/// and how to use the user profile, trip history, and places endpoints. -class ImplicitGrantExampleViewController: AuthorizationBaseViewController { - - private let tokenManager = TokenManager() - - /// The RidesClient to use for endpoints - let ridesClient = RidesClient() - - /// Variables to store retrieved information - fileprivate var profile: UserProfile? - fileprivate var places = [Place?](repeating: nil, count: 2) - fileprivate var history = [UserActivity]() - - /// Constants representing each section - fileprivate let ProfileSection = 0 - fileprivate let PlacesSection = 1 - fileprivate let HistorySection = 2 - - /// Reuse identifiers for the table view cells - fileprivate let ProfileCell = "ProfileCell" - fileprivate let PlacesCell = "PlacesCell" - fileprivate let HistoryCell = "HistoryCell" - - /// Rows in the "Places" section - fileprivate let homePlaceRow = 0 - fileprivate let workPlaceRow = 1 - - /// Custom views in the "Profile" section - fileprivate let profileImageTag = 1 - fileprivate let profileLabelTag = 2 - - /// Outlets - @IBOutlet weak var loginButton: UIBarButtonItem! - @IBOutlet weak var tableView: UITableView! - - override func viewDidLoad() { - super.viewDidLoad() - self.view.backgroundColor = UIColor.white - loginButton.isEnabled = true - } - - override func viewWillAppear(_ animated: Bool) { - if let _ = tokenManager.getToken() { - loginButton.isEnabled = false - getData() - } - } - - override func reset() { - profile = nil - self.tableView.reloadData() - loginButton.isEnabled = true - } - - @IBAction func login(_ sender: AnyObject) { - // Define which scopes we're requesting - // Need to be authorized on your developer dashboard at developer.uber.com - let requestedScopes = [UberScope.rideWidgets, UberScope.profile, UberScope.places, UberScope.history, UberScope.places] - // Use your loginManager to login with the requested scopes, viewcontroller to present over, and completion block - - let context = AuthContext( - authProvider: .authorizationCode(scopes: requestedScopes.map { $0.rawValue }) - ) - - UberAuth.login(context: context) { result in - switch result { - case .success: - self.showMessage("Got an AccessToken!") - case .failure(let error): - self.showMessage(error.localizedDescription) - } - } - } - - fileprivate func getData() { - // Examples of various data that can be retrieved - - // Retrieves UserProfile for the current logged in user - ridesClient.fetchUserProfile() { profile, response in - self.checkError(response) - if let profile = profile { - DispatchQueue.main.async { - self.profile = profile - self.tableView.reloadData() - } - } - } - - // Gets the address assigned as the "home" address for current user - ridesClient.fetchPlace(placeID: Place.home) { place, response in - self.checkError(response) - DispatchQueue.main.async { - self.places[self.homePlaceRow] = place - self.tableView.reloadData() - } - } - - // Gets the address assigned as the "work" address for current user - ridesClient.fetchPlace(placeID: Place.work) { place, response in - self.checkError(response) - DispatchQueue.main.async { - self.places[self.workPlaceRow] = place - self.tableView.reloadData() - } - } - - // Gets the last 25 trips that the current user has taken - ridesClient.fetchTripHistory(limit: 25) { tripHistory, response in - self.checkError(response) - guard let history = tripHistory?.history else { - return - } - - DispatchQueue.main.async { - self.history = history - self.tableView.reloadData() - } - } - } -} - -extension ImplicitGrantExampleViewController: UITableViewDataSource { - // Only show rows in section if we have a profile - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - guard let _ = profile else { - return 0 - } - - switch section { - case ProfileSection: - return 1 - case PlacesSection: - return places.count - case HistorySection: - return history.count - default: - return 0 - } - } - - func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - switch indexPath.section { - case ProfileSection: - guard let profile = profile, - let profilePicture = profile.picturePath, - let firstName = profile.firstName, - let lastName = profile.lastName, - let email = profile.email else { - fallthrough - } - - let cell = tableView.dequeueReusableCell(withIdentifier: ProfileCell) ?? UITableViewCell(style: .default, reuseIdentifier: ProfileCell) - - let profileLabel = cell.viewWithTag(profileLabelTag) as? UILabel - profileLabel?.text = "\(firstName) \(lastName)\n\(email)" - - if let url = URL(string: profilePicture) { - URLSession.shared.dataTask(with: url, completionHandler: { - (data, response, error) in - DispatchQueue.main.async(execute: { - let imageView = cell.viewWithTag(self.profileImageTag) as? UIImageView - if let imageView = imageView, let data = data { - imageView.image = UIImage(data: data) - } - }) - }).resume() - } - - return cell - case PlacesSection: - let cell = tableView.dequeueReusableCell(withIdentifier: PlacesCell) ?? - UITableViewCell(style: .default, reuseIdentifier: PlacesCell) - let placeText = indexPath.row == homePlaceRow ? "Home" : "Work" - let place = self.places[indexPath.row] - var addressText = "None" - if let address = place?.address { - addressText = address - } - cell.textLabel?.text = "\(placeText): \(addressText)" - return cell - case HistorySection: - let trip = history[indexPath.row] - let startCity = trip.startCity?.name ?? "" - - let cell = tableView.dequeueReusableCell(withIdentifier: HistoryCell) ?? - UITableViewCell(style: .default, reuseIdentifier: HistoryCell) - cell.textLabel?.text = startCity - - if let startTime = trip.startTime, - let endTime = trip.endTime { - let dateFormatter = DateFormatter() - dateFormatter.dateStyle = .short - dateFormatter.timeStyle = .short - cell.detailTextLabel?.text = "\(dateFormatter.string(from: startTime)) to \(dateFormatter.string(from: endTime))" - } else { - cell.detailTextLabel?.text = "" - } - - return cell - default: - return UITableViewCell() - } - } - - func numberOfSections(in tableView: UITableView) -> Int { - return 3 - } -} - -extension ImplicitGrantExampleViewController: UITableViewDelegate { - func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { - tableView.deselectRow(at: indexPath, animated: false) - - guard indexPath.section == PlacesSection else { - return - } - - let alertController = UIAlertController(title: "Update Place Address", message: nil, preferredStyle: .alert) - alertController.addTextField(configurationHandler: { (textField) in - if let place = self.places[indexPath.row] { - textField.placeholder = place.address - } - }) - - let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (_) in } - let updateAction = UIAlertAction(title: "Update", style: .default) { (_) in - let addressTextField = alertController.textFields![0] as UITextField - - guard let address = addressTextField.text else { - return - } - - let placeID = indexPath.row == self.homePlaceRow ? Place.home : Place.work - self.ridesClient.updatePlace(placeID: placeID, withAddress: address) { place, response in - if response.error == nil, let place = place { - DispatchQueue.main.async { - self.places[indexPath.row] = place - self.tableView.reloadData() - } - } - } - } - - alertController.addAction(updateAction) - alertController.addAction(cancelAction) - - self.view.setNeedsLayout() - self.present(alertController, animated: true, completion: nil) - } -} diff --git a/examples/Swift SDK/Swift SDK/Info.plist b/examples/Swift SDK/Swift SDK/Info.plist deleted file mode 100644 index eb93fd39..00000000 --- a/examples/Swift SDK/Swift SDK/Info.plist +++ /dev/null @@ -1,71 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleURLTypes - - - CFBundleTypeRole - Editor - CFBundleURLSchemes - - com.uber.sdk.Swift-SDK - - - - CFBundleVersion - 1 - LSApplicationQueriesSchemes - - uberdriver - ubereats - uberauth - uber - - LSRequiresIPhoneOS - - NSLocationWhenInUseUsageDescription - We use your location to make specifying a pickup spot easy as pie - UILaunchStoryboardName - LaunchScreen - UIMainStoryboardFile - Main - UIRequiredDeviceCapabilities - - armv7 - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - - UberClientID - 9QZcD_Ki6NbhGCrVXSUHCxfevm-C9Khj - UberDisplayName - Rides SDK Demo App - UberAuth - - ClientID - 9QZcD_Ki6NbhGCrVXSUHCxfevm-C9Khj - RedirectURI - com.uber.sdk.Swift-SDK://oauth/consumer - - - diff --git a/examples/Swift SDK/Swift SDK/NativeLoginExampleViewController.swift b/examples/Swift SDK/Swift SDK/NativeLoginExampleViewController.swift deleted file mode 100644 index 3a5aba4c..00000000 --- a/examples/Swift SDK/Swift SDK/NativeLoginExampleViewController.swift +++ /dev/null @@ -1,113 +0,0 @@ -// -// NativeLoginExampleViewController.swift -// Swift SDK -// -// Copyright © 2015 Uber Technologies, Inc. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -import UIKit -import UberAuth -import UberCore -import UberRides -import CoreLocation - -/// This class provides an example for using the LoginButton to do Native Login (SSO with the Uber App) -open class NativeLoginExampleViewController: ButtonExampleViewController, LoginButtonDelegate { - - let scopes: [UberScope] - let blackLoginButton: LoginButton - let whiteLoginButton: LoginButton - - override public init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { - scopes = [.profile, .places, .request] - - // TODO: Light/Dark override - blackLoginButton = LoginButton() - whiteLoginButton = LoginButton() - - super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) - - blackLoginButton.delegate = self - whiteLoginButton.delegate = self - } - - public required init?(coder aDecoder: NSCoder) { - fatalError("init?(coder aDecoder: NSCoder) is not supported") - } - - override open func viewDidLoad() { - super.viewDidLoad() - - self.navigationItem.title = "SSO" - - topView.addSubview(blackLoginButton) - bottomView.addSubview(whiteLoginButton) - - addBlackLoginButtonConstraints() - addWhiteLoginButtonConstraints() - } - - // Mark: Private Interface - - fileprivate func addBlackLoginButtonConstraints() { - blackLoginButton.translatesAutoresizingMaskIntoConstraints = false - - let centerYConstraint = NSLayoutConstraint(item: blackLoginButton, attribute: .centerY, relatedBy: .equal, toItem: topView, attribute: .centerY, multiplier: 1.0, constant: 0.0) - let centerXConstraint = NSLayoutConstraint(item: blackLoginButton, attribute: .centerX, relatedBy: .equal, toItem: topView, attribute: .centerX, multiplier: 1.0, constant: 0.0) - let widthConstraint = NSLayoutConstraint(item: blackLoginButton, attribute: .width, relatedBy: .equal, toItem: topView, attribute: .width, multiplier: 1.0, constant: -20.0) - - topView.addConstraints([centerYConstraint, centerXConstraint, widthConstraint]) - } - - fileprivate func addWhiteLoginButtonConstraints() { - whiteLoginButton.translatesAutoresizingMaskIntoConstraints = false - - let centerYConstraint = NSLayoutConstraint(item: whiteLoginButton, attribute: .centerY, relatedBy: .equal, toItem: bottomView, attribute: .centerY, multiplier: 1.0, constant: 0.0) - let centerXConstraint = NSLayoutConstraint(item: whiteLoginButton, attribute: .centerX, relatedBy: .equal, toItem: bottomView, attribute: .centerX, multiplier: 1.0, constant: 0.0) - let widthConstraint = NSLayoutConstraint(item: whiteLoginButton, attribute: .width, relatedBy: .equal, toItem: bottomView, attribute: .width, multiplier: 1.0, constant: -20.0) - - bottomView.addConstraints([centerYConstraint, centerXConstraint, widthConstraint]) - } - - fileprivate func showMessage(_ message: String) { - let alert = UIAlertController(title: nil, message: message, preferredStyle: UIAlertControllerStyle.alert) - let okayAction = UIAlertAction(title: "Okay", style: UIAlertActionStyle.default, handler: nil) - alert.addAction(okayAction) - self.present(alert, animated: true, completion: nil) - } - - // Mark: LoginButtonDelegate - - open func loginButton(_ button: LoginButton, didLogoutWithSuccess success: Bool) { - if success { - showMessage("Logout") - } - } - - open func loginButton(_ button: LoginButton, didCompleteLoginWithResult result: Result) { - switch result { - case .success: - showMessage("Saved access token!") - case .failure(let error): - showMessage(error.localizedDescription) - } - } -} - diff --git a/examples/Swift SDK/Swift SDK/Swift SDK.entitlements b/examples/Swift SDK/Swift SDK/Swift SDK.entitlements deleted file mode 100644 index 955d983d..00000000 --- a/examples/Swift SDK/Swift SDK/Swift SDK.entitlements +++ /dev/null @@ -1,10 +0,0 @@ - - - - - keychain-access-groups - - $(AppIdentifierPrefix)com.uber.sdk.Swift-SDK - - - diff --git a/examples/Swift SDK/Swift SDK/TestData/testInfo.plist b/examples/Swift SDK/Swift SDK/TestData/testInfo.plist deleted file mode 100644 index 60afbae3..00000000 --- a/examples/Swift SDK/Swift SDK/TestData/testInfo.plist +++ /dev/null @@ -1,41 +0,0 @@ - - - - - UberClientID - testClientID - UberDisplayName - My Awesome App - UberServerToken - testServerToken - UberCallbackURI - testUri://uberConnect - UberCallbackURIs - - - UberCallbackURIType - General - URIString - testURI://uberConnectGeneral - - - UberCallbackURIType - AuthorizationCode - URIString - testURI://uberConnectAuthorizationCode - - - UberCallbackURIType - Implicit - URIString - testURI://uberConnectImplicit - - - UberCallbackURIType - Native - URIString - testURI://uberConnectNative - - - - diff --git a/examples/Swift SDK/Swift SDK/TestData/testInfoMissingCallbacks.plist b/examples/Swift SDK/Swift SDK/TestData/testInfoMissingCallbacks.plist deleted file mode 100644 index 7b6b36ff..00000000 --- a/examples/Swift SDK/Swift SDK/TestData/testInfoMissingCallbacks.plist +++ /dev/null @@ -1,14 +0,0 @@ - - - - - UberClientID - testClientID - UberDisplayName - My Awesome App - UberServerToken - testServerToken - UberCallbackURI - testURI://uberConnect - - \ No newline at end of file diff --git a/examples/Swift SDK/Swift SDK/hi-IN.lproj/LaunchScreen.strings b/examples/Swift SDK/Swift SDK/hi-IN.lproj/LaunchScreen.strings deleted file mode 100644 index 8b137891..00000000 --- a/examples/Swift SDK/Swift SDK/hi-IN.lproj/LaunchScreen.strings +++ /dev/null @@ -1 +0,0 @@ - diff --git a/examples/Swift SDK/Swift SDK/hi-IN.lproj/Main.strings b/examples/Swift SDK/Swift SDK/hi-IN.lproj/Main.strings deleted file mode 100644 index 1532930f..00000000 --- a/examples/Swift SDK/Swift SDK/hi-IN.lproj/Main.strings +++ /dev/null @@ -1,3 +0,0 @@ - -/* Class = "UINavigationItem"; title = "Root View Controller"; ObjectID = "Baz-H6-Gak"; */ -"Baz-H6-Gak.title" = "Root View Controller"; diff --git a/examples/Swift SDK/Swift SDK/zh-Hans.lproj/LaunchScreen.strings b/examples/Swift SDK/Swift SDK/zh-Hans.lproj/LaunchScreen.strings deleted file mode 100644 index 8b137891..00000000 --- a/examples/Swift SDK/Swift SDK/zh-Hans.lproj/LaunchScreen.strings +++ /dev/null @@ -1 +0,0 @@ - diff --git a/examples/Swift SDK/Swift SDK/zh-Hans.lproj/Main.strings b/examples/Swift SDK/Swift SDK/zh-Hans.lproj/Main.strings deleted file mode 100644 index 1532930f..00000000 --- a/examples/Swift SDK/Swift SDK/zh-Hans.lproj/Main.strings +++ /dev/null @@ -1,3 +0,0 @@ - -/* Class = "UINavigationItem"; title = "Root View Controller"; ObjectID = "Baz-H6-Gak"; */ -"Baz-H6-Gak.title" = "Root View Controller"; diff --git a/examples/Swift SDK/Swift SDK/zh-Hant.lproj/LaunchScreen.strings b/examples/Swift SDK/Swift SDK/zh-Hant.lproj/LaunchScreen.strings deleted file mode 100644 index 8b137891..00000000 --- a/examples/Swift SDK/Swift SDK/zh-Hant.lproj/LaunchScreen.strings +++ /dev/null @@ -1 +0,0 @@ - diff --git a/examples/Swift SDK/Swift SDK/zh-Hant.lproj/Main.strings b/examples/Swift SDK/Swift SDK/zh-Hant.lproj/Main.strings deleted file mode 100644 index 1532930f..00000000 --- a/examples/Swift SDK/Swift SDK/zh-Hant.lproj/Main.strings +++ /dev/null @@ -1,3 +0,0 @@ - -/* Class = "UINavigationItem"; title = "Root View Controller"; ObjectID = "Baz-H6-Gak"; */ -"Baz-H6-Gak.title" = "Root View Controller"; diff --git a/examples/Swift SDK/Swift SDKTests/Info.plist b/examples/Swift SDK/Swift SDKTests/Info.plist deleted file mode 100644 index ba72822e..00000000 --- a/examples/Swift SDK/Swift SDKTests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/examples/Swift SDK/Swift SDKTests/TestAppShim.entitlements b/examples/Swift SDK/Swift SDKTests/TestAppShim.entitlements deleted file mode 100644 index 62f8062f..00000000 --- a/examples/Swift SDK/Swift SDKTests/TestAppShim.entitlements +++ /dev/null @@ -1,10 +0,0 @@ - - - - - keychain-access-groups - - $(AppIdentifierPrefix)com.uber.sdk.UberRides.TestAppShim - - - diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/testInfoNoServerToken.plist b/examples/Swift SDK/Swift SDKTests/UberRides/TestData/testInfoNoServerToken.plist deleted file mode 100644 index 78b623e5..00000000 --- a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/testInfoNoServerToken.plist +++ /dev/null @@ -1,10 +0,0 @@ - - - - - UberClientID - testClientID - UberDisplayName - My Awesome App - - diff --git a/examples/Swift SDK/Swift SDKUITests/Info.plist b/examples/Swift SDK/Swift SDKUITests/Info.plist deleted file mode 100644 index ba72822e..00000000 --- a/examples/Swift SDK/Swift SDKUITests/Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - BNDL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - - diff --git a/examples/Swift SDK/Swift SDKUITests/Swift_SDKUITests.swift b/examples/Swift SDK/Swift SDKUITests/Swift_SDKUITests.swift deleted file mode 100644 index eb4e21e8..00000000 --- a/examples/Swift SDK/Swift SDKUITests/Swift_SDKUITests.swift +++ /dev/null @@ -1,54 +0,0 @@ -// -// Swift_SDKUITests.swift -// Swift SDKUITests -// -// Copyright © 2015 Uber Technologies, Inc. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -import XCTest - -class Swift_SDKUITests: XCTestCase { - - override func setUp() { - super.setUp() - - // Put setup code here. This method is called before the invocation of each test method in the class. - - // In UI tests it is usually best to stop immediately when a failure occurs. - continueAfterFailure = false - // UI tests must launch the application that they test. Doing this in setup will make sure it happens for each test method. - if #available(iOS 9.0, *) { - XCUIApplication().launch() - } - - // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this. - } - - override func tearDown() { - // Put teardown code here. This method is called after the invocation of each test method in the class. - super.tearDown() - } - - func testExample() { - // Use recording to get started writing UI tests. - // Use XCTAssert and related functions to verify your tests produce the correct results. - } - -} diff --git a/examples/UberSDK/UberSDK.xcodeproj/project.pbxproj b/examples/UberSDK/UberSDK.xcodeproj/project.pbxproj index fae906cc..2034ceee 100644 --- a/examples/UberSDK/UberSDK.xcodeproj/project.pbxproj +++ b/examples/UberSDK/UberSDK.xcodeproj/project.pbxproj @@ -7,6 +7,55 @@ objects = { /* Begin PBXBuildFile section */ + B21C2DD82C6574D300337E93 /* DeeplinkManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2DD62C6574D300337E93 /* DeeplinkManagerTests.swift */; }; + B21C2DD92C6574D300337E93 /* BaseDeeplinkTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2DD72C6574D300337E93 /* BaseDeeplinkTests.swift */; }; + B21C2E072C6574D900337E93 /* getHistory.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DDA2C6574D900337E93 /* getHistory.json */; }; + B21C2E082C6574D900337E93 /* getMe.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DDB2C6574D900337E93 /* getMe.json */; }; + B21C2E092C6574D900337E93 /* getPaymentMethods.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DDC2C6574D900337E93 /* getPaymentMethods.json */; }; + B21C2E0A2C6574D900337E93 /* getPriceEstimates.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DDD2C6574D900337E93 /* getPriceEstimates.json */; }; + B21C2E0B2C6574D900337E93 /* getPriceEstimatesEmpty.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DDE2C6574D900337E93 /* getPriceEstimatesEmpty.json */; }; + B21C2E0C2C6574D900337E93 /* getProductID.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DDF2C6574D900337E93 /* getProductID.json */; }; + B21C2E0D2C6574D900337E93 /* getProducts.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DE02C6574D900337E93 /* getProducts.json */; }; + B21C2E0E2C6574D900337E93 /* getRequestAccepted.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DE12C6574D900337E93 /* getRequestAccepted.json */; }; + B21C2E0F2C6574D900337E93 /* getRequestArriving.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DE22C6574D900337E93 /* getRequestArriving.json */; }; + B21C2E102C6574D900337E93 /* getRequestCompleted.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DE32C6574D900337E93 /* getRequestCompleted.json */; }; + B21C2E112C6574D900337E93 /* getRequestInProgress.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DE42C6574D900337E93 /* getRequestInProgress.json */; }; + B21C2E122C6574D900337E93 /* getRequestProcessing.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DE52C6574D900337E93 /* getRequestProcessing.json */; }; + B21C2E132C6574D900337E93 /* getTimeEstimateProduct.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DE62C6574D900337E93 /* getTimeEstimateProduct.json */; }; + B21C2E142C6574D900337E93 /* getTimeEstimates.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DE72C6574D900337E93 /* getTimeEstimates.json */; }; + B21C2E152C6574D900337E93 /* getTimeEstimatesEmpty.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DE82C6574D900337E93 /* getTimeEstimatesEmpty.json */; }; + B21C2E162C6574D900337E93 /* place.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DE92C6574D900337E93 /* place.json */; }; + B21C2E172C6574D900337E93 /* postRequests.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DEA2C6574D900337E93 /* postRequests.json */; }; + B21C2E182C6574D900337E93 /* refresh.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DEB2C6574D900337E93 /* refresh.json */; }; + B21C2E192C6574D900337E93 /* requestEstimate.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DEC2C6574D900337E93 /* requestEstimate.json */; }; + B21C2E1A2C6574D900337E93 /* requestEstimateNoCars.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DED2C6574D900337E93 /* requestEstimateNoCars.json */; }; + B21C2E1B2C6574D900337E93 /* requestEstimateNoUpfront.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DEE2C6574D900337E93 /* requestEstimateNoUpfront.json */; }; + B21C2E1C2C6574D900337E93 /* rideMap.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DEF2C6574D900337E93 /* rideMap.json */; }; + B21C2E1D2C6574D900337E93 /* rideReceipt.json in Resources */ = {isa = PBXBuildFile; fileRef = B21C2DF02C6574D900337E93 /* rideReceipt.json */; }; + B21C2E1F2C6574D900337E93 /* APIManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2DF32C6574D900337E93 /* APIManagerTests.swift */; }; + B21C2E202C6574D900337E93 /* DeeplinkRequestingBehaviorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2DF42C6574D900337E93 /* DeeplinkRequestingBehaviorTests.swift */; }; + B21C2E212C6574D900337E93 /* ModalViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2DF52C6574D900337E93 /* ModalViewControllerTests.swift */; }; + B21C2E222C6574D900337E93 /* ObjectMappingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2DF62C6574D900337E93 /* ObjectMappingTests.swift */; }; + B21C2E232C6574D900337E93 /* RequestButtonTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2DF72C6574D900337E93 /* RequestButtonTests.swift */; }; + B21C2E242C6574D900337E93 /* RequestDeeplinkTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2DF82C6574D900337E93 /* RequestDeeplinkTests.swift */; }; + B21C2E252C6574D900337E93 /* RequestLayerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2DF92C6574D900337E93 /* RequestLayerTests.swift */; }; + B21C2E262C6574D900337E93 /* RequestURLUtilTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2DFA2C6574D900337E93 /* RequestURLUtilTests.swift */; }; + B21C2E272C6574D900337E93 /* RideParametersTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2DFB2C6574D900337E93 /* RideParametersTest.swift */; }; + B21C2E282C6574D900337E93 /* RideRequestViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2DFC2C6574D900337E93 /* RideRequestViewControllerTests.swift */; }; + B21C2E292C6574D900337E93 /* RideRequestViewErrorFactoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2DFD2C6574D900337E93 /* RideRequestViewErrorFactoryTests.swift */; }; + B21C2E2A2C6574D900337E93 /* RideRequestViewRequestingBehaviorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2DFE2C6574D900337E93 /* RideRequestViewRequestingBehaviorTests.swift */; }; + B21C2E2B2C6574D900337E93 /* RideRequestViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2DFF2C6574D900337E93 /* RideRequestViewTests.swift */; }; + B21C2E2C2C6574D900337E93 /* RidesAuthenticationErrorFactoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2E002C6574D900337E93 /* RidesAuthenticationErrorFactoryTests.swift */; }; + B21C2E2D2C6574D900337E93 /* RidesClientTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2E012C6574D900337E93 /* RidesClientTests.swift */; }; + B21C2E2E2C6574D900337E93 /* RidesMocks.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2E022C6574D900337E93 /* RidesMocks.swift */; }; + B21C2E2F2C6574D900337E93 /* RidesScopeExtensionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2E032C6574D900337E93 /* RidesScopeExtensionsTests.swift */; }; + B21C2E302C6574D900337E93 /* URLComponentsExtensionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2E042C6574D900337E93 /* URLComponentsExtensionsTests.swift */; }; + B21C2E312C6574D900337E93 /* WidgetsEndpointTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21C2E052C6574D900337E93 /* WidgetsEndpointTests.swift */; }; + B21C2E342C6574FD00337E93 /* OHHTTPStubsSwift in Frameworks */ = {isa = PBXBuildFile; productRef = B21C2E332C6574FD00337E93 /* OHHTTPStubsSwift */; }; + B21C2E382C65826E00337E93 /* testInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = B21C2E352C6581C900337E93 /* testInfo.plist */; }; + B21C2E3B2C65846F00337E93 /* testInfoNoServerToken.plist in Resources */ = {isa = PBXBuildFile; fileRef = B21C2E3A2C65846F00337E93 /* testInfoNoServerToken.plist */; }; + B21C2E3C2C6585A700337E93 /* testInfoNoServerToken.plist in Resources */ = {isa = PBXBuildFile; fileRef = B21C2E3A2C65846F00337E93 /* testInfoNoServerToken.plist */; }; + B21C2E3D2C6585AA00337E93 /* testInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = B21C2E352C6581C900337E93 /* testInfo.plist */; }; B21E42782BE2FF6500D9C5E1 /* KeychainUtilityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B21E42772BE2FF6500D9C5E1 /* KeychainUtilityTests.swift */; }; B25D308A2BD03F50008A67CF /* UberButtonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B25D30892BD03F50008A67CF /* UberButtonView.swift */; }; B28217C82B97A2E400EE786D /* AuthManagerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B28217C72B97A2E400EE786D /* AuthManagerTests.swift */; }; @@ -42,6 +91,52 @@ /* Begin PBXFileReference section */ B21C2DCC2C656BFC00337E93 /* UberSDK.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = UberSDK.xctestplan; sourceTree = ""; }; + B21C2DD62C6574D300337E93 /* DeeplinkManagerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeeplinkManagerTests.swift; sourceTree = ""; }; + B21C2DD72C6574D300337E93 /* BaseDeeplinkTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseDeeplinkTests.swift; sourceTree = ""; }; + B21C2DDA2C6574D900337E93 /* getHistory.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getHistory.json; sourceTree = ""; }; + B21C2DDB2C6574D900337E93 /* getMe.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getMe.json; sourceTree = ""; }; + B21C2DDC2C6574D900337E93 /* getPaymentMethods.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getPaymentMethods.json; sourceTree = ""; }; + B21C2DDD2C6574D900337E93 /* getPriceEstimates.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getPriceEstimates.json; sourceTree = ""; }; + B21C2DDE2C6574D900337E93 /* getPriceEstimatesEmpty.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getPriceEstimatesEmpty.json; sourceTree = ""; }; + B21C2DDF2C6574D900337E93 /* getProductID.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getProductID.json; sourceTree = ""; }; + B21C2DE02C6574D900337E93 /* getProducts.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getProducts.json; sourceTree = ""; }; + B21C2DE12C6574D900337E93 /* getRequestAccepted.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getRequestAccepted.json; sourceTree = ""; }; + B21C2DE22C6574D900337E93 /* getRequestArriving.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getRequestArriving.json; sourceTree = ""; }; + B21C2DE32C6574D900337E93 /* getRequestCompleted.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getRequestCompleted.json; sourceTree = ""; }; + B21C2DE42C6574D900337E93 /* getRequestInProgress.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getRequestInProgress.json; sourceTree = ""; }; + B21C2DE52C6574D900337E93 /* getRequestProcessing.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getRequestProcessing.json; sourceTree = ""; }; + B21C2DE62C6574D900337E93 /* getTimeEstimateProduct.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getTimeEstimateProduct.json; sourceTree = ""; }; + B21C2DE72C6574D900337E93 /* getTimeEstimates.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getTimeEstimates.json; sourceTree = ""; }; + B21C2DE82C6574D900337E93 /* getTimeEstimatesEmpty.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = getTimeEstimatesEmpty.json; sourceTree = ""; }; + B21C2DE92C6574D900337E93 /* place.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = place.json; sourceTree = ""; }; + B21C2DEA2C6574D900337E93 /* postRequests.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = postRequests.json; sourceTree = ""; }; + B21C2DEB2C6574D900337E93 /* refresh.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = refresh.json; sourceTree = ""; }; + B21C2DEC2C6574D900337E93 /* requestEstimate.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = requestEstimate.json; sourceTree = ""; }; + B21C2DED2C6574D900337E93 /* requestEstimateNoCars.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = requestEstimateNoCars.json; sourceTree = ""; }; + B21C2DEE2C6574D900337E93 /* requestEstimateNoUpfront.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = requestEstimateNoUpfront.json; sourceTree = ""; }; + B21C2DEF2C6574D900337E93 /* rideMap.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = rideMap.json; sourceTree = ""; }; + B21C2DF02C6574D900337E93 /* rideReceipt.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = rideReceipt.json; sourceTree = ""; }; + B21C2DF32C6574D900337E93 /* APIManagerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = APIManagerTests.swift; sourceTree = ""; }; + B21C2DF42C6574D900337E93 /* DeeplinkRequestingBehaviorTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeeplinkRequestingBehaviorTests.swift; sourceTree = ""; }; + B21C2DF52C6574D900337E93 /* ModalViewControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ModalViewControllerTests.swift; sourceTree = ""; }; + B21C2DF62C6574D900337E93 /* ObjectMappingTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ObjectMappingTests.swift; sourceTree = ""; }; + B21C2DF72C6574D900337E93 /* RequestButtonTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestButtonTests.swift; sourceTree = ""; }; + B21C2DF82C6574D900337E93 /* RequestDeeplinkTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestDeeplinkTests.swift; sourceTree = ""; }; + B21C2DF92C6574D900337E93 /* RequestLayerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestLayerTests.swift; sourceTree = ""; }; + B21C2DFA2C6574D900337E93 /* RequestURLUtilTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RequestURLUtilTests.swift; sourceTree = ""; }; + B21C2DFB2C6574D900337E93 /* RideParametersTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RideParametersTest.swift; sourceTree = ""; }; + B21C2DFC2C6574D900337E93 /* RideRequestViewControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RideRequestViewControllerTests.swift; sourceTree = ""; }; + B21C2DFD2C6574D900337E93 /* RideRequestViewErrorFactoryTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RideRequestViewErrorFactoryTests.swift; sourceTree = ""; }; + B21C2DFE2C6574D900337E93 /* RideRequestViewRequestingBehaviorTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RideRequestViewRequestingBehaviorTests.swift; sourceTree = ""; }; + B21C2DFF2C6574D900337E93 /* RideRequestViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RideRequestViewTests.swift; sourceTree = ""; }; + B21C2E002C6574D900337E93 /* RidesAuthenticationErrorFactoryTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RidesAuthenticationErrorFactoryTests.swift; sourceTree = ""; }; + B21C2E012C6574D900337E93 /* RidesClientTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RidesClientTests.swift; sourceTree = ""; }; + B21C2E022C6574D900337E93 /* RidesMocks.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RidesMocks.swift; sourceTree = ""; }; + B21C2E032C6574D900337E93 /* RidesScopeExtensionsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RidesScopeExtensionsTests.swift; sourceTree = ""; }; + B21C2E042C6574D900337E93 /* URLComponentsExtensionsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = URLComponentsExtensionsTests.swift; sourceTree = ""; }; + B21C2E052C6574D900337E93 /* WidgetsEndpointTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WidgetsEndpointTests.swift; sourceTree = ""; }; + B21C2E352C6581C900337E93 /* testInfo.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = testInfo.plist; sourceTree = ""; }; + B21C2E3A2C65846F00337E93 /* testInfoNoServerToken.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = testInfoNoServerToken.plist; sourceTree = ""; }; B21E42772BE2FF6500D9C5E1 /* KeychainUtilityTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeychainUtilityTests.swift; sourceTree = ""; }; B243DF562BFE474C0086160C /* UberSDK.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = UberSDK.entitlements; sourceTree = ""; }; B25D30892BD03F50008A67CF /* UberButtonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UberButtonView.swift; sourceTree = ""; }; @@ -81,12 +176,70 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + B21C2E342C6574FD00337E93 /* OHHTTPStubsSwift in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + B21C2DF22C6574D900337E93 /* TestData */ = { + isa = PBXGroup; + children = ( + B21C2DDA2C6574D900337E93 /* getHistory.json */, + B21C2DDB2C6574D900337E93 /* getMe.json */, + B21C2DDC2C6574D900337E93 /* getPaymentMethods.json */, + B21C2DDD2C6574D900337E93 /* getPriceEstimates.json */, + B21C2DDE2C6574D900337E93 /* getPriceEstimatesEmpty.json */, + B21C2DDF2C6574D900337E93 /* getProductID.json */, + B21C2DE02C6574D900337E93 /* getProducts.json */, + B21C2DE12C6574D900337E93 /* getRequestAccepted.json */, + B21C2DE22C6574D900337E93 /* getRequestArriving.json */, + B21C2DE32C6574D900337E93 /* getRequestCompleted.json */, + B21C2DE42C6574D900337E93 /* getRequestInProgress.json */, + B21C2DE52C6574D900337E93 /* getRequestProcessing.json */, + B21C2DE62C6574D900337E93 /* getTimeEstimateProduct.json */, + B21C2DE72C6574D900337E93 /* getTimeEstimates.json */, + B21C2DE82C6574D900337E93 /* getTimeEstimatesEmpty.json */, + B21C2DE92C6574D900337E93 /* place.json */, + B21C2DEA2C6574D900337E93 /* postRequests.json */, + B21C2DEB2C6574D900337E93 /* refresh.json */, + B21C2DEC2C6574D900337E93 /* requestEstimate.json */, + B21C2DED2C6574D900337E93 /* requestEstimateNoCars.json */, + B21C2DEE2C6574D900337E93 /* requestEstimateNoUpfront.json */, + B21C2DEF2C6574D900337E93 /* rideMap.json */, + B21C2DF02C6574D900337E93 /* rideReceipt.json */, + ); + path = TestData; + sourceTree = ""; + }; + B21C2E062C6574D900337E93 /* UberRides */ = { + isa = PBXGroup; + children = ( + B21C2DF22C6574D900337E93 /* TestData */, + B21C2DF32C6574D900337E93 /* APIManagerTests.swift */, + B21C2DF42C6574D900337E93 /* DeeplinkRequestingBehaviorTests.swift */, + B21C2DF52C6574D900337E93 /* ModalViewControllerTests.swift */, + B21C2DF62C6574D900337E93 /* ObjectMappingTests.swift */, + B21C2DF72C6574D900337E93 /* RequestButtonTests.swift */, + B21C2DF82C6574D900337E93 /* RequestDeeplinkTests.swift */, + B21C2DF92C6574D900337E93 /* RequestLayerTests.swift */, + B21C2DFA2C6574D900337E93 /* RequestURLUtilTests.swift */, + B21C2DFB2C6574D900337E93 /* RideParametersTest.swift */, + B21C2DFC2C6574D900337E93 /* RideRequestViewControllerTests.swift */, + B21C2DFD2C6574D900337E93 /* RideRequestViewErrorFactoryTests.swift */, + B21C2DFE2C6574D900337E93 /* RideRequestViewRequestingBehaviorTests.swift */, + B21C2DFF2C6574D900337E93 /* RideRequestViewTests.swift */, + B21C2E002C6574D900337E93 /* RidesAuthenticationErrorFactoryTests.swift */, + B21C2E012C6574D900337E93 /* RidesClientTests.swift */, + B21C2E022C6574D900337E93 /* RidesMocks.swift */, + B21C2E032C6574D900337E93 /* RidesScopeExtensionsTests.swift */, + B21C2E042C6574D900337E93 /* URLComponentsExtensionsTests.swift */, + B21C2E052C6574D900337E93 /* WidgetsEndpointTests.swift */, + ); + path = UberRides; + sourceTree = ""; + }; B28217C62B97A2CE00EE786D /* UberAuth */ = { isa = PBXGroup; children = ( @@ -123,6 +276,8 @@ B2983AE72BCF658E00159EA7 /* UberCore */ = { isa = PBXGroup; children = ( + B21C2DD72C6574D300337E93 /* BaseDeeplinkTests.swift */, + B21C2DD62C6574D300337E93 /* DeeplinkManagerTests.swift */, B2983AE42BCF15FF00159EA7 /* TokenManagerTests.swift */, B21E42772BE2FF6500D9C5E1 /* KeychainUtilityTests.swift */, ); @@ -165,6 +320,9 @@ B2D7AE2B2B979EDB007F03FB /* UberSDKTests */ = { isa = PBXGroup; children = ( + B21C2E352C6581C900337E93 /* testInfo.plist */, + B21C2E3A2C65846F00337E93 /* testInfoNoServerToken.plist */, + B21C2E062C6574D900337E93 /* UberRides */, B2D096912B97B8E70093B510 /* Mocks */, B2983AE72BCF658E00159EA7 /* UberCore */, B28217C62B97A2CE00EE786D /* UberAuth */, @@ -211,6 +369,9 @@ B2D7AE2A2B979EDB007F03FB /* PBXTargetDependency */, ); name = UberSDKTests; + packageProductDependencies = ( + B21C2E332C6574FD00337E93 /* OHHTTPStubsSwift */, + ); productName = UberSDKTests; productReference = B2D7AE282B979EDB007F03FB /* UberSDKTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; @@ -245,6 +406,7 @@ mainGroup = B29303992B89113F00D28BAA; packageReferences = ( B29303CF2B89115800D28BAA /* XCLocalSwiftPackageReference "../.." */, + B21C2E322C6574FD00337E93 /* XCRemoteSwiftPackageReference "OHHTTPStubs" */, ); productRefGroup = B29303A32B89113F00D28BAA /* Products */; projectDirPath = ""; @@ -261,6 +423,8 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + B21C2E3D2C6585AA00337E93 /* testInfo.plist in Resources */, + B21C2E3C2C6585A700337E93 /* testInfoNoServerToken.plist in Resources */, B2D7AE232B979EDB007F03FB /* Preview Assets.xcassets in Resources */, B2D7AE202B979EDB007F03FB /* Assets.xcassets in Resources */, ); @@ -270,6 +434,31 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + B21C2E112C6574D900337E93 /* getRequestInProgress.json in Resources */, + B21C2E1A2C6574D900337E93 /* requestEstimateNoCars.json in Resources */, + B21C2E3B2C65846F00337E93 /* testInfoNoServerToken.plist in Resources */, + B21C2E182C6574D900337E93 /* refresh.json in Resources */, + B21C2E1B2C6574D900337E93 /* requestEstimateNoUpfront.json in Resources */, + B21C2E1C2C6574D900337E93 /* rideMap.json in Resources */, + B21C2E102C6574D900337E93 /* getRequestCompleted.json in Resources */, + B21C2E0A2C6574D900337E93 /* getPriceEstimates.json in Resources */, + B21C2E0E2C6574D900337E93 /* getRequestAccepted.json in Resources */, + B21C2E192C6574D900337E93 /* requestEstimate.json in Resources */, + B21C2E0D2C6574D900337E93 /* getProducts.json in Resources */, + B21C2E0F2C6574D900337E93 /* getRequestArriving.json in Resources */, + B21C2E0B2C6574D900337E93 /* getPriceEstimatesEmpty.json in Resources */, + B21C2E162C6574D900337E93 /* place.json in Resources */, + B21C2E1D2C6574D900337E93 /* rideReceipt.json in Resources */, + B21C2E122C6574D900337E93 /* getRequestProcessing.json in Resources */, + B21C2E132C6574D900337E93 /* getTimeEstimateProduct.json in Resources */, + B21C2E172C6574D900337E93 /* postRequests.json in Resources */, + B21C2E382C65826E00337E93 /* testInfo.plist in Resources */, + B21C2E092C6574D900337E93 /* getPaymentMethods.json in Resources */, + B21C2E152C6574D900337E93 /* getTimeEstimatesEmpty.json in Resources */, + B21C2E082C6574D900337E93 /* getMe.json in Resources */, + B21C2E072C6574D900337E93 /* getHistory.json in Resources */, + B21C2E0C2C6574D900337E93 /* getProductID.json in Resources */, + B21C2E142C6574D900337E93 /* getTimeEstimates.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -293,13 +482,34 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + B21C2E252C6574D900337E93 /* RequestLayerTests.swift in Sources */, + B21C2E2A2C6574D900337E93 /* RideRequestViewRequestingBehaviorTests.swift in Sources */, + B21C2E232C6574D900337E93 /* RequestButtonTests.swift in Sources */, + B21C2E2E2C6574D900337E93 /* RidesMocks.swift in Sources */, + B21C2E202C6574D900337E93 /* DeeplinkRequestingBehaviorTests.swift in Sources */, B21E42782BE2FF6500D9C5E1 /* KeychainUtilityTests.swift in Sources */, B28CDD342BA4BE2100EB1BBD /* RequestTests.swift in Sources */, B2D096952B97C4A00093B510 /* UberAuthErrorTests.swift in Sources */, + B21C2E312C6574D900337E93 /* WidgetsEndpointTests.swift in Sources */, + B21C2E212C6574D900337E93 /* ModalViewControllerTests.swift in Sources */, + B21C2E2F2C6574D900337E93 /* RidesScopeExtensionsTests.swift in Sources */, B28217C82B97A2E400EE786D /* AuthManagerTests.swift in Sources */, + B21C2E2D2C6574D900337E93 /* RidesClientTests.swift in Sources */, B28CDD362BA4C6CA00EB1BBD /* AuthorizeRequestTests.swift in Sources */, + B21C2E1F2C6574D900337E93 /* APIManagerTests.swift in Sources */, + B21C2E282C6574D900337E93 /* RideRequestViewControllerTests.swift in Sources */, + B21C2E292C6574D900337E93 /* RideRequestViewErrorFactoryTests.swift in Sources */, + B21C2E2B2C6574D900337E93 /* RideRequestViewTests.swift in Sources */, + B21C2E242C6574D900337E93 /* RequestDeeplinkTests.swift in Sources */, + B21C2E2C2C6574D900337E93 /* RidesAuthenticationErrorFactoryTests.swift in Sources */, + B21C2E302C6574D900337E93 /* URLComponentsExtensionsTests.swift in Sources */, + B21C2E272C6574D900337E93 /* RideParametersTest.swift in Sources */, B28A41752BAE331300F727C7 /* ParRequestTests.swift in Sources */, + B21C2E222C6574D900337E93 /* ObjectMappingTests.swift in Sources */, + B21C2E262C6574D900337E93 /* RequestURLUtilTests.swift in Sources */, B28CDD322BA403A900EB1BBD /* AuthorizationCodeAuthProviderTests.swift in Sources */, + B21C2DD82C6574D300337E93 /* DeeplinkManagerTests.swift in Sources */, + B21C2DD92C6574D300337E93 /* BaseDeeplinkTests.swift in Sources */, B28A41712BACA97000F727C7 /* AuthorizationCodeResponseParserTests.swift in Sources */, B2983AE52BCF15FF00159EA7 /* TokenManagerTests.swift in Sources */, B2983AE92BCF663100159EA7 /* Mocks.swift in Sources */, @@ -579,7 +789,23 @@ }; /* End XCLocalSwiftPackageReference section */ +/* Begin XCRemoteSwiftPackageReference section */ + B21C2E322C6574FD00337E93 /* XCRemoteSwiftPackageReference "OHHTTPStubs" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/AliSoftware/OHHTTPStubs.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 9.1.0; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + /* Begin XCSwiftPackageProductDependency section */ + B21C2E332C6574FD00337E93 /* OHHTTPStubsSwift */ = { + isa = XCSwiftPackageProductDependency; + package = B21C2E322C6574FD00337E93 /* XCRemoteSwiftPackageReference "OHHTTPStubs" */; + productName = OHHTTPStubsSwift; + }; B2D7AE432B979F4E007F03FB /* UberAuth */ = { isa = XCSwiftPackageProductDependency; productName = UberAuth; diff --git a/examples/Swift SDK/Swift SDKTests/UberCore/BaseDeeplinkTests.swift b/examples/UberSDK/UberSDKTests/UberCore/BaseDeeplinkTests.swift similarity index 93% rename from examples/Swift SDK/Swift SDKTests/UberCore/BaseDeeplinkTests.swift rename to examples/UberSDK/UberSDKTests/UberCore/BaseDeeplinkTests.swift index 49d723a1..5930094b 100644 --- a/examples/Swift SDK/Swift SDKTests/UberCore/BaseDeeplinkTests.swift +++ b/examples/UberSDK/UberSDKTests/UberCore/BaseDeeplinkTests.swift @@ -32,16 +32,9 @@ class BaseDeeplinkTests: XCTestCase { override func setUp() { super.setUp() - Configuration.plistName = "testInfo" - Configuration.restoreDefaults() versionNumber = Bundle(for: BaseDeeplink.self).object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String } - override func tearDown() { - Configuration.restoreDefaults() - super.tearDown() - } - func testInit() { let testScheme = "testScheme" let testDomain = "testDomain" diff --git a/examples/Swift SDK/Swift SDKTests/UberCore/DeeplinkManagerTests.swift b/examples/UberSDK/UberSDKTests/UberCore/DeeplinkManagerTests.swift similarity index 90% rename from examples/Swift SDK/Swift SDKTests/UberCore/DeeplinkManagerTests.swift rename to examples/UberSDK/UberSDKTests/UberCore/DeeplinkManagerTests.swift index 70aa1bdf..edec8f0a 100644 --- a/examples/Swift SDK/Swift SDKTests/UberCore/DeeplinkManagerTests.swift +++ b/examples/UberSDK/UberSDKTests/UberCore/DeeplinkManagerTests.swift @@ -89,14 +89,14 @@ class DeeplinkManagerTests: XCTestCase { private func openDeeplink(_ deeplink: Deeplinking, completion: @escaping DeeplinkCompletionHandler) { deeplinkManager.open(deeplink, completion: completion) - NotificationCenter.default.post(Notification(name: Notification.Name.UIApplicationDidEnterBackground)) + NotificationCenter.default.post(Notification(name: UIApplication.didEnterBackgroundNotification)) } private func openDeeplinkWithSuccessfulPrompt(_ deeplink: Deeplinking, completion: @escaping DeeplinkCompletionHandler) { deeplinkManager.open(deeplink, completion: completion) - NotificationCenter.default.post(Notification(name: Notification.Name.UIApplicationWillResignActive)) - NotificationCenter.default.post(Notification(name: Notification.Name.UIApplicationDidBecomeActive)) - NotificationCenter.default.post(Notification(name: Notification.Name.UIApplicationDidEnterBackground)) + NotificationCenter.default.post(Notification(name: UIApplication.willResignActiveNotification)) + NotificationCenter.default.post(Notification(name: UIApplication.didBecomeActiveNotification)) + NotificationCenter.default.post(Notification(name: UIApplication.didEnterBackgroundNotification)) } } diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/APIManagerTests.swift b/examples/UberSDK/UberSDKTests/UberRides/APIManagerTests.swift similarity index 98% rename from examples/Swift SDK/Swift SDKTests/UberRides/APIManagerTests.swift rename to examples/UberSDK/UberSDKTests/UberRides/APIManagerTests.swift index 59d498c9..768b9627 100644 --- a/examples/Swift SDK/Swift SDKTests/UberRides/APIManagerTests.swift +++ b/examples/UberSDK/UberSDKTests/UberRides/APIManagerTests.swift @@ -59,15 +59,10 @@ struct ExpectedEndpoint { } class APIManagerTests: XCTestCase { - override func setUp() { - super.setUp() - Configuration.restoreDefaults() - Configuration.shared.isSandbox = true - } - override func tearDown() { - Configuration.restoreDefaults() - super.tearDown() + override class func setUp() { + super.setUp() + ConfigurationProvider.isSandbox = true } /** diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/DeeplinkRequestingBehaviorTests.swift b/examples/UberSDK/UberSDKTests/UberRides/DeeplinkRequestingBehaviorTests.swift similarity index 93% rename from examples/Swift SDK/Swift SDKTests/UberRides/DeeplinkRequestingBehaviorTests.swift rename to examples/UberSDK/UberSDKTests/UberRides/DeeplinkRequestingBehaviorTests.swift index 0eb9a932..e2f97bea 100644 --- a/examples/Swift SDK/Swift SDKTests/UberRides/DeeplinkRequestingBehaviorTests.swift +++ b/examples/UberSDK/UberSDKTests/UberRides/DeeplinkRequestingBehaviorTests.swift @@ -33,19 +33,11 @@ class DeeplinkRequestingBehaviorTests : XCTestCase { override func setUp() { super.setUp() - Configuration.plistName = "testInfo" - Configuration.restoreDefaults() - Configuration.shared.clientID = clientID - Configuration.shared.isSandbox = true + ConfigurationProvider.plistName = "testInfo" versionNumber = Bundle(for: RideParameters.self).object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String expectedDeeplinkUserAgent = "rides-ios-v\(versionNumber!)-deeplink" expectedButtonUserAgent = "rides-ios-v\(versionNumber!)-button" } - - override func tearDown() { - Configuration.restoreDefaults() - super.tearDown() - } /** * Test createURL with source button. diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/ModalViewControllerTests.swift b/examples/UberSDK/UberSDKTests/UberRides/ModalViewControllerTests.swift similarity index 92% rename from examples/Swift SDK/Swift SDKTests/UberRides/ModalViewControllerTests.swift rename to examples/UberSDK/UberSDKTests/UberRides/ModalViewControllerTests.swift index 6d90e574..5ce1403a 100644 --- a/examples/Swift SDK/Swift SDKTests/UberRides/ModalViewControllerTests.swift +++ b/examples/UberSDK/UberSDKTests/UberRides/ModalViewControllerTests.swift @@ -30,18 +30,6 @@ class ModalViewControllerTests: XCTestCase { private let timeout = 2.0 - override func setUp() { - super.setUp() - Configuration.plistName = "testInfo" - Configuration.restoreDefaults() - Configuration.shared.isSandbox = true - } - - override func tearDown() { - Configuration.restoreDefaults() - super.tearDown() - } - func testDelegate_willDismiss() { class ModalViewControllerDelegateMock : NSObject, ModalViewControllerDelegate { var testClosure: () -> () diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/ObjectMappingTests.swift b/examples/UberSDK/UberSDKTests/UberRides/ObjectMappingTests.swift similarity index 99% rename from examples/Swift SDK/Swift SDKTests/UberRides/ObjectMappingTests.swift rename to examples/UberSDK/UberSDKTests/UberRides/ObjectMappingTests.swift index 3785831f..97fd3051 100644 --- a/examples/Swift SDK/Swift SDKTests/UberRides/ObjectMappingTests.swift +++ b/examples/UberSDK/UberSDKTests/UberRides/ObjectMappingTests.swift @@ -27,18 +27,7 @@ import UberCore @testable import UberRides class ObjectMappingTests: XCTestCase { - - override func setUp() { - super.setUp() - Configuration.restoreDefaults() - Configuration.shared.isSandbox = true - } - override func tearDown() { - Configuration.restoreDefaults() - super.tearDown() - } - /** Tests mapping result of GET /v1/product/{product_id} endpoint. */ @@ -337,7 +326,6 @@ class ObjectMappingTests: XCTestCase { XCTAssertEqual(userProfile!.email, "developer@uber.com") XCTAssertEqual(userProfile!.picturePath, "https://profile-picture.jpg") XCTAssertEqual(userProfile!.promoCode, "teypo") - XCTAssertEqual(userProfile!.UUID, "91d81273-45c2-4b57-8124-d0165f8240c0") XCTAssertEqual(userProfile!.riderID, "kIN8tMqcXMSJt1VC3HWNF0H4VD1JKlJkY==") } } diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/RequestButtonTests.swift b/examples/UberSDK/UberSDKTests/UberRides/RequestButtonTests.swift similarity index 98% rename from examples/Swift SDK/Swift SDKTests/UberRides/RequestButtonTests.swift rename to examples/UberSDK/UberSDKTests/UberRides/RequestButtonTests.swift index 3cac7803..b8f66f0a 100644 --- a/examples/Swift SDK/Swift SDKTests/UberRides/RequestButtonTests.swift +++ b/examples/UberSDK/UberSDKTests/UberRides/RequestButtonTests.swift @@ -42,18 +42,10 @@ class RequestButtonTests: XCTestCase { override func setUp() { super.setUp() - Configuration.plistName = "testInfo" - Configuration.restoreDefaults() - Configuration.shared.isSandbox = true + ConfigurationProvider.plistName = "testInfo" client = RidesClient() } - override func tearDown() { - Configuration.restoreDefaults() - HTTPStubs.removeAllStubs() - super.tearDown() - } - /** Test that title is initialized properly to default value. */ diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/RequestDeeplinkTests.swift b/examples/UberSDK/UberSDKTests/UberRides/RequestDeeplinkTests.swift similarity index 97% rename from examples/Swift SDK/Swift SDKTests/UberRides/RequestDeeplinkTests.swift rename to examples/UberSDK/UberSDKTests/UberRides/RequestDeeplinkTests.swift index cb04c915..16ce9497 100644 --- a/examples/Swift SDK/Swift SDKTests/UberRides/RequestDeeplinkTests.swift +++ b/examples/UberSDK/UberSDKTests/UberRides/RequestDeeplinkTests.swift @@ -28,8 +28,8 @@ import CoreLocation import UberCore @testable import UberRides -let clientID = "clientID1234" -let serverToken = "serverToken1234" +let clientID = "clientID" +let serverToken = "serverToken" let redirectURI = "http://localhost:1234/" let productID = "productID1234" let pickupLat = 37.770 @@ -67,20 +67,12 @@ class UberRidesDeeplinkTests: XCTestCase { override func setUp() { super.setUp() - Configuration.plistName = "testInfo" - Configuration.restoreDefaults() - Configuration.shared.clientID = clientID - Configuration.shared.isSandbox = true + ConfigurationProvider.plistName = "testInfo" versionNumber = Bundle(for: RideParameters.self).object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String expectedDeeplinkUserAgent = "rides-ios-v\(versionNumber!)-deeplink" expectedButtonUserAgent = "rides-ios-v\(versionNumber!)-button" } - - override func tearDown() { - Configuration.restoreDefaults() - super.tearDown() - } - + /** Test to build an UberDeeplink with no PickupLatLng and assign user's current location as default */ diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/RequestLayerTests.swift b/examples/UberSDK/UberSDKTests/UberRides/RequestLayerTests.swift similarity index 98% rename from examples/Swift SDK/Swift SDKTests/UberRides/RequestLayerTests.swift rename to examples/UberSDK/UberSDKTests/UberRides/RequestLayerTests.swift index 769ea18c..28d8428b 100644 --- a/examples/Swift SDK/Swift SDKTests/UberRides/RequestLayerTests.swift +++ b/examples/UberSDK/UberSDKTests/UberRides/RequestLayerTests.swift @@ -35,16 +35,14 @@ class RequestLayerTests: XCTestCase { override func setUp() { super.setUp() - Configuration.plistName = "testInfo" - Configuration.restoreDefaults() - Configuration.shared.isSandbox = true + ConfigurationProvider.plistName = "testInfo" + ConfigurationProvider.isSandbox = true headers = ["Content-Type": "application/json"] client = RidesClient() } override func tearDown() { HTTPStubs.removeAllStubs() - Configuration.restoreDefaults() super.tearDown() } @@ -81,6 +79,8 @@ class RequestLayerTests: XCTestCase { Test 401 authorization error response. */ func test401Error() { + ConfigurationProvider.isSandbox = true + let message = "Invalid OAuth 2.0 credentials provided." let code = "unauthorized" diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/RequestURLUtilTests.swift b/examples/UberSDK/UberSDKTests/UberRides/RequestURLUtilTests.swift similarity index 94% rename from examples/Swift SDK/Swift SDKTests/UberRides/RequestURLUtilTests.swift rename to examples/UberSDK/UberSDKTests/UberRides/RequestURLUtilTests.swift index a3f155e1..9e5f3461 100644 --- a/examples/Swift SDK/Swift SDKTests/UberRides/RequestURLUtilTests.swift +++ b/examples/UberSDK/UberSDKTests/UberRides/RequestURLUtilTests.swift @@ -30,30 +30,26 @@ class RequestURLUtilTests: XCTestCase { private var versionNumber: String? private var baseUserAgent: String? + private var configurationProvider: ConfigurationProviding! override func setUp() { super.setUp() - Configuration.plistName = "testInfo" - Configuration.restoreDefaults() + configurationProvider = ConfigurationProvidingMock(clientID: "clientID") versionNumber = Bundle(for: RideParameters.self).object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String baseUserAgent = "rides-ios-v\(versionNumber!)" } - override func tearDown() { - Configuration.restoreDefaults() - super.tearDown() - } - func testCreateQueryParameters_withDefaultRideParameters() { + ConfigurationProvider.plistName = "testInfo" let parameters = RideParametersBuilder().build() let locationQueryItem = URLQueryItem(name: "pickup", value: "my_location") let actionQueryItem = URLQueryItem(name: "action", value: "setPickup") - let clientIdQueryItem = URLQueryItem(name: "client_id", value: "testClientID") + let clientIdQueryItem = URLQueryItem(name: "client_id", value: "clientID") let userAgentQueryItem = URLQueryItem(name: "user-agent", value: baseUserAgent) let expectedQueryParameters = [clientIdQueryItem, actionQueryItem, locationQueryItem, userAgentQueryItem] let comparisonSet = NSSet(array: expectedQueryParameters) - let testQueryParameters = RequestURLUtil.buildRequestQueryParameters(parameters) + let testQueryParameters = RequestURLUtil.buildRequestQueryParameters(parameters, configurationProvider: configurationProvider) let testComparisonSet = NSSet(array:testQueryParameters) XCTAssertEqual(comparisonSet, testComparisonSet) @@ -82,7 +78,7 @@ class RequestURLUtilTests: XCTestCase { let dropoffAddressQueryItem = URLQueryItem(name: "dropoff[formatted_address]", value: testDropoffAddress) let productIdQueryItem = URLQueryItem(name: "product_id", value: testProductID) - let clientIdQueryItem = URLQueryItem(name: "client_id", value: "testClientID") + let clientIdQueryItem = URLQueryItem(name: "client_id", value: "clientID") let userAgentQueryItem = URLQueryItem(name: "user-agent", value: expectedUserAgent) let actionQueryItem = URLQueryItem(name: "action", value: "setPickup") @@ -102,7 +98,7 @@ class RequestURLUtilTests: XCTestCase { let comparisonSet = NSSet(array: expectedQueryParameters) - let testQueryParameters = RequestURLUtil.buildRequestQueryParameters(parameters.build()) + let testQueryParameters = RequestURLUtil.buildRequestQueryParameters(parameters.build(), configurationProvider: configurationProvider) let testComparisonSet = NSSet(array:testQueryParameters) XCTAssertEqual(comparisonSet, testComparisonSet) @@ -127,7 +123,7 @@ class RequestURLUtilTests: XCTestCase { let dropoffAddressQueryItem = URLQueryItem(name: "dropoff[formatted_address]", value: testDropoffAddress) let productIdQueryItem = URLQueryItem(name: "product_id", value: testProductID) - let clientIdQueryItem = URLQueryItem(name: "client_id", value: "testClientID") + let clientIdQueryItem = URLQueryItem(name: "client_id", value: "clientID") let userAgentQueryItem = URLQueryItem(name: "user-agent", value: expectedUserAgent) let actionQueryItem = URLQueryItem(name: "action", value: "setPickup") @@ -145,7 +141,7 @@ class RequestURLUtilTests: XCTestCase { let comparisonSet = NSSet(array: expectedQueryParameters) - let testQueryParameters = RequestURLUtil.buildRequestQueryParameters(parameters.build()) + let testQueryParameters = RequestURLUtil.buildRequestQueryParameters(parameters.build(), configurationProvider: configurationProvider) let testComparisonSet = NSSet(array:testQueryParameters) XCTAssertEqual(comparisonSet, testComparisonSet) @@ -170,7 +166,7 @@ class RequestURLUtilTests: XCTestCase { let dropoffNicknameQueryItem = URLQueryItem(name: "dropoff[nickname]", value: testDropoffNickname) let productIdQueryItem = URLQueryItem(name: "product_id", value: testProductID) - let clientIdQueryItem = URLQueryItem(name: "client_id", value: "testClientID") + let clientIdQueryItem = URLQueryItem(name: "client_id", value: "clientID") let userAgentQueryItem = URLQueryItem(name: "user-agent", value: expectedUserAgent) let actionQueryItem = URLQueryItem(name: "action", value: "setPickup") @@ -188,7 +184,7 @@ class RequestURLUtilTests: XCTestCase { let comparisonSet = NSSet(array: expectedQueryParameters) - let testQueryParameters = RequestURLUtil.buildRequestQueryParameters(parameters.build()) + let testQueryParameters = RequestURLUtil.buildRequestQueryParameters(parameters.build(), configurationProvider: configurationProvider) let testComparisonSet = NSSet(array:testQueryParameters) XCTAssertEqual(comparisonSet, testComparisonSet) @@ -209,7 +205,7 @@ class RequestURLUtilTests: XCTestCase { let pickupAddressQueryItem = URLQueryItem(name: "pickup[formatted_address]", value: testPickupAddress) let productIdQueryItem = URLQueryItem(name: "product_id", value: testProductID) - let clientIdQueryItem = URLQueryItem(name: "client_id", value: "testClientID") + let clientIdQueryItem = URLQueryItem(name: "client_id", value: "clientID") let userAgentQueryItem = URLQueryItem(name: "user-agent", value: expectedUserAgent) let actionQueryItem = URLQueryItem(name: "action", value: "setPickup") @@ -225,7 +221,7 @@ class RequestURLUtilTests: XCTestCase { let comparisonSet = NSSet(array: expectedQueryParameters) - let testQueryParameters = RequestURLUtil.buildRequestQueryParameters(parameters.build()) + let testQueryParameters = RequestURLUtil.buildRequestQueryParameters(parameters.build(), configurationProvider: configurationProvider) let testComparisonSet = NSSet(array:testQueryParameters) XCTAssertEqual(comparisonSet, testComparisonSet) diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/RideParametersTest.swift b/examples/UberSDK/UberSDKTests/UberRides/RideParametersTest.swift similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/RideParametersTest.swift rename to examples/UberSDK/UberSDKTests/UberRides/RideParametersTest.swift diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/RideRequestViewControllerTests.swift b/examples/UberSDK/UberSDKTests/UberRides/RideRequestViewControllerTests.swift similarity index 95% rename from examples/Swift SDK/Swift SDKTests/UberRides/RideRequestViewControllerTests.swift rename to examples/UberSDK/UberSDKTests/UberRides/RideRequestViewControllerTests.swift index 27307cb6..70eab807 100644 --- a/examples/Swift SDK/Swift SDKTests/UberRides/RideRequestViewControllerTests.swift +++ b/examples/UberSDK/UberSDKTests/UberRides/RideRequestViewControllerTests.swift @@ -31,28 +31,20 @@ class RideRequestViewControllerTests: XCTestCase { private let timeout: Double = 2 private let testIdentifier = "testAccessTokenIdentifier" private let tokenManager = TokenManager() - private var accessGroup: String { Configuration.shared.defaultKeychainAccessGroup } + private var accessGroup: String { TokenManager.defaultKeychainAccessGroup } override func setUp() { super.setUp() - Configuration.plistName = "testInfo" - Configuration.restoreDefaults() - Configuration.shared.isSandbox = true tokenManager.deleteToken(identifier: testIdentifier, accessGroup: accessGroup) } - override func tearDown() { - Configuration.restoreDefaults() - super.tearDown() - } - func testRideRequestViewLoads_withValidAccessToken() { var expectation = false let expectationClosure: () -> () = { expectation = true } - let accessGroup = Configuration.shared.defaultKeychainAccessGroup + let accessGroup = TokenManager.defaultKeychainAccessGroup let testToken = AccessToken(tokenString: "testTokenString") tokenManager.saveToken(testToken, identifier: testIdentifier, accessGroup: accessGroup) defer { diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/RideRequestViewErrorFactoryTests.swift b/examples/UberSDK/UberSDKTests/UberRides/RideRequestViewErrorFactoryTests.swift similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/RideRequestViewErrorFactoryTests.swift rename to examples/UberSDK/UberSDKTests/UberRides/RideRequestViewErrorFactoryTests.swift diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/RideRequestViewRequestingBehaviorTests.swift b/examples/UberSDK/UberSDKTests/UberRides/RideRequestViewRequestingBehaviorTests.swift similarity index 92% rename from examples/Swift SDK/Swift SDKTests/UberRides/RideRequestViewRequestingBehaviorTests.swift rename to examples/UberSDK/UberSDKTests/UberRides/RideRequestViewRequestingBehaviorTests.swift index e9c00e71..2077579f 100644 --- a/examples/Swift SDK/Swift SDKTests/UberRides/RideRequestViewRequestingBehaviorTests.swift +++ b/examples/UberSDK/UberSDKTests/UberRides/RideRequestViewRequestingBehaviorTests.swift @@ -28,18 +28,6 @@ import CoreLocation class RideRequestViewRequestingBehaviorTests : XCTestCase { - override func setUp() { - super.setUp() - Configuration.plistName = "testInfo" - Configuration.restoreDefaults() - Configuration.shared.isSandbox = true - } - - override func tearDown() { - super.tearDown() - Configuration.restoreDefaults() - } - func testRideParametersUpdated() { class UIViewControllerMock : UIViewController { override func present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Void)?) { diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/RideRequestViewTests.swift b/examples/UberSDK/UberSDKTests/UberRides/RideRequestViewTests.swift similarity index 94% rename from examples/Swift SDK/Swift SDKTests/UberRides/RideRequestViewTests.swift rename to examples/UberSDK/UberSDKTests/UberRides/RideRequestViewTests.swift index 9f0a1624..7fcdef96 100644 --- a/examples/Swift SDK/Swift SDKTests/UberRides/RideRequestViewTests.swift +++ b/examples/UberSDK/UberSDKTests/UberRides/RideRequestViewTests.swift @@ -34,18 +34,6 @@ class RideRequestViewTests: XCTestCase { let timeout: TimeInterval = 10 private let tokenManager = TokenManager() - override func setUp() { - super.setUp() - Configuration.plistName = "testInfo" - Configuration.restoreDefaults() - Configuration.shared.isSandbox = true - } - - override func tearDown() { - Configuration.restoreDefaults() - super.tearDown() - } - /** Test that access token expiration is routed to delegate. */ @@ -53,8 +41,8 @@ class RideRequestViewTests: XCTestCase { testExpectation = expectation(description: "access token expired delegate call") let view = RideRequestView( rideParameters: RideParametersBuilder().build(), - accessTokenIdentifier: Configuration.shared.defaultAccessTokenIdentifier, - accessGroup: Configuration.shared.defaultKeychainAccessGroup + accessTokenIdentifier: TokenManager.defaultAccessTokenIdentifier, + accessGroup: TokenManager.defaultKeychainAccessGroup ) view.delegate = self let request = URLRequest(url: URL(string: "uberConnect://oauth#error=unauthorized")!) diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/RidesAuthenticationErrorFactoryTests.swift b/examples/UberSDK/UberSDKTests/UberRides/RidesAuthenticationErrorFactoryTests.swift similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/RidesAuthenticationErrorFactoryTests.swift rename to examples/UberSDK/UberSDKTests/UberRides/RidesAuthenticationErrorFactoryTests.swift diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/RidesClientTests.swift b/examples/UberSDK/UberSDKTests/UberRides/RidesClientTests.swift similarity index 97% rename from examples/Swift SDK/Swift SDKTests/UberRides/RidesClientTests.swift rename to examples/UberSDK/UberSDKTests/UberRides/RidesClientTests.swift index 193696c0..e71e4526 100644 --- a/examples/Swift SDK/Swift SDKTests/UberRides/RidesClientTests.swift +++ b/examples/UberSDK/UberSDKTests/UberRides/RidesClientTests.swift @@ -34,21 +34,16 @@ class RidesClientTests: XCTestCase { var client: RidesClient! let timeout: Double = 10 + override func setUp() { super.setUp() - Configuration.plistName = "testInfoNoServerToken" - Configuration.bundle = Bundle(for: type(of: self)) - Configuration.restoreDefaults() - Configuration.shared.clientID = clientID - Configuration.shared.serverToken = nil - Configuration.shared.isSandbox = true + ConfigurationProvider.plistName = "testInfoNoServerToken" + ConfigurationProvider.isSandbox = true client = RidesClient() } override func tearDown() { HTTPStubs.removeAllStubs() - Configuration.restoreDefaults() - Configuration.bundle = Bundle.main super.tearDown() } @@ -56,10 +51,14 @@ class RidesClientTests: XCTestCase { Test hasServerToken. */ func testHasServerToken() { - XCTAssertFalse(client.hasServerToken) - Configuration.shared.serverToken = serverToken - client = RidesClient() + let configurationProvider = ConfigurationProvidingMock(serverToken: "test_server_token") + client = RidesClient( + accessTokenIdentifier: "", + sessionConfiguration: .default, + keychainAccessGroup: "", + configurationProvider: configurationProvider + ) XCTAssertTrue(client.hasServerToken) } @@ -674,6 +673,8 @@ class RidesClientTests: XCTestCase { } func testCancelCurrentRideUnauthorized() { + ConfigurationProvider.isSandbox = true + stub(condition: isHost("sandbox-api.uber.com")) { _ in return HTTPStubsResponse(jsonObject: ["code":"unauthorized", "title":"Invalid OAuth 2.0 Credentials provided."], statusCode: 401, headers: nil) } @@ -866,8 +867,8 @@ class RidesClientTests: XCTestCase { let keychainHelper = KeychainUtility() - let tokenKey = Configuration.shared.defaultAccessTokenIdentifier - let tokenGroup = Configuration.shared.defaultKeychainAccessGroup + let tokenKey = TokenManager.defaultAccessTokenIdentifier + let tokenGroup = TokenManager.defaultKeychainAccessGroup XCTAssertTrue(keychainHelper.save(token, for: tokenKey, accessGroup: tokenGroup)) defer { @@ -887,8 +888,14 @@ class RidesClientTests: XCTestCase { and the token doesn't exist */ func testGetAccessTokenFail_defaultId_defaultGroup() { + let tokenKey = TokenManager.defaultAccessTokenIdentifier + let tokenGroup = TokenManager.defaultKeychainAccessGroup + let keychainHelper = KeychainUtility() + _ = keychainHelper.delete(key: tokenKey, accessGroup: tokenGroup) + let ridesClient = RidesClient() let accessToken = ridesClient.fetchAccessToken() + XCTAssertNil(accessToken) } @@ -901,7 +908,7 @@ class RidesClientTests: XCTestCase { let keychainHelper = KeychainUtility() let tokenKey = "newTokenKey" - let tokenGroup = Configuration.shared.defaultKeychainAccessGroup + let tokenGroup = TokenManager.defaultKeychainAccessGroup XCTAssertTrue(keychainHelper.save(token, for: tokenKey, accessGroup: tokenGroup)) defer { diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/RidesMocks.swift b/examples/UberSDK/UberSDKTests/UberRides/RidesMocks.swift similarity index 97% rename from examples/Swift SDK/Swift SDKTests/UberRides/RidesMocks.swift rename to examples/UberSDK/UberSDKTests/UberRides/RidesMocks.swift index d3b0a261..7a1882f4 100644 --- a/examples/Swift SDK/Swift SDKTests/UberRides/RidesMocks.swift +++ b/examples/UberSDK/UberSDKTests/UberRides/RidesMocks.swift @@ -55,7 +55,7 @@ class RideRequestViewControllerMock : RideRequestViewController { var notSupportedClosure: (() -> ())? var presentViewControllerClosure: ((UIViewController, Bool, (() -> Void)?) -> ())? - init(rideParameters: RideParameters, loadClosure: (() -> ())? = nil, networkClosure: (() -> ())? = nil, presentViewControllerClosure: ((UIViewController, Bool, (() -> Void)?) -> ())? = nil, notSupportedClosure: (() -> ())? = nil, accessTokenIdentifier: String = Configuration.shared.defaultAccessTokenIdentifier, keychainAccessGroup: String = Configuration.shared.defaultKeychainAccessGroup) { + init(rideParameters: RideParameters, loadClosure: (() -> ())? = nil, networkClosure: (() -> ())? = nil, presentViewControllerClosure: ((UIViewController, Bool, (() -> Void)?) -> ())? = nil, notSupportedClosure: (() -> ())? = nil, accessTokenIdentifier: String = TokenManager.defaultAccessTokenIdentifier, keychainAccessGroup: String = TokenManager.defaultKeychainAccessGroup) { self.loadClosure = loadClosure self.networkClosure = networkClosure self.notSupportedClosure = notSupportedClosure diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/RidesScopeExtensionsTests.swift b/examples/UberSDK/UberSDKTests/UberRides/RidesScopeExtensionsTests.swift similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/RidesScopeExtensionsTests.swift rename to examples/UberSDK/UberSDKTests/UberRides/RidesScopeExtensionsTests.swift diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/getHistory.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/getHistory.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/getHistory.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/getHistory.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/getMe.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/getMe.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/getMe.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/getMe.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/getPaymentMethods.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/getPaymentMethods.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/getPaymentMethods.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/getPaymentMethods.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/getPriceEstimates.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/getPriceEstimates.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/getPriceEstimates.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/getPriceEstimates.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/getPriceEstimatesEmpty.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/getPriceEstimatesEmpty.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/getPriceEstimatesEmpty.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/getPriceEstimatesEmpty.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/getProductID.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/getProductID.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/getProductID.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/getProductID.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/getProducts.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/getProducts.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/getProducts.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/getProducts.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/getRequestAccepted.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/getRequestAccepted.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/getRequestAccepted.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/getRequestAccepted.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/getRequestArriving.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/getRequestArriving.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/getRequestArriving.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/getRequestArriving.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/getRequestCompleted.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/getRequestCompleted.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/getRequestCompleted.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/getRequestCompleted.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/getRequestInProgress.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/getRequestInProgress.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/getRequestInProgress.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/getRequestInProgress.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/getRequestProcessing.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/getRequestProcessing.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/getRequestProcessing.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/getRequestProcessing.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/getTimeEstimateProduct.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/getTimeEstimateProduct.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/getTimeEstimateProduct.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/getTimeEstimateProduct.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/getTimeEstimates.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/getTimeEstimates.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/getTimeEstimates.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/getTimeEstimates.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/getTimeEstimatesEmpty.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/getTimeEstimatesEmpty.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/getTimeEstimatesEmpty.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/getTimeEstimatesEmpty.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/place.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/place.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/place.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/place.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/postRequests.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/postRequests.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/postRequests.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/postRequests.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/refresh.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/refresh.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/refresh.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/refresh.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/requestEstimate.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/requestEstimate.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/requestEstimate.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/requestEstimate.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/requestEstimateNoCars.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/requestEstimateNoCars.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/requestEstimateNoCars.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/requestEstimateNoCars.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/requestEstimateNoUpfront.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/requestEstimateNoUpfront.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/requestEstimateNoUpfront.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/requestEstimateNoUpfront.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/rideMap.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/rideMap.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/rideMap.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/rideMap.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/TestData/rideReceipt.json b/examples/UberSDK/UberSDKTests/UberRides/TestData/rideReceipt.json similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/TestData/rideReceipt.json rename to examples/UberSDK/UberSDKTests/UberRides/TestData/rideReceipt.json diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/URLComponentsExtensionsTests.swift b/examples/UberSDK/UberSDKTests/UberRides/URLComponentsExtensionsTests.swift similarity index 100% rename from examples/Swift SDK/Swift SDKTests/UberRides/URLComponentsExtensionsTests.swift rename to examples/UberSDK/UberSDKTests/UberRides/URLComponentsExtensionsTests.swift diff --git a/examples/Swift SDK/Swift SDKTests/UberRides/WidgetsEndpointTests.swift b/examples/UberSDK/UberSDKTests/UberRides/WidgetsEndpointTests.swift similarity index 89% rename from examples/Swift SDK/Swift SDKTests/UberRides/WidgetsEndpointTests.swift rename to examples/UberSDK/UberSDKTests/UberRides/WidgetsEndpointTests.swift index 7c455f19..db99405b 100644 --- a/examples/Swift SDK/Swift SDKTests/UberRides/WidgetsEndpointTests.swift +++ b/examples/UberSDK/UberSDKTests/UberRides/WidgetsEndpointTests.swift @@ -29,19 +29,8 @@ import UberCore class WidgetsEndpointTests: XCTestCase { - override func setUp() { - super.setUp() - Configuration.plistName = "testInfo" - Configuration.restoreDefaults() - } - - override func tearDown() { - Configuration.restoreDefaults() - super.tearDown() - } - func testERRC_withNoLocation() { - Configuration.shared.isSandbox = true + ConfigurationProvider.isSandbox = true let expectedHost = "https://components.uber.com" let expectedPath = "/rides/" @@ -55,7 +44,7 @@ class WidgetsEndpointTests: XCTestCase { } func testERRC_withSandboxEnabled() { - Configuration.shared.isSandbox = true + ConfigurationProvider.isSandbox = true let expectedLat = 33.2 let expectedLong = -41.2 @@ -79,7 +68,7 @@ class WidgetsEndpointTests: XCTestCase { } func testERRC_withSandboxDisabled() { - Configuration.shared.isSandbox = false + ConfigurationProvider.isSandbox = false let expectedHost = "https://components.uber.com" let expectedPath = "/rides/" diff --git a/examples/UberSDK/UberSDKTests/testInfo.plist b/examples/UberSDK/UberSDKTests/testInfo.plist new file mode 100644 index 00000000..07149904 --- /dev/null +++ b/examples/UberSDK/UberSDKTests/testInfo.plist @@ -0,0 +1,19 @@ + + + + + Uber + + ClientID + clientID + RedirectURI + test://app + DisplayName + Uber SDK Tests + Sandbox + + ServerToken + serverToken1234 + + + diff --git a/examples/UberSDK/UberSDKTests/testInfoNoServerToken.plist b/examples/UberSDK/UberSDKTests/testInfoNoServerToken.plist new file mode 100644 index 00000000..c78825fc --- /dev/null +++ b/examples/UberSDK/UberSDKTests/testInfoNoServerToken.plist @@ -0,0 +1,17 @@ + + + + + Uber + + ClientID + clientID + RedirectURI + test://app + DisplayName + Uber SDK Tests + Sandbox + + + + From 221a8fdd22b59c8bfef5b191e1d0166686b47141 Mon Sep 17 00:00:00 2001 From: mohssenfathi Date: Tue, 13 Aug 2024 09:11:43 -0700 Subject: [PATCH 2/2] Updated tests --- examples/UberSDK/UberSDK.xctestplan | 1 - .../UberRides/RideRequestViewControllerTests.swift | 5 +++++ .../UberSDKTests/UberRides/RideRequestViewTests.swift | 4 +++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/examples/UberSDK/UberSDK.xctestplan b/examples/UberSDK/UberSDK.xctestplan index cbf17595..db5ef143 100644 --- a/examples/UberSDK/UberSDK.xctestplan +++ b/examples/UberSDK/UberSDK.xctestplan @@ -17,7 +17,6 @@ }, "testTargets" : [ { - "parallelizable" : true, "target" : { "containerPath" : "container:UberSDK.xcodeproj", "identifier" : "B2D7AE272B979EDB007F03FB", diff --git a/examples/UberSDK/UberSDKTests/UberRides/RideRequestViewControllerTests.swift b/examples/UberSDK/UberSDKTests/UberRides/RideRequestViewControllerTests.swift index 70eab807..bd72f5ed 100644 --- a/examples/UberSDK/UberSDKTests/UberRides/RideRequestViewControllerTests.swift +++ b/examples/UberSDK/UberSDKTests/UberRides/RideRequestViewControllerTests.swift @@ -37,6 +37,11 @@ class RideRequestViewControllerTests: XCTestCase { super.setUp() tokenManager.deleteToken(identifier: testIdentifier, accessGroup: accessGroup) } + + override func tearDown() { + super.tearDown() + tokenManager.deleteToken(identifier: testIdentifier, accessGroup: accessGroup) + } func testRideRequestViewLoads_withValidAccessToken() { var expectation = false diff --git a/examples/UberSDK/UberSDKTests/UberRides/RideRequestViewTests.swift b/examples/UberSDK/UberSDKTests/UberRides/RideRequestViewTests.swift index 7fcdef96..2b93c575 100644 --- a/examples/UberSDK/UberSDKTests/UberRides/RideRequestViewTests.swift +++ b/examples/UberSDK/UberSDKTests/UberRides/RideRequestViewTests.swift @@ -110,9 +110,11 @@ class RideRequestViewTests: XCTestCase { */ func testAuthorizeFailsWithoutAccessToken() { testExpectation = expectation(description: "access token missing delegate call") + + _ = tokenManager.deleteToken() + let view = RideRequestView() view.delegate = self - _ = tokenManager.deleteToken() view.load()