From 6f19f5411c5fbfa47fc4b3761f3ed7924db674f9 Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Mon, 13 May 2019 06:46:30 -0400 Subject: [PATCH 01/39] =?UTF-8?q?Cria=C3=A7=C3=A3o=20do=20projeto;=20Imple?= =?UTF-8?q?menta=C3=A7=C3=A3o=20da=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Santander-Test/Podfile | 22 + Santander-Test/Podfile.lock | 26 + Santander-Test/Pods/Alamofire/LICENSE | 19 + Santander-Test/Pods/Alamofire/README.md | 243 +++ .../Pods/Alamofire/Source/AFError.swift | 460 +++++ .../Pods/Alamofire/Source/Alamofire.swift | 465 +++++ .../Source/DispatchQueue+Alamofire.swift | 37 + .../Alamofire/Source/MultipartFormData.swift | 580 +++++++ .../Source/NetworkReachabilityManager.swift | 235 +++ .../Pods/Alamofire/Source/Notifications.swift | 55 + .../Alamofire/Source/ParameterEncoding.swift | 483 ++++++ .../Pods/Alamofire/Source/Request.swift | 649 +++++++ .../Pods/Alamofire/Source/Response.swift | 567 ++++++ .../Source/ResponseSerialization.swift | 715 ++++++++ .../Pods/Alamofire/Source/Result.swift | 300 ++++ .../Alamofire/Source/ServerTrustPolicy.swift | 307 ++++ .../Alamofire/Source/SessionDelegate.swift | 725 ++++++++ .../Alamofire/Source/SessionManager.swift | 899 ++++++++++ .../Pods/Alamofire/Source/TaskDelegate.swift | 466 +++++ .../Pods/Alamofire/Source/Timeline.swift | 136 ++ .../Pods/Alamofire/Source/Validation.swift | 315 ++++ Santander-Test/Pods/Manifest.lock | 26 + Santander-Test/Pods/Moya/License.md | 21 + Santander-Test/Pods/Moya/Readme.md | 320 ++++ .../Pods/Moya/Sources/Moya/AnyEncodable.swift | 14 + .../Pods/Moya/Sources/Moya/Cancellable.swift | 26 + .../Pods/Moya/Sources/Moya/Endpoint.swift | 137 ++ .../Pods/Moya/Sources/Moya/Image.swift | 10 + .../Moya/Sources/Moya/Moya+Alamofire.swift | 90 + .../Pods/Moya/Sources/Moya/MoyaError.swift | 76 + .../Sources/Moya/MoyaProvider+Defaults.swift | 36 + .../Sources/Moya/MoyaProvider+Internal.swift | 274 +++ .../Pods/Moya/Sources/Moya/MoyaProvider.swift | 206 +++ .../Pods/Moya/Sources/Moya/MultiTarget.swift | 54 + .../Moya/Sources/Moya/MultipartFormData.swift | 73 + .../Pods/Moya/Sources/Moya/Plugin.swift | 47 + .../Moya/Plugins/AccessTokenPlugin.swift | 93 + .../Moya/Plugins/CredentialsPlugin.swift | 22 + .../Moya/Plugins/NetworkActivityPlugin.swift | 31 + .../Moya/Plugins/NetworkLoggerPlugin.swift | 114 ++ .../Pods/Moya/Sources/Moya/Response.swift | 192 +++ .../Pods/Moya/Sources/Moya/TargetType.swift | 44 + .../Pods/Moya/Sources/Moya/Task.swift | 41 + .../Pods/Moya/Sources/Moya/URL+Moya.swift | 16 + .../Sources/Moya/URLRequest+Encoding.swift | 28 + .../Moya/Sources/Moya/ValidationType.swift | 47 + .../Pods/Pods.xcodeproj/project.pbxproj | 1533 +++++++++++++++++ Santander-Test/Pods/Result/LICENSE | 21 + Santander-Test/Pods/Result/README.md | 112 ++ .../Pods/Result/Result/AnyError.swift | 46 + .../Pods/Result/Result/NoError.swift | 10 + .../Pods/Result/Result/Result.swift | 229 +++ .../Pods/Result/Result/ResultProtocol.swift | 152 ++ .../Alamofire/Alamofire-Info.plist | 26 + .../Alamofire/Alamofire-dummy.m | 5 + .../Alamofire/Alamofire-prefix.pch | 12 + .../Alamofire/Alamofire-umbrella.h | 16 + .../Alamofire/Alamofire.modulemap | 6 + .../Alamofire/Alamofire.xcconfig | 9 + .../Target Support Files/Moya/Moya-Info.plist | 26 + .../Target Support Files/Moya/Moya-dummy.m | 5 + .../Target Support Files/Moya/Moya-prefix.pch | 12 + .../Target Support Files/Moya/Moya-umbrella.h | 16 + .../Target Support Files/Moya/Moya.modulemap | 6 + .../Target Support Files/Moya/Moya.xcconfig | 10 + .../Pods-Santander-Test-Info.plist | 26 + ...s-Santander-Test-acknowledgements.markdown | 75 + ...Pods-Santander-Test-acknowledgements.plist | 119 ++ .../Pods-Santander-Test-dummy.m | 5 + .../Pods-Santander-Test-frameworks.sh | 167 ++ .../Pods-Santander-Test-umbrella.h | 16 + .../Pods-Santander-Test.debug.xcconfig | 11 + .../Pods-Santander-Test.modulemap | 6 + .../Pods-Santander-Test.release.xcconfig | 11 + .../Pods-Santander-TestTests-Info.plist | 26 + ...tander-TestTests-acknowledgements.markdown | 3 + ...Santander-TestTests-acknowledgements.plist | 29 + .../Pods-Santander-TestTests-dummy.m | 5 + .../Pods-Santander-TestTests-umbrella.h | 16 + .../Pods-Santander-TestTests.debug.xcconfig | 9 + .../Pods-Santander-TestTests.modulemap | 6 + .../Pods-Santander-TestTests.release.xcconfig | 9 + .../Pods-Santander-TestUITests-Info.plist | 26 + ...nder-TestUITests-acknowledgements.markdown | 3 + ...ntander-TestUITests-acknowledgements.plist | 29 + .../Pods-Santander-TestUITests-dummy.m | 5 + .../Pods-Santander-TestUITests-umbrella.h | 16 + .../Pods-Santander-TestUITests.debug.xcconfig | 9 + .../Pods-Santander-TestUITests.modulemap | 6 + ...ods-Santander-TestUITests.release.xcconfig | 9 + .../Result/Result-Info.plist | 26 + .../Result/Result-dummy.m | 5 + .../Result/Result-prefix.pch | 12 + .../Result/Result-umbrella.h | 16 + .../Result/Result.modulemap | 6 + .../Result/Result.xcconfig | 9 + .../Santander-Test.xcodeproj/project.pbxproj | 780 +++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../Santander-Test/AppDelegate.swift | 46 + .../AppIcon.appiconset/Contents.json | 98 ++ .../Assets.xcassets/Contents.json | 6 + .../Base.lproj/LaunchScreen.storyboard | 25 + .../Santander-Test/Base.lproj/Main.storyboard | 24 + Santander-Test/Santander-Test/Info.plist | 45 + .../Santander-Test/Models/FormCell.swift | 24 + .../Santander-Test/Models/Fund.swift | 59 + .../Supporting Files/Constants.swift | 13 + .../FundsServiceApi/FundsServiceApi.swift | 59 + .../FundsServiceApiManager.swift | 51 + .../Santander-Test/ViewController.swift | 30 + Santander-Test/Santander-TestTests/Info.plist | 22 + .../Santander_TestTests.swift | 34 + .../Santander-TestUITests/Info.plist | 22 + .../Santander_TestUITests.swift | 34 + 117 files changed, 14115 insertions(+) create mode 100644 Santander-Test/Podfile create mode 100644 Santander-Test/Podfile.lock create mode 100644 Santander-Test/Pods/Alamofire/LICENSE create mode 100644 Santander-Test/Pods/Alamofire/README.md create mode 100644 Santander-Test/Pods/Alamofire/Source/AFError.swift create mode 100644 Santander-Test/Pods/Alamofire/Source/Alamofire.swift create mode 100644 Santander-Test/Pods/Alamofire/Source/DispatchQueue+Alamofire.swift create mode 100644 Santander-Test/Pods/Alamofire/Source/MultipartFormData.swift create mode 100644 Santander-Test/Pods/Alamofire/Source/NetworkReachabilityManager.swift create mode 100644 Santander-Test/Pods/Alamofire/Source/Notifications.swift create mode 100644 Santander-Test/Pods/Alamofire/Source/ParameterEncoding.swift create mode 100644 Santander-Test/Pods/Alamofire/Source/Request.swift create mode 100644 Santander-Test/Pods/Alamofire/Source/Response.swift create mode 100644 Santander-Test/Pods/Alamofire/Source/ResponseSerialization.swift create mode 100644 Santander-Test/Pods/Alamofire/Source/Result.swift create mode 100644 Santander-Test/Pods/Alamofire/Source/ServerTrustPolicy.swift create mode 100644 Santander-Test/Pods/Alamofire/Source/SessionDelegate.swift create mode 100644 Santander-Test/Pods/Alamofire/Source/SessionManager.swift create mode 100644 Santander-Test/Pods/Alamofire/Source/TaskDelegate.swift create mode 100644 Santander-Test/Pods/Alamofire/Source/Timeline.swift create mode 100644 Santander-Test/Pods/Alamofire/Source/Validation.swift create mode 100644 Santander-Test/Pods/Manifest.lock create mode 100644 Santander-Test/Pods/Moya/License.md create mode 100644 Santander-Test/Pods/Moya/Readme.md create mode 100644 Santander-Test/Pods/Moya/Sources/Moya/AnyEncodable.swift create mode 100644 Santander-Test/Pods/Moya/Sources/Moya/Cancellable.swift create mode 100755 Santander-Test/Pods/Moya/Sources/Moya/Endpoint.swift create mode 100644 Santander-Test/Pods/Moya/Sources/Moya/Image.swift create mode 100644 Santander-Test/Pods/Moya/Sources/Moya/Moya+Alamofire.swift create mode 100644 Santander-Test/Pods/Moya/Sources/Moya/MoyaError.swift create mode 100644 Santander-Test/Pods/Moya/Sources/Moya/MoyaProvider+Defaults.swift create mode 100644 Santander-Test/Pods/Moya/Sources/Moya/MoyaProvider+Internal.swift create mode 100755 Santander-Test/Pods/Moya/Sources/Moya/MoyaProvider.swift create mode 100644 Santander-Test/Pods/Moya/Sources/Moya/MultiTarget.swift create mode 100644 Santander-Test/Pods/Moya/Sources/Moya/MultipartFormData.swift create mode 100644 Santander-Test/Pods/Moya/Sources/Moya/Plugin.swift create mode 100644 Santander-Test/Pods/Moya/Sources/Moya/Plugins/AccessTokenPlugin.swift create mode 100644 Santander-Test/Pods/Moya/Sources/Moya/Plugins/CredentialsPlugin.swift create mode 100644 Santander-Test/Pods/Moya/Sources/Moya/Plugins/NetworkActivityPlugin.swift create mode 100644 Santander-Test/Pods/Moya/Sources/Moya/Plugins/NetworkLoggerPlugin.swift create mode 100644 Santander-Test/Pods/Moya/Sources/Moya/Response.swift create mode 100644 Santander-Test/Pods/Moya/Sources/Moya/TargetType.swift create mode 100644 Santander-Test/Pods/Moya/Sources/Moya/Task.swift create mode 100644 Santander-Test/Pods/Moya/Sources/Moya/URL+Moya.swift create mode 100644 Santander-Test/Pods/Moya/Sources/Moya/URLRequest+Encoding.swift create mode 100644 Santander-Test/Pods/Moya/Sources/Moya/ValidationType.swift create mode 100644 Santander-Test/Pods/Pods.xcodeproj/project.pbxproj create mode 100644 Santander-Test/Pods/Result/LICENSE create mode 100644 Santander-Test/Pods/Result/README.md create mode 100644 Santander-Test/Pods/Result/Result/AnyError.swift create mode 100644 Santander-Test/Pods/Result/Result/NoError.swift create mode 100644 Santander-Test/Pods/Result/Result/Result.swift create mode 100644 Santander-Test/Pods/Result/Result/ResultProtocol.swift create mode 100644 Santander-Test/Pods/Target Support Files/Alamofire/Alamofire-Info.plist create mode 100644 Santander-Test/Pods/Target Support Files/Alamofire/Alamofire-dummy.m create mode 100644 Santander-Test/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch create mode 100644 Santander-Test/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h create mode 100644 Santander-Test/Pods/Target Support Files/Alamofire/Alamofire.modulemap create mode 100644 Santander-Test/Pods/Target Support Files/Alamofire/Alamofire.xcconfig create mode 100644 Santander-Test/Pods/Target Support Files/Moya/Moya-Info.plist create mode 100644 Santander-Test/Pods/Target Support Files/Moya/Moya-dummy.m create mode 100644 Santander-Test/Pods/Target Support Files/Moya/Moya-prefix.pch create mode 100644 Santander-Test/Pods/Target Support Files/Moya/Moya-umbrella.h create mode 100644 Santander-Test/Pods/Target Support Files/Moya/Moya.modulemap create mode 100644 Santander-Test/Pods/Target Support Files/Moya/Moya.xcconfig create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-Info.plist create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.markdown create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.plist create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-dummy.m create mode 100755 Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-frameworks.sh create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-umbrella.h create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.modulemap create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.release.xcconfig create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-Info.plist create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-acknowledgements.markdown create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-acknowledgements.plist create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-dummy.m create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-umbrella.h create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.debug.xcconfig create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.modulemap create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.release.xcconfig create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-Info.plist create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-acknowledgements.markdown create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-acknowledgements.plist create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-dummy.m create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-umbrella.h create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.debug.xcconfig create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.modulemap create mode 100644 Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.release.xcconfig create mode 100644 Santander-Test/Pods/Target Support Files/Result/Result-Info.plist create mode 100644 Santander-Test/Pods/Target Support Files/Result/Result-dummy.m create mode 100644 Santander-Test/Pods/Target Support Files/Result/Result-prefix.pch create mode 100644 Santander-Test/Pods/Target Support Files/Result/Result-umbrella.h create mode 100644 Santander-Test/Pods/Target Support Files/Result/Result.modulemap create mode 100644 Santander-Test/Pods/Target Support Files/Result/Result.xcconfig create mode 100644 Santander-Test/Santander-Test.xcodeproj/project.pbxproj create mode 100644 Santander-Test/Santander-Test.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 Santander-Test/Santander-Test.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Santander-Test/Santander-Test.xcworkspace/contents.xcworkspacedata create mode 100644 Santander-Test/Santander-Test.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 Santander-Test/Santander-Test/AppDelegate.swift create mode 100644 Santander-Test/Santander-Test/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Santander-Test/Santander-Test/Assets.xcassets/Contents.json create mode 100644 Santander-Test/Santander-Test/Base.lproj/LaunchScreen.storyboard create mode 100644 Santander-Test/Santander-Test/Base.lproj/Main.storyboard create mode 100644 Santander-Test/Santander-Test/Info.plist create mode 100644 Santander-Test/Santander-Test/Models/FormCell.swift create mode 100644 Santander-Test/Santander-Test/Models/Fund.swift create mode 100644 Santander-Test/Santander-Test/Supporting Files/Constants.swift create mode 100644 Santander-Test/Santander-Test/Supporting Files/FundsServiceApi/FundsServiceApi.swift create mode 100644 Santander-Test/Santander-Test/Supporting Files/FundsServiceApi/FundsServiceApiManager.swift create mode 100644 Santander-Test/Santander-Test/ViewController.swift create mode 100644 Santander-Test/Santander-TestTests/Info.plist create mode 100644 Santander-Test/Santander-TestTests/Santander_TestTests.swift create mode 100644 Santander-Test/Santander-TestUITests/Info.plist create mode 100644 Santander-Test/Santander-TestUITests/Santander_TestUITests.swift diff --git a/Santander-Test/Podfile b/Santander-Test/Podfile new file mode 100644 index 00000000..40dfb597 --- /dev/null +++ b/Santander-Test/Podfile @@ -0,0 +1,22 @@ +# Uncomment the next line to define a global platform for your project +# platform :ios, '9.0' + +target 'Santander-Test' do + # Comment the next line if you're not using Swift and don't want to use dynamic frameworks + use_frameworks! + + # Pods for Santander-Test + + pod 'Moya' + + target 'Santander-TestTests' do + inherit! :search_paths + # Pods for testing + end + + target 'Santander-TestUITests' do + inherit! :search_paths + # Pods for testing + end + +end diff --git a/Santander-Test/Podfile.lock b/Santander-Test/Podfile.lock new file mode 100644 index 00000000..f4dcb540 --- /dev/null +++ b/Santander-Test/Podfile.lock @@ -0,0 +1,26 @@ +PODS: + - Alamofire (4.8.1) + - Moya (12.0.1): + - Moya/Core (= 12.0.1) + - Moya/Core (12.0.1): + - Alamofire (~> 4.1) + - Result (~> 4.0) + - Result (4.1.0) + +DEPENDENCIES: + - Moya + +SPEC REPOS: + https://github.com/cocoapods/specs.git: + - Alamofire + - Moya + - Result + +SPEC CHECKSUMS: + Alamofire: 16ce2c353fb72865124ddae8a57c5942388f4f11 + Moya: cf730b3cd9e005401ef37a85143aa141a12fd38f + Result: bd966fac789cc6c1563440b348ab2598cc24d5c7 + +PODFILE CHECKSUM: 5aa60ad57cd32255f2a920092a32388ee9261b99 + +COCOAPODS: 1.6.0 diff --git a/Santander-Test/Pods/Alamofire/LICENSE b/Santander-Test/Pods/Alamofire/LICENSE new file mode 100644 index 00000000..38a301a1 --- /dev/null +++ b/Santander-Test/Pods/Alamofire/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) + +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. diff --git a/Santander-Test/Pods/Alamofire/README.md b/Santander-Test/Pods/Alamofire/README.md new file mode 100644 index 00000000..26e364a8 --- /dev/null +++ b/Santander-Test/Pods/Alamofire/README.md @@ -0,0 +1,243 @@ +![Alamofire: Elegant Networking in Swift](https://raw.githubusercontent.com/Alamofire/Alamofire/master/alamofire.png) + +[![Build Status](https://travis-ci.org/Alamofire/Alamofire.svg?branch=master)](https://travis-ci.org/Alamofire/Alamofire) +[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/Alamofire.svg)](https://img.shields.io/cocoapods/v/Alamofire.svg) +[![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) +[![Platform](https://img.shields.io/cocoapods/p/Alamofire.svg?style=flat)](https://alamofire.github.io/Alamofire) +[![Twitter](https://img.shields.io/badge/twitter-@AlamofireSF-blue.svg?style=flat)](https://twitter.com/AlamofireSF) +[![Gitter](https://badges.gitter.im/Alamofire/Alamofire.svg)](https://gitter.im/Alamofire/Alamofire?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +Alamofire is an HTTP networking library written in Swift. + +- [Features](#features) +- [Component Libraries](#component-libraries) +- [Requirements](#requirements) +- [Migration Guides](#migration-guides) +- [Communication](#communication) +- [Installation](#installation) +- [Usage](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md) + - **Intro -** [Making a Request](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#making-a-request), [Response Handling](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#response-handling), [Response Validation](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#response-validation), [Response Caching](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#response-caching) + - **HTTP -** [HTTP Methods](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#http-methods), [Parameter Encoding](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#parameter-encoding), [HTTP Headers](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#http-headers), [Authentication](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#authentication) + - **Large Data -** [Downloading Data to a File](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#downloading-data-to-a-file), [Uploading Data to a Server](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#uploading-data-to-a-server) + - **Tools -** [Statistical Metrics](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#statistical-metrics), [cURL Command Output](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Usage.md#curl-command-output) +- [Advanced Usage](https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md) + - **URL Session -** [Session Manager](https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md#session-manager), [Session Delegate](https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md#session-delegate), [Request](https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md#request) + - **Routing -** [Routing Requests](https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md#routing-requests), [Adapting and Retrying Requests](https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md#adapting-and-retrying-requests) + - **Model Objects -** [Custom Response Serialization](https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md#custom-response-serialization) + - **Connection -** [Security](https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md#security), [Network Reachability](https://github.com/Alamofire/Alamofire/blob/master/Documentation/AdvancedUsage.md#network-reachability) +- [Open Radars](#open-radars) +- [FAQ](#faq) +- [Credits](#credits) +- [Donations](#donations) +- [License](#license) + +## Features + +- [x] Chainable Request / Response Methods +- [x] URL / JSON / plist Parameter Encoding +- [x] Upload File / Data / Stream / MultipartFormData +- [x] Download File using Request or Resume Data +- [x] Authentication with URLCredential +- [x] HTTP Response Validation +- [x] Upload and Download Progress Closures with Progress +- [x] cURL Command Output +- [x] Dynamically Adapt and Retry Requests +- [x] TLS Certificate and Public Key Pinning +- [x] Network Reachability +- [x] Comprehensive Unit and Integration Test Coverage +- [x] [Complete Documentation](https://alamofire.github.io/Alamofire) + +## Component Libraries + +In order to keep Alamofire focused specifically on core networking implementations, additional component libraries have been created by the [Alamofire Software Foundation](https://github.com/Alamofire/Foundation) to bring additional functionality to the Alamofire ecosystem. + +- [AlamofireImage](https://github.com/Alamofire/AlamofireImage) - An image library including image response serializers, `UIImage` and `UIImageView` extensions, custom image filters, an auto-purging in-memory cache and a priority-based image downloading system. +- [AlamofireNetworkActivityIndicator](https://github.com/Alamofire/AlamofireNetworkActivityIndicator) - Controls the visibility of the network activity indicator on iOS using Alamofire. It contains configurable delay timers to help mitigate flicker and can support `URLSession` instances not managed by Alamofire. + +## Requirements + +- iOS 8.0+ / macOS 10.10+ / tvOS 9.0+ / watchOS 2.0+ +- Xcode 8.3+ +- Swift 3.1+ + +## Migration Guides + +- [Alamofire 4.0 Migration Guide](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Alamofire%204.0%20Migration%20Guide.md) +- [Alamofire 3.0 Migration Guide](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Alamofire%203.0%20Migration%20Guide.md) +- [Alamofire 2.0 Migration Guide](https://github.com/Alamofire/Alamofire/blob/master/Documentation/Alamofire%202.0%20Migration%20Guide.md) + +## Communication +- If you **need help with making network requests**, use [Stack Overflow](https://stackoverflow.com/questions/tagged/alamofire) and tag `alamofire`. +- If you need to **find or understand an API**, check [our documentation](http://alamofire.github.io/Alamofire/) or [Apple's documentation for `URLSession`](https://developer.apple.com/documentation/foundation/url_loading_system), on top of which Alamofire is built. +- If you need **help with an Alamofire feature**, use [our forum on swift.org](https://forums.swift.org/c/related-projects/alamofire). +- If you'd like to **discuss Alamofire best practices**, use [our forum on swift.org](https://forums.swift.org/c/related-projects/alamofire). +- If you'd like to **discuss a feature request**, use [our forum on swift.org](https://forums.swift.org/c/related-projects/alamofire). +- If you **found a bug**, open an issue and follow the guide. The more detail the better! +- If you **want to contribute**, submit a pull request. + +## Installation + +### CocoaPods + +[CocoaPods](https://cocoapods.org) is a dependency manager for Cocoa projects. You can install it with the following command: + +```bash +$ gem install cocoapods +``` + +> CocoaPods 1.1+ is required to build Alamofire 4.0+. + +To integrate Alamofire into your Xcode project using CocoaPods, specify it in your `Podfile`: + +```ruby +source 'https://github.com/CocoaPods/Specs.git' +platform :ios, '10.0' +use_frameworks! + +target '' do + pod 'Alamofire', '~> 4.7' +end +``` + +Then, run the following command: + +```bash +$ pod install +``` + +### Carthage + +[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. + +You can install Carthage with [Homebrew](https://brew.sh/) using the following command: + +```bash +$ brew update +$ brew install carthage +``` + +To integrate Alamofire into your Xcode project using Carthage, specify it in your `Cartfile`: + +```ogdl +github "Alamofire/Alamofire" ~> 4.7 +``` + +Run `carthage update` to build the framework and drag the built `Alamofire.framework` into your Xcode project. + +### Swift Package Manager + +The [Swift Package Manager](https://swift.org/package-manager/) is a tool for automating the distribution of Swift code and is integrated into the `swift` compiler. It is in early development, but Alamofire does support its use on supported platforms. + +Once you have your Swift package set up, adding Alamofire as a dependency is as easy as adding it to the `dependencies` value of your `Package.swift`. + +#### Swift 3 + +```swift +dependencies: [ + .Package(url: "https://github.com/Alamofire/Alamofire.git", majorVersion: 4) +] +``` + +#### Swift 4 + +```swift +dependencies: [ + .package(url: "https://github.com/Alamofire/Alamofire.git", from: "4.0.0") +] +``` + +### Manually + +If you prefer not to use any of the aforementioned dependency managers, you can integrate Alamofire into your project manually. + +#### Embedded Framework + +- Open up Terminal, `cd` into your top-level project directory, and run the following command "if" your project is not initialized as a git repository: + + ```bash + $ git init + ``` + +- Add Alamofire as a git [submodule](https://git-scm.com/docs/git-submodule) by running the following command: + + ```bash + $ git submodule add https://github.com/Alamofire/Alamofire.git + ``` + +- Open the new `Alamofire` folder, and drag the `Alamofire.xcodeproj` into the Project Navigator of your application's Xcode project. + + > It should appear nested underneath your application's blue project icon. Whether it is above or below all the other Xcode groups does not matter. + +- Select the `Alamofire.xcodeproj` in the Project Navigator and verify the deployment target matches that of your application target. +- Next, select your application project in the Project Navigator (blue project icon) to navigate to the target configuration window and select the application target under the "Targets" heading in the sidebar. +- In the tab bar at the top of that window, open the "General" panel. +- Click on the `+` button under the "Embedded Binaries" section. +- You will see two different `Alamofire.xcodeproj` folders each with two different versions of the `Alamofire.framework` nested inside a `Products` folder. + + > It does not matter which `Products` folder you choose from, but it does matter whether you choose the top or bottom `Alamofire.framework`. + +- Select the top `Alamofire.framework` for iOS and the bottom one for OS X. + + > You can verify which one you selected by inspecting the build log for your project. The build target for `Alamofire` will be listed as either `Alamofire iOS`, `Alamofire macOS`, `Alamofire tvOS` or `Alamofire watchOS`. + +- And that's it! + + > The `Alamofire.framework` is automagically added as a target dependency, linked framework and embedded framework in a copy files build phase which is all you need to build on the simulator and a device. + +## Open Radars + +The following radars have some effect on the current implementation of Alamofire. + +- [`rdar://21349340`](http://www.openradar.me/radar?id=5517037090635776) - Compiler throwing warning due to toll-free bridging issue in test case +- `rdar://26870455` - Background URL Session Configurations do not work in the simulator +- `rdar://26849668` - Some URLProtocol APIs do not properly handle `URLRequest` +- [`rdar://36082113`](http://openradar.appspot.com/radar?id=4942308441063424) - `URLSessionTaskMetrics` failing to link on watchOS 3.0+ + +## Resolved Radars + +The following radars have been resolved over time after being filed against the Alamofire project. + +- [`rdar://26761490`](http://www.openradar.me/radar?id=5010235949318144) - Swift string interpolation causing memory leak with common usage (Resolved on 9/1/17 in Xcode 9 beta 6). + +## FAQ + +### What's the origin of the name Alamofire? + +Alamofire is named after the [Alamo Fire flower](https://aggie-horticulture.tamu.edu/wildseed/alamofire.html), a hybrid variant of the Bluebonnet, the official state flower of Texas. + +### What logic belongs in a Router vs. a Request Adapter? + +Simple, static data such as paths, parameters and common headers belong in the `Router`. Dynamic data such as an `Authorization` header whose value can changed based on an authentication system belongs in a `RequestAdapter`. + +The reason the dynamic data MUST be placed into the `RequestAdapter` is to support retry operations. When a `Request` is retried, the original request is not rebuilt meaning the `Router` will not be called again. The `RequestAdapter` is called again allowing the dynamic data to be updated on the original request before retrying the `Request`. + +## Credits + +Alamofire is owned and maintained by the [Alamofire Software Foundation](http://alamofire.org). You can follow them on Twitter at [@AlamofireSF](https://twitter.com/AlamofireSF) for project updates and releases. + +### Security Disclosure + +If you believe you have identified a security vulnerability with Alamofire, you should report it as soon as possible via email to security@alamofire.org. Please do not post it to a public issue tracker. + +## Donations + +The [ASF](https://github.com/Alamofire/Foundation#members) is looking to raise money to officially stay registered as a federal non-profit organization. +Registering will allow us members to gain some legal protections and also allow us to put donations to use, tax free. +Donating to the ASF will enable us to: + +- Pay our yearly legal fees to keep the non-profit in good status +- Pay for our mail servers to help us stay on top of all questions and security issues +- Potentially fund test servers to make it easier for us to test the edge cases +- Potentially fund developers to work on one of our projects full-time + +The community adoption of the ASF libraries has been amazing. +We are greatly humbled by your enthusiasm around the projects, and want to continue to do everything we can to move the needle forward. +With your continued support, the ASF will be able to improve its reach and also provide better legal safety for the core members. +If you use any of our libraries for work, see if your employers would be interested in donating. +Any amount you can donate today to help us reach our goal would be greatly appreciated. + +[![paypal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=W34WPEE74APJQ) + +## License + +Alamofire is released under the MIT license. [See LICENSE](https://github.com/Alamofire/Alamofire/blob/master/LICENSE) for details. diff --git a/Santander-Test/Pods/Alamofire/Source/AFError.swift b/Santander-Test/Pods/Alamofire/Source/AFError.swift new file mode 100644 index 00000000..b163f603 --- /dev/null +++ b/Santander-Test/Pods/Alamofire/Source/AFError.swift @@ -0,0 +1,460 @@ +// +// AFError.swift +// +// Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) +// +// 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 Foundation + +/// `AFError` is the error type returned by Alamofire. It encompasses a few different types of errors, each with +/// their own associated reasons. +/// +/// - invalidURL: Returned when a `URLConvertible` type fails to create a valid `URL`. +/// - parameterEncodingFailed: Returned when a parameter encoding object throws an error during the encoding process. +/// - multipartEncodingFailed: Returned when some step in the multipart encoding process fails. +/// - responseValidationFailed: Returned when a `validate()` call fails. +/// - responseSerializationFailed: Returned when a response serializer encounters an error in the serialization process. +public enum AFError: Error { + /// The underlying reason the parameter encoding error occurred. + /// + /// - missingURL: The URL request did not have a URL to encode. + /// - jsonEncodingFailed: JSON serialization failed with an underlying system error during the + /// encoding process. + /// - propertyListEncodingFailed: Property list serialization failed with an underlying system error during + /// encoding process. + public enum ParameterEncodingFailureReason { + case missingURL + case jsonEncodingFailed(error: Error) + case propertyListEncodingFailed(error: Error) + } + + /// The underlying reason the multipart encoding error occurred. + /// + /// - bodyPartURLInvalid: The `fileURL` provided for reading an encodable body part isn't a + /// file URL. + /// - bodyPartFilenameInvalid: The filename of the `fileURL` provided has either an empty + /// `lastPathComponent` or `pathExtension. + /// - bodyPartFileNotReachable: The file at the `fileURL` provided was not reachable. + /// - bodyPartFileNotReachableWithError: Attempting to check the reachability of the `fileURL` provided threw + /// an error. + /// - bodyPartFileIsDirectory: The file at the `fileURL` provided is actually a directory. + /// - bodyPartFileSizeNotAvailable: The size of the file at the `fileURL` provided was not returned by + /// the system. + /// - bodyPartFileSizeQueryFailedWithError: The attempt to find the size of the file at the `fileURL` provided + /// threw an error. + /// - bodyPartInputStreamCreationFailed: An `InputStream` could not be created for the provided `fileURL`. + /// - outputStreamCreationFailed: An `OutputStream` could not be created when attempting to write the + /// encoded data to disk. + /// - outputStreamFileAlreadyExists: The encoded body data could not be writtent disk because a file + /// already exists at the provided `fileURL`. + /// - outputStreamURLInvalid: The `fileURL` provided for writing the encoded body data to disk is + /// not a file URL. + /// - outputStreamWriteFailed: The attempt to write the encoded body data to disk failed with an + /// underlying error. + /// - inputStreamReadFailed: The attempt to read an encoded body part `InputStream` failed with + /// underlying system error. + public enum MultipartEncodingFailureReason { + case bodyPartURLInvalid(url: URL) + case bodyPartFilenameInvalid(in: URL) + case bodyPartFileNotReachable(at: URL) + case bodyPartFileNotReachableWithError(atURL: URL, error: Error) + case bodyPartFileIsDirectory(at: URL) + case bodyPartFileSizeNotAvailable(at: URL) + case bodyPartFileSizeQueryFailedWithError(forURL: URL, error: Error) + case bodyPartInputStreamCreationFailed(for: URL) + + case outputStreamCreationFailed(for: URL) + case outputStreamFileAlreadyExists(at: URL) + case outputStreamURLInvalid(url: URL) + case outputStreamWriteFailed(error: Error) + + case inputStreamReadFailed(error: Error) + } + + /// The underlying reason the response validation error occurred. + /// + /// - dataFileNil: The data file containing the server response did not exist. + /// - dataFileReadFailed: The data file containing the server response could not be read. + /// - missingContentType: The response did not contain a `Content-Type` and the `acceptableContentTypes` + /// provided did not contain wildcard type. + /// - unacceptableContentType: The response `Content-Type` did not match any type in the provided + /// `acceptableContentTypes`. + /// - unacceptableStatusCode: The response status code was not acceptable. + public enum ResponseValidationFailureReason { + case dataFileNil + case dataFileReadFailed(at: URL) + case missingContentType(acceptableContentTypes: [String]) + case unacceptableContentType(acceptableContentTypes: [String], responseContentType: String) + case unacceptableStatusCode(code: Int) + } + + /// The underlying reason the response serialization error occurred. + /// + /// - inputDataNil: The server response contained no data. + /// - inputDataNilOrZeroLength: The server response contained no data or the data was zero length. + /// - inputFileNil: The file containing the server response did not exist. + /// - inputFileReadFailed: The file containing the server response could not be read. + /// - stringSerializationFailed: String serialization failed using the provided `String.Encoding`. + /// - jsonSerializationFailed: JSON serialization failed with an underlying system error. + /// - propertyListSerializationFailed: Property list serialization failed with an underlying system error. + public enum ResponseSerializationFailureReason { + case inputDataNil + case inputDataNilOrZeroLength + case inputFileNil + case inputFileReadFailed(at: URL) + case stringSerializationFailed(encoding: String.Encoding) + case jsonSerializationFailed(error: Error) + case propertyListSerializationFailed(error: Error) + } + + case invalidURL(url: URLConvertible) + case parameterEncodingFailed(reason: ParameterEncodingFailureReason) + case multipartEncodingFailed(reason: MultipartEncodingFailureReason) + case responseValidationFailed(reason: ResponseValidationFailureReason) + case responseSerializationFailed(reason: ResponseSerializationFailureReason) +} + +// MARK: - Adapt Error + +struct AdaptError: Error { + let error: Error +} + +extension Error { + var underlyingAdaptError: Error? { return (self as? AdaptError)?.error } +} + +// MARK: - Error Booleans + +extension AFError { + /// Returns whether the AFError is an invalid URL error. + public var isInvalidURLError: Bool { + if case .invalidURL = self { return true } + return false + } + + /// Returns whether the AFError is a parameter encoding error. When `true`, the `underlyingError` property will + /// contain the associated value. + public var isParameterEncodingError: Bool { + if case .parameterEncodingFailed = self { return true } + return false + } + + /// Returns whether the AFError is a multipart encoding error. When `true`, the `url` and `underlyingError` properties + /// will contain the associated values. + public var isMultipartEncodingError: Bool { + if case .multipartEncodingFailed = self { return true } + return false + } + + /// Returns whether the `AFError` is a response validation error. When `true`, the `acceptableContentTypes`, + /// `responseContentType`, and `responseCode` properties will contain the associated values. + public var isResponseValidationError: Bool { + if case .responseValidationFailed = self { return true } + return false + } + + /// Returns whether the `AFError` is a response serialization error. When `true`, the `failedStringEncoding` and + /// `underlyingError` properties will contain the associated values. + public var isResponseSerializationError: Bool { + if case .responseSerializationFailed = self { return true } + return false + } +} + +// MARK: - Convenience Properties + +extension AFError { + /// The `URLConvertible` associated with the error. + public var urlConvertible: URLConvertible? { + switch self { + case .invalidURL(let url): + return url + default: + return nil + } + } + + /// The `URL` associated with the error. + public var url: URL? { + switch self { + case .multipartEncodingFailed(let reason): + return reason.url + default: + return nil + } + } + + /// The `Error` returned by a system framework associated with a `.parameterEncodingFailed`, + /// `.multipartEncodingFailed` or `.responseSerializationFailed` error. + public var underlyingError: Error? { + switch self { + case .parameterEncodingFailed(let reason): + return reason.underlyingError + case .multipartEncodingFailed(let reason): + return reason.underlyingError + case .responseSerializationFailed(let reason): + return reason.underlyingError + default: + return nil + } + } + + /// The acceptable `Content-Type`s of a `.responseValidationFailed` error. + public var acceptableContentTypes: [String]? { + switch self { + case .responseValidationFailed(let reason): + return reason.acceptableContentTypes + default: + return nil + } + } + + /// The response `Content-Type` of a `.responseValidationFailed` error. + public var responseContentType: String? { + switch self { + case .responseValidationFailed(let reason): + return reason.responseContentType + default: + return nil + } + } + + /// The response code of a `.responseValidationFailed` error. + public var responseCode: Int? { + switch self { + case .responseValidationFailed(let reason): + return reason.responseCode + default: + return nil + } + } + + /// The `String.Encoding` associated with a failed `.stringResponse()` call. + public var failedStringEncoding: String.Encoding? { + switch self { + case .responseSerializationFailed(let reason): + return reason.failedStringEncoding + default: + return nil + } + } +} + +extension AFError.ParameterEncodingFailureReason { + var underlyingError: Error? { + switch self { + case .jsonEncodingFailed(let error), .propertyListEncodingFailed(let error): + return error + default: + return nil + } + } +} + +extension AFError.MultipartEncodingFailureReason { + var url: URL? { + switch self { + case .bodyPartURLInvalid(let url), .bodyPartFilenameInvalid(let url), .bodyPartFileNotReachable(let url), + .bodyPartFileIsDirectory(let url), .bodyPartFileSizeNotAvailable(let url), + .bodyPartInputStreamCreationFailed(let url), .outputStreamCreationFailed(let url), + .outputStreamFileAlreadyExists(let url), .outputStreamURLInvalid(let url), + .bodyPartFileNotReachableWithError(let url, _), .bodyPartFileSizeQueryFailedWithError(let url, _): + return url + default: + return nil + } + } + + var underlyingError: Error? { + switch self { + case .bodyPartFileNotReachableWithError(_, let error), .bodyPartFileSizeQueryFailedWithError(_, let error), + .outputStreamWriteFailed(let error), .inputStreamReadFailed(let error): + return error + default: + return nil + } + } +} + +extension AFError.ResponseValidationFailureReason { + var acceptableContentTypes: [String]? { + switch self { + case .missingContentType(let types), .unacceptableContentType(let types, _): + return types + default: + return nil + } + } + + var responseContentType: String? { + switch self { + case .unacceptableContentType(_, let responseType): + return responseType + default: + return nil + } + } + + var responseCode: Int? { + switch self { + case .unacceptableStatusCode(let code): + return code + default: + return nil + } + } +} + +extension AFError.ResponseSerializationFailureReason { + var failedStringEncoding: String.Encoding? { + switch self { + case .stringSerializationFailed(let encoding): + return encoding + default: + return nil + } + } + + var underlyingError: Error? { + switch self { + case .jsonSerializationFailed(let error), .propertyListSerializationFailed(let error): + return error + default: + return nil + } + } +} + +// MARK: - Error Descriptions + +extension AFError: LocalizedError { + public var errorDescription: String? { + switch self { + case .invalidURL(let url): + return "URL is not valid: \(url)" + case .parameterEncodingFailed(let reason): + return reason.localizedDescription + case .multipartEncodingFailed(let reason): + return reason.localizedDescription + case .responseValidationFailed(let reason): + return reason.localizedDescription + case .responseSerializationFailed(let reason): + return reason.localizedDescription + } + } +} + +extension AFError.ParameterEncodingFailureReason { + var localizedDescription: String { + switch self { + case .missingURL: + return "URL request to encode was missing a URL" + case .jsonEncodingFailed(let error): + return "JSON could not be encoded because of error:\n\(error.localizedDescription)" + case .propertyListEncodingFailed(let error): + return "PropertyList could not be encoded because of error:\n\(error.localizedDescription)" + } + } +} + +extension AFError.MultipartEncodingFailureReason { + var localizedDescription: String { + switch self { + case .bodyPartURLInvalid(let url): + return "The URL provided is not a file URL: \(url)" + case .bodyPartFilenameInvalid(let url): + return "The URL provided does not have a valid filename: \(url)" + case .bodyPartFileNotReachable(let url): + return "The URL provided is not reachable: \(url)" + case .bodyPartFileNotReachableWithError(let url, let error): + return ( + "The system returned an error while checking the provided URL for " + + "reachability.\nURL: \(url)\nError: \(error)" + ) + case .bodyPartFileIsDirectory(let url): + return "The URL provided is a directory: \(url)" + case .bodyPartFileSizeNotAvailable(let url): + return "Could not fetch the file size from the provided URL: \(url)" + case .bodyPartFileSizeQueryFailedWithError(let url, let error): + return ( + "The system returned an error while attempting to fetch the file size from the " + + "provided URL.\nURL: \(url)\nError: \(error)" + ) + case .bodyPartInputStreamCreationFailed(let url): + return "Failed to create an InputStream for the provided URL: \(url)" + case .outputStreamCreationFailed(let url): + return "Failed to create an OutputStream for URL: \(url)" + case .outputStreamFileAlreadyExists(let url): + return "A file already exists at the provided URL: \(url)" + case .outputStreamURLInvalid(let url): + return "The provided OutputStream URL is invalid: \(url)" + case .outputStreamWriteFailed(let error): + return "OutputStream write failed with error: \(error)" + case .inputStreamReadFailed(let error): + return "InputStream read failed with error: \(error)" + } + } +} + +extension AFError.ResponseSerializationFailureReason { + var localizedDescription: String { + switch self { + case .inputDataNil: + return "Response could not be serialized, input data was nil." + case .inputDataNilOrZeroLength: + return "Response could not be serialized, input data was nil or zero length." + case .inputFileNil: + return "Response could not be serialized, input file was nil." + case .inputFileReadFailed(let url): + return "Response could not be serialized, input file could not be read: \(url)." + case .stringSerializationFailed(let encoding): + return "String could not be serialized with encoding: \(encoding)." + case .jsonSerializationFailed(let error): + return "JSON could not be serialized because of error:\n\(error.localizedDescription)" + case .propertyListSerializationFailed(let error): + return "PropertyList could not be serialized because of error:\n\(error.localizedDescription)" + } + } +} + +extension AFError.ResponseValidationFailureReason { + var localizedDescription: String { + switch self { + case .dataFileNil: + return "Response could not be validated, data file was nil." + case .dataFileReadFailed(let url): + return "Response could not be validated, data file could not be read: \(url)." + case .missingContentType(let types): + return ( + "Response Content-Type was missing and acceptable content types " + + "(\(types.joined(separator: ","))) do not match \"*/*\"." + ) + case .unacceptableContentType(let acceptableTypes, let responseType): + return ( + "Response Content-Type \"\(responseType)\" does not match any acceptable types: " + + "\(acceptableTypes.joined(separator: ","))." + ) + case .unacceptableStatusCode(let code): + return "Response status code was unacceptable: \(code)." + } + } +} diff --git a/Santander-Test/Pods/Alamofire/Source/Alamofire.swift b/Santander-Test/Pods/Alamofire/Source/Alamofire.swift new file mode 100644 index 00000000..20c3672f --- /dev/null +++ b/Santander-Test/Pods/Alamofire/Source/Alamofire.swift @@ -0,0 +1,465 @@ +// +// Alamofire.swift +// +// Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) +// +// 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 Foundation + +/// Types adopting the `URLConvertible` protocol can be used to construct URLs, which are then used to construct +/// URL requests. +public protocol URLConvertible { + /// Returns a URL that conforms to RFC 2396 or throws an `Error`. + /// + /// - throws: An `Error` if the type cannot be converted to a `URL`. + /// + /// - returns: A URL or throws an `Error`. + func asURL() throws -> URL +} + +extension String: URLConvertible { + /// Returns a URL if `self` represents a valid URL string that conforms to RFC 2396 or throws an `AFError`. + /// + /// - throws: An `AFError.invalidURL` if `self` is not a valid URL string. + /// + /// - returns: A URL or throws an `AFError`. + public func asURL() throws -> URL { + guard let url = URL(string: self) else { throw AFError.invalidURL(url: self) } + return url + } +} + +extension URL: URLConvertible { + /// Returns self. + public func asURL() throws -> URL { return self } +} + +extension URLComponents: URLConvertible { + /// Returns a URL if `url` is not nil, otherwise throws an `Error`. + /// + /// - throws: An `AFError.invalidURL` if `url` is `nil`. + /// + /// - returns: A URL or throws an `AFError`. + public func asURL() throws -> URL { + guard let url = url else { throw AFError.invalidURL(url: self) } + return url + } +} + +// MARK: - + +/// Types adopting the `URLRequestConvertible` protocol can be used to construct URL requests. +public protocol URLRequestConvertible { + /// Returns a URL request or throws if an `Error` was encountered. + /// + /// - throws: An `Error` if the underlying `URLRequest` is `nil`. + /// + /// - returns: A URL request. + func asURLRequest() throws -> URLRequest +} + +extension URLRequestConvertible { + /// The URL request. + public var urlRequest: URLRequest? { return try? asURLRequest() } +} + +extension URLRequest: URLRequestConvertible { + /// Returns a URL request or throws if an `Error` was encountered. + public func asURLRequest() throws -> URLRequest { return self } +} + +// MARK: - + +extension URLRequest { + /// Creates an instance with the specified `method`, `urlString` and `headers`. + /// + /// - parameter url: The URL. + /// - parameter method: The HTTP method. + /// - parameter headers: The HTTP headers. `nil` by default. + /// + /// - returns: The new `URLRequest` instance. + public init(url: URLConvertible, method: HTTPMethod, headers: HTTPHeaders? = nil) throws { + let url = try url.asURL() + + self.init(url: url) + + httpMethod = method.rawValue + + if let headers = headers { + for (headerField, headerValue) in headers { + setValue(headerValue, forHTTPHeaderField: headerField) + } + } + } + + func adapt(using adapter: RequestAdapter?) throws -> URLRequest { + guard let adapter = adapter else { return self } + return try adapter.adapt(self) + } +} + +// MARK: - Data Request + +/// Creates a `DataRequest` using the default `SessionManager` to retrieve the contents of the specified `url`, +/// `method`, `parameters`, `encoding` and `headers`. +/// +/// - parameter url: The URL. +/// - parameter method: The HTTP method. `.get` by default. +/// - parameter parameters: The parameters. `nil` by default. +/// - parameter encoding: The parameter encoding. `URLEncoding.default` by default. +/// - parameter headers: The HTTP headers. `nil` by default. +/// +/// - returns: The created `DataRequest`. +@discardableResult +public func request( + _ url: URLConvertible, + method: HTTPMethod = .get, + parameters: Parameters? = nil, + encoding: ParameterEncoding = URLEncoding.default, + headers: HTTPHeaders? = nil) + -> DataRequest +{ + return SessionManager.default.request( + url, + method: method, + parameters: parameters, + encoding: encoding, + headers: headers + ) +} + +/// Creates a `DataRequest` using the default `SessionManager` to retrieve the contents of a URL based on the +/// specified `urlRequest`. +/// +/// - parameter urlRequest: The URL request +/// +/// - returns: The created `DataRequest`. +@discardableResult +public func request(_ urlRequest: URLRequestConvertible) -> DataRequest { + return SessionManager.default.request(urlRequest) +} + +// MARK: - Download Request + +// MARK: URL Request + +/// Creates a `DownloadRequest` using the default `SessionManager` to retrieve the contents of the specified `url`, +/// `method`, `parameters`, `encoding`, `headers` and save them to the `destination`. +/// +/// If `destination` is not specified, the contents will remain in the temporary location determined by the +/// underlying URL session. +/// +/// - parameter url: The URL. +/// - parameter method: The HTTP method. `.get` by default. +/// - parameter parameters: The parameters. `nil` by default. +/// - parameter encoding: The parameter encoding. `URLEncoding.default` by default. +/// - parameter headers: The HTTP headers. `nil` by default. +/// - parameter destination: The closure used to determine the destination of the downloaded file. `nil` by default. +/// +/// - returns: The created `DownloadRequest`. +@discardableResult +public func download( + _ url: URLConvertible, + method: HTTPMethod = .get, + parameters: Parameters? = nil, + encoding: ParameterEncoding = URLEncoding.default, + headers: HTTPHeaders? = nil, + to destination: DownloadRequest.DownloadFileDestination? = nil) + -> DownloadRequest +{ + return SessionManager.default.download( + url, + method: method, + parameters: parameters, + encoding: encoding, + headers: headers, + to: destination + ) +} + +/// Creates a `DownloadRequest` using the default `SessionManager` to retrieve the contents of a URL based on the +/// specified `urlRequest` and save them to the `destination`. +/// +/// If `destination` is not specified, the contents will remain in the temporary location determined by the +/// underlying URL session. +/// +/// - parameter urlRequest: The URL request. +/// - parameter destination: The closure used to determine the destination of the downloaded file. `nil` by default. +/// +/// - returns: The created `DownloadRequest`. +@discardableResult +public func download( + _ urlRequest: URLRequestConvertible, + to destination: DownloadRequest.DownloadFileDestination? = nil) + -> DownloadRequest +{ + return SessionManager.default.download(urlRequest, to: destination) +} + +// MARK: Resume Data + +/// Creates a `DownloadRequest` using the default `SessionManager` from the `resumeData` produced from a +/// previous request cancellation to retrieve the contents of the original request and save them to the `destination`. +/// +/// If `destination` is not specified, the contents will remain in the temporary location determined by the +/// underlying URL session. +/// +/// On the latest release of all the Apple platforms (iOS 10, macOS 10.12, tvOS 10, watchOS 3), `resumeData` is broken +/// on background URL session configurations. There's an underlying bug in the `resumeData` generation logic where the +/// data is written incorrectly and will always fail to resume the download. For more information about the bug and +/// possible workarounds, please refer to the following Stack Overflow post: +/// +/// - http://stackoverflow.com/a/39347461/1342462 +/// +/// - parameter resumeData: The resume data. This is an opaque data blob produced by `URLSessionDownloadTask` +/// when a task is cancelled. See `URLSession -downloadTask(withResumeData:)` for additional +/// information. +/// - parameter destination: The closure used to determine the destination of the downloaded file. `nil` by default. +/// +/// - returns: The created `DownloadRequest`. +@discardableResult +public func download( + resumingWith resumeData: Data, + to destination: DownloadRequest.DownloadFileDestination? = nil) + -> DownloadRequest +{ + return SessionManager.default.download(resumingWith: resumeData, to: destination) +} + +// MARK: - Upload Request + +// MARK: File + +/// Creates an `UploadRequest` using the default `SessionManager` from the specified `url`, `method` and `headers` +/// for uploading the `file`. +/// +/// - parameter file: The file to upload. +/// - parameter url: The URL. +/// - parameter method: The HTTP method. `.post` by default. +/// - parameter headers: The HTTP headers. `nil` by default. +/// +/// - returns: The created `UploadRequest`. +@discardableResult +public func upload( + _ fileURL: URL, + to url: URLConvertible, + method: HTTPMethod = .post, + headers: HTTPHeaders? = nil) + -> UploadRequest +{ + return SessionManager.default.upload(fileURL, to: url, method: method, headers: headers) +} + +/// Creates a `UploadRequest` using the default `SessionManager` from the specified `urlRequest` for +/// uploading the `file`. +/// +/// - parameter file: The file to upload. +/// - parameter urlRequest: The URL request. +/// +/// - returns: The created `UploadRequest`. +@discardableResult +public func upload(_ fileURL: URL, with urlRequest: URLRequestConvertible) -> UploadRequest { + return SessionManager.default.upload(fileURL, with: urlRequest) +} + +// MARK: Data + +/// Creates an `UploadRequest` using the default `SessionManager` from the specified `url`, `method` and `headers` +/// for uploading the `data`. +/// +/// - parameter data: The data to upload. +/// - parameter url: The URL. +/// - parameter method: The HTTP method. `.post` by default. +/// - parameter headers: The HTTP headers. `nil` by default. +/// +/// - returns: The created `UploadRequest`. +@discardableResult +public func upload( + _ data: Data, + to url: URLConvertible, + method: HTTPMethod = .post, + headers: HTTPHeaders? = nil) + -> UploadRequest +{ + return SessionManager.default.upload(data, to: url, method: method, headers: headers) +} + +/// Creates an `UploadRequest` using the default `SessionManager` from the specified `urlRequest` for +/// uploading the `data`. +/// +/// - parameter data: The data to upload. +/// - parameter urlRequest: The URL request. +/// +/// - returns: The created `UploadRequest`. +@discardableResult +public func upload(_ data: Data, with urlRequest: URLRequestConvertible) -> UploadRequest { + return SessionManager.default.upload(data, with: urlRequest) +} + +// MARK: InputStream + +/// Creates an `UploadRequest` using the default `SessionManager` from the specified `url`, `method` and `headers` +/// for uploading the `stream`. +/// +/// - parameter stream: The stream to upload. +/// - parameter url: The URL. +/// - parameter method: The HTTP method. `.post` by default. +/// - parameter headers: The HTTP headers. `nil` by default. +/// +/// - returns: The created `UploadRequest`. +@discardableResult +public func upload( + _ stream: InputStream, + to url: URLConvertible, + method: HTTPMethod = .post, + headers: HTTPHeaders? = nil) + -> UploadRequest +{ + return SessionManager.default.upload(stream, to: url, method: method, headers: headers) +} + +/// Creates an `UploadRequest` using the default `SessionManager` from the specified `urlRequest` for +/// uploading the `stream`. +/// +/// - parameter urlRequest: The URL request. +/// - parameter stream: The stream to upload. +/// +/// - returns: The created `UploadRequest`. +@discardableResult +public func upload(_ stream: InputStream, with urlRequest: URLRequestConvertible) -> UploadRequest { + return SessionManager.default.upload(stream, with: urlRequest) +} + +// MARK: MultipartFormData + +/// Encodes `multipartFormData` using `encodingMemoryThreshold` with the default `SessionManager` and calls +/// `encodingCompletion` with new `UploadRequest` using the `url`, `method` and `headers`. +/// +/// It is important to understand the memory implications of uploading `MultipartFormData`. If the cummulative +/// payload is small, encoding the data in-memory and directly uploading to a server is the by far the most +/// efficient approach. However, if the payload is too large, encoding the data in-memory could cause your app to +/// be terminated. Larger payloads must first be written to disk using input and output streams to keep the memory +/// footprint low, then the data can be uploaded as a stream from the resulting file. Streaming from disk MUST be +/// used for larger payloads such as video content. +/// +/// The `encodingMemoryThreshold` parameter allows Alamofire to automatically determine whether to encode in-memory +/// or stream from disk. If the content length of the `MultipartFormData` is below the `encodingMemoryThreshold`, +/// encoding takes place in-memory. If the content length exceeds the threshold, the data is streamed to disk +/// during the encoding process. Then the result is uploaded as data or as a stream depending on which encoding +/// technique was used. +/// +/// - parameter multipartFormData: The closure used to append body parts to the `MultipartFormData`. +/// - parameter encodingMemoryThreshold: The encoding memory threshold in bytes. +/// `multipartFormDataEncodingMemoryThreshold` by default. +/// - parameter url: The URL. +/// - parameter method: The HTTP method. `.post` by default. +/// - parameter headers: The HTTP headers. `nil` by default. +/// - parameter encodingCompletion: The closure called when the `MultipartFormData` encoding is complete. +public func upload( + multipartFormData: @escaping (MultipartFormData) -> Void, + usingThreshold encodingMemoryThreshold: UInt64 = SessionManager.multipartFormDataEncodingMemoryThreshold, + to url: URLConvertible, + method: HTTPMethod = .post, + headers: HTTPHeaders? = nil, + encodingCompletion: ((SessionManager.MultipartFormDataEncodingResult) -> Void)?) +{ + return SessionManager.default.upload( + multipartFormData: multipartFormData, + usingThreshold: encodingMemoryThreshold, + to: url, + method: method, + headers: headers, + encodingCompletion: encodingCompletion + ) +} + +/// Encodes `multipartFormData` using `encodingMemoryThreshold` and the default `SessionManager` and +/// calls `encodingCompletion` with new `UploadRequest` using the `urlRequest`. +/// +/// It is important to understand the memory implications of uploading `MultipartFormData`. If the cummulative +/// payload is small, encoding the data in-memory and directly uploading to a server is the by far the most +/// efficient approach. However, if the payload is too large, encoding the data in-memory could cause your app to +/// be terminated. Larger payloads must first be written to disk using input and output streams to keep the memory +/// footprint low, then the data can be uploaded as a stream from the resulting file. Streaming from disk MUST be +/// used for larger payloads such as video content. +/// +/// The `encodingMemoryThreshold` parameter allows Alamofire to automatically determine whether to encode in-memory +/// or stream from disk. If the content length of the `MultipartFormData` is below the `encodingMemoryThreshold`, +/// encoding takes place in-memory. If the content length exceeds the threshold, the data is streamed to disk +/// during the encoding process. Then the result is uploaded as data or as a stream depending on which encoding +/// technique was used. +/// +/// - parameter multipartFormData: The closure used to append body parts to the `MultipartFormData`. +/// - parameter encodingMemoryThreshold: The encoding memory threshold in bytes. +/// `multipartFormDataEncodingMemoryThreshold` by default. +/// - parameter urlRequest: The URL request. +/// - parameter encodingCompletion: The closure called when the `MultipartFormData` encoding is complete. +public func upload( + multipartFormData: @escaping (MultipartFormData) -> Void, + usingThreshold encodingMemoryThreshold: UInt64 = SessionManager.multipartFormDataEncodingMemoryThreshold, + with urlRequest: URLRequestConvertible, + encodingCompletion: ((SessionManager.MultipartFormDataEncodingResult) -> Void)?) +{ + return SessionManager.default.upload( + multipartFormData: multipartFormData, + usingThreshold: encodingMemoryThreshold, + with: urlRequest, + encodingCompletion: encodingCompletion + ) +} + +#if !os(watchOS) + +// MARK: - Stream Request + +// MARK: Hostname and Port + +/// Creates a `StreamRequest` using the default `SessionManager` for bidirectional streaming with the `hostname` +/// and `port`. +/// +/// If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. +/// +/// - parameter hostName: The hostname of the server to connect to. +/// - parameter port: The port of the server to connect to. +/// +/// - returns: The created `StreamRequest`. +@discardableResult +@available(iOS 9.0, macOS 10.11, tvOS 9.0, *) +public func stream(withHostName hostName: String, port: Int) -> StreamRequest { + return SessionManager.default.stream(withHostName: hostName, port: port) +} + +// MARK: NetService + +/// Creates a `StreamRequest` using the default `SessionManager` for bidirectional streaming with the `netService`. +/// +/// If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. +/// +/// - parameter netService: The net service used to identify the endpoint. +/// +/// - returns: The created `StreamRequest`. +@discardableResult +@available(iOS 9.0, macOS 10.11, tvOS 9.0, *) +public func stream(with netService: NetService) -> StreamRequest { + return SessionManager.default.stream(with: netService) +} + +#endif diff --git a/Santander-Test/Pods/Alamofire/Source/DispatchQueue+Alamofire.swift b/Santander-Test/Pods/Alamofire/Source/DispatchQueue+Alamofire.swift new file mode 100644 index 00000000..a54673cc --- /dev/null +++ b/Santander-Test/Pods/Alamofire/Source/DispatchQueue+Alamofire.swift @@ -0,0 +1,37 @@ +// +// DispatchQueue+Alamofire.swift +// +// Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) +// +// 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 Dispatch +import Foundation + +extension DispatchQueue { + static var userInteractive: DispatchQueue { return DispatchQueue.global(qos: .userInteractive) } + static var userInitiated: DispatchQueue { return DispatchQueue.global(qos: .userInitiated) } + static var utility: DispatchQueue { return DispatchQueue.global(qos: .utility) } + static var background: DispatchQueue { return DispatchQueue.global(qos: .background) } + + func after(_ delay: TimeInterval, execute closure: @escaping () -> Void) { + asyncAfter(deadline: .now() + delay, execute: closure) + } +} diff --git a/Santander-Test/Pods/Alamofire/Source/MultipartFormData.swift b/Santander-Test/Pods/Alamofire/Source/MultipartFormData.swift new file mode 100644 index 00000000..9b4189ec --- /dev/null +++ b/Santander-Test/Pods/Alamofire/Source/MultipartFormData.swift @@ -0,0 +1,580 @@ +// +// MultipartFormData.swift +// +// Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) +// +// 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 Foundation + +#if os(iOS) || os(watchOS) || os(tvOS) +import MobileCoreServices +#elseif os(macOS) +import CoreServices +#endif + +/// Constructs `multipart/form-data` for uploads within an HTTP or HTTPS body. There are currently two ways to encode +/// multipart form data. The first way is to encode the data directly in memory. This is very efficient, but can lead +/// to memory issues if the dataset is too large. The second way is designed for larger datasets and will write all the +/// data to a single file on disk with all the proper boundary segmentation. The second approach MUST be used for +/// larger datasets such as video content, otherwise your app may run out of memory when trying to encode the dataset. +/// +/// For more information on `multipart/form-data` in general, please refer to the RFC-2388 and RFC-2045 specs as well +/// and the w3 form documentation. +/// +/// - https://www.ietf.org/rfc/rfc2388.txt +/// - https://www.ietf.org/rfc/rfc2045.txt +/// - https://www.w3.org/TR/html401/interact/forms.html#h-17.13 +open class MultipartFormData { + + // MARK: - Helper Types + + struct EncodingCharacters { + static let crlf = "\r\n" + } + + struct BoundaryGenerator { + enum BoundaryType { + case initial, encapsulated, final + } + + static func randomBoundary() -> String { + return String(format: "alamofire.boundary.%08x%08x", arc4random(), arc4random()) + } + + static func boundaryData(forBoundaryType boundaryType: BoundaryType, boundary: String) -> Data { + let boundaryText: String + + switch boundaryType { + case .initial: + boundaryText = "--\(boundary)\(EncodingCharacters.crlf)" + case .encapsulated: + boundaryText = "\(EncodingCharacters.crlf)--\(boundary)\(EncodingCharacters.crlf)" + case .final: + boundaryText = "\(EncodingCharacters.crlf)--\(boundary)--\(EncodingCharacters.crlf)" + } + + return boundaryText.data(using: String.Encoding.utf8, allowLossyConversion: false)! + } + } + + class BodyPart { + let headers: HTTPHeaders + let bodyStream: InputStream + let bodyContentLength: UInt64 + var hasInitialBoundary = false + var hasFinalBoundary = false + + init(headers: HTTPHeaders, bodyStream: InputStream, bodyContentLength: UInt64) { + self.headers = headers + self.bodyStream = bodyStream + self.bodyContentLength = bodyContentLength + } + } + + // MARK: - Properties + + /// The `Content-Type` header value containing the boundary used to generate the `multipart/form-data`. + open lazy var contentType: String = "multipart/form-data; boundary=\(self.boundary)" + + /// The content length of all body parts used to generate the `multipart/form-data` not including the boundaries. + public var contentLength: UInt64 { return bodyParts.reduce(0) { $0 + $1.bodyContentLength } } + + /// The boundary used to separate the body parts in the encoded form data. + public let boundary: String + + private var bodyParts: [BodyPart] + private var bodyPartError: AFError? + private let streamBufferSize: Int + + // MARK: - Lifecycle + + /// Creates a multipart form data object. + /// + /// - returns: The multipart form data object. + public init() { + self.boundary = BoundaryGenerator.randomBoundary() + self.bodyParts = [] + + /// + /// The optimal read/write buffer size in bytes for input and output streams is 1024 (1KB). For more + /// information, please refer to the following article: + /// - https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Streams/Articles/ReadingInputStreams.html + /// + + self.streamBufferSize = 1024 + } + + // MARK: - Body Parts + + /// Creates a body part from the data and appends it to the multipart form data object. + /// + /// The body part data will be encoded using the following format: + /// + /// - `Content-Disposition: form-data; name=#{name}` (HTTP Header) + /// - Encoded data + /// - Multipart form boundary + /// + /// - parameter data: The data to encode into the multipart form data. + /// - parameter name: The name to associate with the data in the `Content-Disposition` HTTP header. + public func append(_ data: Data, withName name: String) { + let headers = contentHeaders(withName: name) + let stream = InputStream(data: data) + let length = UInt64(data.count) + + append(stream, withLength: length, headers: headers) + } + + /// Creates a body part from the data and appends it to the multipart form data object. + /// + /// The body part data will be encoded using the following format: + /// + /// - `Content-Disposition: form-data; name=#{name}` (HTTP Header) + /// - `Content-Type: #{generated mimeType}` (HTTP Header) + /// - Encoded data + /// - Multipart form boundary + /// + /// - parameter data: The data to encode into the multipart form data. + /// - parameter name: The name to associate with the data in the `Content-Disposition` HTTP header. + /// - parameter mimeType: The MIME type to associate with the data content type in the `Content-Type` HTTP header. + public func append(_ data: Data, withName name: String, mimeType: String) { + let headers = contentHeaders(withName: name, mimeType: mimeType) + let stream = InputStream(data: data) + let length = UInt64(data.count) + + append(stream, withLength: length, headers: headers) + } + + /// Creates a body part from the data and appends it to the multipart form data object. + /// + /// The body part data will be encoded using the following format: + /// + /// - `Content-Disposition: form-data; name=#{name}; filename=#{filename}` (HTTP Header) + /// - `Content-Type: #{mimeType}` (HTTP Header) + /// - Encoded file data + /// - Multipart form boundary + /// + /// - parameter data: The data to encode into the multipart form data. + /// - parameter name: The name to associate with the data in the `Content-Disposition` HTTP header. + /// - parameter fileName: The filename to associate with the data in the `Content-Disposition` HTTP header. + /// - parameter mimeType: The MIME type to associate with the data in the `Content-Type` HTTP header. + public func append(_ data: Data, withName name: String, fileName: String, mimeType: String) { + let headers = contentHeaders(withName: name, fileName: fileName, mimeType: mimeType) + let stream = InputStream(data: data) + let length = UInt64(data.count) + + append(stream, withLength: length, headers: headers) + } + + /// Creates a body part from the file and appends it to the multipart form data object. + /// + /// The body part data will be encoded using the following format: + /// + /// - `Content-Disposition: form-data; name=#{name}; filename=#{generated filename}` (HTTP Header) + /// - `Content-Type: #{generated mimeType}` (HTTP Header) + /// - Encoded file data + /// - Multipart form boundary + /// + /// The filename in the `Content-Disposition` HTTP header is generated from the last path component of the + /// `fileURL`. The `Content-Type` HTTP header MIME type is generated by mapping the `fileURL` extension to the + /// system associated MIME type. + /// + /// - parameter fileURL: The URL of the file whose content will be encoded into the multipart form data. + /// - parameter name: The name to associate with the file content in the `Content-Disposition` HTTP header. + public func append(_ fileURL: URL, withName name: String) { + let fileName = fileURL.lastPathComponent + let pathExtension = fileURL.pathExtension + + if !fileName.isEmpty && !pathExtension.isEmpty { + let mime = mimeType(forPathExtension: pathExtension) + append(fileURL, withName: name, fileName: fileName, mimeType: mime) + } else { + setBodyPartError(withReason: .bodyPartFilenameInvalid(in: fileURL)) + } + } + + /// Creates a body part from the file and appends it to the multipart form data object. + /// + /// The body part data will be encoded using the following format: + /// + /// - Content-Disposition: form-data; name=#{name}; filename=#{filename} (HTTP Header) + /// - Content-Type: #{mimeType} (HTTP Header) + /// - Encoded file data + /// - Multipart form boundary + /// + /// - parameter fileURL: The URL of the file whose content will be encoded into the multipart form data. + /// - parameter name: The name to associate with the file content in the `Content-Disposition` HTTP header. + /// - parameter fileName: The filename to associate with the file content in the `Content-Disposition` HTTP header. + /// - parameter mimeType: The MIME type to associate with the file content in the `Content-Type` HTTP header. + public func append(_ fileURL: URL, withName name: String, fileName: String, mimeType: String) { + let headers = contentHeaders(withName: name, fileName: fileName, mimeType: mimeType) + + //============================================================ + // Check 1 - is file URL? + //============================================================ + + guard fileURL.isFileURL else { + setBodyPartError(withReason: .bodyPartURLInvalid(url: fileURL)) + return + } + + //============================================================ + // Check 2 - is file URL reachable? + //============================================================ + + do { + let isReachable = try fileURL.checkPromisedItemIsReachable() + guard isReachable else { + setBodyPartError(withReason: .bodyPartFileNotReachable(at: fileURL)) + return + } + } catch { + setBodyPartError(withReason: .bodyPartFileNotReachableWithError(atURL: fileURL, error: error)) + return + } + + //============================================================ + // Check 3 - is file URL a directory? + //============================================================ + + var isDirectory: ObjCBool = false + let path = fileURL.path + + guard FileManager.default.fileExists(atPath: path, isDirectory: &isDirectory) && !isDirectory.boolValue else { + setBodyPartError(withReason: .bodyPartFileIsDirectory(at: fileURL)) + return + } + + //============================================================ + // Check 4 - can the file size be extracted? + //============================================================ + + let bodyContentLength: UInt64 + + do { + guard let fileSize = try FileManager.default.attributesOfItem(atPath: path)[.size] as? NSNumber else { + setBodyPartError(withReason: .bodyPartFileSizeNotAvailable(at: fileURL)) + return + } + + bodyContentLength = fileSize.uint64Value + } + catch { + setBodyPartError(withReason: .bodyPartFileSizeQueryFailedWithError(forURL: fileURL, error: error)) + return + } + + //============================================================ + // Check 5 - can a stream be created from file URL? + //============================================================ + + guard let stream = InputStream(url: fileURL) else { + setBodyPartError(withReason: .bodyPartInputStreamCreationFailed(for: fileURL)) + return + } + + append(stream, withLength: bodyContentLength, headers: headers) + } + + /// Creates a body part from the stream and appends it to the multipart form data object. + /// + /// The body part data will be encoded using the following format: + /// + /// - `Content-Disposition: form-data; name=#{name}; filename=#{filename}` (HTTP Header) + /// - `Content-Type: #{mimeType}` (HTTP Header) + /// - Encoded stream data + /// - Multipart form boundary + /// + /// - parameter stream: The input stream to encode in the multipart form data. + /// - parameter length: The content length of the stream. + /// - parameter name: The name to associate with the stream content in the `Content-Disposition` HTTP header. + /// - parameter fileName: The filename to associate with the stream content in the `Content-Disposition` HTTP header. + /// - parameter mimeType: The MIME type to associate with the stream content in the `Content-Type` HTTP header. + public func append( + _ stream: InputStream, + withLength length: UInt64, + name: String, + fileName: String, + mimeType: String) + { + let headers = contentHeaders(withName: name, fileName: fileName, mimeType: mimeType) + append(stream, withLength: length, headers: headers) + } + + /// Creates a body part with the headers, stream and length and appends it to the multipart form data object. + /// + /// The body part data will be encoded using the following format: + /// + /// - HTTP headers + /// - Encoded stream data + /// - Multipart form boundary + /// + /// - parameter stream: The input stream to encode in the multipart form data. + /// - parameter length: The content length of the stream. + /// - parameter headers: The HTTP headers for the body part. + public func append(_ stream: InputStream, withLength length: UInt64, headers: HTTPHeaders) { + let bodyPart = BodyPart(headers: headers, bodyStream: stream, bodyContentLength: length) + bodyParts.append(bodyPart) + } + + // MARK: - Data Encoding + + /// Encodes all the appended body parts into a single `Data` value. + /// + /// It is important to note that this method will load all the appended body parts into memory all at the same + /// time. This method should only be used when the encoded data will have a small memory footprint. For large data + /// cases, please use the `writeEncodedDataToDisk(fileURL:completionHandler:)` method. + /// + /// - throws: An `AFError` if encoding encounters an error. + /// + /// - returns: The encoded `Data` if encoding is successful. + public func encode() throws -> Data { + if let bodyPartError = bodyPartError { + throw bodyPartError + } + + var encoded = Data() + + bodyParts.first?.hasInitialBoundary = true + bodyParts.last?.hasFinalBoundary = true + + for bodyPart in bodyParts { + let encodedData = try encode(bodyPart) + encoded.append(encodedData) + } + + return encoded + } + + /// Writes the appended body parts into the given file URL. + /// + /// This process is facilitated by reading and writing with input and output streams, respectively. Thus, + /// this approach is very memory efficient and should be used for large body part data. + /// + /// - parameter fileURL: The file URL to write the multipart form data into. + /// + /// - throws: An `AFError` if encoding encounters an error. + public func writeEncodedData(to fileURL: URL) throws { + if let bodyPartError = bodyPartError { + throw bodyPartError + } + + if FileManager.default.fileExists(atPath: fileURL.path) { + throw AFError.multipartEncodingFailed(reason: .outputStreamFileAlreadyExists(at: fileURL)) + } else if !fileURL.isFileURL { + throw AFError.multipartEncodingFailed(reason: .outputStreamURLInvalid(url: fileURL)) + } + + guard let outputStream = OutputStream(url: fileURL, append: false) else { + throw AFError.multipartEncodingFailed(reason: .outputStreamCreationFailed(for: fileURL)) + } + + outputStream.open() + defer { outputStream.close() } + + self.bodyParts.first?.hasInitialBoundary = true + self.bodyParts.last?.hasFinalBoundary = true + + for bodyPart in self.bodyParts { + try write(bodyPart, to: outputStream) + } + } + + // MARK: - Private - Body Part Encoding + + private func encode(_ bodyPart: BodyPart) throws -> Data { + var encoded = Data() + + let initialData = bodyPart.hasInitialBoundary ? initialBoundaryData() : encapsulatedBoundaryData() + encoded.append(initialData) + + let headerData = encodeHeaders(for: bodyPart) + encoded.append(headerData) + + let bodyStreamData = try encodeBodyStream(for: bodyPart) + encoded.append(bodyStreamData) + + if bodyPart.hasFinalBoundary { + encoded.append(finalBoundaryData()) + } + + return encoded + } + + private func encodeHeaders(for bodyPart: BodyPart) -> Data { + var headerText = "" + + for (key, value) in bodyPart.headers { + headerText += "\(key): \(value)\(EncodingCharacters.crlf)" + } + headerText += EncodingCharacters.crlf + + return headerText.data(using: String.Encoding.utf8, allowLossyConversion: false)! + } + + private func encodeBodyStream(for bodyPart: BodyPart) throws -> Data { + let inputStream = bodyPart.bodyStream + inputStream.open() + defer { inputStream.close() } + + var encoded = Data() + + while inputStream.hasBytesAvailable { + var buffer = [UInt8](repeating: 0, count: streamBufferSize) + let bytesRead = inputStream.read(&buffer, maxLength: streamBufferSize) + + if let error = inputStream.streamError { + throw AFError.multipartEncodingFailed(reason: .inputStreamReadFailed(error: error)) + } + + if bytesRead > 0 { + encoded.append(buffer, count: bytesRead) + } else { + break + } + } + + return encoded + } + + // MARK: - Private - Writing Body Part to Output Stream + + private func write(_ bodyPart: BodyPart, to outputStream: OutputStream) throws { + try writeInitialBoundaryData(for: bodyPart, to: outputStream) + try writeHeaderData(for: bodyPart, to: outputStream) + try writeBodyStream(for: bodyPart, to: outputStream) + try writeFinalBoundaryData(for: bodyPart, to: outputStream) + } + + private func writeInitialBoundaryData(for bodyPart: BodyPart, to outputStream: OutputStream) throws { + let initialData = bodyPart.hasInitialBoundary ? initialBoundaryData() : encapsulatedBoundaryData() + return try write(initialData, to: outputStream) + } + + private func writeHeaderData(for bodyPart: BodyPart, to outputStream: OutputStream) throws { + let headerData = encodeHeaders(for: bodyPart) + return try write(headerData, to: outputStream) + } + + private func writeBodyStream(for bodyPart: BodyPart, to outputStream: OutputStream) throws { + let inputStream = bodyPart.bodyStream + + inputStream.open() + defer { inputStream.close() } + + while inputStream.hasBytesAvailable { + var buffer = [UInt8](repeating: 0, count: streamBufferSize) + let bytesRead = inputStream.read(&buffer, maxLength: streamBufferSize) + + if let streamError = inputStream.streamError { + throw AFError.multipartEncodingFailed(reason: .inputStreamReadFailed(error: streamError)) + } + + if bytesRead > 0 { + if buffer.count != bytesRead { + buffer = Array(buffer[0.. 0, outputStream.hasSpaceAvailable { + let bytesWritten = outputStream.write(buffer, maxLength: bytesToWrite) + + if let error = outputStream.streamError { + throw AFError.multipartEncodingFailed(reason: .outputStreamWriteFailed(error: error)) + } + + bytesToWrite -= bytesWritten + + if bytesToWrite > 0 { + buffer = Array(buffer[bytesWritten.. String { + if + let id = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, pathExtension as CFString, nil)?.takeRetainedValue(), + let contentType = UTTypeCopyPreferredTagWithClass(id, kUTTagClassMIMEType)?.takeRetainedValue() + { + return contentType as String + } + + return "application/octet-stream" + } + + // MARK: - Private - Content Headers + + private func contentHeaders(withName name: String, fileName: String? = nil, mimeType: String? = nil) -> [String: String] { + var disposition = "form-data; name=\"\(name)\"" + if let fileName = fileName { disposition += "; filename=\"\(fileName)\"" } + + var headers = ["Content-Disposition": disposition] + if let mimeType = mimeType { headers["Content-Type"] = mimeType } + + return headers + } + + // MARK: - Private - Boundary Encoding + + private func initialBoundaryData() -> Data { + return BoundaryGenerator.boundaryData(forBoundaryType: .initial, boundary: boundary) + } + + private func encapsulatedBoundaryData() -> Data { + return BoundaryGenerator.boundaryData(forBoundaryType: .encapsulated, boundary: boundary) + } + + private func finalBoundaryData() -> Data { + return BoundaryGenerator.boundaryData(forBoundaryType: .final, boundary: boundary) + } + + // MARK: - Private - Errors + + private func setBodyPartError(withReason reason: AFError.MultipartEncodingFailureReason) { + guard bodyPartError == nil else { return } + bodyPartError = AFError.multipartEncodingFailed(reason: reason) + } +} diff --git a/Santander-Test/Pods/Alamofire/Source/NetworkReachabilityManager.swift b/Santander-Test/Pods/Alamofire/Source/NetworkReachabilityManager.swift new file mode 100644 index 00000000..5470eec4 --- /dev/null +++ b/Santander-Test/Pods/Alamofire/Source/NetworkReachabilityManager.swift @@ -0,0 +1,235 @@ +// +// NetworkReachabilityManager.swift +// +// Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) +// +// 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. +// + +#if !os(watchOS) + +import Foundation +import SystemConfiguration + +/// The `NetworkReachabilityManager` class listens for reachability changes of hosts and addresses for both WWAN and +/// WiFi network interfaces. +/// +/// Reachability can be used to determine background information about why a network operation failed, or to retry +/// network requests when a connection is established. It should not be used to prevent a user from initiating a network +/// request, as it's possible that an initial request may be required to establish reachability. +open class NetworkReachabilityManager { + /// Defines the various states of network reachability. + /// + /// - unknown: It is unknown whether the network is reachable. + /// - notReachable: The network is not reachable. + /// - reachable: The network is reachable. + public enum NetworkReachabilityStatus { + case unknown + case notReachable + case reachable(ConnectionType) + } + + /// Defines the various connection types detected by reachability flags. + /// + /// - ethernetOrWiFi: The connection type is either over Ethernet or WiFi. + /// - wwan: The connection type is a WWAN connection. + public enum ConnectionType { + case ethernetOrWiFi + case wwan + } + + /// A closure executed when the network reachability status changes. The closure takes a single argument: the + /// network reachability status. + public typealias Listener = (NetworkReachabilityStatus) -> Void + + // MARK: - Properties + + /// Whether the network is currently reachable. + open var isReachable: Bool { return isReachableOnWWAN || isReachableOnEthernetOrWiFi } + + /// Whether the network is currently reachable over the WWAN interface. + open var isReachableOnWWAN: Bool { return networkReachabilityStatus == .reachable(.wwan) } + + /// Whether the network is currently reachable over Ethernet or WiFi interface. + open var isReachableOnEthernetOrWiFi: Bool { return networkReachabilityStatus == .reachable(.ethernetOrWiFi) } + + /// The current network reachability status. + open var networkReachabilityStatus: NetworkReachabilityStatus { + guard let flags = self.flags else { return .unknown } + return networkReachabilityStatusForFlags(flags) + } + + /// The dispatch queue to execute the `listener` closure on. + open var listenerQueue: DispatchQueue = DispatchQueue.main + + /// A closure executed when the network reachability status changes. + open var listener: Listener? + + open var flags: SCNetworkReachabilityFlags? { + var flags = SCNetworkReachabilityFlags() + + if SCNetworkReachabilityGetFlags(reachability, &flags) { + return flags + } + + return nil + } + + private let reachability: SCNetworkReachability + open var previousFlags: SCNetworkReachabilityFlags + + // MARK: - Initialization + + /// Creates a `NetworkReachabilityManager` instance with the specified host. + /// + /// - parameter host: The host used to evaluate network reachability. + /// + /// - returns: The new `NetworkReachabilityManager` instance. + public convenience init?(host: String) { + guard let reachability = SCNetworkReachabilityCreateWithName(nil, host) else { return nil } + self.init(reachability: reachability) + } + + /// Creates a `NetworkReachabilityManager` instance that monitors the address 0.0.0.0. + /// + /// Reachability treats the 0.0.0.0 address as a special token that causes it to monitor the general routing + /// status of the device, both IPv4 and IPv6. + /// + /// - returns: The new `NetworkReachabilityManager` instance. + public convenience init?() { + var address = sockaddr_in() + address.sin_len = UInt8(MemoryLayout.size) + address.sin_family = sa_family_t(AF_INET) + + guard let reachability = withUnsafePointer(to: &address, { pointer in + return pointer.withMemoryRebound(to: sockaddr.self, capacity: MemoryLayout.size) { + return SCNetworkReachabilityCreateWithAddress(nil, $0) + } + }) else { return nil } + + self.init(reachability: reachability) + } + + private init(reachability: SCNetworkReachability) { + self.reachability = reachability + + // Set the previous flags to an unreserved value to represent unknown status + self.previousFlags = SCNetworkReachabilityFlags(rawValue: 1 << 30) + } + + deinit { + stopListening() + } + + // MARK: - Listening + + /// Starts listening for changes in network reachability status. + /// + /// - returns: `true` if listening was started successfully, `false` otherwise. + @discardableResult + open func startListening() -> Bool { + var context = SCNetworkReachabilityContext(version: 0, info: nil, retain: nil, release: nil, copyDescription: nil) + context.info = Unmanaged.passUnretained(self).toOpaque() + + let callbackEnabled = SCNetworkReachabilitySetCallback( + reachability, + { (_, flags, info) in + let reachability = Unmanaged.fromOpaque(info!).takeUnretainedValue() + reachability.notifyListener(flags) + }, + &context + ) + + let queueEnabled = SCNetworkReachabilitySetDispatchQueue(reachability, listenerQueue) + + listenerQueue.async { + guard let flags = self.flags else { return } + self.notifyListener(flags) + } + + return callbackEnabled && queueEnabled + } + + /// Stops listening for changes in network reachability status. + open func stopListening() { + SCNetworkReachabilitySetCallback(reachability, nil, nil) + SCNetworkReachabilitySetDispatchQueue(reachability, nil) + } + + // MARK: - Internal - Listener Notification + + func notifyListener(_ flags: SCNetworkReachabilityFlags) { + guard previousFlags != flags else { return } + previousFlags = flags + + listener?(networkReachabilityStatusForFlags(flags)) + } + + // MARK: - Internal - Network Reachability Status + + func networkReachabilityStatusForFlags(_ flags: SCNetworkReachabilityFlags) -> NetworkReachabilityStatus { + guard isNetworkReachable(with: flags) else { return .notReachable } + + var networkStatus: NetworkReachabilityStatus = .reachable(.ethernetOrWiFi) + + #if os(iOS) + if flags.contains(.isWWAN) { networkStatus = .reachable(.wwan) } + #endif + + return networkStatus + } + + func isNetworkReachable(with flags: SCNetworkReachabilityFlags) -> Bool { + let isReachable = flags.contains(.reachable) + let needsConnection = flags.contains(.connectionRequired) + let canConnectAutomatically = flags.contains(.connectionOnDemand) || flags.contains(.connectionOnTraffic) + let canConnectWithoutUserInteraction = canConnectAutomatically && !flags.contains(.interventionRequired) + + return isReachable && (!needsConnection || canConnectWithoutUserInteraction) + } +} + +// MARK: - + +extension NetworkReachabilityManager.NetworkReachabilityStatus: Equatable {} + +/// Returns whether the two network reachability status values are equal. +/// +/// - parameter lhs: The left-hand side value to compare. +/// - parameter rhs: The right-hand side value to compare. +/// +/// - returns: `true` if the two values are equal, `false` otherwise. +public func ==( + lhs: NetworkReachabilityManager.NetworkReachabilityStatus, + rhs: NetworkReachabilityManager.NetworkReachabilityStatus) + -> Bool +{ + switch (lhs, rhs) { + case (.unknown, .unknown): + return true + case (.notReachable, .notReachable): + return true + case let (.reachable(lhsConnectionType), .reachable(rhsConnectionType)): + return lhsConnectionType == rhsConnectionType + default: + return false + } +} + +#endif diff --git a/Santander-Test/Pods/Alamofire/Source/Notifications.swift b/Santander-Test/Pods/Alamofire/Source/Notifications.swift new file mode 100644 index 00000000..e1ac31bf --- /dev/null +++ b/Santander-Test/Pods/Alamofire/Source/Notifications.swift @@ -0,0 +1,55 @@ +// +// Notifications.swift +// +// Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) +// +// 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 Foundation + +extension Notification.Name { + /// Used as a namespace for all `URLSessionTask` related notifications. + public struct Task { + /// Posted when a `URLSessionTask` is resumed. The notification `object` contains the resumed `URLSessionTask`. + public static let DidResume = Notification.Name(rawValue: "org.alamofire.notification.name.task.didResume") + + /// Posted when a `URLSessionTask` is suspended. The notification `object` contains the suspended `URLSessionTask`. + public static let DidSuspend = Notification.Name(rawValue: "org.alamofire.notification.name.task.didSuspend") + + /// Posted when a `URLSessionTask` is cancelled. The notification `object` contains the cancelled `URLSessionTask`. + public static let DidCancel = Notification.Name(rawValue: "org.alamofire.notification.name.task.didCancel") + + /// Posted when a `URLSessionTask` is completed. The notification `object` contains the completed `URLSessionTask`. + public static let DidComplete = Notification.Name(rawValue: "org.alamofire.notification.name.task.didComplete") + } +} + +// MARK: - + +extension Notification { + /// Used as a namespace for all `Notification` user info dictionary keys. + public struct Key { + /// User info dictionary key representing the `URLSessionTask` associated with the notification. + public static let Task = "org.alamofire.notification.key.task" + + /// User info dictionary key representing the responseData associated with the notification. + public static let ResponseData = "org.alamofire.notification.key.responseData" + } +} diff --git a/Santander-Test/Pods/Alamofire/Source/ParameterEncoding.swift b/Santander-Test/Pods/Alamofire/Source/ParameterEncoding.swift new file mode 100644 index 00000000..6195809c --- /dev/null +++ b/Santander-Test/Pods/Alamofire/Source/ParameterEncoding.swift @@ -0,0 +1,483 @@ +// +// ParameterEncoding.swift +// +// Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) +// +// 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 Foundation + +/// HTTP method definitions. +/// +/// See https://tools.ietf.org/html/rfc7231#section-4.3 +public enum HTTPMethod: String { + case options = "OPTIONS" + case get = "GET" + case head = "HEAD" + case post = "POST" + case put = "PUT" + case patch = "PATCH" + case delete = "DELETE" + case trace = "TRACE" + case connect = "CONNECT" +} + +// MARK: - + +/// A dictionary of parameters to apply to a `URLRequest`. +public typealias Parameters = [String: Any] + +/// A type used to define how a set of parameters are applied to a `URLRequest`. +public protocol ParameterEncoding { + /// Creates a URL request by encoding parameters and applying them onto an existing request. + /// + /// - parameter urlRequest: The request to have parameters applied. + /// - parameter parameters: The parameters to apply. + /// + /// - throws: An `AFError.parameterEncodingFailed` error if encoding fails. + /// + /// - returns: The encoded request. + func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest +} + +// MARK: - + +/// Creates a url-encoded query string to be set as or appended to any existing URL query string or set as the HTTP +/// body of the URL request. Whether the query string is set or appended to any existing URL query string or set as +/// the HTTP body depends on the destination of the encoding. +/// +/// The `Content-Type` HTTP header field of an encoded request with HTTP body is set to +/// `application/x-www-form-urlencoded; charset=utf-8`. +/// +/// There is no published specification for how to encode collection types. By default the convention of appending +/// `[]` to the key for array values (`foo[]=1&foo[]=2`), and appending the key surrounded by square brackets for +/// nested dictionary values (`foo[bar]=baz`) is used. Optionally, `ArrayEncoding` can be used to omit the +/// square brackets appended to array keys. +/// +/// `BoolEncoding` can be used to configure how boolean values are encoded. The default behavior is to encode +/// `true` as 1 and `false` as 0. +public struct URLEncoding: ParameterEncoding { + + // MARK: Helper Types + + /// Defines whether the url-encoded query string is applied to the existing query string or HTTP body of the + /// resulting URL request. + /// + /// - methodDependent: Applies encoded query string result to existing query string for `GET`, `HEAD` and `DELETE` + /// requests and sets as the HTTP body for requests with any other HTTP method. + /// - queryString: Sets or appends encoded query string result to existing query string. + /// - httpBody: Sets encoded query string result as the HTTP body of the URL request. + public enum Destination { + case methodDependent, queryString, httpBody + } + + /// Configures how `Array` parameters are encoded. + /// + /// - brackets: An empty set of square brackets is appended to the key for every value. + /// This is the default behavior. + /// - noBrackets: No brackets are appended. The key is encoded as is. + public enum ArrayEncoding { + case brackets, noBrackets + + func encode(key: String) -> String { + switch self { + case .brackets: + return "\(key)[]" + case .noBrackets: + return key + } + } + } + + /// Configures how `Bool` parameters are encoded. + /// + /// - numeric: Encode `true` as `1` and `false` as `0`. This is the default behavior. + /// - literal: Encode `true` and `false` as string literals. + public enum BoolEncoding { + case numeric, literal + + func encode(value: Bool) -> String { + switch self { + case .numeric: + return value ? "1" : "0" + case .literal: + return value ? "true" : "false" + } + } + } + + // MARK: Properties + + /// Returns a default `URLEncoding` instance. + public static var `default`: URLEncoding { return URLEncoding() } + + /// Returns a `URLEncoding` instance with a `.methodDependent` destination. + public static var methodDependent: URLEncoding { return URLEncoding() } + + /// Returns a `URLEncoding` instance with a `.queryString` destination. + public static var queryString: URLEncoding { return URLEncoding(destination: .queryString) } + + /// Returns a `URLEncoding` instance with an `.httpBody` destination. + public static var httpBody: URLEncoding { return URLEncoding(destination: .httpBody) } + + /// The destination defining where the encoded query string is to be applied to the URL request. + public let destination: Destination + + /// The encoding to use for `Array` parameters. + public let arrayEncoding: ArrayEncoding + + /// The encoding to use for `Bool` parameters. + public let boolEncoding: BoolEncoding + + // MARK: Initialization + + /// Creates a `URLEncoding` instance using the specified destination. + /// + /// - parameter destination: The destination defining where the encoded query string is to be applied. + /// - parameter arrayEncoding: The encoding to use for `Array` parameters. + /// - parameter boolEncoding: The encoding to use for `Bool` parameters. + /// + /// - returns: The new `URLEncoding` instance. + public init(destination: Destination = .methodDependent, arrayEncoding: ArrayEncoding = .brackets, boolEncoding: BoolEncoding = .numeric) { + self.destination = destination + self.arrayEncoding = arrayEncoding + self.boolEncoding = boolEncoding + } + + // MARK: Encoding + + /// Creates a URL request by encoding parameters and applying them onto an existing request. + /// + /// - parameter urlRequest: The request to have parameters applied. + /// - parameter parameters: The parameters to apply. + /// + /// - throws: An `Error` if the encoding process encounters an error. + /// + /// - returns: The encoded request. + public func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest { + var urlRequest = try urlRequest.asURLRequest() + + guard let parameters = parameters else { return urlRequest } + + if let method = HTTPMethod(rawValue: urlRequest.httpMethod ?? "GET"), encodesParametersInURL(with: method) { + guard let url = urlRequest.url else { + throw AFError.parameterEncodingFailed(reason: .missingURL) + } + + if var urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: false), !parameters.isEmpty { + let percentEncodedQuery = (urlComponents.percentEncodedQuery.map { $0 + "&" } ?? "") + query(parameters) + urlComponents.percentEncodedQuery = percentEncodedQuery + urlRequest.url = urlComponents.url + } + } else { + if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil { + urlRequest.setValue("application/x-www-form-urlencoded; charset=utf-8", forHTTPHeaderField: "Content-Type") + } + + urlRequest.httpBody = query(parameters).data(using: .utf8, allowLossyConversion: false) + } + + return urlRequest + } + + /// Creates percent-escaped, URL encoded query string components from the given key-value pair using recursion. + /// + /// - parameter key: The key of the query component. + /// - parameter value: The value of the query component. + /// + /// - returns: The percent-escaped, URL encoded query string components. + public func queryComponents(fromKey key: String, value: Any) -> [(String, String)] { + var components: [(String, String)] = [] + + if let dictionary = value as? [String: Any] { + for (nestedKey, value) in dictionary { + components += queryComponents(fromKey: "\(key)[\(nestedKey)]", value: value) + } + } else if let array = value as? [Any] { + for value in array { + components += queryComponents(fromKey: arrayEncoding.encode(key: key), value: value) + } + } else if let value = value as? NSNumber { + if value.isBool { + components.append((escape(key), escape(boolEncoding.encode(value: value.boolValue)))) + } else { + components.append((escape(key), escape("\(value)"))) + } + } else if let bool = value as? Bool { + components.append((escape(key), escape(boolEncoding.encode(value: bool)))) + } else { + components.append((escape(key), escape("\(value)"))) + } + + return components + } + + /// Returns a percent-escaped string following RFC 3986 for a query string key or value. + /// + /// RFC 3986 states that the following characters are "reserved" characters. + /// + /// - General Delimiters: ":", "#", "[", "]", "@", "?", "/" + /// - Sub-Delimiters: "!", "$", "&", "'", "(", ")", "*", "+", ",", ";", "=" + /// + /// In RFC 3986 - Section 3.4, it states that the "?" and "/" characters should not be escaped to allow + /// query strings to include a URL. Therefore, all "reserved" characters with the exception of "?" and "/" + /// should be percent-escaped in the query string. + /// + /// - parameter string: The string to be percent-escaped. + /// + /// - returns: The percent-escaped string. + public func escape(_ string: String) -> String { + let generalDelimitersToEncode = ":#[]@" // does not include "?" or "/" due to RFC 3986 - Section 3.4 + let subDelimitersToEncode = "!$&'()*+,;=" + + var allowedCharacterSet = CharacterSet.urlQueryAllowed + allowedCharacterSet.remove(charactersIn: "\(generalDelimitersToEncode)\(subDelimitersToEncode)") + + var escaped = "" + + //========================================================================================================== + // + // Batching is required for escaping due to an internal bug in iOS 8.1 and 8.2. Encoding more than a few + // hundred Chinese characters causes various malloc error crashes. To avoid this issue until iOS 8 is no + // longer supported, batching MUST be used for encoding. This introduces roughly a 20% overhead. For more + // info, please refer to: + // + // - https://github.com/Alamofire/Alamofire/issues/206 + // + //========================================================================================================== + + if #available(iOS 8.3, *) { + escaped = string.addingPercentEncoding(withAllowedCharacters: allowedCharacterSet) ?? string + } else { + let batchSize = 50 + var index = string.startIndex + + while index != string.endIndex { + let startIndex = index + let endIndex = string.index(index, offsetBy: batchSize, limitedBy: string.endIndex) ?? string.endIndex + let range = startIndex.. String { + var components: [(String, String)] = [] + + for key in parameters.keys.sorted(by: <) { + let value = parameters[key]! + components += queryComponents(fromKey: key, value: value) + } + return components.map { "\($0)=\($1)" }.joined(separator: "&") + } + + private func encodesParametersInURL(with method: HTTPMethod) -> Bool { + switch destination { + case .queryString: + return true + case .httpBody: + return false + default: + break + } + + switch method { + case .get, .head, .delete: + return true + default: + return false + } + } +} + +// MARK: - + +/// Uses `JSONSerialization` to create a JSON representation of the parameters object, which is set as the body of the +/// request. The `Content-Type` HTTP header field of an encoded request is set to `application/json`. +public struct JSONEncoding: ParameterEncoding { + + // MARK: Properties + + /// Returns a `JSONEncoding` instance with default writing options. + public static var `default`: JSONEncoding { return JSONEncoding() } + + /// Returns a `JSONEncoding` instance with `.prettyPrinted` writing options. + public static var prettyPrinted: JSONEncoding { return JSONEncoding(options: .prettyPrinted) } + + /// The options for writing the parameters as JSON data. + public let options: JSONSerialization.WritingOptions + + // MARK: Initialization + + /// Creates a `JSONEncoding` instance using the specified options. + /// + /// - parameter options: The options for writing the parameters as JSON data. + /// + /// - returns: The new `JSONEncoding` instance. + public init(options: JSONSerialization.WritingOptions = []) { + self.options = options + } + + // MARK: Encoding + + /// Creates a URL request by encoding parameters and applying them onto an existing request. + /// + /// - parameter urlRequest: The request to have parameters applied. + /// - parameter parameters: The parameters to apply. + /// + /// - throws: An `Error` if the encoding process encounters an error. + /// + /// - returns: The encoded request. + public func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest { + var urlRequest = try urlRequest.asURLRequest() + + guard let parameters = parameters else { return urlRequest } + + do { + let data = try JSONSerialization.data(withJSONObject: parameters, options: options) + + if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil { + urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type") + } + + urlRequest.httpBody = data + } catch { + throw AFError.parameterEncodingFailed(reason: .jsonEncodingFailed(error: error)) + } + + return urlRequest + } + + /// Creates a URL request by encoding the JSON object and setting the resulting data on the HTTP body. + /// + /// - parameter urlRequest: The request to apply the JSON object to. + /// - parameter jsonObject: The JSON object to apply to the request. + /// + /// - throws: An `Error` if the encoding process encounters an error. + /// + /// - returns: The encoded request. + public func encode(_ urlRequest: URLRequestConvertible, withJSONObject jsonObject: Any? = nil) throws -> URLRequest { + var urlRequest = try urlRequest.asURLRequest() + + guard let jsonObject = jsonObject else { return urlRequest } + + do { + let data = try JSONSerialization.data(withJSONObject: jsonObject, options: options) + + if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil { + urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type") + } + + urlRequest.httpBody = data + } catch { + throw AFError.parameterEncodingFailed(reason: .jsonEncodingFailed(error: error)) + } + + return urlRequest + } +} + +// MARK: - + +/// Uses `PropertyListSerialization` to create a plist representation of the parameters object, according to the +/// associated format and write options values, which is set as the body of the request. The `Content-Type` HTTP header +/// field of an encoded request is set to `application/x-plist`. +public struct PropertyListEncoding: ParameterEncoding { + + // MARK: Properties + + /// Returns a default `PropertyListEncoding` instance. + public static var `default`: PropertyListEncoding { return PropertyListEncoding() } + + /// Returns a `PropertyListEncoding` instance with xml formatting and default writing options. + public static var xml: PropertyListEncoding { return PropertyListEncoding(format: .xml) } + + /// Returns a `PropertyListEncoding` instance with binary formatting and default writing options. + public static var binary: PropertyListEncoding { return PropertyListEncoding(format: .binary) } + + /// The property list serialization format. + public let format: PropertyListSerialization.PropertyListFormat + + /// The options for writing the parameters as plist data. + public let options: PropertyListSerialization.WriteOptions + + // MARK: Initialization + + /// Creates a `PropertyListEncoding` instance using the specified format and options. + /// + /// - parameter format: The property list serialization format. + /// - parameter options: The options for writing the parameters as plist data. + /// + /// - returns: The new `PropertyListEncoding` instance. + public init( + format: PropertyListSerialization.PropertyListFormat = .xml, + options: PropertyListSerialization.WriteOptions = 0) + { + self.format = format + self.options = options + } + + // MARK: Encoding + + /// Creates a URL request by encoding parameters and applying them onto an existing request. + /// + /// - parameter urlRequest: The request to have parameters applied. + /// - parameter parameters: The parameters to apply. + /// + /// - throws: An `Error` if the encoding process encounters an error. + /// + /// - returns: The encoded request. + public func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest { + var urlRequest = try urlRequest.asURLRequest() + + guard let parameters = parameters else { return urlRequest } + + do { + let data = try PropertyListSerialization.data( + fromPropertyList: parameters, + format: format, + options: options + ) + + if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil { + urlRequest.setValue("application/x-plist", forHTTPHeaderField: "Content-Type") + } + + urlRequest.httpBody = data + } catch { + throw AFError.parameterEncodingFailed(reason: .propertyListEncodingFailed(error: error)) + } + + return urlRequest + } +} + +// MARK: - + +extension NSNumber { + fileprivate var isBool: Bool { return CFBooleanGetTypeID() == CFGetTypeID(self) } +} diff --git a/Santander-Test/Pods/Alamofire/Source/Request.swift b/Santander-Test/Pods/Alamofire/Source/Request.swift new file mode 100644 index 00000000..a2efaa0e --- /dev/null +++ b/Santander-Test/Pods/Alamofire/Source/Request.swift @@ -0,0 +1,649 @@ +// +// Request.swift +// +// Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) +// +// 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 Foundation + +/// A type that can inspect and optionally adapt a `URLRequest` in some manner if necessary. +public protocol RequestAdapter { + /// Inspects and adapts the specified `URLRequest` in some manner if necessary and returns the result. + /// + /// - parameter urlRequest: The URL request to adapt. + /// + /// - throws: An `Error` if the adaptation encounters an error. + /// + /// - returns: The adapted `URLRequest`. + func adapt(_ urlRequest: URLRequest) throws -> URLRequest +} + +// MARK: - + +/// A closure executed when the `RequestRetrier` determines whether a `Request` should be retried or not. +public typealias RequestRetryCompletion = (_ shouldRetry: Bool, _ timeDelay: TimeInterval) -> Void + +/// A type that determines whether a request should be retried after being executed by the specified session manager +/// and encountering an error. +public protocol RequestRetrier { + /// Determines whether the `Request` should be retried by calling the `completion` closure. + /// + /// This operation is fully asynchronous. Any amount of time can be taken to determine whether the request needs + /// to be retried. The one requirement is that the completion closure is called to ensure the request is properly + /// cleaned up after. + /// + /// - parameter manager: The session manager the request was executed on. + /// - parameter request: The request that failed due to the encountered error. + /// - parameter error: The error encountered when executing the request. + /// - parameter completion: The completion closure to be executed when retry decision has been determined. + func should(_ manager: SessionManager, retry request: Request, with error: Error, completion: @escaping RequestRetryCompletion) +} + +// MARK: - + +protocol TaskConvertible { + func task(session: URLSession, adapter: RequestAdapter?, queue: DispatchQueue) throws -> URLSessionTask +} + +/// A dictionary of headers to apply to a `URLRequest`. +public typealias HTTPHeaders = [String: String] + +// MARK: - + +/// Responsible for sending a request and receiving the response and associated data from the server, as well as +/// managing its underlying `URLSessionTask`. +open class Request { + + // MARK: Helper Types + + /// A closure executed when monitoring upload or download progress of a request. + public typealias ProgressHandler = (Progress) -> Void + + enum RequestTask { + case data(TaskConvertible?, URLSessionTask?) + case download(TaskConvertible?, URLSessionTask?) + case upload(TaskConvertible?, URLSessionTask?) + case stream(TaskConvertible?, URLSessionTask?) + } + + // MARK: Properties + + /// The delegate for the underlying task. + open internal(set) var delegate: TaskDelegate { + get { + taskDelegateLock.lock() ; defer { taskDelegateLock.unlock() } + return taskDelegate + } + set { + taskDelegateLock.lock() ; defer { taskDelegateLock.unlock() } + taskDelegate = newValue + } + } + + /// The underlying task. + open var task: URLSessionTask? { return delegate.task } + + /// The session belonging to the underlying task. + public let session: URLSession + + /// The request sent or to be sent to the server. + open var request: URLRequest? { return task?.originalRequest } + + /// The response received from the server, if any. + open var response: HTTPURLResponse? { return task?.response as? HTTPURLResponse } + + /// The number of times the request has been retried. + open internal(set) var retryCount: UInt = 0 + + let originalTask: TaskConvertible? + + var startTime: CFAbsoluteTime? + var endTime: CFAbsoluteTime? + + var validations: [() -> Void] = [] + + private var taskDelegate: TaskDelegate + private var taskDelegateLock = NSLock() + + // MARK: Lifecycle + + init(session: URLSession, requestTask: RequestTask, error: Error? = nil) { + self.session = session + + switch requestTask { + case .data(let originalTask, let task): + taskDelegate = DataTaskDelegate(task: task) + self.originalTask = originalTask + case .download(let originalTask, let task): + taskDelegate = DownloadTaskDelegate(task: task) + self.originalTask = originalTask + case .upload(let originalTask, let task): + taskDelegate = UploadTaskDelegate(task: task) + self.originalTask = originalTask + case .stream(let originalTask, let task): + taskDelegate = TaskDelegate(task: task) + self.originalTask = originalTask + } + + delegate.error = error + delegate.queue.addOperation { self.endTime = CFAbsoluteTimeGetCurrent() } + } + + // MARK: Authentication + + /// Associates an HTTP Basic credential with the request. + /// + /// - parameter user: The user. + /// - parameter password: The password. + /// - parameter persistence: The URL credential persistence. `.ForSession` by default. + /// + /// - returns: The request. + @discardableResult + open func authenticate( + user: String, + password: String, + persistence: URLCredential.Persistence = .forSession) + -> Self + { + let credential = URLCredential(user: user, password: password, persistence: persistence) + return authenticate(usingCredential: credential) + } + + /// Associates a specified credential with the request. + /// + /// - parameter credential: The credential. + /// + /// - returns: The request. + @discardableResult + open func authenticate(usingCredential credential: URLCredential) -> Self { + delegate.credential = credential + return self + } + + /// Returns a base64 encoded basic authentication credential as an authorization header tuple. + /// + /// - parameter user: The user. + /// - parameter password: The password. + /// + /// - returns: A tuple with Authorization header and credential value if encoding succeeds, `nil` otherwise. + open class func authorizationHeader(user: String, password: String) -> (key: String, value: String)? { + guard let data = "\(user):\(password)".data(using: .utf8) else { return nil } + + let credential = data.base64EncodedString(options: []) + + return (key: "Authorization", value: "Basic \(credential)") + } + + // MARK: State + + /// Resumes the request. + open func resume() { + guard let task = task else { delegate.queue.isSuspended = false ; return } + + if startTime == nil { startTime = CFAbsoluteTimeGetCurrent() } + + task.resume() + + NotificationCenter.default.post( + name: Notification.Name.Task.DidResume, + object: self, + userInfo: [Notification.Key.Task: task] + ) + } + + /// Suspends the request. + open func suspend() { + guard let task = task else { return } + + task.suspend() + + NotificationCenter.default.post( + name: Notification.Name.Task.DidSuspend, + object: self, + userInfo: [Notification.Key.Task: task] + ) + } + + /// Cancels the request. + open func cancel() { + guard let task = task else { return } + + task.cancel() + + NotificationCenter.default.post( + name: Notification.Name.Task.DidCancel, + object: self, + userInfo: [Notification.Key.Task: task] + ) + } +} + +// MARK: - CustomStringConvertible + +extension Request: CustomStringConvertible { + /// The textual representation used when written to an output stream, which includes the HTTP method and URL, as + /// well as the response status code if a response has been received. + open var description: String { + var components: [String] = [] + + if let HTTPMethod = request?.httpMethod { + components.append(HTTPMethod) + } + + if let urlString = request?.url?.absoluteString { + components.append(urlString) + } + + if let response = response { + components.append("(\(response.statusCode))") + } + + return components.joined(separator: " ") + } +} + +// MARK: - CustomDebugStringConvertible + +extension Request: CustomDebugStringConvertible { + /// The textual representation used when written to an output stream, in the form of a cURL command. + open var debugDescription: String { + return cURLRepresentation() + } + + func cURLRepresentation() -> String { + var components = ["$ curl -v"] + + guard let request = self.request, + let url = request.url, + let host = url.host + else { + return "$ curl command could not be created" + } + + if let httpMethod = request.httpMethod, httpMethod != "GET" { + components.append("-X \(httpMethod)") + } + + if let credentialStorage = self.session.configuration.urlCredentialStorage { + let protectionSpace = URLProtectionSpace( + host: host, + port: url.port ?? 0, + protocol: url.scheme, + realm: host, + authenticationMethod: NSURLAuthenticationMethodHTTPBasic + ) + + if let credentials = credentialStorage.credentials(for: protectionSpace)?.values { + for credential in credentials { + guard let user = credential.user, let password = credential.password else { continue } + components.append("-u \(user):\(password)") + } + } else { + if let credential = delegate.credential, let user = credential.user, let password = credential.password { + components.append("-u \(user):\(password)") + } + } + } + + if session.configuration.httpShouldSetCookies { + if + let cookieStorage = session.configuration.httpCookieStorage, + let cookies = cookieStorage.cookies(for: url), !cookies.isEmpty + { + let string = cookies.reduce("") { $0 + "\($1.name)=\($1.value);" } + + #if swift(>=3.2) + components.append("-b \"\(string[.. URLSessionTask { + do { + let urlRequest = try self.urlRequest.adapt(using: adapter) + return queue.sync { session.dataTask(with: urlRequest) } + } catch { + throw AdaptError(error: error) + } + } + } + + // MARK: Properties + + /// The request sent or to be sent to the server. + open override var request: URLRequest? { + if let request = super.request { return request } + if let requestable = originalTask as? Requestable { return requestable.urlRequest } + + return nil + } + + /// The progress of fetching the response data from the server for the request. + open var progress: Progress { return dataDelegate.progress } + + var dataDelegate: DataTaskDelegate { return delegate as! DataTaskDelegate } + + // MARK: Stream + + /// Sets a closure to be called periodically during the lifecycle of the request as data is read from the server. + /// + /// This closure returns the bytes most recently received from the server, not including data from previous calls. + /// If this closure is set, data will only be available within this closure, and will not be saved elsewhere. It is + /// also important to note that the server data in any `Response` object will be `nil`. + /// + /// - parameter closure: The code to be executed periodically during the lifecycle of the request. + /// + /// - returns: The request. + @discardableResult + open func stream(closure: ((Data) -> Void)? = nil) -> Self { + dataDelegate.dataStream = closure + return self + } + + // MARK: Progress + + /// Sets a closure to be called periodically during the lifecycle of the `Request` as data is read from the server. + /// + /// - parameter queue: The dispatch queue to execute the closure on. + /// - parameter closure: The code to be executed periodically as data is read from the server. + /// + /// - returns: The request. + @discardableResult + open func downloadProgress(queue: DispatchQueue = DispatchQueue.main, closure: @escaping ProgressHandler) -> Self { + dataDelegate.progressHandler = (closure, queue) + return self + } +} + +// MARK: - + +/// Specific type of `Request` that manages an underlying `URLSessionDownloadTask`. +open class DownloadRequest: Request { + + // MARK: Helper Types + + /// A collection of options to be executed prior to moving a downloaded file from the temporary URL to the + /// destination URL. + public struct DownloadOptions: OptionSet { + /// Returns the raw bitmask value of the option and satisfies the `RawRepresentable` protocol. + public let rawValue: UInt + + /// A `DownloadOptions` flag that creates intermediate directories for the destination URL if specified. + public static let createIntermediateDirectories = DownloadOptions(rawValue: 1 << 0) + + /// A `DownloadOptions` flag that removes a previous file from the destination URL if specified. + public static let removePreviousFile = DownloadOptions(rawValue: 1 << 1) + + /// Creates a `DownloadFileDestinationOptions` instance with the specified raw value. + /// + /// - parameter rawValue: The raw bitmask value for the option. + /// + /// - returns: A new log level instance. + public init(rawValue: UInt) { + self.rawValue = rawValue + } + } + + /// A closure executed once a download request has successfully completed in order to determine where to move the + /// temporary file written to during the download process. The closure takes two arguments: the temporary file URL + /// and the URL response, and returns a two arguments: the file URL where the temporary file should be moved and + /// the options defining how the file should be moved. + public typealias DownloadFileDestination = ( + _ temporaryURL: URL, + _ response: HTTPURLResponse) + -> (destinationURL: URL, options: DownloadOptions) + + enum Downloadable: TaskConvertible { + case request(URLRequest) + case resumeData(Data) + + func task(session: URLSession, adapter: RequestAdapter?, queue: DispatchQueue) throws -> URLSessionTask { + do { + let task: URLSessionTask + + switch self { + case let .request(urlRequest): + let urlRequest = try urlRequest.adapt(using: adapter) + task = queue.sync { session.downloadTask(with: urlRequest) } + case let .resumeData(resumeData): + task = queue.sync { session.downloadTask(withResumeData: resumeData) } + } + + return task + } catch { + throw AdaptError(error: error) + } + } + } + + // MARK: Properties + + /// The request sent or to be sent to the server. + open override var request: URLRequest? { + if let request = super.request { return request } + + if let downloadable = originalTask as? Downloadable, case let .request(urlRequest) = downloadable { + return urlRequest + } + + return nil + } + + /// The resume data of the underlying download task if available after a failure. + open var resumeData: Data? { return downloadDelegate.resumeData } + + /// The progress of downloading the response data from the server for the request. + open var progress: Progress { return downloadDelegate.progress } + + var downloadDelegate: DownloadTaskDelegate { return delegate as! DownloadTaskDelegate } + + // MARK: State + + /// Cancels the request. + open override func cancel() { + downloadDelegate.downloadTask.cancel { self.downloadDelegate.resumeData = $0 } + + NotificationCenter.default.post( + name: Notification.Name.Task.DidCancel, + object: self, + userInfo: [Notification.Key.Task: task as Any] + ) + } + + // MARK: Progress + + /// Sets a closure to be called periodically during the lifecycle of the `Request` as data is read from the server. + /// + /// - parameter queue: The dispatch queue to execute the closure on. + /// - parameter closure: The code to be executed periodically as data is read from the server. + /// + /// - returns: The request. + @discardableResult + open func downloadProgress(queue: DispatchQueue = DispatchQueue.main, closure: @escaping ProgressHandler) -> Self { + downloadDelegate.progressHandler = (closure, queue) + return self + } + + // MARK: Destination + + /// Creates a download file destination closure which uses the default file manager to move the temporary file to a + /// file URL in the first available directory with the specified search path directory and search path domain mask. + /// + /// - parameter directory: The search path directory. `.DocumentDirectory` by default. + /// - parameter domain: The search path domain mask. `.UserDomainMask` by default. + /// + /// - returns: A download file destination closure. + open class func suggestedDownloadDestination( + for directory: FileManager.SearchPathDirectory = .documentDirectory, + in domain: FileManager.SearchPathDomainMask = .userDomainMask) + -> DownloadFileDestination + { + return { temporaryURL, response in + let directoryURLs = FileManager.default.urls(for: directory, in: domain) + + if !directoryURLs.isEmpty { + return (directoryURLs[0].appendingPathComponent(response.suggestedFilename!), []) + } + + return (temporaryURL, []) + } + } +} + +// MARK: - + +/// Specific type of `Request` that manages an underlying `URLSessionUploadTask`. +open class UploadRequest: DataRequest { + + // MARK: Helper Types + + enum Uploadable: TaskConvertible { + case data(Data, URLRequest) + case file(URL, URLRequest) + case stream(InputStream, URLRequest) + + func task(session: URLSession, adapter: RequestAdapter?, queue: DispatchQueue) throws -> URLSessionTask { + do { + let task: URLSessionTask + + switch self { + case let .data(data, urlRequest): + let urlRequest = try urlRequest.adapt(using: adapter) + task = queue.sync { session.uploadTask(with: urlRequest, from: data) } + case let .file(url, urlRequest): + let urlRequest = try urlRequest.adapt(using: adapter) + task = queue.sync { session.uploadTask(with: urlRequest, fromFile: url) } + case let .stream(_, urlRequest): + let urlRequest = try urlRequest.adapt(using: adapter) + task = queue.sync { session.uploadTask(withStreamedRequest: urlRequest) } + } + + return task + } catch { + throw AdaptError(error: error) + } + } + } + + // MARK: Properties + + /// The request sent or to be sent to the server. + open override var request: URLRequest? { + if let request = super.request { return request } + + guard let uploadable = originalTask as? Uploadable else { return nil } + + switch uploadable { + case .data(_, let urlRequest), .file(_, let urlRequest), .stream(_, let urlRequest): + return urlRequest + } + } + + /// The progress of uploading the payload to the server for the upload request. + open var uploadProgress: Progress { return uploadDelegate.uploadProgress } + + var uploadDelegate: UploadTaskDelegate { return delegate as! UploadTaskDelegate } + + // MARK: Upload Progress + + /// Sets a closure to be called periodically during the lifecycle of the `UploadRequest` as data is sent to + /// the server. + /// + /// After the data is sent to the server, the `progress(queue:closure:)` APIs can be used to monitor the progress + /// of data being read from the server. + /// + /// - parameter queue: The dispatch queue to execute the closure on. + /// - parameter closure: The code to be executed periodically as data is sent to the server. + /// + /// - returns: The request. + @discardableResult + open func uploadProgress(queue: DispatchQueue = DispatchQueue.main, closure: @escaping ProgressHandler) -> Self { + uploadDelegate.uploadProgressHandler = (closure, queue) + return self + } +} + +// MARK: - + +#if !os(watchOS) + +/// Specific type of `Request` that manages an underlying `URLSessionStreamTask`. +@available(iOS 9.0, macOS 10.11, tvOS 9.0, *) +open class StreamRequest: Request { + enum Streamable: TaskConvertible { + case stream(hostName: String, port: Int) + case netService(NetService) + + func task(session: URLSession, adapter: RequestAdapter?, queue: DispatchQueue) throws -> URLSessionTask { + let task: URLSessionTask + + switch self { + case let .stream(hostName, port): + task = queue.sync { session.streamTask(withHostName: hostName, port: port) } + case let .netService(netService): + task = queue.sync { session.streamTask(with: netService) } + } + + return task + } + } +} + +#endif diff --git a/Santander-Test/Pods/Alamofire/Source/Response.swift b/Santander-Test/Pods/Alamofire/Source/Response.swift new file mode 100644 index 00000000..747a471a --- /dev/null +++ b/Santander-Test/Pods/Alamofire/Source/Response.swift @@ -0,0 +1,567 @@ +// +// Response.swift +// +// Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) +// +// 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 Foundation + +/// Used to store all data associated with an non-serialized response of a data or upload request. +public struct DefaultDataResponse { + /// The URL request sent to the server. + public let request: URLRequest? + + /// The server's response to the URL request. + public let response: HTTPURLResponse? + + /// The data returned by the server. + public let data: Data? + + /// The error encountered while executing or validating the request. + public let error: Error? + + /// The timeline of the complete lifecycle of the request. + public let timeline: Timeline + + var _metrics: AnyObject? + + /// Creates a `DefaultDataResponse` instance from the specified parameters. + /// + /// - Parameters: + /// - request: The URL request sent to the server. + /// - response: The server's response to the URL request. + /// - data: The data returned by the server. + /// - error: The error encountered while executing or validating the request. + /// - timeline: The timeline of the complete lifecycle of the request. `Timeline()` by default. + /// - metrics: The task metrics containing the request / response statistics. `nil` by default. + public init( + request: URLRequest?, + response: HTTPURLResponse?, + data: Data?, + error: Error?, + timeline: Timeline = Timeline(), + metrics: AnyObject? = nil) + { + self.request = request + self.response = response + self.data = data + self.error = error + self.timeline = timeline + } +} + +// MARK: - + +/// Used to store all data associated with a serialized response of a data or upload request. +public struct DataResponse { + /// The URL request sent to the server. + public let request: URLRequest? + + /// The server's response to the URL request. + public let response: HTTPURLResponse? + + /// The data returned by the server. + public let data: Data? + + /// The result of response serialization. + public let result: Result + + /// The timeline of the complete lifecycle of the request. + public let timeline: Timeline + + /// Returns the associated value of the result if it is a success, `nil` otherwise. + public var value: Value? { return result.value } + + /// Returns the associated error value if the result if it is a failure, `nil` otherwise. + public var error: Error? { return result.error } + + var _metrics: AnyObject? + + /// Creates a `DataResponse` instance with the specified parameters derived from response serialization. + /// + /// - parameter request: The URL request sent to the server. + /// - parameter response: The server's response to the URL request. + /// - parameter data: The data returned by the server. + /// - parameter result: The result of response serialization. + /// - parameter timeline: The timeline of the complete lifecycle of the `Request`. Defaults to `Timeline()`. + /// + /// - returns: The new `DataResponse` instance. + public init( + request: URLRequest?, + response: HTTPURLResponse?, + data: Data?, + result: Result, + timeline: Timeline = Timeline()) + { + self.request = request + self.response = response + self.data = data + self.result = result + self.timeline = timeline + } +} + +// MARK: - + +extension DataResponse: CustomStringConvertible, CustomDebugStringConvertible { + /// The textual representation used when written to an output stream, which includes whether the result was a + /// success or failure. + public var description: String { + return result.debugDescription + } + + /// The debug textual representation used when written to an output stream, which includes the URL request, the URL + /// response, the server data, the response serialization result and the timeline. + public var debugDescription: String { + var output: [String] = [] + + output.append(request != nil ? "[Request]: \(request!.httpMethod ?? "GET") \(request!)" : "[Request]: nil") + output.append(response != nil ? "[Response]: \(response!)" : "[Response]: nil") + output.append("[Data]: \(data?.count ?? 0) bytes") + output.append("[Result]: \(result.debugDescription)") + output.append("[Timeline]: \(timeline.debugDescription)") + + return output.joined(separator: "\n") + } +} + +// MARK: - + +extension DataResponse { + /// Evaluates the specified closure when the result of this `DataResponse` is a success, passing the unwrapped + /// result value as a parameter. + /// + /// Use the `map` method with a closure that does not throw. For example: + /// + /// let possibleData: DataResponse = ... + /// let possibleInt = possibleData.map { $0.count } + /// + /// - parameter transform: A closure that takes the success value of the instance's result. + /// + /// - returns: A `DataResponse` whose result wraps the value returned by the given closure. If this instance's + /// result is a failure, returns a response wrapping the same failure. + public func map(_ transform: (Value) -> T) -> DataResponse { + var response = DataResponse( + request: request, + response: self.response, + data: data, + result: result.map(transform), + timeline: timeline + ) + + response._metrics = _metrics + + return response + } + + /// Evaluates the given closure when the result of this `DataResponse` is a success, passing the unwrapped result + /// value as a parameter. + /// + /// Use the `flatMap` method with a closure that may throw an error. For example: + /// + /// let possibleData: DataResponse = ... + /// let possibleObject = possibleData.flatMap { + /// try JSONSerialization.jsonObject(with: $0) + /// } + /// + /// - parameter transform: A closure that takes the success value of the instance's result. + /// + /// - returns: A success or failure `DataResponse` depending on the result of the given closure. If this instance's + /// result is a failure, returns the same failure. + public func flatMap(_ transform: (Value) throws -> T) -> DataResponse { + var response = DataResponse( + request: request, + response: self.response, + data: data, + result: result.flatMap(transform), + timeline: timeline + ) + + response._metrics = _metrics + + return response + } + + /// Evaluates the specified closure when the `DataResponse` is a failure, passing the unwrapped error as a parameter. + /// + /// Use the `mapError` function with a closure that does not throw. For example: + /// + /// let possibleData: DataResponse = ... + /// let withMyError = possibleData.mapError { MyError.error($0) } + /// + /// - Parameter transform: A closure that takes the error of the instance. + /// - Returns: A `DataResponse` instance containing the result of the transform. + public func mapError(_ transform: (Error) -> E) -> DataResponse { + var response = DataResponse( + request: request, + response: self.response, + data: data, + result: result.mapError(transform), + timeline: timeline + ) + + response._metrics = _metrics + + return response + } + + /// Evaluates the specified closure when the `DataResponse` is a failure, passing the unwrapped error as a parameter. + /// + /// Use the `flatMapError` function with a closure that may throw an error. For example: + /// + /// let possibleData: DataResponse = ... + /// let possibleObject = possibleData.flatMapError { + /// try someFailableFunction(taking: $0) + /// } + /// + /// - Parameter transform: A throwing closure that takes the error of the instance. + /// + /// - Returns: A `DataResponse` instance containing the result of the transform. + public func flatMapError(_ transform: (Error) throws -> E) -> DataResponse { + var response = DataResponse( + request: request, + response: self.response, + data: data, + result: result.flatMapError(transform), + timeline: timeline + ) + + response._metrics = _metrics + + return response + } +} + +// MARK: - + +/// Used to store all data associated with an non-serialized response of a download request. +public struct DefaultDownloadResponse { + /// The URL request sent to the server. + public let request: URLRequest? + + /// The server's response to the URL request. + public let response: HTTPURLResponse? + + /// The temporary destination URL of the data returned from the server. + public let temporaryURL: URL? + + /// The final destination URL of the data returned from the server if it was moved. + public let destinationURL: URL? + + /// The resume data generated if the request was cancelled. + public let resumeData: Data? + + /// The error encountered while executing or validating the request. + public let error: Error? + + /// The timeline of the complete lifecycle of the request. + public let timeline: Timeline + + var _metrics: AnyObject? + + /// Creates a `DefaultDownloadResponse` instance from the specified parameters. + /// + /// - Parameters: + /// - request: The URL request sent to the server. + /// - response: The server's response to the URL request. + /// - temporaryURL: The temporary destination URL of the data returned from the server. + /// - destinationURL: The final destination URL of the data returned from the server if it was moved. + /// - resumeData: The resume data generated if the request was cancelled. + /// - error: The error encountered while executing or validating the request. + /// - timeline: The timeline of the complete lifecycle of the request. `Timeline()` by default. + /// - metrics: The task metrics containing the request / response statistics. `nil` by default. + public init( + request: URLRequest?, + response: HTTPURLResponse?, + temporaryURL: URL?, + destinationURL: URL?, + resumeData: Data?, + error: Error?, + timeline: Timeline = Timeline(), + metrics: AnyObject? = nil) + { + self.request = request + self.response = response + self.temporaryURL = temporaryURL + self.destinationURL = destinationURL + self.resumeData = resumeData + self.error = error + self.timeline = timeline + } +} + +// MARK: - + +/// Used to store all data associated with a serialized response of a download request. +public struct DownloadResponse { + /// The URL request sent to the server. + public let request: URLRequest? + + /// The server's response to the URL request. + public let response: HTTPURLResponse? + + /// The temporary destination URL of the data returned from the server. + public let temporaryURL: URL? + + /// The final destination URL of the data returned from the server if it was moved. + public let destinationURL: URL? + + /// The resume data generated if the request was cancelled. + public let resumeData: Data? + + /// The result of response serialization. + public let result: Result + + /// The timeline of the complete lifecycle of the request. + public let timeline: Timeline + + /// Returns the associated value of the result if it is a success, `nil` otherwise. + public var value: Value? { return result.value } + + /// Returns the associated error value if the result if it is a failure, `nil` otherwise. + public var error: Error? { return result.error } + + var _metrics: AnyObject? + + /// Creates a `DownloadResponse` instance with the specified parameters derived from response serialization. + /// + /// - parameter request: The URL request sent to the server. + /// - parameter response: The server's response to the URL request. + /// - parameter temporaryURL: The temporary destination URL of the data returned from the server. + /// - parameter destinationURL: The final destination URL of the data returned from the server if it was moved. + /// - parameter resumeData: The resume data generated if the request was cancelled. + /// - parameter result: The result of response serialization. + /// - parameter timeline: The timeline of the complete lifecycle of the `Request`. Defaults to `Timeline()`. + /// + /// - returns: The new `DownloadResponse` instance. + public init( + request: URLRequest?, + response: HTTPURLResponse?, + temporaryURL: URL?, + destinationURL: URL?, + resumeData: Data?, + result: Result, + timeline: Timeline = Timeline()) + { + self.request = request + self.response = response + self.temporaryURL = temporaryURL + self.destinationURL = destinationURL + self.resumeData = resumeData + self.result = result + self.timeline = timeline + } +} + +// MARK: - + +extension DownloadResponse: CustomStringConvertible, CustomDebugStringConvertible { + /// The textual representation used when written to an output stream, which includes whether the result was a + /// success or failure. + public var description: String { + return result.debugDescription + } + + /// The debug textual representation used when written to an output stream, which includes the URL request, the URL + /// response, the temporary and destination URLs, the resume data, the response serialization result and the + /// timeline. + public var debugDescription: String { + var output: [String] = [] + + output.append(request != nil ? "[Request]: \(request!.httpMethod ?? "GET") \(request!)" : "[Request]: nil") + output.append(response != nil ? "[Response]: \(response!)" : "[Response]: nil") + output.append("[TemporaryURL]: \(temporaryURL?.path ?? "nil")") + output.append("[DestinationURL]: \(destinationURL?.path ?? "nil")") + output.append("[ResumeData]: \(resumeData?.count ?? 0) bytes") + output.append("[Result]: \(result.debugDescription)") + output.append("[Timeline]: \(timeline.debugDescription)") + + return output.joined(separator: "\n") + } +} + +// MARK: - + +extension DownloadResponse { + /// Evaluates the given closure when the result of this `DownloadResponse` is a success, passing the unwrapped + /// result value as a parameter. + /// + /// Use the `map` method with a closure that does not throw. For example: + /// + /// let possibleData: DownloadResponse = ... + /// let possibleInt = possibleData.map { $0.count } + /// + /// - parameter transform: A closure that takes the success value of the instance's result. + /// + /// - returns: A `DownloadResponse` whose result wraps the value returned by the given closure. If this instance's + /// result is a failure, returns a response wrapping the same failure. + public func map(_ transform: (Value) -> T) -> DownloadResponse { + var response = DownloadResponse( + request: request, + response: self.response, + temporaryURL: temporaryURL, + destinationURL: destinationURL, + resumeData: resumeData, + result: result.map(transform), + timeline: timeline + ) + + response._metrics = _metrics + + return response + } + + /// Evaluates the given closure when the result of this `DownloadResponse` is a success, passing the unwrapped + /// result value as a parameter. + /// + /// Use the `flatMap` method with a closure that may throw an error. For example: + /// + /// let possibleData: DownloadResponse = ... + /// let possibleObject = possibleData.flatMap { + /// try JSONSerialization.jsonObject(with: $0) + /// } + /// + /// - parameter transform: A closure that takes the success value of the instance's result. + /// + /// - returns: A success or failure `DownloadResponse` depending on the result of the given closure. If this + /// instance's result is a failure, returns the same failure. + public func flatMap(_ transform: (Value) throws -> T) -> DownloadResponse { + var response = DownloadResponse( + request: request, + response: self.response, + temporaryURL: temporaryURL, + destinationURL: destinationURL, + resumeData: resumeData, + result: result.flatMap(transform), + timeline: timeline + ) + + response._metrics = _metrics + + return response + } + + /// Evaluates the specified closure when the `DownloadResponse` is a failure, passing the unwrapped error as a parameter. + /// + /// Use the `mapError` function with a closure that does not throw. For example: + /// + /// let possibleData: DownloadResponse = ... + /// let withMyError = possibleData.mapError { MyError.error($0) } + /// + /// - Parameter transform: A closure that takes the error of the instance. + /// - Returns: A `DownloadResponse` instance containing the result of the transform. + public func mapError(_ transform: (Error) -> E) -> DownloadResponse { + var response = DownloadResponse( + request: request, + response: self.response, + temporaryURL: temporaryURL, + destinationURL: destinationURL, + resumeData: resumeData, + result: result.mapError(transform), + timeline: timeline + ) + + response._metrics = _metrics + + return response + } + + /// Evaluates the specified closure when the `DownloadResponse` is a failure, passing the unwrapped error as a parameter. + /// + /// Use the `flatMapError` function with a closure that may throw an error. For example: + /// + /// let possibleData: DownloadResponse = ... + /// let possibleObject = possibleData.flatMapError { + /// try someFailableFunction(taking: $0) + /// } + /// + /// - Parameter transform: A throwing closure that takes the error of the instance. + /// + /// - Returns: A `DownloadResponse` instance containing the result of the transform. + public func flatMapError(_ transform: (Error) throws -> E) -> DownloadResponse { + var response = DownloadResponse( + request: request, + response: self.response, + temporaryURL: temporaryURL, + destinationURL: destinationURL, + resumeData: resumeData, + result: result.flatMapError(transform), + timeline: timeline + ) + + response._metrics = _metrics + + return response + } +} + +// MARK: - + +protocol Response { + /// The task metrics containing the request / response statistics. + var _metrics: AnyObject? { get set } + mutating func add(_ metrics: AnyObject?) +} + +extension Response { + mutating func add(_ metrics: AnyObject?) { + #if !os(watchOS) + guard #available(iOS 10.0, macOS 10.12, tvOS 10.0, *) else { return } + guard let metrics = metrics as? URLSessionTaskMetrics else { return } + + _metrics = metrics + #endif + } +} + +// MARK: - + +@available(iOS 10.0, macOS 10.12, tvOS 10.0, *) +extension DefaultDataResponse: Response { +#if !os(watchOS) + /// The task metrics containing the request / response statistics. + public var metrics: URLSessionTaskMetrics? { return _metrics as? URLSessionTaskMetrics } +#endif +} + +@available(iOS 10.0, macOS 10.12, tvOS 10.0, *) +extension DataResponse: Response { +#if !os(watchOS) + /// The task metrics containing the request / response statistics. + public var metrics: URLSessionTaskMetrics? { return _metrics as? URLSessionTaskMetrics } +#endif +} + +@available(iOS 10.0, macOS 10.12, tvOS 10.0, *) +extension DefaultDownloadResponse: Response { +#if !os(watchOS) + /// The task metrics containing the request / response statistics. + public var metrics: URLSessionTaskMetrics? { return _metrics as? URLSessionTaskMetrics } +#endif +} + +@available(iOS 10.0, macOS 10.12, tvOS 10.0, *) +extension DownloadResponse: Response { +#if !os(watchOS) + /// The task metrics containing the request / response statistics. + public var metrics: URLSessionTaskMetrics? { return _metrics as? URLSessionTaskMetrics } +#endif +} diff --git a/Santander-Test/Pods/Alamofire/Source/ResponseSerialization.swift b/Santander-Test/Pods/Alamofire/Source/ResponseSerialization.swift new file mode 100644 index 00000000..9cc105a8 --- /dev/null +++ b/Santander-Test/Pods/Alamofire/Source/ResponseSerialization.swift @@ -0,0 +1,715 @@ +// +// ResponseSerialization.swift +// +// Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) +// +// 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 Foundation + +/// The type in which all data response serializers must conform to in order to serialize a response. +public protocol DataResponseSerializerProtocol { + /// The type of serialized object to be created by this `DataResponseSerializerType`. + associatedtype SerializedObject + + /// A closure used by response handlers that takes a request, response, data and error and returns a result. + var serializeResponse: (URLRequest?, HTTPURLResponse?, Data?, Error?) -> Result { get } +} + +// MARK: - + +/// A generic `DataResponseSerializerType` used to serialize a request, response, and data into a serialized object. +public struct DataResponseSerializer: DataResponseSerializerProtocol { + /// The type of serialized object to be created by this `DataResponseSerializer`. + public typealias SerializedObject = Value + + /// A closure used by response handlers that takes a request, response, data and error and returns a result. + public var serializeResponse: (URLRequest?, HTTPURLResponse?, Data?, Error?) -> Result + + /// Initializes the `ResponseSerializer` instance with the given serialize response closure. + /// + /// - parameter serializeResponse: The closure used to serialize the response. + /// + /// - returns: The new generic response serializer instance. + public init(serializeResponse: @escaping (URLRequest?, HTTPURLResponse?, Data?, Error?) -> Result) { + self.serializeResponse = serializeResponse + } +} + +// MARK: - + +/// The type in which all download response serializers must conform to in order to serialize a response. +public protocol DownloadResponseSerializerProtocol { + /// The type of serialized object to be created by this `DownloadResponseSerializerType`. + associatedtype SerializedObject + + /// A closure used by response handlers that takes a request, response, url and error and returns a result. + var serializeResponse: (URLRequest?, HTTPURLResponse?, URL?, Error?) -> Result { get } +} + +// MARK: - + +/// A generic `DownloadResponseSerializerType` used to serialize a request, response, and data into a serialized object. +public struct DownloadResponseSerializer: DownloadResponseSerializerProtocol { + /// The type of serialized object to be created by this `DownloadResponseSerializer`. + public typealias SerializedObject = Value + + /// A closure used by response handlers that takes a request, response, url and error and returns a result. + public var serializeResponse: (URLRequest?, HTTPURLResponse?, URL?, Error?) -> Result + + /// Initializes the `ResponseSerializer` instance with the given serialize response closure. + /// + /// - parameter serializeResponse: The closure used to serialize the response. + /// + /// - returns: The new generic response serializer instance. + public init(serializeResponse: @escaping (URLRequest?, HTTPURLResponse?, URL?, Error?) -> Result) { + self.serializeResponse = serializeResponse + } +} + +// MARK: - Timeline + +extension Request { + var timeline: Timeline { + let requestStartTime = self.startTime ?? CFAbsoluteTimeGetCurrent() + let requestCompletedTime = self.endTime ?? CFAbsoluteTimeGetCurrent() + let initialResponseTime = self.delegate.initialResponseTime ?? requestCompletedTime + + return Timeline( + requestStartTime: requestStartTime, + initialResponseTime: initialResponseTime, + requestCompletedTime: requestCompletedTime, + serializationCompletedTime: CFAbsoluteTimeGetCurrent() + ) + } +} + +// MARK: - Default + +extension DataRequest { + /// Adds a handler to be called once the request has finished. + /// + /// - parameter queue: The queue on which the completion handler is dispatched. + /// - parameter completionHandler: The code to be executed once the request has finished. + /// + /// - returns: The request. + @discardableResult + public func response(queue: DispatchQueue? = nil, completionHandler: @escaping (DefaultDataResponse) -> Void) -> Self { + delegate.queue.addOperation { + (queue ?? DispatchQueue.main).async { + var dataResponse = DefaultDataResponse( + request: self.request, + response: self.response, + data: self.delegate.data, + error: self.delegate.error, + timeline: self.timeline + ) + + dataResponse.add(self.delegate.metrics) + + completionHandler(dataResponse) + } + } + + return self + } + + /// Adds a handler to be called once the request has finished. + /// + /// - parameter queue: The queue on which the completion handler is dispatched. + /// - parameter responseSerializer: The response serializer responsible for serializing the request, response, + /// and data. + /// - parameter completionHandler: The code to be executed once the request has finished. + /// + /// - returns: The request. + @discardableResult + public func response( + queue: DispatchQueue? = nil, + responseSerializer: T, + completionHandler: @escaping (DataResponse) -> Void) + -> Self + { + delegate.queue.addOperation { + let result = responseSerializer.serializeResponse( + self.request, + self.response, + self.delegate.data, + self.delegate.error + ) + + var dataResponse = DataResponse( + request: self.request, + response: self.response, + data: self.delegate.data, + result: result, + timeline: self.timeline + ) + + dataResponse.add(self.delegate.metrics) + + (queue ?? DispatchQueue.main).async { completionHandler(dataResponse) } + } + + return self + } +} + +extension DownloadRequest { + /// Adds a handler to be called once the request has finished. + /// + /// - parameter queue: The queue on which the completion handler is dispatched. + /// - parameter completionHandler: The code to be executed once the request has finished. + /// + /// - returns: The request. + @discardableResult + public func response( + queue: DispatchQueue? = nil, + completionHandler: @escaping (DefaultDownloadResponse) -> Void) + -> Self + { + delegate.queue.addOperation { + (queue ?? DispatchQueue.main).async { + var downloadResponse = DefaultDownloadResponse( + request: self.request, + response: self.response, + temporaryURL: self.downloadDelegate.temporaryURL, + destinationURL: self.downloadDelegate.destinationURL, + resumeData: self.downloadDelegate.resumeData, + error: self.downloadDelegate.error, + timeline: self.timeline + ) + + downloadResponse.add(self.delegate.metrics) + + completionHandler(downloadResponse) + } + } + + return self + } + + /// Adds a handler to be called once the request has finished. + /// + /// - parameter queue: The queue on which the completion handler is dispatched. + /// - parameter responseSerializer: The response serializer responsible for serializing the request, response, + /// and data contained in the destination url. + /// - parameter completionHandler: The code to be executed once the request has finished. + /// + /// - returns: The request. + @discardableResult + public func response( + queue: DispatchQueue? = nil, + responseSerializer: T, + completionHandler: @escaping (DownloadResponse) -> Void) + -> Self + { + delegate.queue.addOperation { + let result = responseSerializer.serializeResponse( + self.request, + self.response, + self.downloadDelegate.fileURL, + self.downloadDelegate.error + ) + + var downloadResponse = DownloadResponse( + request: self.request, + response: self.response, + temporaryURL: self.downloadDelegate.temporaryURL, + destinationURL: self.downloadDelegate.destinationURL, + resumeData: self.downloadDelegate.resumeData, + result: result, + timeline: self.timeline + ) + + downloadResponse.add(self.delegate.metrics) + + (queue ?? DispatchQueue.main).async { completionHandler(downloadResponse) } + } + + return self + } +} + +// MARK: - Data + +extension Request { + /// Returns a result data type that contains the response data as-is. + /// + /// - parameter response: The response from the server. + /// - parameter data: The data returned from the server. + /// - parameter error: The error already encountered if it exists. + /// + /// - returns: The result data type. + public static func serializeResponseData(response: HTTPURLResponse?, data: Data?, error: Error?) -> Result { + guard error == nil else { return .failure(error!) } + + if let response = response, emptyDataStatusCodes.contains(response.statusCode) { return .success(Data()) } + + guard let validData = data else { + return .failure(AFError.responseSerializationFailed(reason: .inputDataNil)) + } + + return .success(validData) + } +} + +extension DataRequest { + /// Creates a response serializer that returns the associated data as-is. + /// + /// - returns: A data response serializer. + public static func dataResponseSerializer() -> DataResponseSerializer { + return DataResponseSerializer { _, response, data, error in + return Request.serializeResponseData(response: response, data: data, error: error) + } + } + + /// Adds a handler to be called once the request has finished. + /// + /// - parameter completionHandler: The code to be executed once the request has finished. + /// + /// - returns: The request. + @discardableResult + public func responseData( + queue: DispatchQueue? = nil, + completionHandler: @escaping (DataResponse) -> Void) + -> Self + { + return response( + queue: queue, + responseSerializer: DataRequest.dataResponseSerializer(), + completionHandler: completionHandler + ) + } +} + +extension DownloadRequest { + /// Creates a response serializer that returns the associated data as-is. + /// + /// - returns: A data response serializer. + public static func dataResponseSerializer() -> DownloadResponseSerializer { + return DownloadResponseSerializer { _, response, fileURL, error in + guard error == nil else { return .failure(error!) } + + guard let fileURL = fileURL else { + return .failure(AFError.responseSerializationFailed(reason: .inputFileNil)) + } + + do { + let data = try Data(contentsOf: fileURL) + return Request.serializeResponseData(response: response, data: data, error: error) + } catch { + return .failure(AFError.responseSerializationFailed(reason: .inputFileReadFailed(at: fileURL))) + } + } + } + + /// Adds a handler to be called once the request has finished. + /// + /// - parameter completionHandler: The code to be executed once the request has finished. + /// + /// - returns: The request. + @discardableResult + public func responseData( + queue: DispatchQueue? = nil, + completionHandler: @escaping (DownloadResponse) -> Void) + -> Self + { + return response( + queue: queue, + responseSerializer: DownloadRequest.dataResponseSerializer(), + completionHandler: completionHandler + ) + } +} + +// MARK: - String + +extension Request { + /// Returns a result string type initialized from the response data with the specified string encoding. + /// + /// - parameter encoding: The string encoding. If `nil`, the string encoding will be determined from the server + /// response, falling back to the default HTTP default character set, ISO-8859-1. + /// - parameter response: The response from the server. + /// - parameter data: The data returned from the server. + /// - parameter error: The error already encountered if it exists. + /// + /// - returns: The result data type. + public static func serializeResponseString( + encoding: String.Encoding?, + response: HTTPURLResponse?, + data: Data?, + error: Error?) + -> Result + { + guard error == nil else { return .failure(error!) } + + if let response = response, emptyDataStatusCodes.contains(response.statusCode) { return .success("") } + + guard let validData = data else { + return .failure(AFError.responseSerializationFailed(reason: .inputDataNil)) + } + + var convertedEncoding = encoding + + if let encodingName = response?.textEncodingName as CFString?, convertedEncoding == nil { + convertedEncoding = String.Encoding(rawValue: CFStringConvertEncodingToNSStringEncoding( + CFStringConvertIANACharSetNameToEncoding(encodingName)) + ) + } + + let actualEncoding = convertedEncoding ?? .isoLatin1 + + if let string = String(data: validData, encoding: actualEncoding) { + return .success(string) + } else { + return .failure(AFError.responseSerializationFailed(reason: .stringSerializationFailed(encoding: actualEncoding))) + } + } +} + +extension DataRequest { + /// Creates a response serializer that returns a result string type initialized from the response data with + /// the specified string encoding. + /// + /// - parameter encoding: The string encoding. If `nil`, the string encoding will be determined from the server + /// response, falling back to the default HTTP default character set, ISO-8859-1. + /// + /// - returns: A string response serializer. + public static func stringResponseSerializer(encoding: String.Encoding? = nil) -> DataResponseSerializer { + return DataResponseSerializer { _, response, data, error in + return Request.serializeResponseString(encoding: encoding, response: response, data: data, error: error) + } + } + + /// Adds a handler to be called once the request has finished. + /// + /// - parameter encoding: The string encoding. If `nil`, the string encoding will be determined from the + /// server response, falling back to the default HTTP default character set, + /// ISO-8859-1. + /// - parameter completionHandler: A closure to be executed once the request has finished. + /// + /// - returns: The request. + @discardableResult + public func responseString( + queue: DispatchQueue? = nil, + encoding: String.Encoding? = nil, + completionHandler: @escaping (DataResponse) -> Void) + -> Self + { + return response( + queue: queue, + responseSerializer: DataRequest.stringResponseSerializer(encoding: encoding), + completionHandler: completionHandler + ) + } +} + +extension DownloadRequest { + /// Creates a response serializer that returns a result string type initialized from the response data with + /// the specified string encoding. + /// + /// - parameter encoding: The string encoding. If `nil`, the string encoding will be determined from the server + /// response, falling back to the default HTTP default character set, ISO-8859-1. + /// + /// - returns: A string response serializer. + public static func stringResponseSerializer(encoding: String.Encoding? = nil) -> DownloadResponseSerializer { + return DownloadResponseSerializer { _, response, fileURL, error in + guard error == nil else { return .failure(error!) } + + guard let fileURL = fileURL else { + return .failure(AFError.responseSerializationFailed(reason: .inputFileNil)) + } + + do { + let data = try Data(contentsOf: fileURL) + return Request.serializeResponseString(encoding: encoding, response: response, data: data, error: error) + } catch { + return .failure(AFError.responseSerializationFailed(reason: .inputFileReadFailed(at: fileURL))) + } + } + } + + /// Adds a handler to be called once the request has finished. + /// + /// - parameter encoding: The string encoding. If `nil`, the string encoding will be determined from the + /// server response, falling back to the default HTTP default character set, + /// ISO-8859-1. + /// - parameter completionHandler: A closure to be executed once the request has finished. + /// + /// - returns: The request. + @discardableResult + public func responseString( + queue: DispatchQueue? = nil, + encoding: String.Encoding? = nil, + completionHandler: @escaping (DownloadResponse) -> Void) + -> Self + { + return response( + queue: queue, + responseSerializer: DownloadRequest.stringResponseSerializer(encoding: encoding), + completionHandler: completionHandler + ) + } +} + +// MARK: - JSON + +extension Request { + /// Returns a JSON object contained in a result type constructed from the response data using `JSONSerialization` + /// with the specified reading options. + /// + /// - parameter options: The JSON serialization reading options. Defaults to `.allowFragments`. + /// - parameter response: The response from the server. + /// - parameter data: The data returned from the server. + /// - parameter error: The error already encountered if it exists. + /// + /// - returns: The result data type. + public static func serializeResponseJSON( + options: JSONSerialization.ReadingOptions, + response: HTTPURLResponse?, + data: Data?, + error: Error?) + -> Result + { + guard error == nil else { return .failure(error!) } + + if let response = response, emptyDataStatusCodes.contains(response.statusCode) { return .success(NSNull()) } + + guard let validData = data, validData.count > 0 else { + return .failure(AFError.responseSerializationFailed(reason: .inputDataNilOrZeroLength)) + } + + do { + let json = try JSONSerialization.jsonObject(with: validData, options: options) + return .success(json) + } catch { + return .failure(AFError.responseSerializationFailed(reason: .jsonSerializationFailed(error: error))) + } + } +} + +extension DataRequest { + /// Creates a response serializer that returns a JSON object result type constructed from the response data using + /// `JSONSerialization` with the specified reading options. + /// + /// - parameter options: The JSON serialization reading options. Defaults to `.allowFragments`. + /// + /// - returns: A JSON object response serializer. + public static func jsonResponseSerializer( + options: JSONSerialization.ReadingOptions = .allowFragments) + -> DataResponseSerializer + { + return DataResponseSerializer { _, response, data, error in + return Request.serializeResponseJSON(options: options, response: response, data: data, error: error) + } + } + + /// Adds a handler to be called once the request has finished. + /// + /// - parameter options: The JSON serialization reading options. Defaults to `.allowFragments`. + /// - parameter completionHandler: A closure to be executed once the request has finished. + /// + /// - returns: The request. + @discardableResult + public func responseJSON( + queue: DispatchQueue? = nil, + options: JSONSerialization.ReadingOptions = .allowFragments, + completionHandler: @escaping (DataResponse) -> Void) + -> Self + { + return response( + queue: queue, + responseSerializer: DataRequest.jsonResponseSerializer(options: options), + completionHandler: completionHandler + ) + } +} + +extension DownloadRequest { + /// Creates a response serializer that returns a JSON object result type constructed from the response data using + /// `JSONSerialization` with the specified reading options. + /// + /// - parameter options: The JSON serialization reading options. Defaults to `.allowFragments`. + /// + /// - returns: A JSON object response serializer. + public static func jsonResponseSerializer( + options: JSONSerialization.ReadingOptions = .allowFragments) + -> DownloadResponseSerializer + { + return DownloadResponseSerializer { _, response, fileURL, error in + guard error == nil else { return .failure(error!) } + + guard let fileURL = fileURL else { + return .failure(AFError.responseSerializationFailed(reason: .inputFileNil)) + } + + do { + let data = try Data(contentsOf: fileURL) + return Request.serializeResponseJSON(options: options, response: response, data: data, error: error) + } catch { + return .failure(AFError.responseSerializationFailed(reason: .inputFileReadFailed(at: fileURL))) + } + } + } + + /// Adds a handler to be called once the request has finished. + /// + /// - parameter options: The JSON serialization reading options. Defaults to `.allowFragments`. + /// - parameter completionHandler: A closure to be executed once the request has finished. + /// + /// - returns: The request. + @discardableResult + public func responseJSON( + queue: DispatchQueue? = nil, + options: JSONSerialization.ReadingOptions = .allowFragments, + completionHandler: @escaping (DownloadResponse) -> Void) + -> Self + { + return response( + queue: queue, + responseSerializer: DownloadRequest.jsonResponseSerializer(options: options), + completionHandler: completionHandler + ) + } +} + +// MARK: - Property List + +extension Request { + /// Returns a plist object contained in a result type constructed from the response data using + /// `PropertyListSerialization` with the specified reading options. + /// + /// - parameter options: The property list reading options. Defaults to `[]`. + /// - parameter response: The response from the server. + /// - parameter data: The data returned from the server. + /// - parameter error: The error already encountered if it exists. + /// + /// - returns: The result data type. + public static func serializeResponsePropertyList( + options: PropertyListSerialization.ReadOptions, + response: HTTPURLResponse?, + data: Data?, + error: Error?) + -> Result + { + guard error == nil else { return .failure(error!) } + + if let response = response, emptyDataStatusCodes.contains(response.statusCode) { return .success(NSNull()) } + + guard let validData = data, validData.count > 0 else { + return .failure(AFError.responseSerializationFailed(reason: .inputDataNilOrZeroLength)) + } + + do { + let plist = try PropertyListSerialization.propertyList(from: validData, options: options, format: nil) + return .success(plist) + } catch { + return .failure(AFError.responseSerializationFailed(reason: .propertyListSerializationFailed(error: error))) + } + } +} + +extension DataRequest { + /// Creates a response serializer that returns an object constructed from the response data using + /// `PropertyListSerialization` with the specified reading options. + /// + /// - parameter options: The property list reading options. Defaults to `[]`. + /// + /// - returns: A property list object response serializer. + public static func propertyListResponseSerializer( + options: PropertyListSerialization.ReadOptions = []) + -> DataResponseSerializer + { + return DataResponseSerializer { _, response, data, error in + return Request.serializeResponsePropertyList(options: options, response: response, data: data, error: error) + } + } + + /// Adds a handler to be called once the request has finished. + /// + /// - parameter options: The property list reading options. Defaults to `[]`. + /// - parameter completionHandler: A closure to be executed once the request has finished. + /// + /// - returns: The request. + @discardableResult + public func responsePropertyList( + queue: DispatchQueue? = nil, + options: PropertyListSerialization.ReadOptions = [], + completionHandler: @escaping (DataResponse) -> Void) + -> Self + { + return response( + queue: queue, + responseSerializer: DataRequest.propertyListResponseSerializer(options: options), + completionHandler: completionHandler + ) + } +} + +extension DownloadRequest { + /// Creates a response serializer that returns an object constructed from the response data using + /// `PropertyListSerialization` with the specified reading options. + /// + /// - parameter options: The property list reading options. Defaults to `[]`. + /// + /// - returns: A property list object response serializer. + public static func propertyListResponseSerializer( + options: PropertyListSerialization.ReadOptions = []) + -> DownloadResponseSerializer + { + return DownloadResponseSerializer { _, response, fileURL, error in + guard error == nil else { return .failure(error!) } + + guard let fileURL = fileURL else { + return .failure(AFError.responseSerializationFailed(reason: .inputFileNil)) + } + + do { + let data = try Data(contentsOf: fileURL) + return Request.serializeResponsePropertyList(options: options, response: response, data: data, error: error) + } catch { + return .failure(AFError.responseSerializationFailed(reason: .inputFileReadFailed(at: fileURL))) + } + } + } + + /// Adds a handler to be called once the request has finished. + /// + /// - parameter options: The property list reading options. Defaults to `[]`. + /// - parameter completionHandler: A closure to be executed once the request has finished. + /// + /// - returns: The request. + @discardableResult + public func responsePropertyList( + queue: DispatchQueue? = nil, + options: PropertyListSerialization.ReadOptions = [], + completionHandler: @escaping (DownloadResponse) -> Void) + -> Self + { + return response( + queue: queue, + responseSerializer: DownloadRequest.propertyListResponseSerializer(options: options), + completionHandler: completionHandler + ) + } +} + +/// A set of HTTP response status code that do not contain response data. +private let emptyDataStatusCodes: Set = [204, 205] diff --git a/Santander-Test/Pods/Alamofire/Source/Result.swift b/Santander-Test/Pods/Alamofire/Source/Result.swift new file mode 100644 index 00000000..e0928089 --- /dev/null +++ b/Santander-Test/Pods/Alamofire/Source/Result.swift @@ -0,0 +1,300 @@ +// +// Result.swift +// +// Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) +// +// 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 Foundation + +/// Used to represent whether a request was successful or encountered an error. +/// +/// - success: The request and all post processing operations were successful resulting in the serialization of the +/// provided associated value. +/// +/// - failure: The request encountered an error resulting in a failure. The associated values are the original data +/// provided by the server as well as the error that caused the failure. +public enum Result { + case success(Value) + case failure(Error) + + /// Returns `true` if the result is a success, `false` otherwise. + public var isSuccess: Bool { + switch self { + case .success: + return true + case .failure: + return false + } + } + + /// Returns `true` if the result is a failure, `false` otherwise. + public var isFailure: Bool { + return !isSuccess + } + + /// Returns the associated value if the result is a success, `nil` otherwise. + public var value: Value? { + switch self { + case .success(let value): + return value + case .failure: + return nil + } + } + + /// Returns the associated error value if the result is a failure, `nil` otherwise. + public var error: Error? { + switch self { + case .success: + return nil + case .failure(let error): + return error + } + } +} + +// MARK: - CustomStringConvertible + +extension Result: CustomStringConvertible { + /// The textual representation used when written to an output stream, which includes whether the result was a + /// success or failure. + public var description: String { + switch self { + case .success: + return "SUCCESS" + case .failure: + return "FAILURE" + } + } +} + +// MARK: - CustomDebugStringConvertible + +extension Result: CustomDebugStringConvertible { + /// The debug textual representation used when written to an output stream, which includes whether the result was a + /// success or failure in addition to the value or error. + public var debugDescription: String { + switch self { + case .success(let value): + return "SUCCESS: \(value)" + case .failure(let error): + return "FAILURE: \(error)" + } + } +} + +// MARK: - Functional APIs + +extension Result { + /// Creates a `Result` instance from the result of a closure. + /// + /// A failure result is created when the closure throws, and a success result is created when the closure + /// succeeds without throwing an error. + /// + /// func someString() throws -> String { ... } + /// + /// let result = Result(value: { + /// return try someString() + /// }) + /// + /// // The type of result is Result + /// + /// The trailing closure syntax is also supported: + /// + /// let result = Result { try someString() } + /// + /// - parameter value: The closure to execute and create the result for. + public init(value: () throws -> Value) { + do { + self = try .success(value()) + } catch { + self = .failure(error) + } + } + + /// Returns the success value, or throws the failure error. + /// + /// let possibleString: Result = .success("success") + /// try print(possibleString.unwrap()) + /// // Prints "success" + /// + /// let noString: Result = .failure(error) + /// try print(noString.unwrap()) + /// // Throws error + public func unwrap() throws -> Value { + switch self { + case .success(let value): + return value + case .failure(let error): + throw error + } + } + + /// Evaluates the specified closure when the `Result` is a success, passing the unwrapped value as a parameter. + /// + /// Use the `map` method with a closure that does not throw. For example: + /// + /// let possibleData: Result = .success(Data()) + /// let possibleInt = possibleData.map { $0.count } + /// try print(possibleInt.unwrap()) + /// // Prints "0" + /// + /// let noData: Result = .failure(error) + /// let noInt = noData.map { $0.count } + /// try print(noInt.unwrap()) + /// // Throws error + /// + /// - parameter transform: A closure that takes the success value of the `Result` instance. + /// + /// - returns: A `Result` containing the result of the given closure. If this instance is a failure, returns the + /// same failure. + public func map(_ transform: (Value) -> T) -> Result { + switch self { + case .success(let value): + return .success(transform(value)) + case .failure(let error): + return .failure(error) + } + } + + /// Evaluates the specified closure when the `Result` is a success, passing the unwrapped value as a parameter. + /// + /// Use the `flatMap` method with a closure that may throw an error. For example: + /// + /// let possibleData: Result = .success(Data(...)) + /// let possibleObject = possibleData.flatMap { + /// try JSONSerialization.jsonObject(with: $0) + /// } + /// + /// - parameter transform: A closure that takes the success value of the instance. + /// + /// - returns: A `Result` containing the result of the given closure. If this instance is a failure, returns the + /// same failure. + public func flatMap(_ transform: (Value) throws -> T) -> Result { + switch self { + case .success(let value): + do { + return try .success(transform(value)) + } catch { + return .failure(error) + } + case .failure(let error): + return .failure(error) + } + } + + /// Evaluates the specified closure when the `Result` is a failure, passing the unwrapped error as a parameter. + /// + /// Use the `mapError` function with a closure that does not throw. For example: + /// + /// let possibleData: Result = .failure(someError) + /// let withMyError: Result = possibleData.mapError { MyError.error($0) } + /// + /// - Parameter transform: A closure that takes the error of the instance. + /// - Returns: A `Result` instance containing the result of the transform. If this instance is a success, returns + /// the same instance. + public func mapError(_ transform: (Error) -> T) -> Result { + switch self { + case .failure(let error): + return .failure(transform(error)) + case .success: + return self + } + } + + /// Evaluates the specified closure when the `Result` is a failure, passing the unwrapped error as a parameter. + /// + /// Use the `flatMapError` function with a closure that may throw an error. For example: + /// + /// let possibleData: Result = .success(Data(...)) + /// let possibleObject = possibleData.flatMapError { + /// try someFailableFunction(taking: $0) + /// } + /// + /// - Parameter transform: A throwing closure that takes the error of the instance. + /// + /// - Returns: A `Result` instance containing the result of the transform. If this instance is a success, returns + /// the same instance. + public func flatMapError(_ transform: (Error) throws -> T) -> Result { + switch self { + case .failure(let error): + do { + return try .failure(transform(error)) + } catch { + return .failure(error) + } + case .success: + return self + } + } + + /// Evaluates the specified closure when the `Result` is a success, passing the unwrapped value as a parameter. + /// + /// Use the `withValue` function to evaluate the passed closure without modifying the `Result` instance. + /// + /// - Parameter closure: A closure that takes the success value of this instance. + /// - Returns: This `Result` instance, unmodified. + @discardableResult + public func withValue(_ closure: (Value) throws -> Void) rethrows -> Result { + if case let .success(value) = self { try closure(value) } + + return self + } + + /// Evaluates the specified closure when the `Result` is a failure, passing the unwrapped error as a parameter. + /// + /// Use the `withError` function to evaluate the passed closure without modifying the `Result` instance. + /// + /// - Parameter closure: A closure that takes the success value of this instance. + /// - Returns: This `Result` instance, unmodified. + @discardableResult + public func withError(_ closure: (Error) throws -> Void) rethrows -> Result { + if case let .failure(error) = self { try closure(error) } + + return self + } + + /// Evaluates the specified closure when the `Result` is a success. + /// + /// Use the `ifSuccess` function to evaluate the passed closure without modifying the `Result` instance. + /// + /// - Parameter closure: A `Void` closure. + /// - Returns: This `Result` instance, unmodified. + @discardableResult + public func ifSuccess(_ closure: () throws -> Void) rethrows -> Result { + if isSuccess { try closure() } + + return self + } + + /// Evaluates the specified closure when the `Result` is a failure. + /// + /// Use the `ifFailure` function to evaluate the passed closure without modifying the `Result` instance. + /// + /// - Parameter closure: A `Void` closure. + /// - Returns: This `Result` instance, unmodified. + @discardableResult + public func ifFailure(_ closure: () throws -> Void) rethrows -> Result { + if isFailure { try closure() } + + return self + } +} diff --git a/Santander-Test/Pods/Alamofire/Source/ServerTrustPolicy.swift b/Santander-Test/Pods/Alamofire/Source/ServerTrustPolicy.swift new file mode 100644 index 00000000..dea099e2 --- /dev/null +++ b/Santander-Test/Pods/Alamofire/Source/ServerTrustPolicy.swift @@ -0,0 +1,307 @@ +// +// ServerTrustPolicy.swift +// +// Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) +// +// 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 Foundation + +/// Responsible for managing the mapping of `ServerTrustPolicy` objects to a given host. +open class ServerTrustPolicyManager { + /// The dictionary of policies mapped to a particular host. + public let policies: [String: ServerTrustPolicy] + + /// Initializes the `ServerTrustPolicyManager` instance with the given policies. + /// + /// Since different servers and web services can have different leaf certificates, intermediate and even root + /// certficates, it is important to have the flexibility to specify evaluation policies on a per host basis. This + /// allows for scenarios such as using default evaluation for host1, certificate pinning for host2, public key + /// pinning for host3 and disabling evaluation for host4. + /// + /// - parameter policies: A dictionary of all policies mapped to a particular host. + /// + /// - returns: The new `ServerTrustPolicyManager` instance. + public init(policies: [String: ServerTrustPolicy]) { + self.policies = policies + } + + /// Returns the `ServerTrustPolicy` for the given host if applicable. + /// + /// By default, this method will return the policy that perfectly matches the given host. Subclasses could override + /// this method and implement more complex mapping implementations such as wildcards. + /// + /// - parameter host: The host to use when searching for a matching policy. + /// + /// - returns: The server trust policy for the given host if found. + open func serverTrustPolicy(forHost host: String) -> ServerTrustPolicy? { + return policies[host] + } +} + +// MARK: - + +extension URLSession { + private struct AssociatedKeys { + static var managerKey = "URLSession.ServerTrustPolicyManager" + } + + var serverTrustPolicyManager: ServerTrustPolicyManager? { + get { + return objc_getAssociatedObject(self, &AssociatedKeys.managerKey) as? ServerTrustPolicyManager + } + set (manager) { + objc_setAssociatedObject(self, &AssociatedKeys.managerKey, manager, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) + } + } +} + +// MARK: - ServerTrustPolicy + +/// The `ServerTrustPolicy` evaluates the server trust generally provided by an `NSURLAuthenticationChallenge` when +/// connecting to a server over a secure HTTPS connection. The policy configuration then evaluates the server trust +/// with a given set of criteria to determine whether the server trust is valid and the connection should be made. +/// +/// Using pinned certificates or public keys for evaluation helps prevent man-in-the-middle (MITM) attacks and other +/// vulnerabilities. Applications dealing with sensitive customer data or financial information are strongly encouraged +/// to route all communication over an HTTPS connection with pinning enabled. +/// +/// - performDefaultEvaluation: Uses the default server trust evaluation while allowing you to control whether to +/// validate the host provided by the challenge. Applications are encouraged to always +/// validate the host in production environments to guarantee the validity of the server's +/// certificate chain. +/// +/// - performRevokedEvaluation: Uses the default and revoked server trust evaluations allowing you to control whether to +/// validate the host provided by the challenge as well as specify the revocation flags for +/// testing for revoked certificates. Apple platforms did not start testing for revoked +/// certificates automatically until iOS 10.1, macOS 10.12 and tvOS 10.1 which is +/// demonstrated in our TLS tests. Applications are encouraged to always validate the host +/// in production environments to guarantee the validity of the server's certificate chain. +/// +/// - pinCertificates: Uses the pinned certificates to validate the server trust. The server trust is +/// considered valid if one of the pinned certificates match one of the server certificates. +/// By validating both the certificate chain and host, certificate pinning provides a very +/// secure form of server trust validation mitigating most, if not all, MITM attacks. +/// Applications are encouraged to always validate the host and require a valid certificate +/// chain in production environments. +/// +/// - pinPublicKeys: Uses the pinned public keys to validate the server trust. The server trust is considered +/// valid if one of the pinned public keys match one of the server certificate public keys. +/// By validating both the certificate chain and host, public key pinning provides a very +/// secure form of server trust validation mitigating most, if not all, MITM attacks. +/// Applications are encouraged to always validate the host and require a valid certificate +/// chain in production environments. +/// +/// - disableEvaluation: Disables all evaluation which in turn will always consider any server trust as valid. +/// +/// - customEvaluation: Uses the associated closure to evaluate the validity of the server trust. +public enum ServerTrustPolicy { + case performDefaultEvaluation(validateHost: Bool) + case performRevokedEvaluation(validateHost: Bool, revocationFlags: CFOptionFlags) + case pinCertificates(certificates: [SecCertificate], validateCertificateChain: Bool, validateHost: Bool) + case pinPublicKeys(publicKeys: [SecKey], validateCertificateChain: Bool, validateHost: Bool) + case disableEvaluation + case customEvaluation((_ serverTrust: SecTrust, _ host: String) -> Bool) + + // MARK: - Bundle Location + + /// Returns all certificates within the given bundle with a `.cer` file extension. + /// + /// - parameter bundle: The bundle to search for all `.cer` files. + /// + /// - returns: All certificates within the given bundle. + public static func certificates(in bundle: Bundle = Bundle.main) -> [SecCertificate] { + var certificates: [SecCertificate] = [] + + let paths = Set([".cer", ".CER", ".crt", ".CRT", ".der", ".DER"].map { fileExtension in + bundle.paths(forResourcesOfType: fileExtension, inDirectory: nil) + }.joined()) + + for path in paths { + if + let certificateData = try? Data(contentsOf: URL(fileURLWithPath: path)) as CFData, + let certificate = SecCertificateCreateWithData(nil, certificateData) + { + certificates.append(certificate) + } + } + + return certificates + } + + /// Returns all public keys within the given bundle with a `.cer` file extension. + /// + /// - parameter bundle: The bundle to search for all `*.cer` files. + /// + /// - returns: All public keys within the given bundle. + public static func publicKeys(in bundle: Bundle = Bundle.main) -> [SecKey] { + var publicKeys: [SecKey] = [] + + for certificate in certificates(in: bundle) { + if let publicKey = publicKey(for: certificate) { + publicKeys.append(publicKey) + } + } + + return publicKeys + } + + // MARK: - Evaluation + + /// Evaluates whether the server trust is valid for the given host. + /// + /// - parameter serverTrust: The server trust to evaluate. + /// - parameter host: The host of the challenge protection space. + /// + /// - returns: Whether the server trust is valid. + public func evaluate(_ serverTrust: SecTrust, forHost host: String) -> Bool { + var serverTrustIsValid = false + + switch self { + case let .performDefaultEvaluation(validateHost): + let policy = SecPolicyCreateSSL(true, validateHost ? host as CFString : nil) + SecTrustSetPolicies(serverTrust, policy) + + serverTrustIsValid = trustIsValid(serverTrust) + case let .performRevokedEvaluation(validateHost, revocationFlags): + let defaultPolicy = SecPolicyCreateSSL(true, validateHost ? host as CFString : nil) + let revokedPolicy = SecPolicyCreateRevocation(revocationFlags) + SecTrustSetPolicies(serverTrust, [defaultPolicy, revokedPolicy] as CFTypeRef) + + serverTrustIsValid = trustIsValid(serverTrust) + case let .pinCertificates(pinnedCertificates, validateCertificateChain, validateHost): + if validateCertificateChain { + let policy = SecPolicyCreateSSL(true, validateHost ? host as CFString : nil) + SecTrustSetPolicies(serverTrust, policy) + + SecTrustSetAnchorCertificates(serverTrust, pinnedCertificates as CFArray) + SecTrustSetAnchorCertificatesOnly(serverTrust, true) + + serverTrustIsValid = trustIsValid(serverTrust) + } else { + let serverCertificatesDataArray = certificateData(for: serverTrust) + let pinnedCertificatesDataArray = certificateData(for: pinnedCertificates) + + outerLoop: for serverCertificateData in serverCertificatesDataArray { + for pinnedCertificateData in pinnedCertificatesDataArray { + if serverCertificateData == pinnedCertificateData { + serverTrustIsValid = true + break outerLoop + } + } + } + } + case let .pinPublicKeys(pinnedPublicKeys, validateCertificateChain, validateHost): + var certificateChainEvaluationPassed = true + + if validateCertificateChain { + let policy = SecPolicyCreateSSL(true, validateHost ? host as CFString : nil) + SecTrustSetPolicies(serverTrust, policy) + + certificateChainEvaluationPassed = trustIsValid(serverTrust) + } + + if certificateChainEvaluationPassed { + outerLoop: for serverPublicKey in ServerTrustPolicy.publicKeys(for: serverTrust) as [AnyObject] { + for pinnedPublicKey in pinnedPublicKeys as [AnyObject] { + if serverPublicKey.isEqual(pinnedPublicKey) { + serverTrustIsValid = true + break outerLoop + } + } + } + } + case .disableEvaluation: + serverTrustIsValid = true + case let .customEvaluation(closure): + serverTrustIsValid = closure(serverTrust, host) + } + + return serverTrustIsValid + } + + // MARK: - Private - Trust Validation + + private func trustIsValid(_ trust: SecTrust) -> Bool { + var isValid = false + + var result = SecTrustResultType.invalid + let status = SecTrustEvaluate(trust, &result) + + if status == errSecSuccess { + let unspecified = SecTrustResultType.unspecified + let proceed = SecTrustResultType.proceed + + + isValid = result == unspecified || result == proceed + } + + return isValid + } + + // MARK: - Private - Certificate Data + + private func certificateData(for trust: SecTrust) -> [Data] { + var certificates: [SecCertificate] = [] + + for index in 0.. [Data] { + return certificates.map { SecCertificateCopyData($0) as Data } + } + + // MARK: - Private - Public Key Extraction + + private static func publicKeys(for trust: SecTrust) -> [SecKey] { + var publicKeys: [SecKey] = [] + + for index in 0.. SecKey? { + var publicKey: SecKey? + + let policy = SecPolicyCreateBasicX509() + var trust: SecTrust? + let trustCreationStatus = SecTrustCreateWithCertificates(certificate, policy, &trust) + + if let trust = trust, trustCreationStatus == errSecSuccess { + publicKey = SecTrustCopyPublicKey(trust) + } + + return publicKey + } +} diff --git a/Santander-Test/Pods/Alamofire/Source/SessionDelegate.swift b/Santander-Test/Pods/Alamofire/Source/SessionDelegate.swift new file mode 100644 index 00000000..4964f1ee --- /dev/null +++ b/Santander-Test/Pods/Alamofire/Source/SessionDelegate.swift @@ -0,0 +1,725 @@ +// +// SessionDelegate.swift +// +// Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) +// +// 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 Foundation + +/// Responsible for handling all delegate callbacks for the underlying session. +open class SessionDelegate: NSObject { + + // MARK: URLSessionDelegate Overrides + + /// Overrides default behavior for URLSessionDelegate method `urlSession(_:didBecomeInvalidWithError:)`. + open var sessionDidBecomeInvalidWithError: ((URLSession, Error?) -> Void)? + + /// Overrides default behavior for URLSessionDelegate method `urlSession(_:didReceive:completionHandler:)`. + open var sessionDidReceiveChallenge: ((URLSession, URLAuthenticationChallenge) -> (URLSession.AuthChallengeDisposition, URLCredential?))? + + /// Overrides all behavior for URLSessionDelegate method `urlSession(_:didReceive:completionHandler:)` and requires the caller to call the `completionHandler`. + open var sessionDidReceiveChallengeWithCompletion: ((URLSession, URLAuthenticationChallenge, @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) -> Void)? + + /// Overrides default behavior for URLSessionDelegate method `urlSessionDidFinishEvents(forBackgroundURLSession:)`. + open var sessionDidFinishEventsForBackgroundURLSession: ((URLSession) -> Void)? + + // MARK: URLSessionTaskDelegate Overrides + + /// Overrides default behavior for URLSessionTaskDelegate method `urlSession(_:task:willPerformHTTPRedirection:newRequest:completionHandler:)`. + open var taskWillPerformHTTPRedirection: ((URLSession, URLSessionTask, HTTPURLResponse, URLRequest) -> URLRequest?)? + + /// Overrides all behavior for URLSessionTaskDelegate method `urlSession(_:task:willPerformHTTPRedirection:newRequest:completionHandler:)` and + /// requires the caller to call the `completionHandler`. + open var taskWillPerformHTTPRedirectionWithCompletion: ((URLSession, URLSessionTask, HTTPURLResponse, URLRequest, @escaping (URLRequest?) -> Void) -> Void)? + + /// Overrides default behavior for URLSessionTaskDelegate method `urlSession(_:task:didReceive:completionHandler:)`. + open var taskDidReceiveChallenge: ((URLSession, URLSessionTask, URLAuthenticationChallenge) -> (URLSession.AuthChallengeDisposition, URLCredential?))? + + /// Overrides all behavior for URLSessionTaskDelegate method `urlSession(_:task:didReceive:completionHandler:)` and + /// requires the caller to call the `completionHandler`. + open var taskDidReceiveChallengeWithCompletion: ((URLSession, URLSessionTask, URLAuthenticationChallenge, @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) -> Void)? + + /// Overrides default behavior for URLSessionTaskDelegate method `urlSession(_:task:needNewBodyStream:)`. + open var taskNeedNewBodyStream: ((URLSession, URLSessionTask) -> InputStream?)? + + /// Overrides all behavior for URLSessionTaskDelegate method `urlSession(_:task:needNewBodyStream:)` and + /// requires the caller to call the `completionHandler`. + open var taskNeedNewBodyStreamWithCompletion: ((URLSession, URLSessionTask, @escaping (InputStream?) -> Void) -> Void)? + + /// Overrides default behavior for URLSessionTaskDelegate method `urlSession(_:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:)`. + open var taskDidSendBodyData: ((URLSession, URLSessionTask, Int64, Int64, Int64) -> Void)? + + /// Overrides default behavior for URLSessionTaskDelegate method `urlSession(_:task:didCompleteWithError:)`. + open var taskDidComplete: ((URLSession, URLSessionTask, Error?) -> Void)? + + // MARK: URLSessionDataDelegate Overrides + + /// Overrides default behavior for URLSessionDataDelegate method `urlSession(_:dataTask:didReceive:completionHandler:)`. + open var dataTaskDidReceiveResponse: ((URLSession, URLSessionDataTask, URLResponse) -> URLSession.ResponseDisposition)? + + /// Overrides all behavior for URLSessionDataDelegate method `urlSession(_:dataTask:didReceive:completionHandler:)` and + /// requires caller to call the `completionHandler`. + open var dataTaskDidReceiveResponseWithCompletion: ((URLSession, URLSessionDataTask, URLResponse, @escaping (URLSession.ResponseDisposition) -> Void) -> Void)? + + /// Overrides default behavior for URLSessionDataDelegate method `urlSession(_:dataTask:didBecome:)`. + open var dataTaskDidBecomeDownloadTask: ((URLSession, URLSessionDataTask, URLSessionDownloadTask) -> Void)? + + /// Overrides default behavior for URLSessionDataDelegate method `urlSession(_:dataTask:didReceive:)`. + open var dataTaskDidReceiveData: ((URLSession, URLSessionDataTask, Data) -> Void)? + + /// Overrides default behavior for URLSessionDataDelegate method `urlSession(_:dataTask:willCacheResponse:completionHandler:)`. + open var dataTaskWillCacheResponse: ((URLSession, URLSessionDataTask, CachedURLResponse) -> CachedURLResponse?)? + + /// Overrides all behavior for URLSessionDataDelegate method `urlSession(_:dataTask:willCacheResponse:completionHandler:)` and + /// requires caller to call the `completionHandler`. + open var dataTaskWillCacheResponseWithCompletion: ((URLSession, URLSessionDataTask, CachedURLResponse, @escaping (CachedURLResponse?) -> Void) -> Void)? + + // MARK: URLSessionDownloadDelegate Overrides + + /// Overrides default behavior for URLSessionDownloadDelegate method `urlSession(_:downloadTask:didFinishDownloadingTo:)`. + open var downloadTaskDidFinishDownloadingToURL: ((URLSession, URLSessionDownloadTask, URL) -> Void)? + + /// Overrides default behavior for URLSessionDownloadDelegate method `urlSession(_:downloadTask:didWriteData:totalBytesWritten:totalBytesExpectedToWrite:)`. + open var downloadTaskDidWriteData: ((URLSession, URLSessionDownloadTask, Int64, Int64, Int64) -> Void)? + + /// Overrides default behavior for URLSessionDownloadDelegate method `urlSession(_:downloadTask:didResumeAtOffset:expectedTotalBytes:)`. + open var downloadTaskDidResumeAtOffset: ((URLSession, URLSessionDownloadTask, Int64, Int64) -> Void)? + + // MARK: URLSessionStreamDelegate Overrides + +#if !os(watchOS) + + /// Overrides default behavior for URLSessionStreamDelegate method `urlSession(_:readClosedFor:)`. + @available(iOS 9.0, macOS 10.11, tvOS 9.0, *) + open var streamTaskReadClosed: ((URLSession, URLSessionStreamTask) -> Void)? { + get { + return _streamTaskReadClosed as? (URLSession, URLSessionStreamTask) -> Void + } + set { + _streamTaskReadClosed = newValue + } + } + + /// Overrides default behavior for URLSessionStreamDelegate method `urlSession(_:writeClosedFor:)`. + @available(iOS 9.0, macOS 10.11, tvOS 9.0, *) + open var streamTaskWriteClosed: ((URLSession, URLSessionStreamTask) -> Void)? { + get { + return _streamTaskWriteClosed as? (URLSession, URLSessionStreamTask) -> Void + } + set { + _streamTaskWriteClosed = newValue + } + } + + /// Overrides default behavior for URLSessionStreamDelegate method `urlSession(_:betterRouteDiscoveredFor:)`. + @available(iOS 9.0, macOS 10.11, tvOS 9.0, *) + open var streamTaskBetterRouteDiscovered: ((URLSession, URLSessionStreamTask) -> Void)? { + get { + return _streamTaskBetterRouteDiscovered as? (URLSession, URLSessionStreamTask) -> Void + } + set { + _streamTaskBetterRouteDiscovered = newValue + } + } + + /// Overrides default behavior for URLSessionStreamDelegate method `urlSession(_:streamTask:didBecome:outputStream:)`. + @available(iOS 9.0, macOS 10.11, tvOS 9.0, *) + open var streamTaskDidBecomeInputAndOutputStreams: ((URLSession, URLSessionStreamTask, InputStream, OutputStream) -> Void)? { + get { + return _streamTaskDidBecomeInputStream as? (URLSession, URLSessionStreamTask, InputStream, OutputStream) -> Void + } + set { + _streamTaskDidBecomeInputStream = newValue + } + } + + var _streamTaskReadClosed: Any? + var _streamTaskWriteClosed: Any? + var _streamTaskBetterRouteDiscovered: Any? + var _streamTaskDidBecomeInputStream: Any? + +#endif + + // MARK: Properties + + var retrier: RequestRetrier? + weak var sessionManager: SessionManager? + + var requests: [Int: Request] = [:] + private let lock = NSLock() + + /// Access the task delegate for the specified task in a thread-safe manner. + open subscript(task: URLSessionTask) -> Request? { + get { + lock.lock() ; defer { lock.unlock() } + return requests[task.taskIdentifier] + } + set { + lock.lock() ; defer { lock.unlock() } + requests[task.taskIdentifier] = newValue + } + } + + // MARK: Lifecycle + + /// Initializes the `SessionDelegate` instance. + /// + /// - returns: The new `SessionDelegate` instance. + public override init() { + super.init() + } + + // MARK: NSObject Overrides + + /// Returns a `Bool` indicating whether the `SessionDelegate` implements or inherits a method that can respond + /// to a specified message. + /// + /// - parameter selector: A selector that identifies a message. + /// + /// - returns: `true` if the receiver implements or inherits a method that can respond to selector, otherwise `false`. + open override func responds(to selector: Selector) -> Bool { + #if !os(macOS) + if selector == #selector(URLSessionDelegate.urlSessionDidFinishEvents(forBackgroundURLSession:)) { + return sessionDidFinishEventsForBackgroundURLSession != nil + } + #endif + + #if !os(watchOS) + if #available(iOS 9.0, macOS 10.11, tvOS 9.0, *) { + switch selector { + case #selector(URLSessionStreamDelegate.urlSession(_:readClosedFor:)): + return streamTaskReadClosed != nil + case #selector(URLSessionStreamDelegate.urlSession(_:writeClosedFor:)): + return streamTaskWriteClosed != nil + case #selector(URLSessionStreamDelegate.urlSession(_:betterRouteDiscoveredFor:)): + return streamTaskBetterRouteDiscovered != nil + case #selector(URLSessionStreamDelegate.urlSession(_:streamTask:didBecome:outputStream:)): + return streamTaskDidBecomeInputAndOutputStreams != nil + default: + break + } + } + #endif + + switch selector { + case #selector(URLSessionDelegate.urlSession(_:didBecomeInvalidWithError:)): + return sessionDidBecomeInvalidWithError != nil + case #selector(URLSessionDelegate.urlSession(_:didReceive:completionHandler:)): + return (sessionDidReceiveChallenge != nil || sessionDidReceiveChallengeWithCompletion != nil) + case #selector(URLSessionTaskDelegate.urlSession(_:task:willPerformHTTPRedirection:newRequest:completionHandler:)): + return (taskWillPerformHTTPRedirection != nil || taskWillPerformHTTPRedirectionWithCompletion != nil) + case #selector(URLSessionDataDelegate.urlSession(_:dataTask:didReceive:completionHandler:)): + return (dataTaskDidReceiveResponse != nil || dataTaskDidReceiveResponseWithCompletion != nil) + default: + return type(of: self).instancesRespond(to: selector) + } + } +} + +// MARK: - URLSessionDelegate + +extension SessionDelegate: URLSessionDelegate { + /// Tells the delegate that the session has been invalidated. + /// + /// - parameter session: The session object that was invalidated. + /// - parameter error: The error that caused invalidation, or nil if the invalidation was explicit. + open func urlSession(_ session: URLSession, didBecomeInvalidWithError error: Error?) { + sessionDidBecomeInvalidWithError?(session, error) + } + + /// Requests credentials from the delegate in response to a session-level authentication request from the + /// remote server. + /// + /// - parameter session: The session containing the task that requested authentication. + /// - parameter challenge: An object that contains the request for authentication. + /// - parameter completionHandler: A handler that your delegate method must call providing the disposition + /// and credential. + open func urlSession( + _ session: URLSession, + didReceive challenge: URLAuthenticationChallenge, + completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) + { + guard sessionDidReceiveChallengeWithCompletion == nil else { + sessionDidReceiveChallengeWithCompletion?(session, challenge, completionHandler) + return + } + + var disposition: URLSession.AuthChallengeDisposition = .performDefaultHandling + var credential: URLCredential? + + if let sessionDidReceiveChallenge = sessionDidReceiveChallenge { + (disposition, credential) = sessionDidReceiveChallenge(session, challenge) + } else if challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust { + let host = challenge.protectionSpace.host + + if + let serverTrustPolicy = session.serverTrustPolicyManager?.serverTrustPolicy(forHost: host), + let serverTrust = challenge.protectionSpace.serverTrust + { + if serverTrustPolicy.evaluate(serverTrust, forHost: host) { + disposition = .useCredential + credential = URLCredential(trust: serverTrust) + } else { + disposition = .cancelAuthenticationChallenge + } + } + } + + completionHandler(disposition, credential) + } + +#if !os(macOS) + + /// Tells the delegate that all messages enqueued for a session have been delivered. + /// + /// - parameter session: The session that no longer has any outstanding requests. + open func urlSessionDidFinishEvents(forBackgroundURLSession session: URLSession) { + sessionDidFinishEventsForBackgroundURLSession?(session) + } + +#endif +} + +// MARK: - URLSessionTaskDelegate + +extension SessionDelegate: URLSessionTaskDelegate { + /// Tells the delegate that the remote server requested an HTTP redirect. + /// + /// - parameter session: The session containing the task whose request resulted in a redirect. + /// - parameter task: The task whose request resulted in a redirect. + /// - parameter response: An object containing the server’s response to the original request. + /// - parameter request: A URL request object filled out with the new location. + /// - parameter completionHandler: A closure that your handler should call with either the value of the request + /// parameter, a modified URL request object, or NULL to refuse the redirect and + /// return the body of the redirect response. + open func urlSession( + _ session: URLSession, + task: URLSessionTask, + willPerformHTTPRedirection response: HTTPURLResponse, + newRequest request: URLRequest, + completionHandler: @escaping (URLRequest?) -> Void) + { + guard taskWillPerformHTTPRedirectionWithCompletion == nil else { + taskWillPerformHTTPRedirectionWithCompletion?(session, task, response, request, completionHandler) + return + } + + var redirectRequest: URLRequest? = request + + if let taskWillPerformHTTPRedirection = taskWillPerformHTTPRedirection { + redirectRequest = taskWillPerformHTTPRedirection(session, task, response, request) + } + + completionHandler(redirectRequest) + } + + /// Requests credentials from the delegate in response to an authentication request from the remote server. + /// + /// - parameter session: The session containing the task whose request requires authentication. + /// - parameter task: The task whose request requires authentication. + /// - parameter challenge: An object that contains the request for authentication. + /// - parameter completionHandler: A handler that your delegate method must call providing the disposition + /// and credential. + open func urlSession( + _ session: URLSession, + task: URLSessionTask, + didReceive challenge: URLAuthenticationChallenge, + completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) + { + guard taskDidReceiveChallengeWithCompletion == nil else { + taskDidReceiveChallengeWithCompletion?(session, task, challenge, completionHandler) + return + } + + if let taskDidReceiveChallenge = taskDidReceiveChallenge { + let result = taskDidReceiveChallenge(session, task, challenge) + completionHandler(result.0, result.1) + } else if let delegate = self[task]?.delegate { + delegate.urlSession( + session, + task: task, + didReceive: challenge, + completionHandler: completionHandler + ) + } else { + urlSession(session, didReceive: challenge, completionHandler: completionHandler) + } + } + + /// Tells the delegate when a task requires a new request body stream to send to the remote server. + /// + /// - parameter session: The session containing the task that needs a new body stream. + /// - parameter task: The task that needs a new body stream. + /// - parameter completionHandler: A completion handler that your delegate method should call with the new body stream. + open func urlSession( + _ session: URLSession, + task: URLSessionTask, + needNewBodyStream completionHandler: @escaping (InputStream?) -> Void) + { + guard taskNeedNewBodyStreamWithCompletion == nil else { + taskNeedNewBodyStreamWithCompletion?(session, task, completionHandler) + return + } + + if let taskNeedNewBodyStream = taskNeedNewBodyStream { + completionHandler(taskNeedNewBodyStream(session, task)) + } else if let delegate = self[task]?.delegate { + delegate.urlSession(session, task: task, needNewBodyStream: completionHandler) + } + } + + /// Periodically informs the delegate of the progress of sending body content to the server. + /// + /// - parameter session: The session containing the data task. + /// - parameter task: The data task. + /// - parameter bytesSent: The number of bytes sent since the last time this delegate method was called. + /// - parameter totalBytesSent: The total number of bytes sent so far. + /// - parameter totalBytesExpectedToSend: The expected length of the body data. + open func urlSession( + _ session: URLSession, + task: URLSessionTask, + didSendBodyData bytesSent: Int64, + totalBytesSent: Int64, + totalBytesExpectedToSend: Int64) + { + if let taskDidSendBodyData = taskDidSendBodyData { + taskDidSendBodyData(session, task, bytesSent, totalBytesSent, totalBytesExpectedToSend) + } else if let delegate = self[task]?.delegate as? UploadTaskDelegate { + delegate.URLSession( + session, + task: task, + didSendBodyData: bytesSent, + totalBytesSent: totalBytesSent, + totalBytesExpectedToSend: totalBytesExpectedToSend + ) + } + } + +#if !os(watchOS) + + /// Tells the delegate that the session finished collecting metrics for the task. + /// + /// - parameter session: The session collecting the metrics. + /// - parameter task: The task whose metrics have been collected. + /// - parameter metrics: The collected metrics. + @available(iOS 10.0, macOS 10.12, tvOS 10.0, *) + @objc(URLSession:task:didFinishCollectingMetrics:) + open func urlSession(_ session: URLSession, task: URLSessionTask, didFinishCollecting metrics: URLSessionTaskMetrics) { + self[task]?.delegate.metrics = metrics + } + +#endif + + /// Tells the delegate that the task finished transferring data. + /// + /// - parameter session: The session containing the task whose request finished transferring data. + /// - parameter task: The task whose request finished transferring data. + /// - parameter error: If an error occurred, an error object indicating how the transfer failed, otherwise nil. + open func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) { + /// Executed after it is determined that the request is not going to be retried + let completeTask: (URLSession, URLSessionTask, Error?) -> Void = { [weak self] session, task, error in + guard let strongSelf = self else { return } + + strongSelf.taskDidComplete?(session, task, error) + + strongSelf[task]?.delegate.urlSession(session, task: task, didCompleteWithError: error) + + var userInfo: [String: Any] = [Notification.Key.Task: task] + + if let data = (strongSelf[task]?.delegate as? DataTaskDelegate)?.data { + userInfo[Notification.Key.ResponseData] = data + } + + NotificationCenter.default.post( + name: Notification.Name.Task.DidComplete, + object: strongSelf, + userInfo: userInfo + ) + + strongSelf[task] = nil + } + + guard let request = self[task], let sessionManager = sessionManager else { + completeTask(session, task, error) + return + } + + // Run all validations on the request before checking if an error occurred + request.validations.forEach { $0() } + + // Determine whether an error has occurred + var error: Error? = error + + if request.delegate.error != nil { + error = request.delegate.error + } + + /// If an error occurred and the retrier is set, asynchronously ask the retrier if the request + /// should be retried. Otherwise, complete the task by notifying the task delegate. + if let retrier = retrier, let error = error { + retrier.should(sessionManager, retry: request, with: error) { [weak self] shouldRetry, timeDelay in + guard shouldRetry else { completeTask(session, task, error) ; return } + + DispatchQueue.utility.after(timeDelay) { [weak self] in + guard let strongSelf = self else { return } + + let retrySucceeded = strongSelf.sessionManager?.retry(request) ?? false + + if retrySucceeded, let task = request.task { + strongSelf[task] = request + return + } else { + completeTask(session, task, error) + } + } + } + } else { + completeTask(session, task, error) + } + } +} + +// MARK: - URLSessionDataDelegate + +extension SessionDelegate: URLSessionDataDelegate { + /// Tells the delegate that the data task received the initial reply (headers) from the server. + /// + /// - parameter session: The session containing the data task that received an initial reply. + /// - parameter dataTask: The data task that received an initial reply. + /// - parameter response: A URL response object populated with headers. + /// - parameter completionHandler: A completion handler that your code calls to continue the transfer, passing a + /// constant to indicate whether the transfer should continue as a data task or + /// should become a download task. + open func urlSession( + _ session: URLSession, + dataTask: URLSessionDataTask, + didReceive response: URLResponse, + completionHandler: @escaping (URLSession.ResponseDisposition) -> Void) + { + guard dataTaskDidReceiveResponseWithCompletion == nil else { + dataTaskDidReceiveResponseWithCompletion?(session, dataTask, response, completionHandler) + return + } + + var disposition: URLSession.ResponseDisposition = .allow + + if let dataTaskDidReceiveResponse = dataTaskDidReceiveResponse { + disposition = dataTaskDidReceiveResponse(session, dataTask, response) + } + + completionHandler(disposition) + } + + /// Tells the delegate that the data task was changed to a download task. + /// + /// - parameter session: The session containing the task that was replaced by a download task. + /// - parameter dataTask: The data task that was replaced by a download task. + /// - parameter downloadTask: The new download task that replaced the data task. + open func urlSession( + _ session: URLSession, + dataTask: URLSessionDataTask, + didBecome downloadTask: URLSessionDownloadTask) + { + if let dataTaskDidBecomeDownloadTask = dataTaskDidBecomeDownloadTask { + dataTaskDidBecomeDownloadTask(session, dataTask, downloadTask) + } else { + self[downloadTask]?.delegate = DownloadTaskDelegate(task: downloadTask) + } + } + + /// Tells the delegate that the data task has received some of the expected data. + /// + /// - parameter session: The session containing the data task that provided data. + /// - parameter dataTask: The data task that provided data. + /// - parameter data: A data object containing the transferred data. + open func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) { + if let dataTaskDidReceiveData = dataTaskDidReceiveData { + dataTaskDidReceiveData(session, dataTask, data) + } else if let delegate = self[dataTask]?.delegate as? DataTaskDelegate { + delegate.urlSession(session, dataTask: dataTask, didReceive: data) + } + } + + /// Asks the delegate whether the data (or upload) task should store the response in the cache. + /// + /// - parameter session: The session containing the data (or upload) task. + /// - parameter dataTask: The data (or upload) task. + /// - parameter proposedResponse: The default caching behavior. This behavior is determined based on the current + /// caching policy and the values of certain received headers, such as the Pragma + /// and Cache-Control headers. + /// - parameter completionHandler: A block that your handler must call, providing either the original proposed + /// response, a modified version of that response, or NULL to prevent caching the + /// response. If your delegate implements this method, it must call this completion + /// handler; otherwise, your app leaks memory. + open func urlSession( + _ session: URLSession, + dataTask: URLSessionDataTask, + willCacheResponse proposedResponse: CachedURLResponse, + completionHandler: @escaping (CachedURLResponse?) -> Void) + { + guard dataTaskWillCacheResponseWithCompletion == nil else { + dataTaskWillCacheResponseWithCompletion?(session, dataTask, proposedResponse, completionHandler) + return + } + + if let dataTaskWillCacheResponse = dataTaskWillCacheResponse { + completionHandler(dataTaskWillCacheResponse(session, dataTask, proposedResponse)) + } else if let delegate = self[dataTask]?.delegate as? DataTaskDelegate { + delegate.urlSession( + session, + dataTask: dataTask, + willCacheResponse: proposedResponse, + completionHandler: completionHandler + ) + } else { + completionHandler(proposedResponse) + } + } +} + +// MARK: - URLSessionDownloadDelegate + +extension SessionDelegate: URLSessionDownloadDelegate { + /// Tells the delegate that a download task has finished downloading. + /// + /// - parameter session: The session containing the download task that finished. + /// - parameter downloadTask: The download task that finished. + /// - parameter location: A file URL for the temporary file. Because the file is temporary, you must either + /// open the file for reading or move it to a permanent location in your app’s sandbox + /// container directory before returning from this delegate method. + open func urlSession( + _ session: URLSession, + downloadTask: URLSessionDownloadTask, + didFinishDownloadingTo location: URL) + { + if let downloadTaskDidFinishDownloadingToURL = downloadTaskDidFinishDownloadingToURL { + downloadTaskDidFinishDownloadingToURL(session, downloadTask, location) + } else if let delegate = self[downloadTask]?.delegate as? DownloadTaskDelegate { + delegate.urlSession(session, downloadTask: downloadTask, didFinishDownloadingTo: location) + } + } + + /// Periodically informs the delegate about the download’s progress. + /// + /// - parameter session: The session containing the download task. + /// - parameter downloadTask: The download task. + /// - parameter bytesWritten: The number of bytes transferred since the last time this delegate + /// method was called. + /// - parameter totalBytesWritten: The total number of bytes transferred so far. + /// - parameter totalBytesExpectedToWrite: The expected length of the file, as provided by the Content-Length + /// header. If this header was not provided, the value is + /// `NSURLSessionTransferSizeUnknown`. + open func urlSession( + _ session: URLSession, + downloadTask: URLSessionDownloadTask, + didWriteData bytesWritten: Int64, + totalBytesWritten: Int64, + totalBytesExpectedToWrite: Int64) + { + if let downloadTaskDidWriteData = downloadTaskDidWriteData { + downloadTaskDidWriteData(session, downloadTask, bytesWritten, totalBytesWritten, totalBytesExpectedToWrite) + } else if let delegate = self[downloadTask]?.delegate as? DownloadTaskDelegate { + delegate.urlSession( + session, + downloadTask: downloadTask, + didWriteData: bytesWritten, + totalBytesWritten: totalBytesWritten, + totalBytesExpectedToWrite: totalBytesExpectedToWrite + ) + } + } + + /// Tells the delegate that the download task has resumed downloading. + /// + /// - parameter session: The session containing the download task that finished. + /// - parameter downloadTask: The download task that resumed. See explanation in the discussion. + /// - parameter fileOffset: If the file's cache policy or last modified date prevents reuse of the + /// existing content, then this value is zero. Otherwise, this value is an + /// integer representing the number of bytes on disk that do not need to be + /// retrieved again. + /// - parameter expectedTotalBytes: The expected length of the file, as provided by the Content-Length header. + /// If this header was not provided, the value is NSURLSessionTransferSizeUnknown. + open func urlSession( + _ session: URLSession, + downloadTask: URLSessionDownloadTask, + didResumeAtOffset fileOffset: Int64, + expectedTotalBytes: Int64) + { + if let downloadTaskDidResumeAtOffset = downloadTaskDidResumeAtOffset { + downloadTaskDidResumeAtOffset(session, downloadTask, fileOffset, expectedTotalBytes) + } else if let delegate = self[downloadTask]?.delegate as? DownloadTaskDelegate { + delegate.urlSession( + session, + downloadTask: downloadTask, + didResumeAtOffset: fileOffset, + expectedTotalBytes: expectedTotalBytes + ) + } + } +} + +// MARK: - URLSessionStreamDelegate + +#if !os(watchOS) + +@available(iOS 9.0, macOS 10.11, tvOS 9.0, *) +extension SessionDelegate: URLSessionStreamDelegate { + /// Tells the delegate that the read side of the connection has been closed. + /// + /// - parameter session: The session. + /// - parameter streamTask: The stream task. + open func urlSession(_ session: URLSession, readClosedFor streamTask: URLSessionStreamTask) { + streamTaskReadClosed?(session, streamTask) + } + + /// Tells the delegate that the write side of the connection has been closed. + /// + /// - parameter session: The session. + /// - parameter streamTask: The stream task. + open func urlSession(_ session: URLSession, writeClosedFor streamTask: URLSessionStreamTask) { + streamTaskWriteClosed?(session, streamTask) + } + + /// Tells the delegate that the system has determined that a better route to the host is available. + /// + /// - parameter session: The session. + /// - parameter streamTask: The stream task. + open func urlSession(_ session: URLSession, betterRouteDiscoveredFor streamTask: URLSessionStreamTask) { + streamTaskBetterRouteDiscovered?(session, streamTask) + } + + /// Tells the delegate that the stream task has been completed and provides the unopened stream objects. + /// + /// - parameter session: The session. + /// - parameter streamTask: The stream task. + /// - parameter inputStream: The new input stream. + /// - parameter outputStream: The new output stream. + open func urlSession( + _ session: URLSession, + streamTask: URLSessionStreamTask, + didBecome inputStream: InputStream, + outputStream: OutputStream) + { + streamTaskDidBecomeInputAndOutputStreams?(session, streamTask, inputStream, outputStream) + } +} + +#endif diff --git a/Santander-Test/Pods/Alamofire/Source/SessionManager.swift b/Santander-Test/Pods/Alamofire/Source/SessionManager.swift new file mode 100644 index 00000000..02c36a76 --- /dev/null +++ b/Santander-Test/Pods/Alamofire/Source/SessionManager.swift @@ -0,0 +1,899 @@ +// +// SessionManager.swift +// +// Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) +// +// 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 Foundation + +/// Responsible for creating and managing `Request` objects, as well as their underlying `NSURLSession`. +open class SessionManager { + + // MARK: - Helper Types + + /// Defines whether the `MultipartFormData` encoding was successful and contains result of the encoding as + /// associated values. + /// + /// - Success: Represents a successful `MultipartFormData` encoding and contains the new `UploadRequest` along with + /// streaming information. + /// - Failure: Used to represent a failure in the `MultipartFormData` encoding and also contains the encoding + /// error. + public enum MultipartFormDataEncodingResult { + case success(request: UploadRequest, streamingFromDisk: Bool, streamFileURL: URL?) + case failure(Error) + } + + // MARK: - Properties + + /// A default instance of `SessionManager`, used by top-level Alamofire request methods, and suitable for use + /// directly for any ad hoc requests. + public static let `default`: SessionManager = { + let configuration = URLSessionConfiguration.default + configuration.httpAdditionalHeaders = SessionManager.defaultHTTPHeaders + + return SessionManager(configuration: configuration) + }() + + /// Creates default values for the "Accept-Encoding", "Accept-Language" and "User-Agent" headers. + public static let defaultHTTPHeaders: HTTPHeaders = { + // Accept-Encoding HTTP Header; see https://tools.ietf.org/html/rfc7230#section-4.2.3 + let acceptEncoding: String = "gzip;q=1.0, compress;q=0.5" + + // Accept-Language HTTP Header; see https://tools.ietf.org/html/rfc7231#section-5.3.5 + let acceptLanguage = Locale.preferredLanguages.prefix(6).enumerated().map { index, languageCode in + let quality = 1.0 - (Double(index) * 0.1) + return "\(languageCode);q=\(quality)" + }.joined(separator: ", ") + + // User-Agent Header; see https://tools.ietf.org/html/rfc7231#section-5.5.3 + // Example: `iOS Example/1.0 (org.alamofire.iOS-Example; build:1; iOS 10.0.0) Alamofire/4.0.0` + let userAgent: String = { + if let info = Bundle.main.infoDictionary { + let executable = info[kCFBundleExecutableKey as String] as? String ?? "Unknown" + let bundle = info[kCFBundleIdentifierKey as String] as? String ?? "Unknown" + let appVersion = info["CFBundleShortVersionString"] as? String ?? "Unknown" + let appBuild = info[kCFBundleVersionKey as String] as? String ?? "Unknown" + + let osNameVersion: String = { + let version = ProcessInfo.processInfo.operatingSystemVersion + let versionString = "\(version.majorVersion).\(version.minorVersion).\(version.patchVersion)" + + let osName: String = { + #if os(iOS) + return "iOS" + #elseif os(watchOS) + return "watchOS" + #elseif os(tvOS) + return "tvOS" + #elseif os(macOS) + return "OS X" + #elseif os(Linux) + return "Linux" + #else + return "Unknown" + #endif + }() + + return "\(osName) \(versionString)" + }() + + let alamofireVersion: String = { + guard + let afInfo = Bundle(for: SessionManager.self).infoDictionary, + let build = afInfo["CFBundleShortVersionString"] + else { return "Unknown" } + + return "Alamofire/\(build)" + }() + + return "\(executable)/\(appVersion) (\(bundle); build:\(appBuild); \(osNameVersion)) \(alamofireVersion)" + } + + return "Alamofire" + }() + + return [ + "Accept-Encoding": acceptEncoding, + "Accept-Language": acceptLanguage, + "User-Agent": userAgent + ] + }() + + /// Default memory threshold used when encoding `MultipartFormData` in bytes. + public static let multipartFormDataEncodingMemoryThreshold: UInt64 = 10_000_000 + + /// The underlying session. + public let session: URLSession + + /// The session delegate handling all the task and session delegate callbacks. + public let delegate: SessionDelegate + + /// Whether to start requests immediately after being constructed. `true` by default. + open var startRequestsImmediately: Bool = true + + /// The request adapter called each time a new request is created. + open var adapter: RequestAdapter? + + /// The request retrier called each time a request encounters an error to determine whether to retry the request. + open var retrier: RequestRetrier? { + get { return delegate.retrier } + set { delegate.retrier = newValue } + } + + /// The background completion handler closure provided by the UIApplicationDelegate + /// `application:handleEventsForBackgroundURLSession:completionHandler:` method. By setting the background + /// completion handler, the SessionDelegate `sessionDidFinishEventsForBackgroundURLSession` closure implementation + /// will automatically call the handler. + /// + /// If you need to handle your own events before the handler is called, then you need to override the + /// SessionDelegate `sessionDidFinishEventsForBackgroundURLSession` and manually call the handler when finished. + /// + /// `nil` by default. + open var backgroundCompletionHandler: (() -> Void)? + + let queue = DispatchQueue(label: "org.alamofire.session-manager." + UUID().uuidString) + + // MARK: - Lifecycle + + /// Creates an instance with the specified `configuration`, `delegate` and `serverTrustPolicyManager`. + /// + /// - parameter configuration: The configuration used to construct the managed session. + /// `URLSessionConfiguration.default` by default. + /// - parameter delegate: The delegate used when initializing the session. `SessionDelegate()` by + /// default. + /// - parameter serverTrustPolicyManager: The server trust policy manager to use for evaluating all server trust + /// challenges. `nil` by default. + /// + /// - returns: The new `SessionManager` instance. + public init( + configuration: URLSessionConfiguration = URLSessionConfiguration.default, + delegate: SessionDelegate = SessionDelegate(), + serverTrustPolicyManager: ServerTrustPolicyManager? = nil) + { + self.delegate = delegate + self.session = URLSession(configuration: configuration, delegate: delegate, delegateQueue: nil) + + commonInit(serverTrustPolicyManager: serverTrustPolicyManager) + } + + /// Creates an instance with the specified `session`, `delegate` and `serverTrustPolicyManager`. + /// + /// - parameter session: The URL session. + /// - parameter delegate: The delegate of the URL session. Must equal the URL session's delegate. + /// - parameter serverTrustPolicyManager: The server trust policy manager to use for evaluating all server trust + /// challenges. `nil` by default. + /// + /// - returns: The new `SessionManager` instance if the URL session's delegate matches; `nil` otherwise. + public init?( + session: URLSession, + delegate: SessionDelegate, + serverTrustPolicyManager: ServerTrustPolicyManager? = nil) + { + guard delegate === session.delegate else { return nil } + + self.delegate = delegate + self.session = session + + commonInit(serverTrustPolicyManager: serverTrustPolicyManager) + } + + private func commonInit(serverTrustPolicyManager: ServerTrustPolicyManager?) { + session.serverTrustPolicyManager = serverTrustPolicyManager + + delegate.sessionManager = self + + delegate.sessionDidFinishEventsForBackgroundURLSession = { [weak self] session in + guard let strongSelf = self else { return } + DispatchQueue.main.async { strongSelf.backgroundCompletionHandler?() } + } + } + + deinit { + session.invalidateAndCancel() + } + + // MARK: - Data Request + + /// Creates a `DataRequest` to retrieve the contents of the specified `url`, `method`, `parameters`, `encoding` + /// and `headers`. + /// + /// - parameter url: The URL. + /// - parameter method: The HTTP method. `.get` by default. + /// - parameter parameters: The parameters. `nil` by default. + /// - parameter encoding: The parameter encoding. `URLEncoding.default` by default. + /// - parameter headers: The HTTP headers. `nil` by default. + /// + /// - returns: The created `DataRequest`. + @discardableResult + open func request( + _ url: URLConvertible, + method: HTTPMethod = .get, + parameters: Parameters? = nil, + encoding: ParameterEncoding = URLEncoding.default, + headers: HTTPHeaders? = nil) + -> DataRequest + { + var originalRequest: URLRequest? + + do { + originalRequest = try URLRequest(url: url, method: method, headers: headers) + let encodedURLRequest = try encoding.encode(originalRequest!, with: parameters) + return request(encodedURLRequest) + } catch { + return request(originalRequest, failedWith: error) + } + } + + /// Creates a `DataRequest` to retrieve the contents of a URL based on the specified `urlRequest`. + /// + /// If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. + /// + /// - parameter urlRequest: The URL request. + /// + /// - returns: The created `DataRequest`. + @discardableResult + open func request(_ urlRequest: URLRequestConvertible) -> DataRequest { + var originalRequest: URLRequest? + + do { + originalRequest = try urlRequest.asURLRequest() + let originalTask = DataRequest.Requestable(urlRequest: originalRequest!) + + let task = try originalTask.task(session: session, adapter: adapter, queue: queue) + let request = DataRequest(session: session, requestTask: .data(originalTask, task)) + + delegate[task] = request + + if startRequestsImmediately { request.resume() } + + return request + } catch { + return request(originalRequest, failedWith: error) + } + } + + // MARK: Private - Request Implementation + + private func request(_ urlRequest: URLRequest?, failedWith error: Error) -> DataRequest { + var requestTask: Request.RequestTask = .data(nil, nil) + + if let urlRequest = urlRequest { + let originalTask = DataRequest.Requestable(urlRequest: urlRequest) + requestTask = .data(originalTask, nil) + } + + let underlyingError = error.underlyingAdaptError ?? error + let request = DataRequest(session: session, requestTask: requestTask, error: underlyingError) + + if let retrier = retrier, error is AdaptError { + allowRetrier(retrier, toRetry: request, with: underlyingError) + } else { + if startRequestsImmediately { request.resume() } + } + + return request + } + + // MARK: - Download Request + + // MARK: URL Request + + /// Creates a `DownloadRequest` to retrieve the contents the specified `url`, `method`, `parameters`, `encoding`, + /// `headers` and save them to the `destination`. + /// + /// If `destination` is not specified, the contents will remain in the temporary location determined by the + /// underlying URL session. + /// + /// If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. + /// + /// - parameter url: The URL. + /// - parameter method: The HTTP method. `.get` by default. + /// - parameter parameters: The parameters. `nil` by default. + /// - parameter encoding: The parameter encoding. `URLEncoding.default` by default. + /// - parameter headers: The HTTP headers. `nil` by default. + /// - parameter destination: The closure used to determine the destination of the downloaded file. `nil` by default. + /// + /// - returns: The created `DownloadRequest`. + @discardableResult + open func download( + _ url: URLConvertible, + method: HTTPMethod = .get, + parameters: Parameters? = nil, + encoding: ParameterEncoding = URLEncoding.default, + headers: HTTPHeaders? = nil, + to destination: DownloadRequest.DownloadFileDestination? = nil) + -> DownloadRequest + { + do { + let urlRequest = try URLRequest(url: url, method: method, headers: headers) + let encodedURLRequest = try encoding.encode(urlRequest, with: parameters) + return download(encodedURLRequest, to: destination) + } catch { + return download(nil, to: destination, failedWith: error) + } + } + + /// Creates a `DownloadRequest` to retrieve the contents of a URL based on the specified `urlRequest` and save + /// them to the `destination`. + /// + /// If `destination` is not specified, the contents will remain in the temporary location determined by the + /// underlying URL session. + /// + /// If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. + /// + /// - parameter urlRequest: The URL request + /// - parameter destination: The closure used to determine the destination of the downloaded file. `nil` by default. + /// + /// - returns: The created `DownloadRequest`. + @discardableResult + open func download( + _ urlRequest: URLRequestConvertible, + to destination: DownloadRequest.DownloadFileDestination? = nil) + -> DownloadRequest + { + do { + let urlRequest = try urlRequest.asURLRequest() + return download(.request(urlRequest), to: destination) + } catch { + return download(nil, to: destination, failedWith: error) + } + } + + // MARK: Resume Data + + /// Creates a `DownloadRequest` from the `resumeData` produced from a previous request cancellation to retrieve + /// the contents of the original request and save them to the `destination`. + /// + /// If `destination` is not specified, the contents will remain in the temporary location determined by the + /// underlying URL session. + /// + /// If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. + /// + /// On the latest release of all the Apple platforms (iOS 10, macOS 10.12, tvOS 10, watchOS 3), `resumeData` is broken + /// on background URL session configurations. There's an underlying bug in the `resumeData` generation logic where the + /// data is written incorrectly and will always fail to resume the download. For more information about the bug and + /// possible workarounds, please refer to the following Stack Overflow post: + /// + /// - http://stackoverflow.com/a/39347461/1342462 + /// + /// - parameter resumeData: The resume data. This is an opaque data blob produced by `URLSessionDownloadTask` + /// when a task is cancelled. See `URLSession -downloadTask(withResumeData:)` for + /// additional information. + /// - parameter destination: The closure used to determine the destination of the downloaded file. `nil` by default. + /// + /// - returns: The created `DownloadRequest`. + @discardableResult + open func download( + resumingWith resumeData: Data, + to destination: DownloadRequest.DownloadFileDestination? = nil) + -> DownloadRequest + { + return download(.resumeData(resumeData), to: destination) + } + + // MARK: Private - Download Implementation + + private func download( + _ downloadable: DownloadRequest.Downloadable, + to destination: DownloadRequest.DownloadFileDestination?) + -> DownloadRequest + { + do { + let task = try downloadable.task(session: session, adapter: adapter, queue: queue) + let download = DownloadRequest(session: session, requestTask: .download(downloadable, task)) + + download.downloadDelegate.destination = destination + + delegate[task] = download + + if startRequestsImmediately { download.resume() } + + return download + } catch { + return download(downloadable, to: destination, failedWith: error) + } + } + + private func download( + _ downloadable: DownloadRequest.Downloadable?, + to destination: DownloadRequest.DownloadFileDestination?, + failedWith error: Error) + -> DownloadRequest + { + var downloadTask: Request.RequestTask = .download(nil, nil) + + if let downloadable = downloadable { + downloadTask = .download(downloadable, nil) + } + + let underlyingError = error.underlyingAdaptError ?? error + + let download = DownloadRequest(session: session, requestTask: downloadTask, error: underlyingError) + download.downloadDelegate.destination = destination + + if let retrier = retrier, error is AdaptError { + allowRetrier(retrier, toRetry: download, with: underlyingError) + } else { + if startRequestsImmediately { download.resume() } + } + + return download + } + + // MARK: - Upload Request + + // MARK: File + + /// Creates an `UploadRequest` from the specified `url`, `method` and `headers` for uploading the `file`. + /// + /// If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. + /// + /// - parameter file: The file to upload. + /// - parameter url: The URL. + /// - parameter method: The HTTP method. `.post` by default. + /// - parameter headers: The HTTP headers. `nil` by default. + /// + /// - returns: The created `UploadRequest`. + @discardableResult + open func upload( + _ fileURL: URL, + to url: URLConvertible, + method: HTTPMethod = .post, + headers: HTTPHeaders? = nil) + -> UploadRequest + { + do { + let urlRequest = try URLRequest(url: url, method: method, headers: headers) + return upload(fileURL, with: urlRequest) + } catch { + return upload(nil, failedWith: error) + } + } + + /// Creates a `UploadRequest` from the specified `urlRequest` for uploading the `file`. + /// + /// If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. + /// + /// - parameter file: The file to upload. + /// - parameter urlRequest: The URL request. + /// + /// - returns: The created `UploadRequest`. + @discardableResult + open func upload(_ fileURL: URL, with urlRequest: URLRequestConvertible) -> UploadRequest { + do { + let urlRequest = try urlRequest.asURLRequest() + return upload(.file(fileURL, urlRequest)) + } catch { + return upload(nil, failedWith: error) + } + } + + // MARK: Data + + /// Creates an `UploadRequest` from the specified `url`, `method` and `headers` for uploading the `data`. + /// + /// If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. + /// + /// - parameter data: The data to upload. + /// - parameter url: The URL. + /// - parameter method: The HTTP method. `.post` by default. + /// - parameter headers: The HTTP headers. `nil` by default. + /// + /// - returns: The created `UploadRequest`. + @discardableResult + open func upload( + _ data: Data, + to url: URLConvertible, + method: HTTPMethod = .post, + headers: HTTPHeaders? = nil) + -> UploadRequest + { + do { + let urlRequest = try URLRequest(url: url, method: method, headers: headers) + return upload(data, with: urlRequest) + } catch { + return upload(nil, failedWith: error) + } + } + + /// Creates an `UploadRequest` from the specified `urlRequest` for uploading the `data`. + /// + /// If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. + /// + /// - parameter data: The data to upload. + /// - parameter urlRequest: The URL request. + /// + /// - returns: The created `UploadRequest`. + @discardableResult + open func upload(_ data: Data, with urlRequest: URLRequestConvertible) -> UploadRequest { + do { + let urlRequest = try urlRequest.asURLRequest() + return upload(.data(data, urlRequest)) + } catch { + return upload(nil, failedWith: error) + } + } + + // MARK: InputStream + + /// Creates an `UploadRequest` from the specified `url`, `method` and `headers` for uploading the `stream`. + /// + /// If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. + /// + /// - parameter stream: The stream to upload. + /// - parameter url: The URL. + /// - parameter method: The HTTP method. `.post` by default. + /// - parameter headers: The HTTP headers. `nil` by default. + /// + /// - returns: The created `UploadRequest`. + @discardableResult + open func upload( + _ stream: InputStream, + to url: URLConvertible, + method: HTTPMethod = .post, + headers: HTTPHeaders? = nil) + -> UploadRequest + { + do { + let urlRequest = try URLRequest(url: url, method: method, headers: headers) + return upload(stream, with: urlRequest) + } catch { + return upload(nil, failedWith: error) + } + } + + /// Creates an `UploadRequest` from the specified `urlRequest` for uploading the `stream`. + /// + /// If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. + /// + /// - parameter stream: The stream to upload. + /// - parameter urlRequest: The URL request. + /// + /// - returns: The created `UploadRequest`. + @discardableResult + open func upload(_ stream: InputStream, with urlRequest: URLRequestConvertible) -> UploadRequest { + do { + let urlRequest = try urlRequest.asURLRequest() + return upload(.stream(stream, urlRequest)) + } catch { + return upload(nil, failedWith: error) + } + } + + // MARK: MultipartFormData + + /// Encodes `multipartFormData` using `encodingMemoryThreshold` and calls `encodingCompletion` with new + /// `UploadRequest` using the `url`, `method` and `headers`. + /// + /// It is important to understand the memory implications of uploading `MultipartFormData`. If the cummulative + /// payload is small, encoding the data in-memory and directly uploading to a server is the by far the most + /// efficient approach. However, if the payload is too large, encoding the data in-memory could cause your app to + /// be terminated. Larger payloads must first be written to disk using input and output streams to keep the memory + /// footprint low, then the data can be uploaded as a stream from the resulting file. Streaming from disk MUST be + /// used for larger payloads such as video content. + /// + /// The `encodingMemoryThreshold` parameter allows Alamofire to automatically determine whether to encode in-memory + /// or stream from disk. If the content length of the `MultipartFormData` is below the `encodingMemoryThreshold`, + /// encoding takes place in-memory. If the content length exceeds the threshold, the data is streamed to disk + /// during the encoding process. Then the result is uploaded as data or as a stream depending on which encoding + /// technique was used. + /// + /// If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. + /// + /// - parameter multipartFormData: The closure used to append body parts to the `MultipartFormData`. + /// - parameter encodingMemoryThreshold: The encoding memory threshold in bytes. + /// `multipartFormDataEncodingMemoryThreshold` by default. + /// - parameter url: The URL. + /// - parameter method: The HTTP method. `.post` by default. + /// - parameter headers: The HTTP headers. `nil` by default. + /// - parameter encodingCompletion: The closure called when the `MultipartFormData` encoding is complete. + open func upload( + multipartFormData: @escaping (MultipartFormData) -> Void, + usingThreshold encodingMemoryThreshold: UInt64 = SessionManager.multipartFormDataEncodingMemoryThreshold, + to url: URLConvertible, + method: HTTPMethod = .post, + headers: HTTPHeaders? = nil, + queue: DispatchQueue? = nil, + encodingCompletion: ((MultipartFormDataEncodingResult) -> Void)?) + { + do { + let urlRequest = try URLRequest(url: url, method: method, headers: headers) + + return upload( + multipartFormData: multipartFormData, + usingThreshold: encodingMemoryThreshold, + with: urlRequest, + queue: queue, + encodingCompletion: encodingCompletion + ) + } catch { + (queue ?? DispatchQueue.main).async { encodingCompletion?(.failure(error)) } + } + } + + /// Encodes `multipartFormData` using `encodingMemoryThreshold` and calls `encodingCompletion` with new + /// `UploadRequest` using the `urlRequest`. + /// + /// It is important to understand the memory implications of uploading `MultipartFormData`. If the cummulative + /// payload is small, encoding the data in-memory and directly uploading to a server is the by far the most + /// efficient approach. However, if the payload is too large, encoding the data in-memory could cause your app to + /// be terminated. Larger payloads must first be written to disk using input and output streams to keep the memory + /// footprint low, then the data can be uploaded as a stream from the resulting file. Streaming from disk MUST be + /// used for larger payloads such as video content. + /// + /// The `encodingMemoryThreshold` parameter allows Alamofire to automatically determine whether to encode in-memory + /// or stream from disk. If the content length of the `MultipartFormData` is below the `encodingMemoryThreshold`, + /// encoding takes place in-memory. If the content length exceeds the threshold, the data is streamed to disk + /// during the encoding process. Then the result is uploaded as data or as a stream depending on which encoding + /// technique was used. + /// + /// If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. + /// + /// - parameter multipartFormData: The closure used to append body parts to the `MultipartFormData`. + /// - parameter encodingMemoryThreshold: The encoding memory threshold in bytes. + /// `multipartFormDataEncodingMemoryThreshold` by default. + /// - parameter urlRequest: The URL request. + /// - parameter encodingCompletion: The closure called when the `MultipartFormData` encoding is complete. + open func upload( + multipartFormData: @escaping (MultipartFormData) -> Void, + usingThreshold encodingMemoryThreshold: UInt64 = SessionManager.multipartFormDataEncodingMemoryThreshold, + with urlRequest: URLRequestConvertible, + queue: DispatchQueue? = nil, + encodingCompletion: ((MultipartFormDataEncodingResult) -> Void)?) + { + DispatchQueue.global(qos: .utility).async { + let formData = MultipartFormData() + multipartFormData(formData) + + var tempFileURL: URL? + + do { + var urlRequestWithContentType = try urlRequest.asURLRequest() + urlRequestWithContentType.setValue(formData.contentType, forHTTPHeaderField: "Content-Type") + + let isBackgroundSession = self.session.configuration.identifier != nil + + if formData.contentLength < encodingMemoryThreshold && !isBackgroundSession { + let data = try formData.encode() + + let encodingResult = MultipartFormDataEncodingResult.success( + request: self.upload(data, with: urlRequestWithContentType), + streamingFromDisk: false, + streamFileURL: nil + ) + + (queue ?? DispatchQueue.main).async { encodingCompletion?(encodingResult) } + } else { + let fileManager = FileManager.default + let tempDirectoryURL = URL(fileURLWithPath: NSTemporaryDirectory()) + let directoryURL = tempDirectoryURL.appendingPathComponent("org.alamofire.manager/multipart.form.data") + let fileName = UUID().uuidString + let fileURL = directoryURL.appendingPathComponent(fileName) + + tempFileURL = fileURL + + var directoryError: Error? + + // Create directory inside serial queue to ensure two threads don't do this in parallel + self.queue.sync { + do { + try fileManager.createDirectory(at: directoryURL, withIntermediateDirectories: true, attributes: nil) + } catch { + directoryError = error + } + } + + if let directoryError = directoryError { throw directoryError } + + try formData.writeEncodedData(to: fileURL) + + let upload = self.upload(fileURL, with: urlRequestWithContentType) + + // Cleanup the temp file once the upload is complete + upload.delegate.queue.addOperation { + do { + try FileManager.default.removeItem(at: fileURL) + } catch { + // No-op + } + } + + (queue ?? DispatchQueue.main).async { + let encodingResult = MultipartFormDataEncodingResult.success( + request: upload, + streamingFromDisk: true, + streamFileURL: fileURL + ) + + encodingCompletion?(encodingResult) + } + } + } catch { + // Cleanup the temp file in the event that the multipart form data encoding failed + if let tempFileURL = tempFileURL { + do { + try FileManager.default.removeItem(at: tempFileURL) + } catch { + // No-op + } + } + + (queue ?? DispatchQueue.main).async { encodingCompletion?(.failure(error)) } + } + } + } + + // MARK: Private - Upload Implementation + + private func upload(_ uploadable: UploadRequest.Uploadable) -> UploadRequest { + do { + let task = try uploadable.task(session: session, adapter: adapter, queue: queue) + let upload = UploadRequest(session: session, requestTask: .upload(uploadable, task)) + + if case let .stream(inputStream, _) = uploadable { + upload.delegate.taskNeedNewBodyStream = { _, _ in inputStream } + } + + delegate[task] = upload + + if startRequestsImmediately { upload.resume() } + + return upload + } catch { + return upload(uploadable, failedWith: error) + } + } + + private func upload(_ uploadable: UploadRequest.Uploadable?, failedWith error: Error) -> UploadRequest { + var uploadTask: Request.RequestTask = .upload(nil, nil) + + if let uploadable = uploadable { + uploadTask = .upload(uploadable, nil) + } + + let underlyingError = error.underlyingAdaptError ?? error + let upload = UploadRequest(session: session, requestTask: uploadTask, error: underlyingError) + + if let retrier = retrier, error is AdaptError { + allowRetrier(retrier, toRetry: upload, with: underlyingError) + } else { + if startRequestsImmediately { upload.resume() } + } + + return upload + } + +#if !os(watchOS) + + // MARK: - Stream Request + + // MARK: Hostname and Port + + /// Creates a `StreamRequest` for bidirectional streaming using the `hostname` and `port`. + /// + /// If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. + /// + /// - parameter hostName: The hostname of the server to connect to. + /// - parameter port: The port of the server to connect to. + /// + /// - returns: The created `StreamRequest`. + @discardableResult + @available(iOS 9.0, macOS 10.11, tvOS 9.0, *) + open func stream(withHostName hostName: String, port: Int) -> StreamRequest { + return stream(.stream(hostName: hostName, port: port)) + } + + // MARK: NetService + + /// Creates a `StreamRequest` for bidirectional streaming using the `netService`. + /// + /// If `startRequestsImmediately` is `true`, the request will have `resume()` called before being returned. + /// + /// - parameter netService: The net service used to identify the endpoint. + /// + /// - returns: The created `StreamRequest`. + @discardableResult + @available(iOS 9.0, macOS 10.11, tvOS 9.0, *) + open func stream(with netService: NetService) -> StreamRequest { + return stream(.netService(netService)) + } + + // MARK: Private - Stream Implementation + + @available(iOS 9.0, macOS 10.11, tvOS 9.0, *) + private func stream(_ streamable: StreamRequest.Streamable) -> StreamRequest { + do { + let task = try streamable.task(session: session, adapter: adapter, queue: queue) + let request = StreamRequest(session: session, requestTask: .stream(streamable, task)) + + delegate[task] = request + + if startRequestsImmediately { request.resume() } + + return request + } catch { + return stream(failedWith: error) + } + } + + @available(iOS 9.0, macOS 10.11, tvOS 9.0, *) + private func stream(failedWith error: Error) -> StreamRequest { + let stream = StreamRequest(session: session, requestTask: .stream(nil, nil), error: error) + if startRequestsImmediately { stream.resume() } + return stream + } + +#endif + + // MARK: - Internal - Retry Request + + func retry(_ request: Request) -> Bool { + guard let originalTask = request.originalTask else { return false } + + do { + let task = try originalTask.task(session: session, adapter: adapter, queue: queue) + + if let originalTask = request.task { + delegate[originalTask] = nil // removes the old request to avoid endless growth + } + + request.delegate.task = task // resets all task delegate data + + request.retryCount += 1 + request.startTime = CFAbsoluteTimeGetCurrent() + request.endTime = nil + + task.resume() + + return true + } catch { + request.delegate.error = error.underlyingAdaptError ?? error + return false + } + } + + private func allowRetrier(_ retrier: RequestRetrier, toRetry request: Request, with error: Error) { + DispatchQueue.utility.async { [weak self] in + guard let strongSelf = self else { return } + + retrier.should(strongSelf, retry: request, with: error) { shouldRetry, timeDelay in + guard let strongSelf = self else { return } + + guard shouldRetry else { + if strongSelf.startRequestsImmediately { request.resume() } + return + } + + DispatchQueue.utility.after(timeDelay) { + guard let strongSelf = self else { return } + + let retrySucceeded = strongSelf.retry(request) + + if retrySucceeded, let task = request.task { + strongSelf.delegate[task] = request + } else { + if strongSelf.startRequestsImmediately { request.resume() } + } + } + } + } + } +} diff --git a/Santander-Test/Pods/Alamofire/Source/TaskDelegate.swift b/Santander-Test/Pods/Alamofire/Source/TaskDelegate.swift new file mode 100644 index 00000000..5705737e --- /dev/null +++ b/Santander-Test/Pods/Alamofire/Source/TaskDelegate.swift @@ -0,0 +1,466 @@ +// +// TaskDelegate.swift +// +// Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) +// +// 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 Foundation + +/// The task delegate is responsible for handling all delegate callbacks for the underlying task as well as +/// executing all operations attached to the serial operation queue upon task completion. +open class TaskDelegate: NSObject { + + // MARK: Properties + + /// The serial operation queue used to execute all operations after the task completes. + public let queue: OperationQueue + + /// The data returned by the server. + public var data: Data? { return nil } + + /// The error generated throughout the lifecyle of the task. + public var error: Error? + + var task: URLSessionTask? { + set { + taskLock.lock(); defer { taskLock.unlock() } + _task = newValue + } + get { + taskLock.lock(); defer { taskLock.unlock() } + return _task + } + } + + var initialResponseTime: CFAbsoluteTime? + var credential: URLCredential? + var metrics: AnyObject? // URLSessionTaskMetrics + + private var _task: URLSessionTask? { + didSet { reset() } + } + + private let taskLock = NSLock() + + // MARK: Lifecycle + + init(task: URLSessionTask?) { + _task = task + + self.queue = { + let operationQueue = OperationQueue() + + operationQueue.maxConcurrentOperationCount = 1 + operationQueue.isSuspended = true + operationQueue.qualityOfService = .utility + + return operationQueue + }() + } + + func reset() { + error = nil + initialResponseTime = nil + } + + // MARK: URLSessionTaskDelegate + + var taskWillPerformHTTPRedirection: ((URLSession, URLSessionTask, HTTPURLResponse, URLRequest) -> URLRequest?)? + var taskDidReceiveChallenge: ((URLSession, URLSessionTask, URLAuthenticationChallenge) -> (URLSession.AuthChallengeDisposition, URLCredential?))? + var taskNeedNewBodyStream: ((URLSession, URLSessionTask) -> InputStream?)? + var taskDidCompleteWithError: ((URLSession, URLSessionTask, Error?) -> Void)? + + @objc(URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:) + func urlSession( + _ session: URLSession, + task: URLSessionTask, + willPerformHTTPRedirection response: HTTPURLResponse, + newRequest request: URLRequest, + completionHandler: @escaping (URLRequest?) -> Void) + { + var redirectRequest: URLRequest? = request + + if let taskWillPerformHTTPRedirection = taskWillPerformHTTPRedirection { + redirectRequest = taskWillPerformHTTPRedirection(session, task, response, request) + } + + completionHandler(redirectRequest) + } + + @objc(URLSession:task:didReceiveChallenge:completionHandler:) + func urlSession( + _ session: URLSession, + task: URLSessionTask, + didReceive challenge: URLAuthenticationChallenge, + completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) + { + var disposition: URLSession.AuthChallengeDisposition = .performDefaultHandling + var credential: URLCredential? + + if let taskDidReceiveChallenge = taskDidReceiveChallenge { + (disposition, credential) = taskDidReceiveChallenge(session, task, challenge) + } else if challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust { + let host = challenge.protectionSpace.host + + if + let serverTrustPolicy = session.serverTrustPolicyManager?.serverTrustPolicy(forHost: host), + let serverTrust = challenge.protectionSpace.serverTrust + { + if serverTrustPolicy.evaluate(serverTrust, forHost: host) { + disposition = .useCredential + credential = URLCredential(trust: serverTrust) + } else { + disposition = .cancelAuthenticationChallenge + } + } + } else { + if challenge.previousFailureCount > 0 { + disposition = .rejectProtectionSpace + } else { + credential = self.credential ?? session.configuration.urlCredentialStorage?.defaultCredential(for: challenge.protectionSpace) + + if credential != nil { + disposition = .useCredential + } + } + } + + completionHandler(disposition, credential) + } + + @objc(URLSession:task:needNewBodyStream:) + func urlSession( + _ session: URLSession, + task: URLSessionTask, + needNewBodyStream completionHandler: @escaping (InputStream?) -> Void) + { + var bodyStream: InputStream? + + if let taskNeedNewBodyStream = taskNeedNewBodyStream { + bodyStream = taskNeedNewBodyStream(session, task) + } + + completionHandler(bodyStream) + } + + @objc(URLSession:task:didCompleteWithError:) + func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) { + if let taskDidCompleteWithError = taskDidCompleteWithError { + taskDidCompleteWithError(session, task, error) + } else { + if let error = error { + if self.error == nil { self.error = error } + + if + let downloadDelegate = self as? DownloadTaskDelegate, + let resumeData = (error as NSError).userInfo[NSURLSessionDownloadTaskResumeData] as? Data + { + downloadDelegate.resumeData = resumeData + } + } + + queue.isSuspended = false + } + } +} + +// MARK: - + +class DataTaskDelegate: TaskDelegate, URLSessionDataDelegate { + + // MARK: Properties + + var dataTask: URLSessionDataTask { return task as! URLSessionDataTask } + + override var data: Data? { + if dataStream != nil { + return nil + } else { + return mutableData + } + } + + var progress: Progress + var progressHandler: (closure: Request.ProgressHandler, queue: DispatchQueue)? + + var dataStream: ((_ data: Data) -> Void)? + + private var totalBytesReceived: Int64 = 0 + private var mutableData: Data + + private var expectedContentLength: Int64? + + // MARK: Lifecycle + + override init(task: URLSessionTask?) { + mutableData = Data() + progress = Progress(totalUnitCount: 0) + + super.init(task: task) + } + + override func reset() { + super.reset() + + progress = Progress(totalUnitCount: 0) + totalBytesReceived = 0 + mutableData = Data() + expectedContentLength = nil + } + + // MARK: URLSessionDataDelegate + + var dataTaskDidReceiveResponse: ((URLSession, URLSessionDataTask, URLResponse) -> URLSession.ResponseDisposition)? + var dataTaskDidBecomeDownloadTask: ((URLSession, URLSessionDataTask, URLSessionDownloadTask) -> Void)? + var dataTaskDidReceiveData: ((URLSession, URLSessionDataTask, Data) -> Void)? + var dataTaskWillCacheResponse: ((URLSession, URLSessionDataTask, CachedURLResponse) -> CachedURLResponse?)? + + func urlSession( + _ session: URLSession, + dataTask: URLSessionDataTask, + didReceive response: URLResponse, + completionHandler: @escaping (URLSession.ResponseDisposition) -> Void) + { + var disposition: URLSession.ResponseDisposition = .allow + + expectedContentLength = response.expectedContentLength + + if let dataTaskDidReceiveResponse = dataTaskDidReceiveResponse { + disposition = dataTaskDidReceiveResponse(session, dataTask, response) + } + + completionHandler(disposition) + } + + func urlSession( + _ session: URLSession, + dataTask: URLSessionDataTask, + didBecome downloadTask: URLSessionDownloadTask) + { + dataTaskDidBecomeDownloadTask?(session, dataTask, downloadTask) + } + + func urlSession(_ session: URLSession, dataTask: URLSessionDataTask, didReceive data: Data) { + if initialResponseTime == nil { initialResponseTime = CFAbsoluteTimeGetCurrent() } + + if let dataTaskDidReceiveData = dataTaskDidReceiveData { + dataTaskDidReceiveData(session, dataTask, data) + } else { + if let dataStream = dataStream { + dataStream(data) + } else { + mutableData.append(data) + } + + let bytesReceived = Int64(data.count) + totalBytesReceived += bytesReceived + let totalBytesExpected = dataTask.response?.expectedContentLength ?? NSURLSessionTransferSizeUnknown + + progress.totalUnitCount = totalBytesExpected + progress.completedUnitCount = totalBytesReceived + + if let progressHandler = progressHandler { + progressHandler.queue.async { progressHandler.closure(self.progress) } + } + } + } + + func urlSession( + _ session: URLSession, + dataTask: URLSessionDataTask, + willCacheResponse proposedResponse: CachedURLResponse, + completionHandler: @escaping (CachedURLResponse?) -> Void) + { + var cachedResponse: CachedURLResponse? = proposedResponse + + if let dataTaskWillCacheResponse = dataTaskWillCacheResponse { + cachedResponse = dataTaskWillCacheResponse(session, dataTask, proposedResponse) + } + + completionHandler(cachedResponse) + } +} + +// MARK: - + +class DownloadTaskDelegate: TaskDelegate, URLSessionDownloadDelegate { + + // MARK: Properties + + var downloadTask: URLSessionDownloadTask { return task as! URLSessionDownloadTask } + + var progress: Progress + var progressHandler: (closure: Request.ProgressHandler, queue: DispatchQueue)? + + var resumeData: Data? + override var data: Data? { return resumeData } + + var destination: DownloadRequest.DownloadFileDestination? + + var temporaryURL: URL? + var destinationURL: URL? + + var fileURL: URL? { return destination != nil ? destinationURL : temporaryURL } + + // MARK: Lifecycle + + override init(task: URLSessionTask?) { + progress = Progress(totalUnitCount: 0) + super.init(task: task) + } + + override func reset() { + super.reset() + + progress = Progress(totalUnitCount: 0) + resumeData = nil + } + + // MARK: URLSessionDownloadDelegate + + var downloadTaskDidFinishDownloadingToURL: ((URLSession, URLSessionDownloadTask, URL) -> URL)? + var downloadTaskDidWriteData: ((URLSession, URLSessionDownloadTask, Int64, Int64, Int64) -> Void)? + var downloadTaskDidResumeAtOffset: ((URLSession, URLSessionDownloadTask, Int64, Int64) -> Void)? + + func urlSession( + _ session: URLSession, + downloadTask: URLSessionDownloadTask, + didFinishDownloadingTo location: URL) + { + temporaryURL = location + + guard + let destination = destination, + let response = downloadTask.response as? HTTPURLResponse + else { return } + + let result = destination(location, response) + let destinationURL = result.destinationURL + let options = result.options + + self.destinationURL = destinationURL + + do { + if options.contains(.removePreviousFile), FileManager.default.fileExists(atPath: destinationURL.path) { + try FileManager.default.removeItem(at: destinationURL) + } + + if options.contains(.createIntermediateDirectories) { + let directory = destinationURL.deletingLastPathComponent() + try FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true) + } + + try FileManager.default.moveItem(at: location, to: destinationURL) + } catch { + self.error = error + } + } + + func urlSession( + _ session: URLSession, + downloadTask: URLSessionDownloadTask, + didWriteData bytesWritten: Int64, + totalBytesWritten: Int64, + totalBytesExpectedToWrite: Int64) + { + if initialResponseTime == nil { initialResponseTime = CFAbsoluteTimeGetCurrent() } + + if let downloadTaskDidWriteData = downloadTaskDidWriteData { + downloadTaskDidWriteData( + session, + downloadTask, + bytesWritten, + totalBytesWritten, + totalBytesExpectedToWrite + ) + } else { + progress.totalUnitCount = totalBytesExpectedToWrite + progress.completedUnitCount = totalBytesWritten + + if let progressHandler = progressHandler { + progressHandler.queue.async { progressHandler.closure(self.progress) } + } + } + } + + func urlSession( + _ session: URLSession, + downloadTask: URLSessionDownloadTask, + didResumeAtOffset fileOffset: Int64, + expectedTotalBytes: Int64) + { + if let downloadTaskDidResumeAtOffset = downloadTaskDidResumeAtOffset { + downloadTaskDidResumeAtOffset(session, downloadTask, fileOffset, expectedTotalBytes) + } else { + progress.totalUnitCount = expectedTotalBytes + progress.completedUnitCount = fileOffset + } + } +} + +// MARK: - + +class UploadTaskDelegate: DataTaskDelegate { + + // MARK: Properties + + var uploadTask: URLSessionUploadTask { return task as! URLSessionUploadTask } + + var uploadProgress: Progress + var uploadProgressHandler: (closure: Request.ProgressHandler, queue: DispatchQueue)? + + // MARK: Lifecycle + + override init(task: URLSessionTask?) { + uploadProgress = Progress(totalUnitCount: 0) + super.init(task: task) + } + + override func reset() { + super.reset() + uploadProgress = Progress(totalUnitCount: 0) + } + + // MARK: URLSessionTaskDelegate + + var taskDidSendBodyData: ((URLSession, URLSessionTask, Int64, Int64, Int64) -> Void)? + + func URLSession( + _ session: URLSession, + task: URLSessionTask, + didSendBodyData bytesSent: Int64, + totalBytesSent: Int64, + totalBytesExpectedToSend: Int64) + { + if initialResponseTime == nil { initialResponseTime = CFAbsoluteTimeGetCurrent() } + + if let taskDidSendBodyData = taskDidSendBodyData { + taskDidSendBodyData(session, task, bytesSent, totalBytesSent, totalBytesExpectedToSend) + } else { + uploadProgress.totalUnitCount = totalBytesExpectedToSend + uploadProgress.completedUnitCount = totalBytesSent + + if let uploadProgressHandler = uploadProgressHandler { + uploadProgressHandler.queue.async { uploadProgressHandler.closure(self.uploadProgress) } + } + } + } +} diff --git a/Santander-Test/Pods/Alamofire/Source/Timeline.swift b/Santander-Test/Pods/Alamofire/Source/Timeline.swift new file mode 100644 index 00000000..596c1bdc --- /dev/null +++ b/Santander-Test/Pods/Alamofire/Source/Timeline.swift @@ -0,0 +1,136 @@ +// +// Timeline.swift +// +// Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) +// +// 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 Foundation + +/// Responsible for computing the timing metrics for the complete lifecycle of a `Request`. +public struct Timeline { + /// The time the request was initialized. + public let requestStartTime: CFAbsoluteTime + + /// The time the first bytes were received from or sent to the server. + public let initialResponseTime: CFAbsoluteTime + + /// The time when the request was completed. + public let requestCompletedTime: CFAbsoluteTime + + /// The time when the response serialization was completed. + public let serializationCompletedTime: CFAbsoluteTime + + /// The time interval in seconds from the time the request started to the initial response from the server. + public let latency: TimeInterval + + /// The time interval in seconds from the time the request started to the time the request completed. + public let requestDuration: TimeInterval + + /// The time interval in seconds from the time the request completed to the time response serialization completed. + public let serializationDuration: TimeInterval + + /// The time interval in seconds from the time the request started to the time response serialization completed. + public let totalDuration: TimeInterval + + /// Creates a new `Timeline` instance with the specified request times. + /// + /// - parameter requestStartTime: The time the request was initialized. Defaults to `0.0`. + /// - parameter initialResponseTime: The time the first bytes were received from or sent to the server. + /// Defaults to `0.0`. + /// - parameter requestCompletedTime: The time when the request was completed. Defaults to `0.0`. + /// - parameter serializationCompletedTime: The time when the response serialization was completed. Defaults + /// to `0.0`. + /// + /// - returns: The new `Timeline` instance. + public init( + requestStartTime: CFAbsoluteTime = 0.0, + initialResponseTime: CFAbsoluteTime = 0.0, + requestCompletedTime: CFAbsoluteTime = 0.0, + serializationCompletedTime: CFAbsoluteTime = 0.0) + { + self.requestStartTime = requestStartTime + self.initialResponseTime = initialResponseTime + self.requestCompletedTime = requestCompletedTime + self.serializationCompletedTime = serializationCompletedTime + + self.latency = initialResponseTime - requestStartTime + self.requestDuration = requestCompletedTime - requestStartTime + self.serializationDuration = serializationCompletedTime - requestCompletedTime + self.totalDuration = serializationCompletedTime - requestStartTime + } +} + +// MARK: - CustomStringConvertible + +extension Timeline: CustomStringConvertible { + /// The textual representation used when written to an output stream, which includes the latency, the request + /// duration and the total duration. + public var description: String { + let latency = String(format: "%.3f", self.latency) + let requestDuration = String(format: "%.3f", self.requestDuration) + let serializationDuration = String(format: "%.3f", self.serializationDuration) + let totalDuration = String(format: "%.3f", self.totalDuration) + + // NOTE: Had to move to string concatenation due to memory leak filed as rdar://26761490. Once memory leak is + // fixed, we should move back to string interpolation by reverting commit 7d4a43b1. + let timings = [ + "\"Latency\": " + latency + " secs", + "\"Request Duration\": " + requestDuration + " secs", + "\"Serialization Duration\": " + serializationDuration + " secs", + "\"Total Duration\": " + totalDuration + " secs" + ] + + return "Timeline: { " + timings.joined(separator: ", ") + " }" + } +} + +// MARK: - CustomDebugStringConvertible + +extension Timeline: CustomDebugStringConvertible { + /// The textual representation used when written to an output stream, which includes the request start time, the + /// initial response time, the request completed time, the serialization completed time, the latency, the request + /// duration and the total duration. + public var debugDescription: String { + let requestStartTime = String(format: "%.3f", self.requestStartTime) + let initialResponseTime = String(format: "%.3f", self.initialResponseTime) + let requestCompletedTime = String(format: "%.3f", self.requestCompletedTime) + let serializationCompletedTime = String(format: "%.3f", self.serializationCompletedTime) + let latency = String(format: "%.3f", self.latency) + let requestDuration = String(format: "%.3f", self.requestDuration) + let serializationDuration = String(format: "%.3f", self.serializationDuration) + let totalDuration = String(format: "%.3f", self.totalDuration) + + // NOTE: Had to move to string concatenation due to memory leak filed as rdar://26761490. Once memory leak is + // fixed, we should move back to string interpolation by reverting commit 7d4a43b1. + let timings = [ + "\"Request Start Time\": " + requestStartTime, + "\"Initial Response Time\": " + initialResponseTime, + "\"Request Completed Time\": " + requestCompletedTime, + "\"Serialization Completed Time\": " + serializationCompletedTime, + "\"Latency\": " + latency + " secs", + "\"Request Duration\": " + requestDuration + " secs", + "\"Serialization Duration\": " + serializationDuration + " secs", + "\"Total Duration\": " + totalDuration + " secs" + ] + + return "Timeline: { " + timings.joined(separator: ", ") + " }" + } +} diff --git a/Santander-Test/Pods/Alamofire/Source/Validation.swift b/Santander-Test/Pods/Alamofire/Source/Validation.swift new file mode 100644 index 00000000..5640789d --- /dev/null +++ b/Santander-Test/Pods/Alamofire/Source/Validation.swift @@ -0,0 +1,315 @@ +// +// Validation.swift +// +// Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) +// +// 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 Foundation + +extension Request { + + // MARK: Helper Types + + fileprivate typealias ErrorReason = AFError.ResponseValidationFailureReason + + /// Used to represent whether validation was successful or encountered an error resulting in a failure. + /// + /// - success: The validation was successful. + /// - failure: The validation failed encountering the provided error. + public enum ValidationResult { + case success + case failure(Error) + } + + fileprivate struct MIMEType { + let type: String + let subtype: String + + var isWildcard: Bool { return type == "*" && subtype == "*" } + + init?(_ string: String) { + let components: [String] = { + let stripped = string.trimmingCharacters(in: .whitespacesAndNewlines) + + #if swift(>=3.2) + let split = stripped[..<(stripped.range(of: ";")?.lowerBound ?? stripped.endIndex)] + #else + let split = stripped.substring(to: stripped.range(of: ";")?.lowerBound ?? stripped.endIndex) + #endif + + return split.components(separatedBy: "/") + }() + + if let type = components.first, let subtype = components.last { + self.type = type + self.subtype = subtype + } else { + return nil + } + } + + func matches(_ mime: MIMEType) -> Bool { + switch (type, subtype) { + case (mime.type, mime.subtype), (mime.type, "*"), ("*", mime.subtype), ("*", "*"): + return true + default: + return false + } + } + } + + // MARK: Properties + + fileprivate var acceptableStatusCodes: [Int] { return Array(200..<300) } + + fileprivate var acceptableContentTypes: [String] { + if let accept = request?.value(forHTTPHeaderField: "Accept") { + return accept.components(separatedBy: ",") + } + + return ["*/*"] + } + + // MARK: Status Code + + fileprivate func validate( + statusCode acceptableStatusCodes: S, + response: HTTPURLResponse) + -> ValidationResult + where S.Iterator.Element == Int + { + if acceptableStatusCodes.contains(response.statusCode) { + return .success + } else { + let reason: ErrorReason = .unacceptableStatusCode(code: response.statusCode) + return .failure(AFError.responseValidationFailed(reason: reason)) + } + } + + // MARK: Content Type + + fileprivate func validate( + contentType acceptableContentTypes: S, + response: HTTPURLResponse, + data: Data?) + -> ValidationResult + where S.Iterator.Element == String + { + guard let data = data, data.count > 0 else { return .success } + + guard + let responseContentType = response.mimeType, + let responseMIMEType = MIMEType(responseContentType) + else { + for contentType in acceptableContentTypes { + if let mimeType = MIMEType(contentType), mimeType.isWildcard { + return .success + } + } + + let error: AFError = { + let reason: ErrorReason = .missingContentType(acceptableContentTypes: Array(acceptableContentTypes)) + return AFError.responseValidationFailed(reason: reason) + }() + + return .failure(error) + } + + for contentType in acceptableContentTypes { + if let acceptableMIMEType = MIMEType(contentType), acceptableMIMEType.matches(responseMIMEType) { + return .success + } + } + + let error: AFError = { + let reason: ErrorReason = .unacceptableContentType( + acceptableContentTypes: Array(acceptableContentTypes), + responseContentType: responseContentType + ) + + return AFError.responseValidationFailed(reason: reason) + }() + + return .failure(error) + } +} + +// MARK: - + +extension DataRequest { + /// A closure used to validate a request that takes a URL request, a URL response and data, and returns whether the + /// request was valid. + public typealias Validation = (URLRequest?, HTTPURLResponse, Data?) -> ValidationResult + + /// Validates the request, using the specified closure. + /// + /// If validation fails, subsequent calls to response handlers will have an associated error. + /// + /// - parameter validation: A closure to validate the request. + /// + /// - returns: The request. + @discardableResult + public func validate(_ validation: @escaping Validation) -> Self { + let validationExecution: () -> Void = { [unowned self] in + if + let response = self.response, + self.delegate.error == nil, + case let .failure(error) = validation(self.request, response, self.delegate.data) + { + self.delegate.error = error + } + } + + validations.append(validationExecution) + + return self + } + + /// Validates that the response has a status code in the specified sequence. + /// + /// If validation fails, subsequent calls to response handlers will have an associated error. + /// + /// - parameter range: The range of acceptable status codes. + /// + /// - returns: The request. + @discardableResult + public func validate(statusCode acceptableStatusCodes: S) -> Self where S.Iterator.Element == Int { + return validate { [unowned self] _, response, _ in + return self.validate(statusCode: acceptableStatusCodes, response: response) + } + } + + /// Validates that the response has a content type in the specified sequence. + /// + /// If validation fails, subsequent calls to response handlers will have an associated error. + /// + /// - parameter contentType: The acceptable content types, which may specify wildcard types and/or subtypes. + /// + /// - returns: The request. + @discardableResult + public func validate(contentType acceptableContentTypes: S) -> Self where S.Iterator.Element == String { + return validate { [unowned self] _, response, data in + return self.validate(contentType: acceptableContentTypes, response: response, data: data) + } + } + + /// Validates that the response has a status code in the default acceptable range of 200...299, and that the content + /// type matches any specified in the Accept HTTP header field. + /// + /// If validation fails, subsequent calls to response handlers will have an associated error. + /// + /// - returns: The request. + @discardableResult + public func validate() -> Self { + return validate(statusCode: self.acceptableStatusCodes).validate(contentType: self.acceptableContentTypes) + } +} + +// MARK: - + +extension DownloadRequest { + /// A closure used to validate a request that takes a URL request, a URL response, a temporary URL and a + /// destination URL, and returns whether the request was valid. + public typealias Validation = ( + _ request: URLRequest?, + _ response: HTTPURLResponse, + _ temporaryURL: URL?, + _ destinationURL: URL?) + -> ValidationResult + + /// Validates the request, using the specified closure. + /// + /// If validation fails, subsequent calls to response handlers will have an associated error. + /// + /// - parameter validation: A closure to validate the request. + /// + /// - returns: The request. + @discardableResult + public func validate(_ validation: @escaping Validation) -> Self { + let validationExecution: () -> Void = { [unowned self] in + let request = self.request + let temporaryURL = self.downloadDelegate.temporaryURL + let destinationURL = self.downloadDelegate.destinationURL + + if + let response = self.response, + self.delegate.error == nil, + case let .failure(error) = validation(request, response, temporaryURL, destinationURL) + { + self.delegate.error = error + } + } + + validations.append(validationExecution) + + return self + } + + /// Validates that the response has a status code in the specified sequence. + /// + /// If validation fails, subsequent calls to response handlers will have an associated error. + /// + /// - parameter range: The range of acceptable status codes. + /// + /// - returns: The request. + @discardableResult + public func validate(statusCode acceptableStatusCodes: S) -> Self where S.Iterator.Element == Int { + return validate { [unowned self] _, response, _, _ in + return self.validate(statusCode: acceptableStatusCodes, response: response) + } + } + + /// Validates that the response has a content type in the specified sequence. + /// + /// If validation fails, subsequent calls to response handlers will have an associated error. + /// + /// - parameter contentType: The acceptable content types, which may specify wildcard types and/or subtypes. + /// + /// - returns: The request. + @discardableResult + public func validate(contentType acceptableContentTypes: S) -> Self where S.Iterator.Element == String { + return validate { [unowned self] _, response, _, _ in + let fileURL = self.downloadDelegate.fileURL + + guard let validFileURL = fileURL else { + return .failure(AFError.responseValidationFailed(reason: .dataFileNil)) + } + + do { + let data = try Data(contentsOf: validFileURL) + return self.validate(contentType: acceptableContentTypes, response: response, data: data) + } catch { + return .failure(AFError.responseValidationFailed(reason: .dataFileReadFailed(at: validFileURL))) + } + } + } + + /// Validates that the response has a status code in the default acceptable range of 200...299, and that the content + /// type matches any specified in the Accept HTTP header field. + /// + /// If validation fails, subsequent calls to response handlers will have an associated error. + /// + /// - returns: The request. + @discardableResult + public func validate() -> Self { + return validate(statusCode: self.acceptableStatusCodes).validate(contentType: self.acceptableContentTypes) + } +} diff --git a/Santander-Test/Pods/Manifest.lock b/Santander-Test/Pods/Manifest.lock new file mode 100644 index 00000000..f4dcb540 --- /dev/null +++ b/Santander-Test/Pods/Manifest.lock @@ -0,0 +1,26 @@ +PODS: + - Alamofire (4.8.1) + - Moya (12.0.1): + - Moya/Core (= 12.0.1) + - Moya/Core (12.0.1): + - Alamofire (~> 4.1) + - Result (~> 4.0) + - Result (4.1.0) + +DEPENDENCIES: + - Moya + +SPEC REPOS: + https://github.com/cocoapods/specs.git: + - Alamofire + - Moya + - Result + +SPEC CHECKSUMS: + Alamofire: 16ce2c353fb72865124ddae8a57c5942388f4f11 + Moya: cf730b3cd9e005401ef37a85143aa141a12fd38f + Result: bd966fac789cc6c1563440b348ab2598cc24d5c7 + +PODFILE CHECKSUM: 5aa60ad57cd32255f2a920092a32388ee9261b99 + +COCOAPODS: 1.6.0 diff --git a/Santander-Test/Pods/Moya/License.md b/Santander-Test/Pods/Moya/License.md new file mode 100644 index 00000000..58ef14fc --- /dev/null +++ b/Santander-Test/Pods/Moya/License.md @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-present Artsy, Ash Furrow + +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. diff --git a/Santander-Test/Pods/Moya/Readme.md b/Santander-Test/Pods/Moya/Readme.md new file mode 100644 index 00000000..92a01824 --- /dev/null +++ b/Santander-Test/Pods/Moya/Readme.md @@ -0,0 +1,320 @@ +

+ +

+ +# Moya + +[![CircleCI](https://img.shields.io/circleci/project/github/Moya/Moya/master.svg)](https://circleci.com/gh/Moya/Moya/tree/master) +[![codecov.io](https://codecov.io/github/Moya/Moya/coverage.svg?branch=master)](https://codecov.io/github/Moya/Moya?branch=master) +[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) +[![CocoaPods compatible](https://img.shields.io/cocoapods/v/Moya.svg)](https://cocoapods.org/pods/Moya) +[![Swift Package Manager compatible](https://img.shields.io/badge/Swift%20Package%20Manager-compatible-brightgreen.svg)](https://github.com/apple/swift-package-manager) + +*A Chinese version of this document can be found [here](https://github.com/Moya/Moya/blob/master/Readme_CN.md).* + +You're a smart developer. You probably use [Alamofire](https://github.com/Alamofire/Alamofire) to abstract away access to +`URLSession` and all those nasty details you don't really care about. But then, +like lots of smart developers, you write ad hoc network abstraction layers. They +are probably called "APIManager" or "NetworkModel", and they always end in tears. + +![Moya Overview](web/diagram.png) + +Ad hoc network layers are common in iOS apps. They're bad for a few reasons: + +- Makes it hard to write new apps ("where do I begin?") +- Makes it hard to maintain existing apps ("oh my god, this mess...") +- Makes it hard to write unit tests ("how do I do this again?") + +So the basic idea of Moya is that we want some network abstraction layer that +sufficiently encapsulates actually calling Alamofire directly. It should be simple +enough that common things are easy, but comprehensive enough that complicated things +are also easy. + +> If you use Alamofire to abstract away `URLSession`, why not use something +to abstract away the nitty gritty of URLs, parameters, etc? + +Some awesome features of Moya: + +- Compile-time checking for correct API endpoint accesses. +- Lets you define a clear usage of different endpoints with associated enum values. +- Treats test stubs as first-class citizens so unit testing is super-easy. + +You can check out more about the project direction in the [vision document](https://github.com/Moya/Moya/blob/master/Vision.md). + +## Sample Projects + +We have provided two sample projects in the repository. To use it download the repo, run `carthage update` to download the required libraries and open [Moya.xcodeproj](https://github.com/Moya/Moya/tree/master/Moya.xcodeproj). You'll see two schemes: `Basic` and `Multi-Target` - select one and then build & run! Source files for these are in the `Examples` directory in project navigator. Have fun! + +## Project Status + +This project is actively under development, and is being used in [Artsy's +new auction app](https://github.com/Artsy/eidolon). We consider it +ready for production use. + +## Installation + +### Moya version vs Swift version. + +Below is a table that shows which version of Moya you should use for +your Swift version. + +| Swift | Moya | RxMoya | ReactiveMoya | +| ----- | ------------- |---------------|---------------| +| 4.X | >= 9.0 | >= 10.0 | >= 9.0 | +| 3.X | 8.0.0 - 8.0.5 | 8.0.0 - 8.0.5 | 8.0.0 - 8.0.5 | +| 2.3 | 7.0.2 - 7.0.4 | 7.0.2 - 7.0.4 | 7.0.2 - 7.0.4 | +| 2.2 | <= 7.0.1 | <= 7.0.1 | <= 7.0.1 | + +**Upgrading to a new major version of Moya? Check out our [migration guides](https://github.com/Moya/Moya/blob/master/docs/MigrationGuides).** + +### Swift Package Manager + +To integrate using Apple's Swift package manager, add the following as a dependency to your `Package.swift`: + +```swift +.package(url: "https://github.com/Moya/Moya.git", .upToNextMajor(from: "11.0.0")) +``` + +and then specify `"Moya"` as a dependency of the Target in which you wish to use Moya. +If you want to use reactive extensions, add also `"ReactiveMoya"` or `"RxMoya"` as your Target dependency respectively. +Here's an example `PackageDescription`: + +```swift +// swift-tools-version:4.0 +import PackageDescription + +let package = Package( + name: "MyPackage", + products: [ + .library( + name: "MyPackage", + targets: ["MyPackage"]), + ], + dependencies: [ + .package(url: "https://github.com/Moya/Moya.git", .upToNextMajor(from: "12.0.0")) + ], + targets: [ + .target( + name: "MyPackage", + dependencies: ["ReactiveMoya"]) + ] +) +``` + +Note that as of Moya 10, SPM only works with Swift 4 toolchain and greater. + +### CocoaPods + +For Moya, use the following entry in your Podfile: + +```rb +pod 'Moya', '~> 12.0' + +# or + +pod 'Moya/RxSwift', '~> 12.0' + +# or + +pod 'Moya/ReactiveSwift', '~> 12.0' +``` + +Then run `pod install`. + +In any file you'd like to use Moya in, don't forget to +import the framework with `import Moya`. + +### Carthage + +Carthage users can point to this repository and use whichever +generated framework they'd like, `Moya`, `RxMoya`, or `ReactiveMoya`. + +Make the following entry in your Cartfile: + +``` +github "Moya/Moya" +``` + +Then run `carthage update`. + +If this is your first time using Carthage in the project, you'll need to go through some additional steps as explained [over at Carthage](https://github.com/Carthage/Carthage#adding-frameworks-to-an-application). + +> NOTE: At this time, Carthage does not provide a way to build only specific repository submodules. All submodules and their dependencies will be built with the above command. However, you don't need to copy frameworks you aren't using into your project. For instance, if you aren't using `ReactiveSwift`, feel free to delete that framework along with `ReactiveMoya` from the Carthage Build directory after `carthage update` completes. Or if you are using `ReactiveSwift` but not `RxSwift`, then `RxMoya`, `RxTest`, `RxCocoa`, etc. can safely be deleted. + +### Manually + +- Open up Terminal, `cd` into your top-level project directory, and run the following command *if* your project is not initialized as a git repository: + +```bash +$ git init +``` + +- Add Alamofire, Result & Moya as a git [submodule](http://git-scm.com/docs/git-submodule) by running the following commands: + +```bash +$ git submodule add https://github.com/Alamofire/Alamofire.git +$ git submodule add https://github.com/antitypical/Result.git +$ git submodule add https://github.com/Moya/Moya.git +``` + +- Open the new `Alamofire` folder, and drag the `Alamofire.xcodeproj` into the Project Navigator of your application's Xcode project. Do the same with the `Result.xcodeproj` in the `Result` folder and `Moya.xcodeproj` in the `Moya` folder. + +> They should appear nested underneath your application's blue project icon. Whether it is above or below all the other Xcode groups does not matter. + +- Verify that the deployment targets of the `xcodeproj`s match that of your application target in the Project Navigator. +- Next, select your application project in the Project Navigator (blue project icon) to navigate to the target configuration window and select the application target under the "Targets" heading in the sidebar. +- In the tab bar at the top of that window, open the "General" panel. +- Click on the `+` button under the "Embedded Binaries" section. +- You will see two different `Alamofire.xcodeproj` folders each with two different versions of the `Alamofire.framework` nested inside a `Products` folder. + +> It does not matter which `Products` folder you choose from, but it does matter whether you choose the top or bottom `Alamofire.framework`. + +- Select the top `Alamofire.framework` for iOS and the bottom one for macOS. + +> You can verify which one you selected by inspecting the build log for your project. The build target for `Alamofire` will be listed as either `Alamofire iOS`, `Alamofire macOS`, `Alamofire tvOS` or `Alamofire watchOS`. + +- Click on the `+` button under "Embedded Binaries" again and add the build target you need for `Result`. +- Click on the `+` button again and add the correct build target for `Moya`. + +- And that's it! + +> The three frameworks are automagically added as a target dependency, linked framework and embedded framework in a copy files build phase which is all you need to build on the simulator and a device. + +## Usage + +After [some setup](https://github.com/Moya/Moya/blob/master/docs/Examples/Basic.md), using Moya is really simple. You can access an API like this: + +```swift +provider = MoyaProvider() +provider.request(.zen) { result in + switch result { + case let .success(moyaResponse): + let data = moyaResponse.data + let statusCode = moyaResponse.statusCode + // do something with the response data or statusCode + case let .failure(error): + // this means there was a network failure - either the request + // wasn't sent (connectivity), or no response was received (server + // timed out). If the server responds with a 4xx or 5xx error, that + // will be sent as a ".success"-ful response. + } +} +``` + +That's a basic example. Many API requests need parameters. Moya encodes these +into the enum you use to access the endpoint, like this: + +```swift +provider = MoyaProvider() +provider.request(.userProfile("ashfurrow")) { result in + // do something with the result +} +``` + +No more typos in URLs. No more missing parameter values. No more messing with +parameter encoding. + +For more examples, see the [documentation](https://github.com/Moya/Moya/blob/master/docs/Examples). + +## Reactive Extensions + +Even cooler are the reactive extensions. Moya provides reactive extensions for +[ReactiveSwift](https://github.com/ReactiveCocoa/ReactiveSwift) and +[RxSwift](https://github.com/ReactiveX/RxSwift). + +### ReactiveSwift + +[`ReactiveSwift` extension](https://github.com/Moya/Moya/blob/master/docs/ReactiveSwift.md) provides both `reactive.request(:callbackQueue:)` and +`reactive.requestWithProgress(:callbackQueue:)` methods that immediately return +`SignalProducer`s that you can start, bind, map, or whatever you want to do. +To handle errors, for instance, we could do the following: + +```swift +provider = MoyaProvider() +provider.reactive.request(.userProfile("ashfurrow")).start { event in + switch event { + case let .value(response): + image = UIImage(data: response.data) + case let .failed(error): + print(error) + default: + break + } +} +``` + +### RxSwift + +[`RxSwift` extension](https://github.com/Moya/Moya/blob/master/docs/RxSwift.md) also provide both `rx.request(:callbackQueue:)` and +`rx.requestWithProgress(:callbackQueue:)` methods, but return type is +different for both. In case of a normal `rx.request(:callbackQueue)`, the +return type is `Single` which emits either single element or an +error. In case of a `rx.requestWithProgress(:callbackQueue:)`, the return +type is `Observable`, since we may get multiple events +from progress and one last event which is a response. + +To handle errors, for instance, we could do the following: + +```swift +provider = MoyaProvider() +provider.rx.request(.userProfile("ashfurrow")).subscribe { event in + switch event { + case let .success(response): + image = UIImage(data: response.data) + case let .error(error): + print(error) + } +} +``` + +In addition to the option of using signals instead of callback blocks, there are +also a series of signal operators for RxSwift and ReactiveSwift that will attempt +to map the data received from the network response into either an image, some JSON, +or a string, with `mapImage()`, `mapJSON()`, and `mapString()`, respectively. If the mapping is unsuccessful, you'll get an error on the signal. You also get handy methods +for filtering out certain status codes. This means that you can place your code for +handling API errors like 400's in the same places as code for handling invalid +responses. + +## Community Projects + +[Moya has a great community around it and some people have created some very helpful extensions](https://github.com/Moya/Moya/blob/master/docs/CommunityProjects.md). + +## Contributing + +Hey! Do you like Moya? Awesome! We could actually really use your help! + +Open source isn't just writing code. Moya could use your help with any of the +following: + +- Finding (and reporting!) bugs. +- New feature suggestions. +- Answering questions on issues. +- Documentation improvements. +- Reviewing pull requests. +- Helping to manage issue priorities. +- Fixing bugs/new features. + +If any of that sounds cool to you, send a pull request! After your first +contribution, we will add you as a member to the repo so you can merge pull +requests and help steer the ship :ship: You can read more details about that [in our contributor guidelines](https://github.com/Moya/Moya/blob/master/Contributing.md). + +Moya's community has a tremendous positive energy, and the maintainers are committed to keeping things awesome. Like [in the CocoaPods community](https://github.com/CocoaPods/CocoaPods/wiki/Communication-&-Design-Rules), always assume positive intent; even if a comment sounds mean-spirited, give the person the benefit of the doubt. + +Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by [its terms](https://github.com/Moya/Moya/blob/master/Code%20of%20Conduct.md). + +### Adding new source files + +If you add or remove a source file from Moya, a corresponding change needs to be made to the `Moya.xcodeproj` project at the root of this repository. This project is used for Carthage. Don't worry, you'll get an automated warning when submitting a pull request if you forget. + +### Help us improve Moya documentation +Whether you’re a core member or a user trying it out for the first time, you can make a valuable contribution to Moya by improving the documentation. Help us by: + +- sending us feedback about something you thought was confusing or simply missing +- suggesting better wording or ways of explaining certain topics +- sending us a pull request via GitHub +- improving the [Chinese documentation](https://github.com/Moya/Moya/blob/master/Readme_CN.md) + + +## License + +Moya is released under an MIT license. See [License.md](https://github.com/Moya/Moya/blob/master/License.md) for more information. diff --git a/Santander-Test/Pods/Moya/Sources/Moya/AnyEncodable.swift b/Santander-Test/Pods/Moya/Sources/Moya/AnyEncodable.swift new file mode 100644 index 00000000..15c7128e --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/AnyEncodable.swift @@ -0,0 +1,14 @@ +import Foundation + +struct AnyEncodable: Encodable { + + private let encodable: Encodable + + public init(_ encodable: Encodable) { + self.encodable = encodable + } + + func encode(to encoder: Encoder) throws { + try encodable.encode(to: encoder) + } +} diff --git a/Santander-Test/Pods/Moya/Sources/Moya/Cancellable.swift b/Santander-Test/Pods/Moya/Sources/Moya/Cancellable.swift new file mode 100644 index 00000000..9a9c783f --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/Cancellable.swift @@ -0,0 +1,26 @@ +/// Protocol to define the opaque type returned from a request. +public protocol Cancellable { + + /// A Boolean value stating whether a request is cancelled. + var isCancelled: Bool { get } + + /// Cancels the represented request. + func cancel() +} + +internal class CancellableWrapper: Cancellable { + internal var innerCancellable: Cancellable = SimpleCancellable() + + var isCancelled: Bool { return innerCancellable.isCancelled } + + internal func cancel() { + innerCancellable.cancel() + } +} + +internal class SimpleCancellable: Cancellable { + var isCancelled = false + func cancel() { + isCancelled = true + } +} diff --git a/Santander-Test/Pods/Moya/Sources/Moya/Endpoint.swift b/Santander-Test/Pods/Moya/Sources/Moya/Endpoint.swift new file mode 100755 index 00000000..37f79283 --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/Endpoint.swift @@ -0,0 +1,137 @@ +import Foundation + +/// Used for stubbing responses. +public enum EndpointSampleResponse { + + /// The network returned a response, including status code and data. + case networkResponse(Int, Data) + + /// The network returned response which can be fully customized. + case response(HTTPURLResponse, Data) + + /// The network failed to send the request, or failed to retrieve a response (eg a timeout). + case networkError(NSError) +} + +/// Class for reifying a target of the `Target` enum unto a concrete `Endpoint`. +/// - Note: As of Moya 11.0.0 Endpoint is no longer generic. +/// Existing code should work as is after removing the generic. +/// See #1529 and #1524 for the discussion. +open class Endpoint { + public typealias SampleResponseClosure = () -> EndpointSampleResponse + + /// A string representation of the URL for the request. + public let url: String + + /// A closure responsible for returning an `EndpointSampleResponse`. + public let sampleResponseClosure: SampleResponseClosure + + /// The HTTP method for the request. + public let method: Moya.Method + + /// The `Task` for the request. + public let task: Task + + /// The HTTP header fields for the request. + public let httpHeaderFields: [String: String]? + + public init(url: String, + sampleResponseClosure: @escaping SampleResponseClosure, + method: Moya.Method, + task: Task, + httpHeaderFields: [String: String]?) { + + self.url = url + self.sampleResponseClosure = sampleResponseClosure + self.method = method + self.task = task + self.httpHeaderFields = httpHeaderFields + } + + /// Convenience method for creating a new `Endpoint` with the same properties as the receiver, but with added HTTP header fields. + open func adding(newHTTPHeaderFields: [String: String]) -> Endpoint { + return Endpoint(url: url, sampleResponseClosure: sampleResponseClosure, method: method, task: task, httpHeaderFields: add(httpHeaderFields: newHTTPHeaderFields)) + } + + /// Convenience method for creating a new `Endpoint` with the same properties as the receiver, but with replaced `task` parameter. + open func replacing(task: Task) -> Endpoint { + return Endpoint(url: url, sampleResponseClosure: sampleResponseClosure, method: method, task: task, httpHeaderFields: httpHeaderFields) + } + + fileprivate func add(httpHeaderFields headers: [String: String]?) -> [String: String]? { + guard let unwrappedHeaders = headers, unwrappedHeaders.isEmpty == false else { + return self.httpHeaderFields + } + + var newHTTPHeaderFields = self.httpHeaderFields ?? [:] + unwrappedHeaders.forEach { key, value in + newHTTPHeaderFields[key] = value + } + return newHTTPHeaderFields + } +} + +/// Extension for converting an `Endpoint` into a `URLRequest`. +extension Endpoint { + // swiftlint:disable cyclomatic_complexity + /// Returns the `Endpoint` converted to a `URLRequest` if valid. Throws an error otherwise. + public func urlRequest() throws -> URLRequest { + guard let requestURL = Foundation.URL(string: url) else { + throw MoyaError.requestMapping(url) + } + + var request = URLRequest(url: requestURL) + request.httpMethod = method.rawValue + request.allHTTPHeaderFields = httpHeaderFields + + switch task { + case .requestPlain, .uploadFile, .uploadMultipart, .downloadDestination: + return request + case .requestData(let data): + request.httpBody = data + return request + case let .requestJSONEncodable(encodable): + return try request.encoded(encodable: encodable) + case let .requestCustomJSONEncodable(encodable, encoder: encoder): + return try request.encoded(encodable: encodable, encoder: encoder) + case let .requestParameters(parameters, parameterEncoding): + return try request.encoded(parameters: parameters, parameterEncoding: parameterEncoding) + case let .uploadCompositeMultipart(_, urlParameters): + let parameterEncoding = URLEncoding(destination: .queryString) + return try request.encoded(parameters: urlParameters, parameterEncoding: parameterEncoding) + case let .downloadParameters(parameters, parameterEncoding, _): + return try request.encoded(parameters: parameters, parameterEncoding: parameterEncoding) + case let .requestCompositeData(bodyData: bodyData, urlParameters: urlParameters): + request.httpBody = bodyData + let parameterEncoding = URLEncoding(destination: .queryString) + return try request.encoded(parameters: urlParameters, parameterEncoding: parameterEncoding) + case let .requestCompositeParameters(bodyParameters: bodyParameters, bodyEncoding: bodyParameterEncoding, urlParameters: urlParameters): + if let bodyParameterEncoding = bodyParameterEncoding as? URLEncoding, bodyParameterEncoding.destination != .httpBody { + fatalError("Only URLEncoding that `bodyEncoding` accepts is URLEncoding.httpBody. Others like `default`, `queryString` or `methodDependent` are prohibited - if you want to use them, add your parameters to `urlParameters` instead.") + } + let bodyfulRequest = try request.encoded(parameters: bodyParameters, parameterEncoding: bodyParameterEncoding) + let urlEncoding = URLEncoding(destination: .queryString) + return try bodyfulRequest.encoded(parameters: urlParameters, parameterEncoding: urlEncoding) + } + } + // swiftlint:enable cyclomatic_complexity +} + +/// Required for using `Endpoint` as a key type in a `Dictionary`. +extension Endpoint: Equatable, Hashable { + public var hashValue: Int { + let request = try? urlRequest() + return request?.hashValue ?? url.hashValue + } + + /// Note: If both Endpoints fail to produce a URLRequest the comparison will + /// fall back to comparing each Endpoint's hashValue. + public static func == (lhs: Endpoint, rhs: Endpoint) -> Bool { + let lhsRequest = try? lhs.urlRequest() + let rhsRequest = try? rhs.urlRequest() + if lhsRequest != nil, rhsRequest == nil { return false } + if lhsRequest == nil, rhsRequest != nil { return false } + if lhsRequest == nil, rhsRequest == nil { return lhs.hashValue == rhs.hashValue } + return (lhsRequest == rhsRequest) + } +} diff --git a/Santander-Test/Pods/Moya/Sources/Moya/Image.swift b/Santander-Test/Pods/Moya/Sources/Moya/Image.swift new file mode 100644 index 00000000..233be5f2 --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/Image.swift @@ -0,0 +1,10 @@ +#if os(iOS) || os(watchOS) || os(tvOS) + import UIKit.UIImage + public typealias ImageType = UIImage +#elseif os(macOS) + import AppKit.NSImage + public typealias ImageType = NSImage +#endif + +/// An alias for the SDK's image type. +public typealias Image = ImageType diff --git a/Santander-Test/Pods/Moya/Sources/Moya/Moya+Alamofire.swift b/Santander-Test/Pods/Moya/Sources/Moya/Moya+Alamofire.swift new file mode 100644 index 00000000..8d4cd4a7 --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/Moya+Alamofire.swift @@ -0,0 +1,90 @@ +import Foundation +import Alamofire + +public typealias Manager = Alamofire.SessionManager +internal typealias Request = Alamofire.Request +internal typealias DownloadRequest = Alamofire.DownloadRequest +internal typealias UploadRequest = Alamofire.UploadRequest +internal typealias DataRequest = Alamofire.DataRequest + +internal typealias URLRequestConvertible = Alamofire.URLRequestConvertible + +/// Represents an HTTP method. +public typealias Method = Alamofire.HTTPMethod + +/// Choice of parameter encoding. +public typealias ParameterEncoding = Alamofire.ParameterEncoding +public typealias JSONEncoding = Alamofire.JSONEncoding +public typealias URLEncoding = Alamofire.URLEncoding +public typealias PropertyListEncoding = Alamofire.PropertyListEncoding + +/// Multipart form. +public typealias RequestMultipartFormData = Alamofire.MultipartFormData + +/// Multipart form data encoding result. +public typealias MultipartFormDataEncodingResult = Manager.MultipartFormDataEncodingResult +public typealias DownloadDestination = Alamofire.DownloadRequest.DownloadFileDestination + +/// Make the Alamofire Request type conform to our type, to prevent leaking Alamofire to plugins. +extension Request: RequestType { } + +/// Internal token that can be used to cancel requests +public final class CancellableToken: Cancellable, CustomDebugStringConvertible { + let cancelAction: () -> Void + let request: Request? + + public fileprivate(set) var isCancelled = false + + fileprivate var lock: DispatchSemaphore = DispatchSemaphore(value: 1) + + public func cancel() { + _ = lock.wait(timeout: DispatchTime.distantFuture) + defer { lock.signal() } + guard !isCancelled else { return } + isCancelled = true + cancelAction() + } + + public init(action: @escaping () -> Void) { + self.cancelAction = action + self.request = nil + } + + init(request: Request) { + self.request = request + self.cancelAction = { + request.cancel() + } + } + + /// A textual representation of this instance, suitable for debugging. + public var debugDescription: String { + guard let request = self.request else { + return "Empty Request" + } + return request.debugDescription + } + +} + +internal typealias RequestableCompletion = (HTTPURLResponse?, URLRequest?, Data?, Swift.Error?) -> Void + +internal protocol Requestable { + func response(callbackQueue: DispatchQueue?, completionHandler: @escaping RequestableCompletion) -> Self +} + +extension DataRequest: Requestable { + internal func response(callbackQueue: DispatchQueue?, completionHandler: @escaping RequestableCompletion) -> Self { + return response(queue: callbackQueue) { handler in + completionHandler(handler.response, handler.request, handler.data, handler.error) + } + } +} + +extension DownloadRequest: Requestable { + internal func response(callbackQueue: DispatchQueue?, completionHandler: @escaping RequestableCompletion) -> Self { + return response(queue: callbackQueue) { handler in + completionHandler(handler.response, handler.request, nil, handler.error) + } + } +} diff --git a/Santander-Test/Pods/Moya/Sources/Moya/MoyaError.swift b/Santander-Test/Pods/Moya/Sources/Moya/MoyaError.swift new file mode 100644 index 00000000..472026cd --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/MoyaError.swift @@ -0,0 +1,76 @@ +import Foundation + +/// A type representing possible errors Moya can throw. +public enum MoyaError: Swift.Error { + + /// Indicates a response failed to map to an image. + case imageMapping(Response) + + /// Indicates a response failed to map to a JSON structure. + case jsonMapping(Response) + + /// Indicates a response failed to map to a String. + case stringMapping(Response) + + /// Indicates a response failed to map to a Decodable object. + case objectMapping(Swift.Error, Response) + + /// Indicates that Encodable couldn't be encoded into Data + case encodableMapping(Swift.Error) + + /// Indicates a response failed with an invalid HTTP status code. + case statusCode(Response) + + /// Indicates a response failed due to an underlying `Error`. + case underlying(Swift.Error, Response?) + + /// Indicates that an `Endpoint` failed to map to a `URLRequest`. + case requestMapping(String) + + /// Indicates that an `Endpoint` failed to encode the parameters for the `URLRequest`. + case parameterEncoding(Swift.Error) +} + +public extension MoyaError { + /// Depending on error type, returns a `Response` object. + var response: Moya.Response? { + switch self { + case .imageMapping(let response): return response + case .jsonMapping(let response): return response + case .stringMapping(let response): return response + case .objectMapping(_, let response): return response + case .statusCode(let response): return response + case .underlying(_, let response): return response + case .encodableMapping: return nil + case .requestMapping: return nil + case .parameterEncoding: return nil + } + } +} + +// MARK: - Error Descriptions + +extension MoyaError: LocalizedError { + public var errorDescription: String? { + switch self { + case .imageMapping: + return "Failed to map data to an Image." + case .jsonMapping: + return "Failed to map data to JSON." + case .stringMapping: + return "Failed to map data to a String." + case .objectMapping: + return "Failed to map data to a Decodable object." + case .encodableMapping: + return "Failed to encode Encodable object into data." + case .statusCode: + return "Status code didn't fall within the given range." + case .requestMapping: + return "Failed to map Endpoint to a URLRequest." + case .parameterEncoding(let error): + return "Failed to encode parameters for URLRequest. \(error.localizedDescription)" + case .underlying(let error, _): + return error.localizedDescription + } + } +} diff --git a/Santander-Test/Pods/Moya/Sources/Moya/MoyaProvider+Defaults.swift b/Santander-Test/Pods/Moya/Sources/Moya/MoyaProvider+Defaults.swift new file mode 100644 index 00000000..7f39824c --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/MoyaProvider+Defaults.swift @@ -0,0 +1,36 @@ +import Foundation + +/// These functions are default mappings to `MoyaProvider`'s properties: endpoints, requests, manager, etc. +public extension MoyaProvider { + public final class func defaultEndpointMapping(for target: Target) -> Endpoint { + return Endpoint( + url: URL(target: target).absoluteString, + sampleResponseClosure: { .networkResponse(200, target.sampleData) }, + method: target.method, + task: target.task, + httpHeaderFields: target.headers + ) + } + + public final class func defaultRequestMapping(for endpoint: Endpoint, closure: RequestResultClosure) { + do { + let urlRequest = try endpoint.urlRequest() + closure(.success(urlRequest)) + } catch MoyaError.requestMapping(let url) { + closure(.failure(MoyaError.requestMapping(url))) + } catch MoyaError.parameterEncoding(let error) { + closure(.failure(MoyaError.parameterEncoding(error))) + } catch { + closure(.failure(MoyaError.underlying(error, nil))) + } + } + + public final class func defaultAlamofireManager() -> Manager { + let configuration = URLSessionConfiguration.default + configuration.httpAdditionalHeaders = Manager.defaultHTTPHeaders + + let manager = Manager(configuration: configuration) + manager.startRequestsImmediately = false + return manager + } +} diff --git a/Santander-Test/Pods/Moya/Sources/Moya/MoyaProvider+Internal.swift b/Santander-Test/Pods/Moya/Sources/Moya/MoyaProvider+Internal.swift new file mode 100644 index 00000000..e8bb4d21 --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/MoyaProvider+Internal.swift @@ -0,0 +1,274 @@ +import Foundation +import Result + +// MARK: - Method + +extension Method { + /// A Boolean value determining whether the request supports multipart. + public var supportsMultipart: Bool { + switch self { + case .post, .put, .patch, .connect: + return true + case .get, .delete, .head, .options, .trace: + return false + } + } +} + +// MARK: - MoyaProvider + +/// Internal extension to keep the inner-workings outside the main Moya.swift file. +public extension MoyaProvider { + /// Performs normal requests. + func requestNormal(_ target: Target, callbackQueue: DispatchQueue?, progress: Moya.ProgressBlock?, completion: @escaping Moya.Completion) -> Cancellable { + let endpoint = self.endpoint(target) + let stubBehavior = self.stubClosure(target) + let cancellableToken = CancellableWrapper() + + // Allow plugins to modify response + let pluginsWithCompletion: Moya.Completion = { result in + let processedResult = self.plugins.reduce(result) { $1.process($0, target: target) } + completion(processedResult) + } + + if trackInflights { + objc_sync_enter(self) + var inflightCompletionBlocks = self.inflightRequests[endpoint] + inflightCompletionBlocks?.append(pluginsWithCompletion) + self.inflightRequests[endpoint] = inflightCompletionBlocks + objc_sync_exit(self) + + if inflightCompletionBlocks != nil { + return cancellableToken + } else { + objc_sync_enter(self) + self.inflightRequests[endpoint] = [pluginsWithCompletion] + objc_sync_exit(self) + } + } + + let performNetworking = { (requestResult: Result) in + if cancellableToken.isCancelled { + self.cancelCompletion(pluginsWithCompletion, target: target) + return + } + + var request: URLRequest! + + switch requestResult { + case .success(let urlRequest): + request = urlRequest + case .failure(let error): + pluginsWithCompletion(.failure(error)) + return + } + + // Allow plugins to modify request + let preparedRequest = self.plugins.reduce(request) { $1.prepare($0, target: target) } + + let networkCompletion: Moya.Completion = { result in + if self.trackInflights { + self.inflightRequests[endpoint]?.forEach { $0(result) } + + objc_sync_enter(self) + self.inflightRequests.removeValue(forKey: endpoint) + objc_sync_exit(self) + } else { + pluginsWithCompletion(result) + } + } + + cancellableToken.innerCancellable = self.performRequest(target, request: preparedRequest, callbackQueue: callbackQueue, progress: progress, completion: networkCompletion, endpoint: endpoint, stubBehavior: stubBehavior) + } + + requestClosure(endpoint, performNetworking) + + return cancellableToken + } + + // swiftlint:disable:next function_parameter_count + private func performRequest(_ target: Target, request: URLRequest, callbackQueue: DispatchQueue?, progress: Moya.ProgressBlock?, completion: @escaping Moya.Completion, endpoint: Endpoint, stubBehavior: Moya.StubBehavior) -> Cancellable { + switch stubBehavior { + case .never: + switch endpoint.task { + case .requestPlain, .requestData, .requestJSONEncodable, .requestCustomJSONEncodable, .requestParameters, .requestCompositeData, .requestCompositeParameters: + return self.sendRequest(target, request: request, callbackQueue: callbackQueue, progress: progress, completion: completion) + case .uploadFile(let file): + return self.sendUploadFile(target, request: request, callbackQueue: callbackQueue, file: file, progress: progress, completion: completion) + case .uploadMultipart(let multipartBody), .uploadCompositeMultipart(let multipartBody, _): + guard !multipartBody.isEmpty && endpoint.method.supportsMultipart else { + fatalError("\(target) is not a multipart upload target.") + } + return self.sendUploadMultipart(target, request: request, callbackQueue: callbackQueue, multipartBody: multipartBody, progress: progress, completion: completion) + case .downloadDestination(let destination), .downloadParameters(_, _, let destination): + return self.sendDownloadRequest(target, request: request, callbackQueue: callbackQueue, destination: destination, progress: progress, completion: completion) + } + default: + return self.stubRequest(target, request: request, callbackQueue: callbackQueue, completion: completion, endpoint: endpoint, stubBehavior: stubBehavior) + } + } + + func cancelCompletion(_ completion: Moya.Completion, target: Target) { + let error = MoyaError.underlying(NSError(domain: NSURLErrorDomain, code: NSURLErrorCancelled, userInfo: nil), nil) + plugins.forEach { $0.didReceive(.failure(error), target: target) } + completion(.failure(error)) + } + + /// Creates a function which, when called, executes the appropriate stubbing behavior for the given parameters. + public final func createStubFunction(_ token: CancellableToken, forTarget target: Target, withCompletion completion: @escaping Moya.Completion, endpoint: Endpoint, plugins: [PluginType], request: URLRequest) -> (() -> Void) { // swiftlint:disable:this function_parameter_count + return { + if token.isCancelled { + self.cancelCompletion(completion, target: target) + return + } + + let validate = { (response: Moya.Response) -> Result in + let validCodes = target.validationType.statusCodes + guard !validCodes.isEmpty else { return .success(response) } + if validCodes.contains(response.statusCode) { + return .success(response) + } else { + let statusError = MoyaError.statusCode(response) + let error = MoyaError.underlying(statusError, response) + return .failure(error) + } + } + + switch endpoint.sampleResponseClosure() { + case .networkResponse(let statusCode, let data): + let response = Moya.Response(statusCode: statusCode, data: data, request: request, response: nil) + let result = validate(response) + plugins.forEach { $0.didReceive(result, target: target) } + completion(result) + case .response(let customResponse, let data): + let response = Moya.Response(statusCode: customResponse.statusCode, data: data, request: request, response: customResponse) + let result = validate(response) + plugins.forEach { $0.didReceive(result, target: target) } + completion(result) + case .networkError(let error): + let error = MoyaError.underlying(error, nil) + plugins.forEach { $0.didReceive(.failure(error), target: target) } + completion(.failure(error)) + } + } + } + + /// Notify all plugins that a stub is about to be performed. You must call this if overriding `stubRequest`. + final func notifyPluginsOfImpendingStub(for request: URLRequest, target: Target) { + let alamoRequest = manager.request(request as URLRequestConvertible) + plugins.forEach { $0.willSend(alamoRequest, target: target) } + alamoRequest.cancel() + } +} + +private extension MoyaProvider { + func sendUploadMultipart(_ target: Target, request: URLRequest, callbackQueue: DispatchQueue?, multipartBody: [MultipartFormData], progress: Moya.ProgressBlock? = nil, completion: @escaping Moya.Completion) -> CancellableWrapper { + let cancellable = CancellableWrapper() + + let multipartFormData: (RequestMultipartFormData) -> Void = { form in + form.applyMoyaMultipartFormData(multipartBody) + } + + manager.upload(multipartFormData: multipartFormData, with: request) { result in + switch result { + case .success(let alamoRequest, _, _): + if cancellable.isCancelled { + self.cancelCompletion(completion, target: target) + return + } + let validationCodes = target.validationType.statusCodes + let validatedRequest = validationCodes.isEmpty ? alamoRequest : alamoRequest.validate(statusCode: validationCodes) + cancellable.innerCancellable = self.sendAlamofireRequest(validatedRequest, target: target, callbackQueue: callbackQueue, progress: progress, completion: completion) + case .failure(let error): + completion(.failure(MoyaError.underlying(error as NSError, nil))) + } + } + + return cancellable + } + + func sendUploadFile(_ target: Target, request: URLRequest, callbackQueue: DispatchQueue?, file: URL, progress: ProgressBlock? = nil, completion: @escaping Completion) -> CancellableToken { + let uploadRequest = manager.upload(file, with: request) + let validationCodes = target.validationType.statusCodes + let alamoRequest = validationCodes.isEmpty ? uploadRequest : uploadRequest.validate(statusCode: validationCodes) + return self.sendAlamofireRequest(alamoRequest, target: target, callbackQueue: callbackQueue, progress: progress, completion: completion) + } + + func sendDownloadRequest(_ target: Target, request: URLRequest, callbackQueue: DispatchQueue?, destination: @escaping DownloadDestination, progress: ProgressBlock? = nil, completion: @escaping Completion) -> CancellableToken { + let downloadRequest = manager.download(request, to: destination) + let validationCodes = target.validationType.statusCodes + let alamoRequest = validationCodes.isEmpty ? downloadRequest : downloadRequest.validate(statusCode: validationCodes) + return self.sendAlamofireRequest(alamoRequest, target: target, callbackQueue: callbackQueue, progress: progress, completion: completion) + } + + func sendRequest(_ target: Target, request: URLRequest, callbackQueue: DispatchQueue?, progress: Moya.ProgressBlock?, completion: @escaping Moya.Completion) -> CancellableToken { + let initialRequest = manager.request(request as URLRequestConvertible) + let validationCodes = target.validationType.statusCodes + let alamoRequest = validationCodes.isEmpty ? initialRequest : initialRequest.validate(statusCode: validationCodes) + return sendAlamofireRequest(alamoRequest, target: target, callbackQueue: callbackQueue, progress: progress, completion: completion) + } + + // swiftlint:disable:next cyclomatic_complexity + func sendAlamofireRequest(_ alamoRequest: T, target: Target, callbackQueue: DispatchQueue?, progress progressCompletion: Moya.ProgressBlock?, completion: @escaping Moya.Completion) -> CancellableToken where T: Requestable, T: Request { + // Give plugins the chance to alter the outgoing request + let plugins = self.plugins + plugins.forEach { $0.willSend(alamoRequest, target: target) } + + var progressAlamoRequest = alamoRequest + let progressClosure: (Progress) -> Void = { progress in + let sendProgress: () -> Void = { + progressCompletion?(ProgressResponse(progress: progress)) + } + + if let callbackQueue = callbackQueue { + callbackQueue.async(execute: sendProgress) + } else { + sendProgress() + } + } + + // Perform the actual request + if progressCompletion != nil { + switch progressAlamoRequest { + case let downloadRequest as DownloadRequest: + if let downloadRequest = downloadRequest.downloadProgress(closure: progressClosure) as? T { + progressAlamoRequest = downloadRequest + } + case let uploadRequest as UploadRequest: + if let uploadRequest = uploadRequest.uploadProgress(closure: progressClosure) as? T { + progressAlamoRequest = uploadRequest + } + case let dataRequest as DataRequest: + if let dataRequest = dataRequest.downloadProgress(closure: progressClosure) as? T { + progressAlamoRequest = dataRequest + } + default: break + } + } + + let completionHandler: RequestableCompletion = { response, request, data, error in + let result = convertResponseToResult(response, request: request, data: data, error: error) + // Inform all plugins about the response + plugins.forEach { $0.didReceive(result, target: target) } + if let progressCompletion = progressCompletion { + switch progressAlamoRequest { + case let downloadRequest as DownloadRequest: + progressCompletion(ProgressResponse(progress: downloadRequest.progress, response: result.value)) + case let uploadRequest as UploadRequest: + progressCompletion(ProgressResponse(progress: uploadRequest.uploadProgress, response: result.value)) + case let dataRequest as DataRequest: + progressCompletion(ProgressResponse(progress: dataRequest.progress, response: result.value)) + default: + progressCompletion(ProgressResponse(response: result.value)) + } + } + completion(result) + } + + progressAlamoRequest = progressAlamoRequest.response(callbackQueue: callbackQueue, completionHandler: completionHandler) + + progressAlamoRequest.resume() + + return CancellableToken(request: progressAlamoRequest) + } +} diff --git a/Santander-Test/Pods/Moya/Sources/Moya/MoyaProvider.swift b/Santander-Test/Pods/Moya/Sources/Moya/MoyaProvider.swift new file mode 100755 index 00000000..4bced8b9 --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/MoyaProvider.swift @@ -0,0 +1,206 @@ +import Foundation +import Result + +/// Closure to be executed when a request has completed. +public typealias Completion = (_ result: Result) -> Void + +/// Closure to be executed when progress changes. +public typealias ProgressBlock = (_ progress: ProgressResponse) -> Void + +/// A type representing the progress of a request. +public struct ProgressResponse { + + /// The optional response of the request. + public let response: Response? + + /// An object that conveys ongoing progress for a given request. + public let progressObject: Progress? + + /// Initializes a `ProgressResponse`. + public init(progress: Progress? = nil, response: Response? = nil) { + self.progressObject = progress + self.response = response + } + + /// The fraction of the overall work completed by the progress object. + public var progress: Double { + return progressObject?.fractionCompleted ?? 1.0 + } + + /// A Boolean value stating whether the request is completed. + public var completed: Bool { + return progress == 1.0 && response != nil + } +} + +/// A protocol representing a minimal interface for a MoyaProvider. +/// Used by the reactive provider extensions. +public protocol MoyaProviderType: AnyObject { + + associatedtype Target: TargetType + + /// Designated request-making method. Returns a `Cancellable` token to cancel the request later. + func request(_ target: Target, callbackQueue: DispatchQueue?, progress: Moya.ProgressBlock?, completion: @escaping Moya.Completion) -> Cancellable +} + +/// Request provider class. Requests should be made through this class only. +open class MoyaProvider: MoyaProviderType { + + /// Closure that defines the endpoints for the provider. + public typealias EndpointClosure = (Target) -> Endpoint + + /// Closure that decides if and what request should be performed. + public typealias RequestResultClosure = (Result) -> Void + + /// Closure that resolves an `Endpoint` into a `RequestResult`. + public typealias RequestClosure = (Endpoint, @escaping RequestResultClosure) -> Void + + /// Closure that decides if/how a request should be stubbed. + public typealias StubClosure = (Target) -> Moya.StubBehavior + + /// A closure responsible for mapping a `TargetType` to an `EndPoint`. + public let endpointClosure: EndpointClosure + + /// A closure deciding if and what request should be performed. + public let requestClosure: RequestClosure + + /// A closure responsible for determining the stubbing behavior + /// of a request for a given `TargetType`. + public let stubClosure: StubClosure + + /// The manager for the session. + public let manager: Manager + + /// A list of plugins. + /// e.g. for logging, network activity indicator or credentials. + public let plugins: [PluginType] + + public let trackInflights: Bool + + open internal(set) var inflightRequests: [Endpoint: [Moya.Completion]] = [:] + + /// Propagated to Alamofire as callback queue. If nil - the Alamofire default (as of their API in 2017 - the main queue) will be used. + let callbackQueue: DispatchQueue? + + /// Initializes a provider. + public init(endpointClosure: @escaping EndpointClosure = MoyaProvider.defaultEndpointMapping, + requestClosure: @escaping RequestClosure = MoyaProvider.defaultRequestMapping, + stubClosure: @escaping StubClosure = MoyaProvider.neverStub, + callbackQueue: DispatchQueue? = nil, + manager: Manager = MoyaProvider.defaultAlamofireManager(), + plugins: [PluginType] = [], + trackInflights: Bool = false) { + + self.endpointClosure = endpointClosure + self.requestClosure = requestClosure + self.stubClosure = stubClosure + self.manager = manager + self.plugins = plugins + self.trackInflights = trackInflights + self.callbackQueue = callbackQueue + } + + /// Returns an `Endpoint` based on the token, method, and parameters by invoking the `endpointClosure`. + open func endpoint(_ token: Target) -> Endpoint { + return endpointClosure(token) + } + + /// Designated request-making method. Returns a `Cancellable` token to cancel the request later. + @discardableResult + open func request(_ target: Target, + callbackQueue: DispatchQueue? = .none, + progress: ProgressBlock? = .none, + completion: @escaping Completion) -> Cancellable { + + let callbackQueue = callbackQueue ?? self.callbackQueue + return requestNormal(target, callbackQueue: callbackQueue, progress: progress, completion: completion) + } + + // swiftlint:disable function_parameter_count + /// When overriding this method, take care to `notifyPluginsOfImpendingStub` and to perform the stub using the `createStubFunction` method. + /// Note: this was previously in an extension, however it must be in the original class declaration to allow subclasses to override. + @discardableResult + open func stubRequest(_ target: Target, request: URLRequest, callbackQueue: DispatchQueue?, completion: @escaping Moya.Completion, endpoint: Endpoint, stubBehavior: Moya.StubBehavior) -> CancellableToken { + let callbackQueue = callbackQueue ?? self.callbackQueue + let cancellableToken = CancellableToken { } + notifyPluginsOfImpendingStub(for: request, target: target) + let plugins = self.plugins + let stub: () -> Void = createStubFunction(cancellableToken, forTarget: target, withCompletion: completion, endpoint: endpoint, plugins: plugins, request: request) + switch stubBehavior { + case .immediate: + switch callbackQueue { + case .none: + stub() + case .some(let callbackQueue): + callbackQueue.async(execute: stub) + } + case .delayed(let delay): + let killTimeOffset = Int64(CDouble(delay) * CDouble(NSEC_PER_SEC)) + let killTime = DispatchTime.now() + Double(killTimeOffset) / Double(NSEC_PER_SEC) + (callbackQueue ?? DispatchQueue.main).asyncAfter(deadline: killTime) { + stub() + } + case .never: + fatalError("Method called to stub request when stubbing is disabled.") + } + + return cancellableToken + } + // swiftlint:enable function_parameter_count +} + +/// Mark: Stubbing + +/// Controls how stub responses are returned. +public enum StubBehavior { + + /// Do not stub. + case never + + /// Return a response immediately. + case immediate + + /// Return a response after a delay. + case delayed(seconds: TimeInterval) +} + +public extension MoyaProvider { + + // Swift won't let us put the StubBehavior enum inside the provider class, so we'll + // at least add some class functions to allow easy access to common stubbing closures. + + /// Do not stub. + public final class func neverStub(_: Target) -> Moya.StubBehavior { + return .never + } + + /// Return a response immediately. + public final class func immediatelyStub(_: Target) -> Moya.StubBehavior { + return .immediate + } + + /// Return a response after a delay. + public final class func delayedStub(_ seconds: TimeInterval) -> (Target) -> Moya.StubBehavior { + return { _ in return .delayed(seconds: seconds) } + } +} + +/// A public function responsible for converting the result of a `URLRequest` to a Result. +public func convertResponseToResult(_ response: HTTPURLResponse?, request: URLRequest?, data: Data?, error: Swift.Error?) -> + Result { + switch (response, data, error) { + case let (.some(response), data, .none): + let response = Moya.Response(statusCode: response.statusCode, data: data ?? Data(), request: request, response: response) + return .success(response) + case let (.some(response), _, .some(error)): + let response = Moya.Response(statusCode: response.statusCode, data: data ?? Data(), request: request, response: response) + let error = MoyaError.underlying(error, response) + return .failure(error) + case let (_, _, .some(error)): + let error = MoyaError.underlying(error, nil) + return .failure(error) + default: + let error = MoyaError.underlying(NSError(domain: NSURLErrorDomain, code: NSURLErrorUnknown, userInfo: nil), nil) + return .failure(error) + } +} diff --git a/Santander-Test/Pods/Moya/Sources/Moya/MultiTarget.swift b/Santander-Test/Pods/Moya/Sources/Moya/MultiTarget.swift new file mode 100644 index 00000000..7b813e4e --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/MultiTarget.swift @@ -0,0 +1,54 @@ +import Foundation + +/// A `TargetType` used to enable `MoyaProvider` to process multiple `TargetType`s. +public enum MultiTarget: TargetType { + /// The embedded `TargetType`. + case target(TargetType) + + /// Initializes a `MultiTarget`. + public init(_ target: TargetType) { + self = MultiTarget.target(target) + } + + /// The embedded target's base `URL`. + public var path: String { + return target.path + } + + /// The baseURL of the embedded target. + public var baseURL: URL { + return target.baseURL + } + + /// The HTTP method of the embedded target. + public var method: Moya.Method { + return target.method + } + + /// The sampleData of the embedded target. + public var sampleData: Data { + return target.sampleData + } + + /// The `Task` of the embedded target. + public var task: Task { + return target.task + } + + /// The `ValidationType` of the embedded target. + public var validationType: ValidationType { + return target.validationType + } + + /// The headers of the embedded target. + public var headers: [String: String]? { + return target.headers + } + + /// The embedded `TargetType`. + public var target: TargetType { + switch self { + case .target(let target): return target + } + } +} diff --git a/Santander-Test/Pods/Moya/Sources/Moya/MultipartFormData.swift b/Santander-Test/Pods/Moya/Sources/Moya/MultipartFormData.swift new file mode 100644 index 00000000..418cae21 --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/MultipartFormData.swift @@ -0,0 +1,73 @@ +import Foundation +import Alamofire + +/// Represents "multipart/form-data" for an upload. +public struct MultipartFormData { + + /// Method to provide the form data. + public enum FormDataProvider { + case data(Foundation.Data) + case file(URL) + case stream(InputStream, UInt64) + } + + public init(provider: FormDataProvider, name: String, fileName: String? = nil, mimeType: String? = nil) { + self.provider = provider + self.name = name + self.fileName = fileName + self.mimeType = mimeType + } + + /// The method being used for providing form data. + public let provider: FormDataProvider + + /// The name. + public let name: String + + /// The file name. + public let fileName: String? + + /// The MIME type + public let mimeType: String? + +} + +// MARK: RequestMultipartFormData appending +internal extension RequestMultipartFormData { + func append(data: Data, bodyPart: MultipartFormData) { + if let mimeType = bodyPart.mimeType { + if let fileName = bodyPart.fileName { + append(data, withName: bodyPart.name, fileName: fileName, mimeType: mimeType) + } else { + append(data, withName: bodyPart.name, mimeType: mimeType) + } + } else { + append(data, withName: bodyPart.name) + } + } + + func append(fileURL url: URL, bodyPart: MultipartFormData) { + if let fileName = bodyPart.fileName, let mimeType = bodyPart.mimeType { + append(url, withName: bodyPart.name, fileName: fileName, mimeType: mimeType) + } else { + append(url, withName: bodyPart.name) + } + } + + func append(stream: InputStream, length: UInt64, bodyPart: MultipartFormData) { + append(stream, withLength: length, name: bodyPart.name, fileName: bodyPart.fileName ?? "", mimeType: bodyPart.mimeType ?? "") + } + + func applyMoyaMultipartFormData(_ multipartBody: [Moya.MultipartFormData]) { + for bodyPart in multipartBody { + switch bodyPart.provider { + case .data(let data): + append(data: data, bodyPart: bodyPart) + case .file(let url): + append(fileURL: url, bodyPart: bodyPart) + case .stream(let stream, let length): + append(stream: stream, length: length, bodyPart: bodyPart) + } + } + } +} diff --git a/Santander-Test/Pods/Moya/Sources/Moya/Plugin.swift b/Santander-Test/Pods/Moya/Sources/Moya/Plugin.swift new file mode 100644 index 00000000..3f5bd6c1 --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/Plugin.swift @@ -0,0 +1,47 @@ +import Foundation +import Result + +/// A Moya Plugin receives callbacks to perform side effects wherever a request is sent or received. +/// +/// for example, a plugin may be used to +/// - log network requests +/// - hide and show a network activity indicator +/// - inject additional information into a request +public protocol PluginType { + /// Called to modify a request before sending. + func prepare(_ request: URLRequest, target: TargetType) -> URLRequest + + /// Called immediately before a request is sent over the network (or stubbed). + func willSend(_ request: RequestType, target: TargetType) + + /// Called after a response has been received, but before the MoyaProvider has invoked its completion handler. + func didReceive(_ result: Result, target: TargetType) + + /// Called to modify a result before completion. + func process(_ result: Result, target: TargetType) -> Result +} + +public extension PluginType { + func prepare(_ request: URLRequest, target: TargetType) -> URLRequest { return request } + func willSend(_ request: RequestType, target: TargetType) { } + func didReceive(_ result: Result, target: TargetType) { } + func process(_ result: Result, target: TargetType) -> Result { return result } +} + +/// Request type used by `willSend` plugin function. +public protocol RequestType { + + // Note: + // + // We use this protocol instead of the Alamofire request to avoid leaking that abstraction. + // A plugin should not know about Alamofire at all. + + /// Retrieve an `NSURLRequest` representation. + var request: URLRequest? { get } + + /// Authenticates the request with a username and password. + func authenticate(user: String, password: String, persistence: URLCredential.Persistence) -> Self + + /// Authenticates the request with an `NSURLCredential` instance. + func authenticate(usingCredential credential: URLCredential) -> Self +} diff --git a/Santander-Test/Pods/Moya/Sources/Moya/Plugins/AccessTokenPlugin.swift b/Santander-Test/Pods/Moya/Sources/Moya/Plugins/AccessTokenPlugin.swift new file mode 100644 index 00000000..e1234e22 --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/Plugins/AccessTokenPlugin.swift @@ -0,0 +1,93 @@ +import Foundation +import Result + +// MARK: - AccessTokenAuthorizable + +/// A protocol for controlling the behavior of `AccessTokenPlugin`. +public protocol AccessTokenAuthorizable { + + /// Represents the authorization header to use for requests. + var authorizationType: AuthorizationType { get } +} + +// MARK: - AuthorizationType + +/// An enum representing the header to use with an `AccessTokenPlugin` +public enum AuthorizationType { + /// No header. + case none + + /// The `"Basic"` header. + case basic + + /// The `"Bearer"` header. + case bearer + + /// Custom header implementation. + case custom(String) + + public var value: String? { + switch self { + case .none: return nil + case .basic: return "Basic" + case .bearer: return "Bearer" + case .custom(let customValue): return customValue + } + } +} + +// MARK: - AccessTokenPlugin + +/** + A plugin for adding basic or bearer-type authorization headers to requests. Example: + + ``` + Authorization: Basic + Authorization: Bearer + Authorization: <Сustom> + ``` + +*/ +public struct AccessTokenPlugin: PluginType { + + /// A closure returning the access token to be applied in the header. + public let tokenClosure: () -> String + + /** + Initialize a new `AccessTokenPlugin`. + + - parameters: + - tokenClosure: A closure returning the token to be applied in the pattern `Authorization: ` + */ + public init(tokenClosure: @escaping () -> String) { + self.tokenClosure = tokenClosure + } + + /** + Prepare a request by adding an authorization header if necessary. + + - parameters: + - request: The request to modify. + - target: The target of the request. + - returns: The modified `URLRequest`. + */ + public func prepare(_ request: URLRequest, target: TargetType) -> URLRequest { + + guard let authorizable = target as? AccessTokenAuthorizable else { return request } + + let authorizationType = authorizable.authorizationType + var request = request + + switch authorizationType { + case .basic, .bearer, .custom: + if let value = authorizationType.value { + let authValue = value + " " + tokenClosure() + request.addValue(authValue, forHTTPHeaderField: "Authorization") + } + case .none: + break + } + + return request + } +} diff --git a/Santander-Test/Pods/Moya/Sources/Moya/Plugins/CredentialsPlugin.swift b/Santander-Test/Pods/Moya/Sources/Moya/Plugins/CredentialsPlugin.swift new file mode 100644 index 00000000..5f22aab8 --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/Plugins/CredentialsPlugin.swift @@ -0,0 +1,22 @@ +import Foundation +import Result + +/// Provides each request with optional URLCredentials. +public final class CredentialsPlugin: PluginType { + + public typealias CredentialClosure = (TargetType) -> URLCredential? + let credentialsClosure: CredentialClosure + + /// Initializes a CredentialsPlugin. + public init(credentialsClosure: @escaping CredentialClosure) { + self.credentialsClosure = credentialsClosure + } + + // MARK: Plugin + + public func willSend(_ request: RequestType, target: TargetType) { + if let credentials = credentialsClosure(target) { + _ = request.authenticate(usingCredential: credentials) + } + } +} diff --git a/Santander-Test/Pods/Moya/Sources/Moya/Plugins/NetworkActivityPlugin.swift b/Santander-Test/Pods/Moya/Sources/Moya/Plugins/NetworkActivityPlugin.swift new file mode 100644 index 00000000..c9001051 --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/Plugins/NetworkActivityPlugin.swift @@ -0,0 +1,31 @@ +import Foundation +import Result + +/// Network activity change notification type. +public enum NetworkActivityChangeType { + case began, ended +} + +/// Notify a request's network activity changes (request begins or ends). +public final class NetworkActivityPlugin: PluginType { + + public typealias NetworkActivityClosure = (_ change: NetworkActivityChangeType, _ target: TargetType) -> Void + let networkActivityClosure: NetworkActivityClosure + + /// Initializes a NetworkActivityPlugin. + public init(networkActivityClosure: @escaping NetworkActivityClosure) { + self.networkActivityClosure = networkActivityClosure + } + + // MARK: Plugin + + /// Called by the provider as soon as the request is about to start + public func willSend(_ request: RequestType, target: TargetType) { + networkActivityClosure(.began, target) + } + + /// Called by the provider as soon as a response arrives, even if the request is canceled. + public func didReceive(_ result: Result, target: TargetType) { + networkActivityClosure(.ended, target) + } +} diff --git a/Santander-Test/Pods/Moya/Sources/Moya/Plugins/NetworkLoggerPlugin.swift b/Santander-Test/Pods/Moya/Sources/Moya/Plugins/NetworkLoggerPlugin.swift new file mode 100644 index 00000000..cc91afe8 --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/Plugins/NetworkLoggerPlugin.swift @@ -0,0 +1,114 @@ +import Foundation +import Result + +/// Logs network activity (outgoing requests and incoming responses). +public final class NetworkLoggerPlugin: PluginType { + fileprivate let loggerId = "Moya_Logger" + fileprivate let dateFormatString = "dd/MM/yyyy HH:mm:ss" + fileprivate let dateFormatter = DateFormatter() + fileprivate let separator = ", " + fileprivate let terminator = "\n" + fileprivate let cURLTerminator = "\\\n" + fileprivate let output: (_ separator: String, _ terminator: String, _ items: Any...) -> Void + fileprivate let requestDataFormatter: ((Data) -> (String))? + fileprivate let responseDataFormatter: ((Data) -> (Data))? + + /// A Boolean value determing whether response body data should be logged. + public let isVerbose: Bool + public let cURL: Bool + + /// Initializes a NetworkLoggerPlugin. + public init(verbose: Bool = false, cURL: Bool = false, output: ((_ separator: String, _ terminator: String, _ items: Any...) -> Void)? = nil, requestDataFormatter: ((Data) -> (String))? = nil, responseDataFormatter: ((Data) -> (Data))? = nil) { + self.cURL = cURL + self.isVerbose = verbose + self.output = output ?? NetworkLoggerPlugin.reversedPrint + self.requestDataFormatter = requestDataFormatter + self.responseDataFormatter = responseDataFormatter + } + + public func willSend(_ request: RequestType, target: TargetType) { + if let request = request as? CustomDebugStringConvertible, cURL { + output(separator, terminator, request.debugDescription) + return + } + outputItems(logNetworkRequest(request.request as URLRequest?)) + } + + public func didReceive(_ result: Result, target: TargetType) { + if case .success(let response) = result { + outputItems(logNetworkResponse(response.response, data: response.data, target: target)) + } else { + outputItems(logNetworkResponse(nil, data: nil, target: target)) + } + } + + fileprivate func outputItems(_ items: [String]) { + if isVerbose { + items.forEach { output(separator, terminator, $0) } + } else { + output(separator, terminator, items) + } + } +} + +private extension NetworkLoggerPlugin { + + var date: String { + dateFormatter.dateFormat = dateFormatString + dateFormatter.locale = Locale(identifier: "en_US_POSIX") + return dateFormatter.string(from: Date()) + } + + func format(_ loggerId: String, date: String, identifier: String, message: String) -> String { + return "\(loggerId): [\(date)] \(identifier): \(message)" + } + + func logNetworkRequest(_ request: URLRequest?) -> [String] { + + var output = [String]() + + output += [format(loggerId, date: date, identifier: "Request", message: request?.description ?? "(invalid request)")] + + if let headers = request?.allHTTPHeaderFields { + output += [format(loggerId, date: date, identifier: "Request Headers", message: headers.description)] + } + + if let bodyStream = request?.httpBodyStream { + output += [format(loggerId, date: date, identifier: "Request Body Stream", message: bodyStream.description)] + } + + if let httpMethod = request?.httpMethod { + output += [format(loggerId, date: date, identifier: "HTTP Request Method", message: httpMethod)] + } + + if let body = request?.httpBody, let stringOutput = requestDataFormatter?(body) ?? String(data: body, encoding: .utf8), isVerbose { + output += [format(loggerId, date: date, identifier: "Request Body", message: stringOutput)] + } + + return output + } + + func logNetworkResponse(_ response: HTTPURLResponse?, data: Data?, target: TargetType) -> [String] { + guard let response = response else { + return [format(loggerId, date: date, identifier: "Response", message: "Received empty network response for \(target).")] + } + + var output = [String]() + + output += [format(loggerId, date: date, identifier: "Response", message: response.description)] + + if let data = data, let stringData = String(data: responseDataFormatter?(data) ?? data, encoding: String.Encoding.utf8), isVerbose { + output += [stringData] + } + + return output + } +} + +fileprivate extension NetworkLoggerPlugin { + static func reversedPrint(_ separator: String, terminator: String, items: Any...) { + for item in items { + print(item, separator: separator, terminator: terminator) + } + } +} diff --git a/Santander-Test/Pods/Moya/Sources/Moya/Response.swift b/Santander-Test/Pods/Moya/Sources/Moya/Response.swift new file mode 100644 index 00000000..42567ccc --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/Response.swift @@ -0,0 +1,192 @@ +import Foundation + +/// Represents a response to a `MoyaProvider.request`. +public final class Response: CustomDebugStringConvertible, Equatable { + + /// The status code of the response. + public let statusCode: Int + + /// The response data. + public let data: Data + + /// The original URLRequest for the response. + public let request: URLRequest? + + /// The HTTPURLResponse object. + public let response: HTTPURLResponse? + + public init(statusCode: Int, data: Data, request: URLRequest? = nil, response: HTTPURLResponse? = nil) { + self.statusCode = statusCode + self.data = data + self.request = request + self.response = response + } + + /// A text description of the `Response`. + public var description: String { + return "Status Code: \(statusCode), Data Length: \(data.count)" + } + + /// A text description of the `Response`. Suitable for debugging. + public var debugDescription: String { + return description + } + + public static func == (lhs: Response, rhs: Response) -> Bool { + return lhs.statusCode == rhs.statusCode + && lhs.data == rhs.data + && lhs.response == rhs.response + } +} + +public extension Response { + + /** + Returns the `Response` if the `statusCode` falls within the specified range. + + - parameters: + - statusCodes: The range of acceptable status codes. + - throws: `MoyaError.statusCode` when others are encountered. + */ + public func filter(statusCodes: R) throws -> Response where R.Bound == Int { + guard statusCodes.contains(statusCode) else { + throw MoyaError.statusCode(self) + } + return self + } + + /** + Returns the `Response` if it has the specified `statusCode`. + + - parameters: + - statusCode: The acceptable status code. + - throws: `MoyaError.statusCode` when others are encountered. + */ + public func filter(statusCode: Int) throws -> Response { + return try filter(statusCodes: statusCode...statusCode) + } + + /** + Returns the `Response` if the `statusCode` falls within the range 200 - 299. + + - throws: `MoyaError.statusCode` when others are encountered. + */ + public func filterSuccessfulStatusCodes() throws -> Response { + return try filter(statusCodes: 200...299) + } + + /** + Returns the `Response` if the `statusCode` falls within the range 200 - 399. + + - throws: `MoyaError.statusCode` when others are encountered. + */ + public func filterSuccessfulStatusAndRedirectCodes() throws -> Response { + return try filter(statusCodes: 200...399) + } + + /// Maps data received from the signal into an Image. + func mapImage() throws -> Image { + guard let image = Image(data: data) else { + throw MoyaError.imageMapping(self) + } + return image + } + + /// Maps data received from the signal into a JSON object. + /// + /// - parameter failsOnEmptyData: A Boolean value determining + /// whether the mapping should fail if the data is empty. + func mapJSON(failsOnEmptyData: Bool = true) throws -> Any { + do { + return try JSONSerialization.jsonObject(with: data, options: .allowFragments) + } catch { + if data.count < 1 && !failsOnEmptyData { + return NSNull() + } + throw MoyaError.jsonMapping(self) + } + } + + /// Maps data received from the signal into a String. + /// + /// - parameter atKeyPath: Optional key path at which to parse string. + public func mapString(atKeyPath keyPath: String? = nil) throws -> String { + if let keyPath = keyPath { + // Key path was provided, try to parse string at key path + guard let jsonDictionary = try mapJSON() as? NSDictionary, + let string = jsonDictionary.value(forKeyPath: keyPath) as? String else { + throw MoyaError.stringMapping(self) + } + return string + } else { + // Key path was not provided, parse entire response as string + guard let string = String(data: data, encoding: .utf8) else { + throw MoyaError.stringMapping(self) + } + return string + } + } + + /// Maps data received from the signal into a Decodable object. + /// + /// - parameter atKeyPath: Optional key path at which to parse object. + /// - parameter using: A `JSONDecoder` instance which is used to decode data to an object. + func map(_ type: D.Type, atKeyPath keyPath: String? = nil, using decoder: JSONDecoder = JSONDecoder(), failsOnEmptyData: Bool = true) throws -> D { + let serializeToData: (Any) throws -> Data? = { (jsonObject) in + guard JSONSerialization.isValidJSONObject(jsonObject) else { + return nil + } + do { + return try JSONSerialization.data(withJSONObject: jsonObject) + } catch { + throw MoyaError.jsonMapping(self) + } + } + let jsonData: Data + keyPathCheck: if let keyPath = keyPath { + guard let jsonObject = (try mapJSON(failsOnEmptyData: failsOnEmptyData) as? NSDictionary)?.value(forKeyPath: keyPath) else { + if failsOnEmptyData { + throw MoyaError.jsonMapping(self) + } else { + jsonData = data + break keyPathCheck + } + } + + if let data = try serializeToData(jsonObject) { + jsonData = data + } else { + let wrappedJsonObject = ["value": jsonObject] + let wrappedJsonData: Data + if let data = try serializeToData(wrappedJsonObject) { + wrappedJsonData = data + } else { + throw MoyaError.jsonMapping(self) + } + do { + return try decoder.decode(DecodableWrapper.self, from: wrappedJsonData).value + } catch let error { + throw MoyaError.objectMapping(error, self) + } + } + } else { + jsonData = data + } + do { + if jsonData.count < 1 && !failsOnEmptyData { + if let emptyJSONObjectData = "{}".data(using: .utf8), let emptyDecodableValue = try? decoder.decode(D.self, from: emptyJSONObjectData) { + return emptyDecodableValue + } else if let emptyJSONArrayData = "[{}]".data(using: .utf8), let emptyDecodableValue = try? decoder.decode(D.self, from: emptyJSONArrayData) { + return emptyDecodableValue + } + } + return try decoder.decode(D.self, from: jsonData) + } catch let error { + throw MoyaError.objectMapping(error, self) + } + } +} + +private struct DecodableWrapper: Decodable { + let value: T +} diff --git a/Santander-Test/Pods/Moya/Sources/Moya/TargetType.swift b/Santander-Test/Pods/Moya/Sources/Moya/TargetType.swift new file mode 100644 index 00000000..48c77a00 --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/TargetType.swift @@ -0,0 +1,44 @@ +import Foundation + +/// The protocol used to define the specifications necessary for a `MoyaProvider`. +public protocol TargetType { + + /// The target's base `URL`. + var baseURL: URL { get } + + /// The path to be appended to `baseURL` to form the full `URL`. + var path: String { get } + + /// The HTTP method used in the request. + var method: Moya.Method { get } + + /// Provides stub data for use in testing. + var sampleData: Data { get } + + /// The type of HTTP task to be performed. + var task: Task { get } + + /// The type of validation to perform on the request. Default is `.none`. + var validationType: ValidationType { get } + + /// The headers to be used in the request. + var headers: [String: String]? { get } +} + +public extension TargetType { + + /// The type of validation to perform on the request. Default is `.none`. + var validationType: ValidationType { + return .none + } +} + +// MARK: - Deprecated + +extension TargetType { + @available(*, deprecated: 11.0, message: + "TargetType's validate property has been deprecated in 11.0. Please use validationType: ValidationType.") + var validate: Bool { + return false + } +} diff --git a/Santander-Test/Pods/Moya/Sources/Moya/Task.swift b/Santander-Test/Pods/Moya/Sources/Moya/Task.swift new file mode 100644 index 00000000..191e2593 --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/Task.swift @@ -0,0 +1,41 @@ +import Foundation + +/// Represents an HTTP task. +public enum Task { + + /// A request with no additional data. + case requestPlain + + /// A requests body set with data. + case requestData(Data) + + /// A request body set with `Encodable` type + case requestJSONEncodable(Encodable) + + /// A request body set with `Encodable` type and custom encoder + case requestCustomJSONEncodable(Encodable, encoder: JSONEncoder) + + /// A requests body set with encoded parameters. + case requestParameters(parameters: [String: Any], encoding: ParameterEncoding) + + /// A requests body set with data, combined with url parameters. + case requestCompositeData(bodyData: Data, urlParameters: [String: Any]) + + /// A requests body set with encoded parameters combined with url parameters. + case requestCompositeParameters(bodyParameters: [String: Any], bodyEncoding: ParameterEncoding, urlParameters: [String: Any]) + + /// A file upload task. + case uploadFile(URL) + + /// A "multipart/form-data" upload task. + case uploadMultipart([MultipartFormData]) + + /// A "multipart/form-data" upload task combined with url parameters. + case uploadCompositeMultipart([MultipartFormData], urlParameters: [String: Any]) + + /// A file download task to a destination. + case downloadDestination(DownloadDestination) + + /// A file download task to a destination with extra parameters using the given encoding. + case downloadParameters(parameters: [String: Any], encoding: ParameterEncoding, destination: DownloadDestination) +} diff --git a/Santander-Test/Pods/Moya/Sources/Moya/URL+Moya.swift b/Santander-Test/Pods/Moya/Sources/Moya/URL+Moya.swift new file mode 100644 index 00000000..9351fa43 --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/URL+Moya.swift @@ -0,0 +1,16 @@ +import Foundation + +public extension URL { + + /// Initialize URL from Moya's `TargetType`. + init(target: T) { + // When a TargetType's path is empty, URL.appendingPathComponent may introduce trailing /, which may not be wanted in some cases + // See: https://github.com/Moya/Moya/pull/1053 + // And: https://github.com/Moya/Moya/issues/1049 + if target.path.isEmpty { + self = target.baseURL + } else { + self = target.baseURL.appendingPathComponent(target.path) + } + } +} diff --git a/Santander-Test/Pods/Moya/Sources/Moya/URLRequest+Encoding.swift b/Santander-Test/Pods/Moya/Sources/Moya/URLRequest+Encoding.swift new file mode 100644 index 00000000..232d86df --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/URLRequest+Encoding.swift @@ -0,0 +1,28 @@ +import Foundation + +internal extension URLRequest { + + mutating func encoded(encodable: Encodable, encoder: JSONEncoder = JSONEncoder()) throws -> URLRequest { + do { + let encodable = AnyEncodable(encodable) + httpBody = try encoder.encode(encodable) + + let contentTypeHeaderName = "Content-Type" + if value(forHTTPHeaderField: contentTypeHeaderName) == nil { + setValue("application/json", forHTTPHeaderField: contentTypeHeaderName) + } + + return self + } catch { + throw MoyaError.encodableMapping(error) + } + } + + func encoded(parameters: [String: Any], parameterEncoding: ParameterEncoding) throws -> URLRequest { + do { + return try parameterEncoding.encode(self, with: parameters) + } catch { + throw MoyaError.parameterEncoding(error) + } + } +} diff --git a/Santander-Test/Pods/Moya/Sources/Moya/ValidationType.swift b/Santander-Test/Pods/Moya/Sources/Moya/ValidationType.swift new file mode 100644 index 00000000..ffc8d8f2 --- /dev/null +++ b/Santander-Test/Pods/Moya/Sources/Moya/ValidationType.swift @@ -0,0 +1,47 @@ +import Foundation + +/// Represents the status codes to validate through Alamofire. +public enum ValidationType { + + /// No validation. + case none + + /// Validate success codes (only 2xx). + case successCodes + + /// Validate success codes and redirection codes (only 2xx and 3xx). + case successAndRedirectCodes + + /// Validate only the given status codes. + case customCodes([Int]) + + /// The list of HTTP status codes to validate. + var statusCodes: [Int] { + switch self { + case .successCodes: + return Array(200..<300) + case .successAndRedirectCodes: + return Array(200..<400) + case .customCodes(let codes): + return codes + case .none: + return [] + } + } +} + +extension ValidationType: Equatable { + + public static func == (lhs: ValidationType, rhs: ValidationType) -> Bool { + switch (lhs, rhs) { + case (.none, .none), + (.successCodes, .successCodes), + (.successAndRedirectCodes, .successAndRedirectCodes): + return true + case (.customCodes(let code1), .customCodes(let code2)): + return code1 == code2 + default: + return false + } + } +} diff --git a/Santander-Test/Pods/Pods.xcodeproj/project.pbxproj b/Santander-Test/Pods/Pods.xcodeproj/project.pbxproj new file mode 100644 index 00000000..05d99044 --- /dev/null +++ b/Santander-Test/Pods/Pods.xcodeproj/project.pbxproj @@ -0,0 +1,1533 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 059D92B7BBFBEC53E9A3B6E11C5C3B3A /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 658F2480F5891FAA6FA5A66331A2946F /* Response.swift */; }; + 09067C2692931E434234858ADBC4C6D6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F070EA949AE56B80487099F22C5125E /* Foundation.framework */; }; + 09EB6E0388043CD7B2B1089D446310E3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F070EA949AE56B80487099F22C5125E /* Foundation.framework */; }; + 0A39AF55285A3A4F7CBABB6D822FA4A3 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4218171677FF5B70A4A3C9255B97334B /* Alamofire.swift */; }; + 11F309B46EE6B36CB281409A579996C0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F070EA949AE56B80487099F22C5125E /* Foundation.framework */; }; + 1B131595178FA51FC0B7C2FB12ED5ADB /* Endpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = F56A169BF4DF40A3C798570E61D0F96F /* Endpoint.swift */; }; + 1C496E2C46E94DECD60F0B1C7CA511E4 /* NetworkLoggerPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9D9C68F5756D1BE51CD956B435E241C /* NetworkLoggerPlugin.swift */; }; + 1D29D2ACADF961F69D32B06FA6A09E28 /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFDF740459C685482B23F47F31D382D6 /* Notifications.swift */; }; + 225E880F1459B17432E7DF840D03A3E7 /* Task.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0309512180EFC6494644C07CE11E5C35 /* Task.swift */; }; + 313895F247F6C04661152D6D4948C100 /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EF857F359FEA09F5997368B821B525A /* Image.swift */; }; + 31895E3CF848D69123E3A6DDEDBBF86F /* URL+Moya.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD31EB276D310E0FE4448A6B050E0BC9 /* URL+Moya.swift */; }; + 355C18EEC82624A06A6CC93965258E33 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EEE0610AE937C5E5EDDFDD2EEA9593C /* Request.swift */; }; + 3BD1DAFE1F3E6C9E4EB0F2099B6D6FA2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F070EA949AE56B80487099F22C5125E /* Foundation.framework */; }; + 3E0749AF6C51BCF0E4A41CF1D6A76FED /* DispatchQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C8CC6AC0D8831E86EB702019DD876B /* DispatchQueue+Alamofire.swift */; }; + 4A42935426AB30760B47ADDE1BB1C39D /* NoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DFCCA5612D471096D3E6CB06E11A8A1 /* NoError.swift */; }; + 5D53EA65636A0B296726611E3C491CF7 /* Result-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 36F1F488961C8E5E299238A153EA2E47 /* Result-dummy.m */; }; + 5D97ACC58BF197F2426B2C6853142DF5 /* NetworkActivityPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94191699BE232A8DBDD811B0AD026417 /* NetworkActivityPlugin.swift */; }; + 60B6C2A003864AAD3A426448152F67BE /* Timeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAFCFE4A4FFBF3F2142074DB7031979D /* Timeline.swift */; }; + 6499810827FC895E23B2E30263617389 /* Plugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EF0C3E50605E3094E74A8DF1CD06F4D /* Plugin.swift */; }; + 64C35953B1CEDA2F929331C7626611CC /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC5DA261F34E2228A8D9AC5907C65A54 /* MultipartFormData.swift */; }; + 68BB9452F3012913BABE12BE69C74785 /* AnyEncodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2F81118105D79994D3F729A6C2C1018 /* AnyEncodable.swift */; }; + 6AAA002A59C5011CB71E9B83E6803C6D /* ResultProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0548D5C388EF37983AE0E364CA62733C /* ResultProtocol.swift */; }; + 6CA1BEBC175680F7D37A9C47917203B1 /* Pods-Santander-TestUITests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1410754A2D8AEF29CBAD3CF4DC4714BB /* Pods-Santander-TestUITests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6E04C92190FD45451E6690122ABF62E9 /* Moya-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 486423FBF4F6D69923EA68087B40145D /* Moya-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6E64C6F2AF1EBF3B28AD5CC90D8D3E2F /* AnyError.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9C09A7737BFFC871C754ECFF5CC30BC /* AnyError.swift */; }; + 6EFD003458AE7F689DEA720A2030C261 /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 892C053581140EDB2B3CC3F6572DA00E /* ResponseSerialization.swift */; }; + 700D3D95AF9520CB227846DFD943A2DA /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF919C3CFB95289B6176B202B768B1D9 /* ParameterEncoding.swift */; }; + 73AB05789A4982944AF68DBD013E3EB7 /* NetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD44B3D15CD8661524A3CEB8348DCC12 /* NetworkReachabilityManager.swift */; }; + 772911DA6E33D1CBBC30131B7C8BDBB3 /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 063A17B847BD9121B4BD72D2C51FD499 /* Alamofire-dummy.m */; }; + 778F9B551E5A346DA84BC46CBFFA1B22 /* CredentialsPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36ABAA6328733C1E19C00313744E886D /* CredentialsPlugin.swift */; }; + 77E8F0EB9FFBE2E3EB0C77095C644606 /* TaskDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 410C0B1C7DC9F546D2179AB1104602FA /* TaskDelegate.swift */; }; + 7A6FFEFDCF07683D5E2976077212FD27 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F070EA949AE56B80487099F22C5125E /* Foundation.framework */; }; + 7BEFFCD672FD28B3D77927E392412FB9 /* Result-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BB3C1B4EC8DE23ACC831EB8007542F9 /* Result-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7E3538A6992A38276764936A9733493D /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DAF1A64F92069C3B152877FD5A6AED4 /* AFError.swift */; }; + 80111F83B0BCA39D24985D0F122F0001 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96E9C4734FBA7EA2A9194AF8501C1F24 /* Result.swift */; }; + 88AE9E6392539A558E0F4417775EEA91 /* URLRequest+Encoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F452560381530925578BAAEF84C2DA /* URLRequest+Encoding.swift */; }; + 8D2A6A90A6DDAF75EA52D471258545CC /* ServerTrustPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2EA6444D261762B034016BA5A9C63E4 /* ServerTrustPolicy.swift */; }; + 9774AB3F3E8B65D7F1A644CCA6254D03 /* Pods-Santander-TestTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 638AF6E4AD3D6CF6AED6C2F601C4A809 /* Pods-Santander-TestTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9EBD0113F23A6FBB0CDC07F66E77ED81 /* AccessTokenPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B573C06FE7D70CAA2DC1FBD76A3ACA4 /* AccessTokenPlugin.swift */; }; + A1EC41966B261DCE460BCDE5124A1DBE /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B08ADF1DB9793E50DCFCDA34BC8F9D0 /* SessionDelegate.swift */; }; + A266363126A240900FCC5CCFE1EDB8BE /* Moya+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84502154C8C2AF78A05E640DBD4C988B /* Moya+Alamofire.swift */; }; + AA56769D8733D3F3E7976742D5ABA998 /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C073AD4D406BFA08E88B02A6BE1BE7DE /* Validation.swift */; }; + AB037232146E78285C5B8F6394D1A658 /* MultiTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D018F4EEA54F3999302E6B4D7566BA0 /* MultiTarget.swift */; }; + AEA829AB1A8AF2AD077A808AED6B178A /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B761F3BA75FD375B4E49B62F1C7DCB42 /* MultipartFormData.swift */; }; + B1EB1CD6804A333102774EA1DE9F1B94 /* TargetType.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB5F1F3525DE8CA6DED495EAF37A77D3 /* TargetType.swift */; }; + B277AE2A50A7C5F6B1BB9EDA5E1A97B8 /* Pods-Santander-TestTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 05E349DAE1260294B909EE4EF74E1CEE /* Pods-Santander-TestTests-dummy.m */; }; + B642F75A16A71ED991DB8A9DA65AD439 /* ValidationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2CAEA4F210F21FE93EF45818A02F417 /* ValidationType.swift */; }; + B6F6E4CC26451E91B59FAE0F6841DC1F /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D177E600FF1C01CD066F40D6382D326 /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C5A49CAAB41E281C266C192EADBE4EB7 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C07BF22DCF851C6D706E00B0A42FB20 /* Alamofire.framework */; }; + CD321D15156EF51F506D6183152B0E1C /* MoyaProvider+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A2ED6F7B3CFA4F255298631A58C1F07 /* MoyaProvider+Internal.swift */; }; + CF2583A28226176FEB4641223263EA61 /* Pods-Santander-Test-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 064B8C62456DB7AEFF1AEFF7FC9E39F7 /* Pods-Santander-Test-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0D3B6F6481841FB0B0DC61653217179 /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E3FF502E57806EA0CD9081AD93C5AA /* Response.swift */; }; + D348D88FE7939869DE08BC623976B321 /* Moya-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 77583ECA15C6CAB4141C36236B196E78 /* Moya-dummy.m */; }; + D3FA0AA634AAEA99AB3FABC36BB4958C /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35C50835FBA86353F949308EED6F612A /* SessionManager.swift */; }; + DD90258D5667ACC775417DE0E6EE6E77 /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 094C690491DDA461C923518CF2F7703A /* Result.framework */; }; + DE6AC2459484032563903F1BFCCD3756 /* MoyaProvider+Defaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26078909F2D94F4A9D407B76F68C22D7 /* MoyaProvider+Defaults.swift */; }; + E15EA05765812FBDA4F4428F7B6BBF6D /* Pods-Santander-TestUITests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CD5133133E24C110EF3769A9D93DE159 /* Pods-Santander-TestUITests-dummy.m */; }; + E7E895502A83EDA1534DC002A0267D8D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F070EA949AE56B80487099F22C5125E /* Foundation.framework */; }; + EB0DD8CEA1A69867A30267439C970440 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EDA62D55E9A520A3E5A1A50FECF1DCC /* Result.swift */; }; + EB65CF8FE56C314DBAF088FE713C9F88 /* MoyaProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = A04B902333768EF9878D6EF41FD96FFA /* MoyaProvider.swift */; }; + EDE7F1185C286E7634602E7AF01CBE04 /* Pods-Santander-Test-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D9FAA9914E2184A41D32A3A311B1860 /* Pods-Santander-Test-dummy.m */; }; + F44AA7A6E15EFE1927FC41B447D6EFD1 /* Cancellable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6FA33B0130EF206B07F85FCD0CBE29D /* Cancellable.swift */; }; + FF38A3D897A7C4228CAA5CCA71401376 /* MoyaError.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1FEB55905E4C9EC68E287055B7B6770 /* MoyaError.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 163B53CD54DFAC2FB432B35D33A310C1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = BAAB01D1BA82ABAE2B535579B77ED0CB; + remoteInfo = Moya; + }; + 6A4EDBBF08D44260DF0148CD85CDDA29 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4B0183450F95394DC0C49E326A20B42D; + remoteInfo = Result; + }; + 79691DEC924B1B4175DE0ABFDBD77664 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3383968E74B5371B20BB519B170DC7FD; + remoteInfo = Alamofire; + }; + 89B7C1F59BE279B9AC2C2AEA832F837B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3383968E74B5371B20BB519B170DC7FD; + remoteInfo = Alamofire; + }; + 969DCCA076A9B9D70065EA7CB5DB6A86 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EC79B224898B261BF083C0F8FD11ADD1; + remoteInfo = "Pods-Santander-Test"; + }; + BE2FE96C842D970D743B817C3C29C800 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EC79B224898B261BF083C0F8FD11ADD1; + remoteInfo = "Pods-Santander-Test"; + }; + C85CD4070663BDAECC082A8976AC210F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4B0183450F95394DC0C49E326A20B42D; + remoteInfo = Result; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 01B1EFA88DFF17128594F756F276848B /* Moya-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Moya-Info.plist"; sourceTree = ""; }; + 01B4720D4F3A72FEF3A1525F6D268E7A /* Pods-Santander-Test-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Santander-Test-frameworks.sh"; sourceTree = ""; }; + 0309512180EFC6494644C07CE11E5C35 /* Task.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Task.swift; path = Sources/Moya/Task.swift; sourceTree = ""; }; + 0548D5C388EF37983AE0E364CA62733C /* ResultProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResultProtocol.swift; path = Result/ResultProtocol.swift; sourceTree = ""; }; + 05E349DAE1260294B909EE4EF74E1CEE /* Pods-Santander-TestTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Santander-TestTests-dummy.m"; sourceTree = ""; }; + 063A17B847BD9121B4BD72D2C51FD499 /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; + 064B8C62456DB7AEFF1AEFF7FC9E39F7 /* Pods-Santander-Test-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Santander-Test-umbrella.h"; sourceTree = ""; }; + 08A81152EC75BCA30190A6265734A2E9 /* Pods-Santander-Test-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Santander-Test-acknowledgements.markdown"; sourceTree = ""; }; + 094C690491DDA461C923518CF2F7703A /* Result.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Result.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 0D065F57EE7B99663EBCAC6A38ED3CDB /* Moya.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Moya.xcconfig; sourceTree = ""; }; + 0EF0C3E50605E3094E74A8DF1CD06F4D /* Plugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Plugin.swift; path = Sources/Moya/Plugin.swift; sourceTree = ""; }; + 0EF857F359FEA09F5997368B821B525A /* Image.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Image.swift; path = Sources/Moya/Image.swift; sourceTree = ""; }; + 1112BA5594638444A8463D9E6BD25F8C /* Pods-Santander-Test.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-Test.debug.xcconfig"; sourceTree = ""; }; + 1410754A2D8AEF29CBAD3CF4DC4714BB /* Pods-Santander-TestUITests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Santander-TestUITests-umbrella.h"; sourceTree = ""; }; + 1FA9ACAB0572FE18DB0EFC4D0D489C7B /* Pods-Santander-TestTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Santander-TestTests-acknowledgements.markdown"; sourceTree = ""; }; + 26078909F2D94F4A9D407B76F68C22D7 /* MoyaProvider+Defaults.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "MoyaProvider+Defaults.swift"; path = "Sources/Moya/MoyaProvider+Defaults.swift"; sourceTree = ""; }; + 27E2BB89559B46B7D51C7E161F1DE20E /* Pods-Santander-TestUITests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-TestUITests-Info.plist"; sourceTree = ""; }; + 2D018F4EEA54F3999302E6B4D7566BA0 /* MultiTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultiTarget.swift; path = Sources/Moya/MultiTarget.swift; sourceTree = ""; }; + 2D177E600FF1C01CD066F40D6382D326 /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; + 2EDC3E1721E03EEA29977435C1047D55 /* Result.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Result.modulemap; sourceTree = ""; }; + 3177B689266F9D9900310F56859F5DB2 /* Pods-Santander-TestTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Santander-TestTests.modulemap"; sourceTree = ""; }; + 3183975AF49A75134AA84F96368196A0 /* Pods_Santander_TestUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_TestUITests.framework; path = "Pods-Santander-TestUITests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 322053D9E9993C774F41A2AA6CB500A7 /* Pods-Santander-Test-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-Test-acknowledgements.plist"; sourceTree = ""; }; + 34718F3B9548C70AF0984731DDCA7580 /* Pods-Santander-TestUITests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Santander-TestUITests-acknowledgements.markdown"; sourceTree = ""; }; + 35C50835FBA86353F949308EED6F612A /* SessionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionManager.swift; path = Source/SessionManager.swift; sourceTree = ""; }; + 36ABAA6328733C1E19C00313744E886D /* CredentialsPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CredentialsPlugin.swift; path = Sources/Moya/Plugins/CredentialsPlugin.swift; sourceTree = ""; }; + 36F1F488961C8E5E299238A153EA2E47 /* Result-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Result-dummy.m"; sourceTree = ""; }; + 38C8CC6AC0D8831E86EB702019DD876B /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = ""; }; + 39750B61804AC062742A24119EC2E975 /* Result.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Result.framework; path = Result.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3DFCCA5612D471096D3E6CB06E11A8A1 /* NoError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoError.swift; path = Result/NoError.swift; sourceTree = ""; }; + 3F070EA949AE56B80487099F22C5125E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 410C0B1C7DC9F546D2179AB1104602FA /* TaskDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskDelegate.swift; path = Source/TaskDelegate.swift; sourceTree = ""; }; + 4218171677FF5B70A4A3C9255B97334B /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; + 486423FBF4F6D69923EA68087B40145D /* Moya-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Moya-umbrella.h"; sourceTree = ""; }; + 4B573C06FE7D70CAA2DC1FBD76A3ACA4 /* AccessTokenPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AccessTokenPlugin.swift; path = Sources/Moya/Plugins/AccessTokenPlugin.swift; sourceTree = ""; }; + 4EDA62D55E9A520A3E5A1A50FECF1DCC /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = ""; }; + 500A039A12C1D4FC4DD1BA43A9523E91 /* Pods-Santander-Test.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-Test.release.xcconfig"; sourceTree = ""; }; + 5C07BF22DCF851C6D706E00B0A42FB20 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5D9FAA9914E2184A41D32A3A311B1860 /* Pods-Santander-Test-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Santander-Test-dummy.m"; sourceTree = ""; }; + 5E1CF47F8BD0FE48ABCF46917BFDB639 /* Pods-Santander-Test-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-Test-Info.plist"; sourceTree = ""; }; + 6009D670E92930F3D826B7B232BAE2DE /* Pods-Santander-TestTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-TestTests.debug.xcconfig"; sourceTree = ""; }; + 62EB5B7B963B8561D3E9D9EC8BBF5D04 /* Alamofire.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.xcconfig; sourceTree = ""; }; + 638AF6E4AD3D6CF6AED6C2F601C4A809 /* Pods-Santander-TestTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Santander-TestTests-umbrella.h"; sourceTree = ""; }; + 658F2480F5891FAA6FA5A66331A2946F /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; + 6A2ED6F7B3CFA4F255298631A58C1F07 /* MoyaProvider+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "MoyaProvider+Internal.swift"; path = "Sources/Moya/MoyaProvider+Internal.swift"; sourceTree = ""; }; + 6DAF1A64F92069C3B152877FD5A6AED4 /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = ""; }; + 70690E04D4EB2687B1B7ED9F44E774DB /* Pods_Santander_TestTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_TestTests.framework; path = "Pods-Santander-TestTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 72E40C3B6E66E684514A3B0403D07BFE /* Pods-Santander-TestUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-TestUITests.debug.xcconfig"; sourceTree = ""; }; + 77583ECA15C6CAB4141C36236B196E78 /* Moya-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Moya-dummy.m"; sourceTree = ""; }; + 7A8D526CFB9CE5AE19261B6D3A1AA350 /* Pods-Santander-TestUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-TestUITests.release.xcconfig"; sourceTree = ""; }; + 7B08ADF1DB9793E50DCFCDA34BC8F9D0 /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = ""; }; + 7BB3C1B4EC8DE23ACC831EB8007542F9 /* Result-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-umbrella.h"; sourceTree = ""; }; + 81F7E9A992BF8B6ABEE7FA99C9C7C6B9 /* Pods_Santander_Test.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_Test.framework; path = "Pods-Santander-Test.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 84502154C8C2AF78A05E640DBD4C988B /* Moya+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Moya+Alamofire.swift"; path = "Sources/Moya/Moya+Alamofire.swift"; sourceTree = ""; }; + 885894C091BBD2FEAF547C609ED1328E /* Result-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Result-Info.plist"; sourceTree = ""; }; + 89241B748558333716F95585985625E5 /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; + 892C053581140EDB2B3CC3F6572DA00E /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; + 8FB9751B9ED0EB30483A3B266FDB6D9B /* Result.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Result.xcconfig; sourceTree = ""; }; + 927E8C9E476EFC2CF905DE1750559D44 /* Moya.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Moya.modulemap; sourceTree = ""; }; + 94191699BE232A8DBDD811B0AD026417 /* NetworkActivityPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkActivityPlugin.swift; path = Sources/Moya/Plugins/NetworkActivityPlugin.swift; sourceTree = ""; }; + 96E9C4734FBA7EA2A9194AF8501C1F24 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Result/Result.swift; sourceTree = ""; }; + 9BF25C43C4334FB13BA73CE31CFA0217 /* Alamofire-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Alamofire-Info.plist"; sourceTree = ""; }; + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9EEE0610AE937C5E5EDDFDD2EEA9593C /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; + A04B902333768EF9878D6EF41FD96FFA /* MoyaProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MoyaProvider.swift; path = Sources/Moya/MoyaProvider.swift; sourceTree = ""; }; + A1FEB55905E4C9EC68E287055B7B6770 /* MoyaError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MoyaError.swift; path = Sources/Moya/MoyaError.swift; sourceTree = ""; }; + A8F452560381530925578BAAEF84C2DA /* URLRequest+Encoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URLRequest+Encoding.swift"; path = "Sources/Moya/URLRequest+Encoding.swift"; sourceTree = ""; }; + AA2C7453145C44C27B00E2138508290D /* Pods-Santander-Test.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Santander-Test.modulemap"; sourceTree = ""; }; + AC4D93CA417BB41439493900DF4F16CA /* Moya.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Moya.framework; path = Moya.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + AF919C3CFB95289B6176B202B768B1D9 /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; + B2CAEA4F210F21FE93EF45818A02F417 /* ValidationType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ValidationType.swift; path = Sources/Moya/ValidationType.swift; sourceTree = ""; }; + B2D49289BFD83B3A1582148FE3B1FBCD /* Pods-Santander-TestUITests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-TestUITests-acknowledgements.plist"; sourceTree = ""; }; + B2EA6444D261762B034016BA5A9C63E4 /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = ""; }; + B3E3FF502E57806EA0CD9081AD93C5AA /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Sources/Moya/Response.swift; sourceTree = ""; }; + B761F3BA75FD375B4E49B62F1C7DCB42 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; + BB5F1F3525DE8CA6DED495EAF37A77D3 /* TargetType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TargetType.swift; path = Sources/Moya/TargetType.swift; sourceTree = ""; }; + C073AD4D406BFA08E88B02A6BE1BE7DE /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; + C967B7CF391F94547B5C4EB9498FA43F /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Alamofire.framework; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CD31EB276D310E0FE4448A6B050E0BC9 /* URL+Moya.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URL+Moya.swift"; path = "Sources/Moya/URL+Moya.swift"; sourceTree = ""; }; + CD5133133E24C110EF3769A9D93DE159 /* Pods-Santander-TestUITests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Santander-TestUITests-dummy.m"; sourceTree = ""; }; + CD7B595FE6596FB636EB30207B2F428A /* Pods-Santander-TestUITests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Santander-TestUITests.modulemap"; sourceTree = ""; }; + D02D3D21156144D3F4B936265D29A56A /* Pods-Santander-TestTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-TestTests-acknowledgements.plist"; sourceTree = ""; }; + D90FE54F5D11CC69794D8BED8AA7D675 /* Pods-Santander-TestTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-TestTests-Info.plist"; sourceTree = ""; }; + D9D9C68F5756D1BE51CD956B435E241C /* NetworkLoggerPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkLoggerPlugin.swift; path = Sources/Moya/Plugins/NetworkLoggerPlugin.swift; sourceTree = ""; }; + DAFCFE4A4FFBF3F2142074DB7031979D /* Timeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeline.swift; path = Source/Timeline.swift; sourceTree = ""; }; + DEDB2C035D2F595C2996B53AE5EF7C79 /* Moya-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Moya-prefix.pch"; sourceTree = ""; }; + DFDF740459C685482B23F47F31D382D6 /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = ""; }; + E2F81118105D79994D3F729A6C2C1018 /* AnyEncodable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyEncodable.swift; path = Sources/Moya/AnyEncodable.swift; sourceTree = ""; }; + E6FA33B0130EF206B07F85FCD0CBE29D /* Cancellable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cancellable.swift; path = Sources/Moya/Cancellable.swift; sourceTree = ""; }; + EBB7F004FF9379B3A266E2FC3B227F28 /* Result-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-prefix.pch"; sourceTree = ""; }; + F3708A4B829835EBC49B784D84968130 /* Pods-Santander-TestTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-TestTests.release.xcconfig"; sourceTree = ""; }; + F56A169BF4DF40A3C798570E61D0F96F /* Endpoint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Endpoint.swift; path = Sources/Moya/Endpoint.swift; sourceTree = ""; }; + F9C09A7737BFFC871C754ECFF5CC30BC /* AnyError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyError.swift; path = Result/AnyError.swift; sourceTree = ""; }; + FB346279C0D72AD75464E0E6D71E93D5 /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Alamofire.modulemap; sourceTree = ""; }; + FC5DA261F34E2228A8D9AC5907C65A54 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Sources/Moya/MultipartFormData.swift; sourceTree = ""; }; + FD44B3D15CD8661524A3CEB8348DCC12 /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 48ACF90A780D9991A643D8E81E6BEAEA /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C5A49CAAB41E281C266C192EADBE4EB7 /* Alamofire.framework in Frameworks */, + 11F309B46EE6B36CB281409A579996C0 /* Foundation.framework in Frameworks */, + DD90258D5667ACC775417DE0E6EE6E77 /* Result.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6ABC78A038A90F8F48964B9677372CB6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 09067C2692931E434234858ADBC4C6D6 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 74A5C977730E6B86F13C3B8BFCBF7937 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 09EB6E0388043CD7B2B1089D446310E3 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B88C9F2B38E16034967AC3610B938A97 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E7E895502A83EDA1534DC002A0267D8D /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D22CBC0AEFD5C611C593833B6DC007E7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7A6FFEFDCF07683D5E2976077212FD27 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F1626ADC3A7EC435D2722B3173355D36 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3BD1DAFE1F3E6C9E4EB0F2099B6D6FA2 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0C037B434DE905FE89E13428E2790CBF /* Core */ = { + isa = PBXGroup; + children = ( + 4B573C06FE7D70CAA2DC1FBD76A3ACA4 /* AccessTokenPlugin.swift */, + E2F81118105D79994D3F729A6C2C1018 /* AnyEncodable.swift */, + E6FA33B0130EF206B07F85FCD0CBE29D /* Cancellable.swift */, + 36ABAA6328733C1E19C00313744E886D /* CredentialsPlugin.swift */, + F56A169BF4DF40A3C798570E61D0F96F /* Endpoint.swift */, + 0EF857F359FEA09F5997368B821B525A /* Image.swift */, + 84502154C8C2AF78A05E640DBD4C988B /* Moya+Alamofire.swift */, + A1FEB55905E4C9EC68E287055B7B6770 /* MoyaError.swift */, + A04B902333768EF9878D6EF41FD96FFA /* MoyaProvider.swift */, + 26078909F2D94F4A9D407B76F68C22D7 /* MoyaProvider+Defaults.swift */, + 6A2ED6F7B3CFA4F255298631A58C1F07 /* MoyaProvider+Internal.swift */, + FC5DA261F34E2228A8D9AC5907C65A54 /* MultipartFormData.swift */, + 2D018F4EEA54F3999302E6B4D7566BA0 /* MultiTarget.swift */, + 94191699BE232A8DBDD811B0AD026417 /* NetworkActivityPlugin.swift */, + D9D9C68F5756D1BE51CD956B435E241C /* NetworkLoggerPlugin.swift */, + 0EF0C3E50605E3094E74A8DF1CD06F4D /* Plugin.swift */, + B3E3FF502E57806EA0CD9081AD93C5AA /* Response.swift */, + BB5F1F3525DE8CA6DED495EAF37A77D3 /* TargetType.swift */, + 0309512180EFC6494644C07CE11E5C35 /* Task.swift */, + CD31EB276D310E0FE4448A6B050E0BC9 /* URL+Moya.swift */, + A8F452560381530925578BAAEF84C2DA /* URLRequest+Encoding.swift */, + B2CAEA4F210F21FE93EF45818A02F417 /* ValidationType.swift */, + ); + name = Core; + sourceTree = ""; + }; + 25F5F2148F4D226A2AD168A2856B6755 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5C07BF22DCF851C6D706E00B0A42FB20 /* Alamofire.framework */, + 094C690491DDA461C923518CF2F7703A /* Result.framework */, + AA3291B21ACE70ACB64FA7F190686A7D /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + 388B1446708CD51FD4B33C245380B246 /* Support Files */ = { + isa = PBXGroup; + children = ( + 2EDC3E1721E03EEA29977435C1047D55 /* Result.modulemap */, + 8FB9751B9ED0EB30483A3B266FDB6D9B /* Result.xcconfig */, + 36F1F488961C8E5E299238A153EA2E47 /* Result-dummy.m */, + 885894C091BBD2FEAF547C609ED1328E /* Result-Info.plist */, + EBB7F004FF9379B3A266E2FC3B227F28 /* Result-prefix.pch */, + 7BB3C1B4EC8DE23ACC831EB8007542F9 /* Result-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/Result"; + sourceTree = ""; + }; + 4E62EEA8F485FE09ADA73F5E5D814811 /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + BA0EF3892F9082EED2C4A464C1FF099B /* Pods-Santander-Test */, + 863C6216E2FC106570AB6ECF1BDDC850 /* Pods-Santander-TestTests */, + A9078A16582838D0FA5E20E72F39180F /* Pods-Santander-TestUITests */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; + 6D1EB7BB79B11A7DC73A91082D034FE8 /* Pods */ = { + isa = PBXGroup; + children = ( + C519E7B81C11DCC090CDF694CD4996A3 /* Alamofire */, + CE0FAE689FD54B1A39441C09DFB830DB /* Moya */, + 6FAC8A4841B0CB68EC3F528013743783 /* Result */, + ); + name = Pods; + sourceTree = ""; + }; + 6FAC8A4841B0CB68EC3F528013743783 /* Result */ = { + isa = PBXGroup; + children = ( + F9C09A7737BFFC871C754ECFF5CC30BC /* AnyError.swift */, + 3DFCCA5612D471096D3E6CB06E11A8A1 /* NoError.swift */, + 96E9C4734FBA7EA2A9194AF8501C1F24 /* Result.swift */, + 0548D5C388EF37983AE0E364CA62733C /* ResultProtocol.swift */, + 388B1446708CD51FD4B33C245380B246 /* Support Files */, + ); + name = Result; + path = Result; + sourceTree = ""; + }; + 834B34AB950E8E82423DC068B445BF2E /* Support Files */ = { + isa = PBXGroup; + children = ( + FB346279C0D72AD75464E0E6D71E93D5 /* Alamofire.modulemap */, + 62EB5B7B963B8561D3E9D9EC8BBF5D04 /* Alamofire.xcconfig */, + 063A17B847BD9121B4BD72D2C51FD499 /* Alamofire-dummy.m */, + 9BF25C43C4334FB13BA73CE31CFA0217 /* Alamofire-Info.plist */, + 89241B748558333716F95585985625E5 /* Alamofire-prefix.pch */, + 2D177E600FF1C01CD066F40D6382D326 /* Alamofire-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/Alamofire"; + sourceTree = ""; + }; + 863C6216E2FC106570AB6ECF1BDDC850 /* Pods-Santander-TestTests */ = { + isa = PBXGroup; + children = ( + 3177B689266F9D9900310F56859F5DB2 /* Pods-Santander-TestTests.modulemap */, + 1FA9ACAB0572FE18DB0EFC4D0D489C7B /* Pods-Santander-TestTests-acknowledgements.markdown */, + D02D3D21156144D3F4B936265D29A56A /* Pods-Santander-TestTests-acknowledgements.plist */, + 05E349DAE1260294B909EE4EF74E1CEE /* Pods-Santander-TestTests-dummy.m */, + D90FE54F5D11CC69794D8BED8AA7D675 /* Pods-Santander-TestTests-Info.plist */, + 638AF6E4AD3D6CF6AED6C2F601C4A809 /* Pods-Santander-TestTests-umbrella.h */, + 6009D670E92930F3D826B7B232BAE2DE /* Pods-Santander-TestTests.debug.xcconfig */, + F3708A4B829835EBC49B784D84968130 /* Pods-Santander-TestTests.release.xcconfig */, + ); + name = "Pods-Santander-TestTests"; + path = "Target Support Files/Pods-Santander-TestTests"; + sourceTree = ""; + }; + A9078A16582838D0FA5E20E72F39180F /* Pods-Santander-TestUITests */ = { + isa = PBXGroup; + children = ( + CD7B595FE6596FB636EB30207B2F428A /* Pods-Santander-TestUITests.modulemap */, + 34718F3B9548C70AF0984731DDCA7580 /* Pods-Santander-TestUITests-acknowledgements.markdown */, + B2D49289BFD83B3A1582148FE3B1FBCD /* Pods-Santander-TestUITests-acknowledgements.plist */, + CD5133133E24C110EF3769A9D93DE159 /* Pods-Santander-TestUITests-dummy.m */, + 27E2BB89559B46B7D51C7E161F1DE20E /* Pods-Santander-TestUITests-Info.plist */, + 1410754A2D8AEF29CBAD3CF4DC4714BB /* Pods-Santander-TestUITests-umbrella.h */, + 72E40C3B6E66E684514A3B0403D07BFE /* Pods-Santander-TestUITests.debug.xcconfig */, + 7A8D526CFB9CE5AE19261B6D3A1AA350 /* Pods-Santander-TestUITests.release.xcconfig */, + ); + name = "Pods-Santander-TestUITests"; + path = "Target Support Files/Pods-Santander-TestUITests"; + sourceTree = ""; + }; + AA3291B21ACE70ACB64FA7F190686A7D /* iOS */ = { + isa = PBXGroup; + children = ( + 3F070EA949AE56B80487099F22C5125E /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; + BA0EF3892F9082EED2C4A464C1FF099B /* Pods-Santander-Test */ = { + isa = PBXGroup; + children = ( + AA2C7453145C44C27B00E2138508290D /* Pods-Santander-Test.modulemap */, + 08A81152EC75BCA30190A6265734A2E9 /* Pods-Santander-Test-acknowledgements.markdown */, + 322053D9E9993C774F41A2AA6CB500A7 /* Pods-Santander-Test-acknowledgements.plist */, + 5D9FAA9914E2184A41D32A3A311B1860 /* Pods-Santander-Test-dummy.m */, + 01B4720D4F3A72FEF3A1525F6D268E7A /* Pods-Santander-Test-frameworks.sh */, + 5E1CF47F8BD0FE48ABCF46917BFDB639 /* Pods-Santander-Test-Info.plist */, + 064B8C62456DB7AEFF1AEFF7FC9E39F7 /* Pods-Santander-Test-umbrella.h */, + 1112BA5594638444A8463D9E6BD25F8C /* Pods-Santander-Test.debug.xcconfig */, + 500A039A12C1D4FC4DD1BA43A9523E91 /* Pods-Santander-Test.release.xcconfig */, + ); + name = "Pods-Santander-Test"; + path = "Target Support Files/Pods-Santander-Test"; + sourceTree = ""; + }; + C519E7B81C11DCC090CDF694CD4996A3 /* Alamofire */ = { + isa = PBXGroup; + children = ( + 6DAF1A64F92069C3B152877FD5A6AED4 /* AFError.swift */, + 4218171677FF5B70A4A3C9255B97334B /* Alamofire.swift */, + 38C8CC6AC0D8831E86EB702019DD876B /* DispatchQueue+Alamofire.swift */, + B761F3BA75FD375B4E49B62F1C7DCB42 /* MultipartFormData.swift */, + FD44B3D15CD8661524A3CEB8348DCC12 /* NetworkReachabilityManager.swift */, + DFDF740459C685482B23F47F31D382D6 /* Notifications.swift */, + AF919C3CFB95289B6176B202B768B1D9 /* ParameterEncoding.swift */, + 9EEE0610AE937C5E5EDDFDD2EEA9593C /* Request.swift */, + 658F2480F5891FAA6FA5A66331A2946F /* Response.swift */, + 892C053581140EDB2B3CC3F6572DA00E /* ResponseSerialization.swift */, + 4EDA62D55E9A520A3E5A1A50FECF1DCC /* Result.swift */, + B2EA6444D261762B034016BA5A9C63E4 /* ServerTrustPolicy.swift */, + 7B08ADF1DB9793E50DCFCDA34BC8F9D0 /* SessionDelegate.swift */, + 35C50835FBA86353F949308EED6F612A /* SessionManager.swift */, + 410C0B1C7DC9F546D2179AB1104602FA /* TaskDelegate.swift */, + DAFCFE4A4FFBF3F2142074DB7031979D /* Timeline.swift */, + C073AD4D406BFA08E88B02A6BE1BE7DE /* Validation.swift */, + 834B34AB950E8E82423DC068B445BF2E /* Support Files */, + ); + name = Alamofire; + path = Alamofire; + sourceTree = ""; + }; + C9474AC414BAF104D5CFD7357B467C05 /* Products */ = { + isa = PBXGroup; + children = ( + C967B7CF391F94547B5C4EB9498FA43F /* Alamofire.framework */, + AC4D93CA417BB41439493900DF4F16CA /* Moya.framework */, + 81F7E9A992BF8B6ABEE7FA99C9C7C6B9 /* Pods_Santander_Test.framework */, + 70690E04D4EB2687B1B7ED9F44E774DB /* Pods_Santander_TestTests.framework */, + 3183975AF49A75134AA84F96368196A0 /* Pods_Santander_TestUITests.framework */, + 39750B61804AC062742A24119EC2E975 /* Result.framework */, + ); + name = Products; + sourceTree = ""; + }; + CE0FAE689FD54B1A39441C09DFB830DB /* Moya */ = { + isa = PBXGroup; + children = ( + 0C037B434DE905FE89E13428E2790CBF /* Core */, + D31B79837310DF134ACF84D3B297AB4A /* Support Files */, + ); + name = Moya; + path = Moya; + sourceTree = ""; + }; + CF1408CF629C7361332E53B88F7BD30C = { + isa = PBXGroup; + children = ( + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + 25F5F2148F4D226A2AD168A2856B6755 /* Frameworks */, + 6D1EB7BB79B11A7DC73A91082D034FE8 /* Pods */, + C9474AC414BAF104D5CFD7357B467C05 /* Products */, + 4E62EEA8F485FE09ADA73F5E5D814811 /* Targets Support Files */, + ); + sourceTree = ""; + }; + D31B79837310DF134ACF84D3B297AB4A /* Support Files */ = { + isa = PBXGroup; + children = ( + 927E8C9E476EFC2CF905DE1750559D44 /* Moya.modulemap */, + 0D065F57EE7B99663EBCAC6A38ED3CDB /* Moya.xcconfig */, + 77583ECA15C6CAB4141C36236B196E78 /* Moya-dummy.m */, + 01B1EFA88DFF17128594F756F276848B /* Moya-Info.plist */, + DEDB2C035D2F595C2996B53AE5EF7C79 /* Moya-prefix.pch */, + 486423FBF4F6D69923EA68087B40145D /* Moya-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/Moya"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 23D70D9651451F43E7E8CC1A87B4B7E9 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B6F6E4CC26451E91B59FAE0F6841DC1F /* Alamofire-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 24E0A5A25C6279C4B63841C53779093E /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 9774AB3F3E8B65D7F1A644CCA6254D03 /* Pods-Santander-TestTests-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 803D1C8389DC36A273C1596A2371062C /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 7BEFFCD672FD28B3D77927E392412FB9 /* Result-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 838FDCE6748E1A68E1C0C4C39D6C400A /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 6CA1BEBC175680F7D37A9C47917203B1 /* Pods-Santander-TestUITests-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B5622D92125660D78569596541EAF63C /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + CF2583A28226176FEB4641223263EA61 /* Pods-Santander-Test-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D7A6588CEA919559E5AE0CF2E072388A /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 6E04C92190FD45451E6690122ABF62E9 /* Moya-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 3383968E74B5371B20BB519B170DC7FD /* Alamofire */ = { + isa = PBXNativeTarget; + buildConfigurationList = E87124444A44B7DB55208E7FEC21D331 /* Build configuration list for PBXNativeTarget "Alamofire" */; + buildPhases = ( + 23D70D9651451F43E7E8CC1A87B4B7E9 /* Headers */, + A1C8B029F600160149A2404C342F6E50 /* Sources */, + F1626ADC3A7EC435D2722B3173355D36 /* Frameworks */, + 28FF73341543B6F0A7DF3C20CFFEA0AA /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Alamofire; + productName = Alamofire; + productReference = C967B7CF391F94547B5C4EB9498FA43F /* Alamofire.framework */; + productType = "com.apple.product-type.framework"; + }; + 4B0183450F95394DC0C49E326A20B42D /* Result */ = { + isa = PBXNativeTarget; + buildConfigurationList = A6D3B09EB62546694ADEC9AC5F26496A /* Build configuration list for PBXNativeTarget "Result" */; + buildPhases = ( + 803D1C8389DC36A273C1596A2371062C /* Headers */, + 83F0B699A09857193A6E75CBAD21221D /* Sources */, + 6ABC78A038A90F8F48964B9677372CB6 /* Frameworks */, + 3D85A55B40193DED966CBFD7E0EADA17 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Result; + productName = Result; + productReference = 39750B61804AC062742A24119EC2E975 /* Result.framework */; + productType = "com.apple.product-type.framework"; + }; + BAAB01D1BA82ABAE2B535579B77ED0CB /* Moya */ = { + isa = PBXNativeTarget; + buildConfigurationList = 79E494A7493F9AB9FE36E8AF4802FA6F /* Build configuration list for PBXNativeTarget "Moya" */; + buildPhases = ( + D7A6588CEA919559E5AE0CF2E072388A /* Headers */, + 87B74512B0978B8E0641A0FB4AAC024E /* Sources */, + 48ACF90A780D9991A643D8E81E6BEAEA /* Frameworks */, + D2F8DBB6DF3B60A84C0D1854859C66CF /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 092F8CA03782F6E3D7258BA6B8433776 /* PBXTargetDependency */, + E88EF6EBC52E2364458D88C21074D8D1 /* PBXTargetDependency */, + ); + name = Moya; + productName = Moya; + productReference = AC4D93CA417BB41439493900DF4F16CA /* Moya.framework */; + productType = "com.apple.product-type.framework"; + }; + C0E89653A2AC6FA0A38278FEF9AF42FC /* Pods-Santander-TestUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8B48762D66F669B6A88924046CAF966B /* Build configuration list for PBXNativeTarget "Pods-Santander-TestUITests" */; + buildPhases = ( + 838FDCE6748E1A68E1C0C4C39D6C400A /* Headers */, + C4ADDC2FC642C7EE9718A102043F14EC /* Sources */, + B88C9F2B38E16034967AC3610B938A97 /* Frameworks */, + 8A69BC4AB82D9DB217AD832599112A02 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + BF10BB821AEF1A2F5B1486B70CCE5CDD /* PBXTargetDependency */, + ); + name = "Pods-Santander-TestUITests"; + productName = "Pods-Santander-TestUITests"; + productReference = 3183975AF49A75134AA84F96368196A0 /* Pods_Santander_TestUITests.framework */; + productType = "com.apple.product-type.framework"; + }; + C27DC25A308B276373505823128CD197 /* Pods-Santander-TestTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9294D0D9CC1AFEABCE96CA7EB0C2884E /* Build configuration list for PBXNativeTarget "Pods-Santander-TestTests" */; + buildPhases = ( + 24E0A5A25C6279C4B63841C53779093E /* Headers */, + 05AF40A104E98201AAADCA2B4933EDD2 /* Sources */, + D22CBC0AEFD5C611C593833B6DC007E7 /* Frameworks */, + D5C5D83CFC472CA90759510466920ACB /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 42DD3FD355AAB38C566F0BC087083F3F /* PBXTargetDependency */, + ); + name = "Pods-Santander-TestTests"; + productName = "Pods-Santander-TestTests"; + productReference = 70690E04D4EB2687B1B7ED9F44E774DB /* Pods_Santander_TestTests.framework */; + productType = "com.apple.product-type.framework"; + }; + EC79B224898B261BF083C0F8FD11ADD1 /* Pods-Santander-Test */ = { + isa = PBXNativeTarget; + buildConfigurationList = BD2788D90C3347BEEDDD2FAAA3FFD8CC /* Build configuration list for PBXNativeTarget "Pods-Santander-Test" */; + buildPhases = ( + B5622D92125660D78569596541EAF63C /* Headers */, + FA84ED07CB3D71297E049DBAE2811EB5 /* Sources */, + 74A5C977730E6B86F13C3B8BFCBF7937 /* Frameworks */, + CC9C92EA25181C5FE53016E16FE09CE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + C0F2CF2B64DB55F1756AB1025B6BEC73 /* PBXTargetDependency */, + 196A00474A67B95B827B45CB6F0EDFDA /* PBXTargetDependency */, + 6746A2B77FA4F23E4DE0AEA00B8B90FA /* PBXTargetDependency */, + ); + name = "Pods-Santander-Test"; + productName = "Pods-Santander-Test"; + productReference = 81F7E9A992BF8B6ABEE7FA99C9C7C6B9 /* Pods_Santander_Test.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0930; + LastUpgradeCheck = 0930; + }; + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = CF1408CF629C7361332E53B88F7BD30C; + productRefGroup = C9474AC414BAF104D5CFD7357B467C05 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 3383968E74B5371B20BB519B170DC7FD /* Alamofire */, + BAAB01D1BA82ABAE2B535579B77ED0CB /* Moya */, + EC79B224898B261BF083C0F8FD11ADD1 /* Pods-Santander-Test */, + C27DC25A308B276373505823128CD197 /* Pods-Santander-TestTests */, + C0E89653A2AC6FA0A38278FEF9AF42FC /* Pods-Santander-TestUITests */, + 4B0183450F95394DC0C49E326A20B42D /* Result */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 28FF73341543B6F0A7DF3C20CFFEA0AA /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3D85A55B40193DED966CBFD7E0EADA17 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8A69BC4AB82D9DB217AD832599112A02 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + CC9C92EA25181C5FE53016E16FE09CE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D2F8DBB6DF3B60A84C0D1854859C66CF /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D5C5D83CFC472CA90759510466920ACB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 05AF40A104E98201AAADCA2B4933EDD2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B277AE2A50A7C5F6B1BB9EDA5E1A97B8 /* Pods-Santander-TestTests-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 83F0B699A09857193A6E75CBAD21221D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6E64C6F2AF1EBF3B28AD5CC90D8D3E2F /* AnyError.swift in Sources */, + 4A42935426AB30760B47ADDE1BB1C39D /* NoError.swift in Sources */, + 5D53EA65636A0B296726611E3C491CF7 /* Result-dummy.m in Sources */, + 80111F83B0BCA39D24985D0F122F0001 /* Result.swift in Sources */, + 6AAA002A59C5011CB71E9B83E6803C6D /* ResultProtocol.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 87B74512B0978B8E0641A0FB4AAC024E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9EBD0113F23A6FBB0CDC07F66E77ED81 /* AccessTokenPlugin.swift in Sources */, + 68BB9452F3012913BABE12BE69C74785 /* AnyEncodable.swift in Sources */, + F44AA7A6E15EFE1927FC41B447D6EFD1 /* Cancellable.swift in Sources */, + 778F9B551E5A346DA84BC46CBFFA1B22 /* CredentialsPlugin.swift in Sources */, + 1B131595178FA51FC0B7C2FB12ED5ADB /* Endpoint.swift in Sources */, + 313895F247F6C04661152D6D4948C100 /* Image.swift in Sources */, + A266363126A240900FCC5CCFE1EDB8BE /* Moya+Alamofire.swift in Sources */, + D348D88FE7939869DE08BC623976B321 /* Moya-dummy.m in Sources */, + FF38A3D897A7C4228CAA5CCA71401376 /* MoyaError.swift in Sources */, + DE6AC2459484032563903F1BFCCD3756 /* MoyaProvider+Defaults.swift in Sources */, + CD321D15156EF51F506D6183152B0E1C /* MoyaProvider+Internal.swift in Sources */, + EB65CF8FE56C314DBAF088FE713C9F88 /* MoyaProvider.swift in Sources */, + 64C35953B1CEDA2F929331C7626611CC /* MultipartFormData.swift in Sources */, + AB037232146E78285C5B8F6394D1A658 /* MultiTarget.swift in Sources */, + 5D97ACC58BF197F2426B2C6853142DF5 /* NetworkActivityPlugin.swift in Sources */, + 1C496E2C46E94DECD60F0B1C7CA511E4 /* NetworkLoggerPlugin.swift in Sources */, + 6499810827FC895E23B2E30263617389 /* Plugin.swift in Sources */, + D0D3B6F6481841FB0B0DC61653217179 /* Response.swift in Sources */, + B1EB1CD6804A333102774EA1DE9F1B94 /* TargetType.swift in Sources */, + 225E880F1459B17432E7DF840D03A3E7 /* Task.swift in Sources */, + 31895E3CF848D69123E3A6DDEDBBF86F /* URL+Moya.swift in Sources */, + 88AE9E6392539A558E0F4417775EEA91 /* URLRequest+Encoding.swift in Sources */, + B642F75A16A71ED991DB8A9DA65AD439 /* ValidationType.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A1C8B029F600160149A2404C342F6E50 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7E3538A6992A38276764936A9733493D /* AFError.swift in Sources */, + 772911DA6E33D1CBBC30131B7C8BDBB3 /* Alamofire-dummy.m in Sources */, + 0A39AF55285A3A4F7CBABB6D822FA4A3 /* Alamofire.swift in Sources */, + 3E0749AF6C51BCF0E4A41CF1D6A76FED /* DispatchQueue+Alamofire.swift in Sources */, + AEA829AB1A8AF2AD077A808AED6B178A /* MultipartFormData.swift in Sources */, + 73AB05789A4982944AF68DBD013E3EB7 /* NetworkReachabilityManager.swift in Sources */, + 1D29D2ACADF961F69D32B06FA6A09E28 /* Notifications.swift in Sources */, + 700D3D95AF9520CB227846DFD943A2DA /* ParameterEncoding.swift in Sources */, + 355C18EEC82624A06A6CC93965258E33 /* Request.swift in Sources */, + 059D92B7BBFBEC53E9A3B6E11C5C3B3A /* Response.swift in Sources */, + 6EFD003458AE7F689DEA720A2030C261 /* ResponseSerialization.swift in Sources */, + EB0DD8CEA1A69867A30267439C970440 /* Result.swift in Sources */, + 8D2A6A90A6DDAF75EA52D471258545CC /* ServerTrustPolicy.swift in Sources */, + A1EC41966B261DCE460BCDE5124A1DBE /* SessionDelegate.swift in Sources */, + D3FA0AA634AAEA99AB3FABC36BB4958C /* SessionManager.swift in Sources */, + 77E8F0EB9FFBE2E3EB0C77095C644606 /* TaskDelegate.swift in Sources */, + 60B6C2A003864AAD3A426448152F67BE /* Timeline.swift in Sources */, + AA56769D8733D3F3E7976742D5ABA998 /* Validation.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C4ADDC2FC642C7EE9718A102043F14EC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E15EA05765812FBDA4F4428F7B6BBF6D /* Pods-Santander-TestUITests-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FA84ED07CB3D71297E049DBAE2811EB5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EDE7F1185C286E7634602E7AF01CBE04 /* Pods-Santander-Test-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 092F8CA03782F6E3D7258BA6B8433776 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Alamofire; + target = 3383968E74B5371B20BB519B170DC7FD /* Alamofire */; + targetProxy = 89B7C1F59BE279B9AC2C2AEA832F837B /* PBXContainerItemProxy */; + }; + 196A00474A67B95B827B45CB6F0EDFDA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Moya; + target = BAAB01D1BA82ABAE2B535579B77ED0CB /* Moya */; + targetProxy = 163B53CD54DFAC2FB432B35D33A310C1 /* PBXContainerItemProxy */; + }; + 42DD3FD355AAB38C566F0BC087083F3F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-Santander-Test"; + target = EC79B224898B261BF083C0F8FD11ADD1 /* Pods-Santander-Test */; + targetProxy = 969DCCA076A9B9D70065EA7CB5DB6A86 /* PBXContainerItemProxy */; + }; + 6746A2B77FA4F23E4DE0AEA00B8B90FA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Result; + target = 4B0183450F95394DC0C49E326A20B42D /* Result */; + targetProxy = C85CD4070663BDAECC082A8976AC210F /* PBXContainerItemProxy */; + }; + BF10BB821AEF1A2F5B1486B70CCE5CDD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-Santander-Test"; + target = EC79B224898B261BF083C0F8FD11ADD1 /* Pods-Santander-Test */; + targetProxy = BE2FE96C842D970D743B817C3C29C800 /* PBXContainerItemProxy */; + }; + C0F2CF2B64DB55F1756AB1025B6BEC73 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Alamofire; + target = 3383968E74B5371B20BB519B170DC7FD /* Alamofire */; + targetProxy = 79691DEC924B1B4175DE0ABFDBD77664 /* PBXContainerItemProxy */; + }; + E88EF6EBC52E2364458D88C21074D8D1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Result; + target = 4B0183450F95394DC0C49E326A20B42D /* Result */; + targetProxy = 6A4EDBBF08D44260DF0148CD85CDDA29 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 0FB9D4D9E1E618B6D43E20521441EB25 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 62EB5B7B963B8561D3E9D9EC8BBF5D04 /* Alamofire.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/Alamofire/Alamofire-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Alamofire/Alamofire-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/Alamofire/Alamofire.modulemap"; + PRODUCT_MODULE_NAME = Alamofire; + PRODUCT_NAME = Alamofire; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 16419DA1024545FD12B5A373477D6581 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 62EB5B7B963B8561D3E9D9EC8BBF5D04 /* Alamofire.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/Alamofire/Alamofire-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Alamofire/Alamofire-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/Alamofire/Alamofire.modulemap"; + PRODUCT_MODULE_NAME = Alamofire; + PRODUCT_NAME = Alamofire; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 382A284A18BD923F7460324F5D3D0A8A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = F3708A4B829835EBC49B784D84968130 /* Pods-Santander-TestTests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 3E7E7BED862F6CC840946052B78589E4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 72E40C3B6E66E684514A3B0403D07BFE /* Pods-Santander-TestUITests.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 5766B93710ABECA7EA3861D2C3F8B253 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1112BA5594638444A8463D9E6BD25F8C /* Pods-Santander-Test.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 6C1A5B8955D03EDCFC5F5853168E6D3B /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8FB9751B9ED0EB30483A3B266FDB6D9B /* Result.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/Result/Result-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Result/Result-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/Result/Result.modulemap"; + PRODUCT_MODULE_NAME = Result; + PRODUCT_NAME = Result; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 74D317F1EF69F2113B155C077B84BBEE /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7A8D526CFB9CE5AE19261B6D3A1AA350 /* Pods-Santander-TestUITests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 7FA1AE79A76BE2186F4AC4D3410315BB /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6009D670E92930F3D826B7B232BAE2DE /* Pods-Santander-TestTests.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 83573944FBFCC88348188CE22B707DAC /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0D065F57EE7B99663EBCAC6A38ED3CDB /* Moya.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/Moya/Moya-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Moya/Moya-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/Moya/Moya.modulemap"; + PRODUCT_MODULE_NAME = Moya; + PRODUCT_NAME = Moya; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 8F53FFB0E0219B5CD9F961E85581D99E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 500A039A12C1D4FC4DD1BA43A9523E91 /* Pods-Santander-Test.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + A105C1752A0A49B30ED621B71E226CDB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=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 = 12.1; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 4.2; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Release; + }; + C1391485F05B41BD35738A433056B7FA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_DEBUG=1", + "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 = 12.1; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 4.2; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + D383535440703B0108BB82C0AD47665A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8FB9751B9ED0EB30483A3B266FDB6D9B /* Result.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/Result/Result-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Result/Result-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/Result/Result.modulemap"; + PRODUCT_MODULE_NAME = Result; + PRODUCT_NAME = Result; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + DBC53AACE64A36F9A22795C6E178A55E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0D065F57EE7B99663EBCAC6A38ED3CDB /* Moya.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/Moya/Moya-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Moya/Moya-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/Moya/Moya.modulemap"; + PRODUCT_MODULE_NAME = Moya; + PRODUCT_NAME = Moya; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C1391485F05B41BD35738A433056B7FA /* Debug */, + A105C1752A0A49B30ED621B71E226CDB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 79E494A7493F9AB9FE36E8AF4802FA6F /* Build configuration list for PBXNativeTarget "Moya" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 83573944FBFCC88348188CE22B707DAC /* Debug */, + DBC53AACE64A36F9A22795C6E178A55E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8B48762D66F669B6A88924046CAF966B /* Build configuration list for PBXNativeTarget "Pods-Santander-TestUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3E7E7BED862F6CC840946052B78589E4 /* Debug */, + 74D317F1EF69F2113B155C077B84BBEE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9294D0D9CC1AFEABCE96CA7EB0C2884E /* Build configuration list for PBXNativeTarget "Pods-Santander-TestTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7FA1AE79A76BE2186F4AC4D3410315BB /* Debug */, + 382A284A18BD923F7460324F5D3D0A8A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A6D3B09EB62546694ADEC9AC5F26496A /* Build configuration list for PBXNativeTarget "Result" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6C1A5B8955D03EDCFC5F5853168E6D3B /* Debug */, + D383535440703B0108BB82C0AD47665A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + BD2788D90C3347BEEDDD2FAAA3FFD8CC /* Build configuration list for PBXNativeTarget "Pods-Santander-Test" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5766B93710ABECA7EA3861D2C3F8B253 /* Debug */, + 8F53FFB0E0219B5CD9F961E85581D99E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + E87124444A44B7DB55208E7FEC21D331 /* Build configuration list for PBXNativeTarget "Alamofire" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 16419DA1024545FD12B5A373477D6581 /* Debug */, + 0FB9D4D9E1E618B6D43E20521441EB25 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; +} diff --git a/Santander-Test/Pods/Result/LICENSE b/Santander-Test/Pods/Result/LICENSE new file mode 100644 index 00000000..3026ee19 --- /dev/null +++ b/Santander-Test/Pods/Result/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Rob Rix + +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. \ No newline at end of file diff --git a/Santander-Test/Pods/Result/README.md b/Santander-Test/Pods/Result/README.md new file mode 100644 index 00000000..c030316c --- /dev/null +++ b/Santander-Test/Pods/Result/README.md @@ -0,0 +1,112 @@ +# Result + +[![Build Status](https://travis-ci.org/antitypical/Result.svg?branch=master)](https://travis-ci.org/antitypical/Result) +[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) +[![CocoaPods](https://img.shields.io/cocoapods/v/Result.svg)](https://cocoapods.org/) +[![Reference Status](https://www.versioneye.com/objective-c/result/reference_badge.svg?style=flat)](https://www.versioneye.com/objective-c/result/references) + +This is a Swift µframework providing `Result`. + +`Result` values are either successful (wrapping `Value`) or failed (wrapping `Error`). This is similar to Swift’s native `Optional` type: `success` is like `some`, and `failure` is like `none` except with an associated `Error` value. The addition of an associated `Error` allows errors to be passed along for logging or displaying to the user. + +Using this µframework instead of rolling your own `Result` type allows you to easily interface with other frameworks that also use `Result`. + +## Use + +Use `Result` whenever an operation has the possibility of failure. Consider the following example of a function that tries to extract a `String` for a given key from a JSON `Dictionary`. + +```swift +typealias JSONObject = [String: Any] + +enum JSONError: Error { + case noSuchKey(String) + case typeMismatch +} + +func stringForKey(json: JSONObject, key: String) -> Result { + guard let value = json[key] else { + return .failure(.noSuchKey(key)) + } + + guard let value = value as? String else { + return .failure(.typeMismatch) + } + + return .success(value) +} +``` + +This function provides a more robust wrapper around the default subscripting provided by `Dictionary`. Rather than return `Any?`, it returns a `Result` that either contains the `String` value for the given key, or an `ErrorType` detailing what went wrong. + +One simple way to handle a `Result` is to deconstruct it using a `switch` statement. + +```swift +switch stringForKey(json, key: "email") { + +case let .success(email): + print("The email is \(email)") + +case let .failure(.noSuchKey(key)): + print("\(key) is not a valid key") + +case .failure(.typeMismatch): + print("Didn't have the right type") +} +``` + +Using a `switch` statement allows powerful pattern matching, and ensures all possible results are covered. Swift 2.0 offers new ways to deconstruct enums like the `if-case` statement, but be wary as such methods do not ensure errors are handled. + +Other methods available for processing `Result` are detailed in the [API documentation](http://cocoadocs.org/docsets/Result/). + +## Result vs. Throws + +Swift 2.0 introduces error handling via throwing and catching `Error`. `Result` accomplishes the same goal by encapsulating the result instead of hijacking control flow. The `Result` abstraction enables powerful functionality such as `map` and `flatMap`, making `Result` more composable than `throw`. + +Since dealing with APIs that throw is common, you can convert such functions into a `Result` by using the `materialize` method. Conversely, a `Result` can be used to throw an error by calling `dematerialize`. + +## Higher Order Functions + +`map` and `flatMap` operate the same as `Optional.map` and `Optional.flatMap` except they apply to `Result`. + +`map` transforms a `Result` into a `Result` of a new type. It does this by taking a function that transforms the `Value` type into a new value. This transformation is only applied in the case of a `success`. In the case of a `failure`, the associated error is re-wrapped in the new `Result`. + +```swift +// transforms a Result to a Result +let idResult = intForKey(json, key:"id").map { id in String(id) } +``` + +Here, the final result is either the id as a `String`, or carries over the `failure` from the previous result. + +`flatMap` is similar to `map` in that it transforms the `Result` into another `Result`. However, the function passed into `flatMap` must return a `Result`. + +An in depth discussion of `map` and `flatMap` is beyond the scope of this documentation. If you would like a deeper understanding, read about functors and monads. This article is a good place to [start](http://www.javiersoto.me/post/106875422394). + +## Integration + +### Carthage + +1. Add this repository as a submodule and/or [add it to your Cartfile](https://github.com/Carthage/Carthage/blob/master/Documentation/Artifacts.md#cartfile) if you’re using [carthage](https://github.com/Carthage/Carthage/) to manage your dependencies. +2. Drag `Result.xcodeproj` into your project or workspace. +3. Link your target against `Result.framework`. +4. Application targets should ensure that the framework gets copied into their application bundle. (Framework targets should instead require the application linking them to include Result.) + +### Cocoapods + +```ruby +pod 'Result', '~> 4.0.0' +``` + +### Swift Package Manager + +```swift +import PackageDescription + +let package = Package( + name: "MyProject", + targets: [], + dependencies: [ + .Package(url: "https://github.com/antitypical/Result.git", + majorVersion: 4) + ] +) +``` diff --git a/Santander-Test/Pods/Result/Result/AnyError.swift b/Santander-Test/Pods/Result/Result/AnyError.swift new file mode 100644 index 00000000..ee018d27 --- /dev/null +++ b/Santander-Test/Pods/Result/Result/AnyError.swift @@ -0,0 +1,46 @@ +import Foundation + +/// A type-erased error which wraps an arbitrary error instance. This should be +/// useful for generic contexts. +public struct AnyError: Swift.Error { + /// The underlying error. + public let error: Swift.Error + + public init(_ error: Swift.Error) { + if let anyError = error as? AnyError { + self = anyError + } else { + self.error = error + } + } +} + +extension AnyError: ErrorConvertible { + public static func error(from error: Error) -> AnyError { + return AnyError(error) + } +} + +extension AnyError: CustomStringConvertible { + public var description: String { + return String(describing: error) + } +} + +extension AnyError: LocalizedError { + public var errorDescription: String? { + return error.localizedDescription + } + + public var failureReason: String? { + return (error as? LocalizedError)?.failureReason + } + + public var helpAnchor: String? { + return (error as? LocalizedError)?.helpAnchor + } + + public var recoverySuggestion: String? { + return (error as? LocalizedError)?.recoverySuggestion + } +} diff --git a/Santander-Test/Pods/Result/Result/NoError.swift b/Santander-Test/Pods/Result/Result/NoError.swift new file mode 100644 index 00000000..a919f510 --- /dev/null +++ b/Santander-Test/Pods/Result/Result/NoError.swift @@ -0,0 +1,10 @@ +/// An “error” that is impossible to construct. +/// +/// This can be used to describe `Result`s where failures will never +/// be generated. For example, `Result` describes a result that +/// contains an `Int`eger and is guaranteed never to be a `failure`. +public enum NoError: Swift.Error, Equatable { + public static func ==(lhs: NoError, rhs: NoError) -> Bool { + return true + } +} diff --git a/Santander-Test/Pods/Result/Result/Result.swift b/Santander-Test/Pods/Result/Result/Result.swift new file mode 100644 index 00000000..75768380 --- /dev/null +++ b/Santander-Test/Pods/Result/Result/Result.swift @@ -0,0 +1,229 @@ +// Copyright (c) 2015 Rob Rix. All rights reserved. + +/// An enum representing either a failure with an explanatory error, or a success with a result value. +public enum Result: ResultProtocol, CustomStringConvertible, CustomDebugStringConvertible { + case success(Value) + case failure(Error) + + /// The compatibility alias for the Swift 5's `Result` in the standard library. + /// + /// See https://github.com/apple/swift-evolution/blob/master/proposals/0235-add-result.md + /// and https://forums.swift.org/t/accepted-with-modifications-se-0235-add-result-to-the-standard-library/18603 + /// for the details. + public typealias Success = Value + /// The compatibility alias for the Swift 5's `Result` in the standard library. + /// + /// See https://github.com/apple/swift-evolution/blob/master/proposals/0235-add-result.md + /// and https://forums.swift.org/t/accepted-with-modifications-se-0235-add-result-to-the-standard-library/18603 + /// for the details. + public typealias Failure = Error + + // MARK: Constructors + + /// Constructs a success wrapping a `value`. + public init(value: Value) { + self = .success(value) + } + + /// Constructs a failure wrapping an `error`. + public init(error: Error) { + self = .failure(error) + } + + /// Constructs a result from an `Optional`, failing with `Error` if `nil`. + public init(_ value: Value?, failWith: @autoclosure () -> Error) { + self = value.map(Result.success) ?? .failure(failWith()) + } + + /// Constructs a result from a function that uses `throw`, failing with `Error` if throws. + public init(_ f: @autoclosure () throws -> Value) { + self.init(catching: f) + } + + /// Constructs a result from a function that uses `throw`, failing with `Error` if throws. + @available(*, deprecated, renamed: "init(catching:)") + public init(attempt f: () throws -> Value) { + self.init(catching: f) + } + + /// The same as `init(attempt:)` aiming for the compatibility with the Swift 5's `Result` in the standard library. + /// + /// See https://github.com/apple/swift-evolution/blob/master/proposals/0235-add-result.md + /// and https://forums.swift.org/t/accepted-with-modifications-se-0235-add-result-to-the-standard-library/18603 + /// for the details. + public init(catching body: () throws -> Success) { + do { + self = .success(try body()) + } catch var error { + if Error.self == AnyError.self { + error = AnyError(error) + } + self = .failure(error as! Error) + } + } + + // MARK: Deconstruction + + /// Returns the value from `success` Results or `throw`s the error. + @available(*, deprecated, renamed: "get()") + public func dematerialize() throws -> Value { + return try get() + } + + /// The same as `dematerialize()` aiming for the compatibility with the Swift 5's `Result` in the standard library. + /// + /// See https://github.com/apple/swift-evolution/blob/master/proposals/0235-add-result.md + /// and https://forums.swift.org/t/accepted-with-modifications-se-0235-add-result-to-the-standard-library/18603 + /// for the details. + public func get() throws -> Success { + switch self { + case let .success(value): + return value + case let .failure(error): + throw error + } + } + + /// Case analysis for Result. + /// + /// Returns the value produced by applying `ifFailure` to `failure` Results, or `ifSuccess` to `success` Results. + public func analysis(ifSuccess: (Value) -> Result, ifFailure: (Error) -> Result) -> Result { + switch self { + case let .success(value): + return ifSuccess(value) + case let .failure(value): + return ifFailure(value) + } + } + + // MARK: Errors + + /// The domain for errors constructed by Result. + public static var errorDomain: String { return "com.antitypical.Result" } + + /// The userInfo key for source functions in errors constructed by Result. + public static var functionKey: String { return "\(errorDomain).function" } + + /// The userInfo key for source file paths in errors constructed by Result. + public static var fileKey: String { return "\(errorDomain).file" } + + /// The userInfo key for source file line numbers in errors constructed by Result. + public static var lineKey: String { return "\(errorDomain).line" } + + /// Constructs an error. + public static func error(_ message: String? = nil, function: String = #function, file: String = #file, line: Int = #line) -> NSError { + var userInfo: [String: Any] = [ + functionKey: function, + fileKey: file, + lineKey: line, + ] + + if let message = message { + userInfo[NSLocalizedDescriptionKey] = message + } + + return NSError(domain: errorDomain, code: 0, userInfo: userInfo) + } + + + // MARK: CustomStringConvertible + + public var description: String { + switch self { + case let .success(value): return ".success(\(value))" + case let .failure(error): return ".failure(\(error))" + } + } + + + // MARK: CustomDebugStringConvertible + + public var debugDescription: String { + return description + } + + // MARK: ResultProtocol + public var result: Result { + return self + } +} + +extension Result where Result.Failure == AnyError { + /// Constructs a result from an expression that uses `throw`, failing with `AnyError` if throws. + public init(_ f: @autoclosure () throws -> Value) { + self.init(attempt: f) + } + + /// Constructs a result from a closure that uses `throw`, failing with `AnyError` if throws. + public init(attempt f: () throws -> Value) { + do { + self = .success(try f()) + } catch { + self = .failure(AnyError(error)) + } + } +} + +// MARK: - Derive result from failable closure + +@available(*, deprecated, renamed: "Result.init(attempt:)") +public func materialize(_ f: () throws -> T) -> Result { + return Result(attempt: f) +} + +@available(*, deprecated, renamed: "Result.init(_:)") +public func materialize(_ f: @autoclosure () throws -> T) -> Result { + return Result(try f()) +} + +// MARK: - ErrorConvertible conformance + +extension NSError: ErrorConvertible { + public static func error(from error: Swift.Error) -> Self { + func cast(_ error: Swift.Error) -> T { + return error as! T + } + + return cast(error) + } +} + +// MARK: - migration support + +@available(*, unavailable, message: "Use the overload which returns `Result` instead") +public func materialize(_ f: () throws -> T) -> Result { + fatalError() +} + +@available(*, unavailable, message: "Use the overload which returns `Result` instead") +public func materialize(_ f: @autoclosure () throws -> T) -> Result { + fatalError() +} + +#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) + +/// Constructs a `Result` with the result of calling `try` with an error pointer. +/// +/// This is convenient for wrapping Cocoa API which returns an object or `nil` + an error, by reference. e.g.: +/// +/// Result.try { NSData(contentsOfURL: URL, options: .dataReadingMapped, error: $0) } +@available(*, unavailable, message: "This has been removed. Use `Result.init(attempt:)` instead. See https://github.com/antitypical/Result/issues/85 for the details.") +public func `try`(_ function: String = #function, file: String = #file, line: Int = #line, `try`: (NSErrorPointer) -> T?) -> Result { + fatalError() +} + +/// Constructs a `Result` with the result of calling `try` with an error pointer. +/// +/// This is convenient for wrapping Cocoa API which returns a `Bool` + an error, by reference. e.g.: +/// +/// Result.try { NSFileManager.defaultManager().removeItemAtURL(URL, error: $0) } +@available(*, unavailable, message: "This has been removed. Use `Result.init(attempt:)` instead. See https://github.com/antitypical/Result/issues/85 for the details.") +public func `try`(_ function: String = #function, file: String = #file, line: Int = #line, `try`: (NSErrorPointer) -> Bool) -> Result<(), NSError> { + fatalError() +} + +#endif + +// MARK: - + +import Foundation diff --git a/Santander-Test/Pods/Result/Result/ResultProtocol.swift b/Santander-Test/Pods/Result/Result/ResultProtocol.swift new file mode 100644 index 00000000..e3ad0221 --- /dev/null +++ b/Santander-Test/Pods/Result/Result/ResultProtocol.swift @@ -0,0 +1,152 @@ +// Copyright (c) 2015 Rob Rix. All rights reserved. + +/// A protocol that can be used to constrain associated types as `Result`. +public protocol ResultProtocol { + associatedtype Value + associatedtype Error: Swift.Error + + init(value: Value) + init(error: Error) + + var result: Result { get } +} + +extension Result { + /// Returns the value if self represents a success, `nil` otherwise. + public var value: Value? { + switch self { + case let .success(value): return value + case .failure: return nil + } + } + + /// Returns the error if self represents a failure, `nil` otherwise. + public var error: Error? { + switch self { + case .success: return nil + case let .failure(error): return error + } + } + + /// Returns a new Result by mapping `Success`es’ values using `transform`, or re-wrapping `Failure`s’ errors. + public func map(_ transform: (Value) -> U) -> Result { + return flatMap { .success(transform($0)) } + } + + /// Returns the result of applying `transform` to `Success`es’ values, or re-wrapping `Failure`’s errors. + public func flatMap(_ transform: (Value) -> Result) -> Result { + switch self { + case let .success(value): return transform(value) + case let .failure(error): return .failure(error) + } + } + + /// Returns a Result with a tuple of the receiver and `other` values if both + /// are `Success`es, or re-wrapping the error of the earlier `Failure`. + public func fanout(_ other: @autoclosure () -> Result) -> Result<(Value, U), Error> { + return self.flatMap { left in other().map { right in (left, right) } } + } + + /// Returns a new Result by mapping `Failure`'s values using `transform`, or re-wrapping `Success`es’ values. + public func mapError(_ transform: (Error) -> Error2) -> Result { + return flatMapError { .failure(transform($0)) } + } + + /// Returns the result of applying `transform` to `Failure`’s errors, or re-wrapping `Success`es’ values. + public func flatMapError(_ transform: (Error) -> Result) -> Result { + switch self { + case let .success(value): return .success(value) + case let .failure(error): return transform(error) + } + } + + /// Returns a new Result by mapping `Success`es’ values using `success`, and by mapping `Failure`'s values using `failure`. + public func bimap(success: (Value) -> U, failure: (Error) -> Error2) -> Result { + switch self { + case let .success(value): return .success(success(value)) + case let .failure(error): return .failure(failure(error)) + } + } +} + +extension Result { + + // MARK: Higher-order functions + + /// Returns `self.value` if this result is a .Success, or the given value otherwise. Equivalent with `??` + public func recover(_ value: @autoclosure () -> Value) -> Value { + return self.value ?? value() + } + + /// Returns this result if it is a .Success, or the given result otherwise. Equivalent with `??` + public func recover(with result: @autoclosure () -> Result) -> Result { + switch self { + case .success: return self + case .failure: return result() + } + } +} + +/// Protocol used to constrain `tryMap` to `Result`s with compatible `Error`s. +public protocol ErrorConvertible: Swift.Error { + static func error(from error: Swift.Error) -> Self +} + +extension Result where Result.Failure: ErrorConvertible { + + /// Returns the result of applying `transform` to `Success`es’ values, or wrapping thrown errors. + public func tryMap(_ transform: (Value) throws -> U) -> Result { + return flatMap { value in + do { + return .success(try transform(value)) + } + catch { + let convertedError = Error.error(from: error) + // Revisit this in a future version of Swift. https://twitter.com/jckarter/status/672931114944696321 + return .failure(convertedError) + } + } + } +} + +// MARK: - Operators + +extension Result where Result.Success: Equatable, Result.Failure: Equatable { + /// Returns `true` if `left` and `right` are both `Success`es and their values are equal, or if `left` and `right` are both `Failure`s and their errors are equal. + public static func ==(left: Result, right: Result) -> Bool { + if let left = left.value, let right = right.value { + return left == right + } else if let left = left.error, let right = right.error { + return left == right + } + return false + } +} + +#if swift(>=4.1) + extension Result: Equatable where Result.Success: Equatable, Result.Failure: Equatable { } +#else + extension Result where Result.Success: Equatable, Result.Failure: Equatable { + /// Returns `true` if `left` and `right` represent different cases, or if they represent the same case but different values. + public static func !=(left: Result, right: Result) -> Bool { + return !(left == right) + } + } +#endif + +extension Result { + /// Returns the value of `left` if it is a `Success`, or `right` otherwise. Short-circuits. + public static func ??(left: Result, right: @autoclosure () -> Value) -> Value { + return left.recover(right()) + } + + /// Returns `left` if it is a `Success`es, or `right` otherwise. Short-circuits. + public static func ??(left: Result, right: @autoclosure () -> Result) -> Result { + return left.recover(with: right()) + } +} + +// MARK: - migration support + +@available(*, unavailable, renamed: "ErrorConvertible") +public protocol ErrorProtocolConvertible: ErrorConvertible {} diff --git a/Santander-Test/Pods/Target Support Files/Alamofire/Alamofire-Info.plist b/Santander-Test/Pods/Target Support Files/Alamofire/Alamofire-Info.plist new file mode 100644 index 00000000..4a946be6 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Alamofire/Alamofire-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 4.8.1 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Santander-Test/Pods/Target Support Files/Alamofire/Alamofire-dummy.m b/Santander-Test/Pods/Target Support Files/Alamofire/Alamofire-dummy.m new file mode 100644 index 00000000..a6c45942 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Alamofire/Alamofire-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Alamofire : NSObject +@end +@implementation PodsDummy_Alamofire +@end diff --git a/Santander-Test/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch b/Santander-Test/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch new file mode 100644 index 00000000..beb2a244 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Alamofire/Alamofire-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Santander-Test/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h b/Santander-Test/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h new file mode 100644 index 00000000..00014e3c --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Alamofire/Alamofire-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double AlamofireVersionNumber; +FOUNDATION_EXPORT const unsigned char AlamofireVersionString[]; + diff --git a/Santander-Test/Pods/Target Support Files/Alamofire/Alamofire.modulemap b/Santander-Test/Pods/Target Support Files/Alamofire/Alamofire.modulemap new file mode 100644 index 00000000..d1f125fa --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Alamofire/Alamofire.modulemap @@ -0,0 +1,6 @@ +framework module Alamofire { + umbrella header "Alamofire-umbrella.h" + + export * + module * { export * } +} diff --git a/Santander-Test/Pods/Target Support Files/Alamofire/Alamofire.xcconfig b/Santander-Test/Pods/Target Support Files/Alamofire/Alamofire.xcconfig new file mode 100644 index 00000000..12a14508 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Alamofire/Alamofire.xcconfig @@ -0,0 +1,9 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Alamofire +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/Alamofire +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/Santander-Test/Pods/Target Support Files/Moya/Moya-Info.plist b/Santander-Test/Pods/Target Support Files/Moya/Moya-Info.plist new file mode 100644 index 00000000..9dfe2ef6 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Moya/Moya-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 12.0.1 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Santander-Test/Pods/Target Support Files/Moya/Moya-dummy.m b/Santander-Test/Pods/Target Support Files/Moya/Moya-dummy.m new file mode 100644 index 00000000..260473f2 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Moya/Moya-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Moya : NSObject +@end +@implementation PodsDummy_Moya +@end diff --git a/Santander-Test/Pods/Target Support Files/Moya/Moya-prefix.pch b/Santander-Test/Pods/Target Support Files/Moya/Moya-prefix.pch new file mode 100644 index 00000000..beb2a244 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Moya/Moya-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Santander-Test/Pods/Target Support Files/Moya/Moya-umbrella.h b/Santander-Test/Pods/Target Support Files/Moya/Moya-umbrella.h new file mode 100644 index 00000000..8d810473 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Moya/Moya-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double MoyaVersionNumber; +FOUNDATION_EXPORT const unsigned char MoyaVersionString[]; + diff --git a/Santander-Test/Pods/Target Support Files/Moya/Moya.modulemap b/Santander-Test/Pods/Target Support Files/Moya/Moya.modulemap new file mode 100644 index 00000000..7b84cdb9 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Moya/Moya.modulemap @@ -0,0 +1,6 @@ +framework module Moya { + umbrella header "Moya-umbrella.h" + + export * + module * { export * } +} diff --git a/Santander-Test/Pods/Target Support Files/Moya/Moya.xcconfig b/Santander-Test/Pods/Target Support Files/Moya/Moya.xcconfig new file mode 100644 index 00000000..05ef63e1 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Moya/Moya.xcconfig @@ -0,0 +1,10 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Moya +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Result" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/Moya +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-Info.plist b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-Info.plist new file mode 100644 index 00000000..2243fe6e --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.markdown b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.markdown new file mode 100644 index 00000000..34d8d4e3 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.markdown @@ -0,0 +1,75 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## Alamofire + +Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) + +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. + + +## Moya + +The MIT License (MIT) + +Copyright (c) 2014-present Artsy, Ash Furrow + +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. + + +## Result + +The MIT License (MIT) + +Copyright (c) 2014 Rob Rix + +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. +Generated by CocoaPods - https://cocoapods.org diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.plist b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.plist new file mode 100644 index 00000000..c3605d51 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.plist @@ -0,0 +1,119 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) + +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. + + License + MIT + Title + Alamofire + Type + PSGroupSpecifier + + + FooterText + The MIT License (MIT) + +Copyright (c) 2014-present Artsy, Ash Furrow + +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. + + License + MIT + Title + Moya + Type + PSGroupSpecifier + + + FooterText + The MIT License (MIT) + +Copyright (c) 2014 Rob Rix + +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. + License + MIT + Title + Result + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-dummy.m b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-dummy.m new file mode 100644 index 00000000..958df9c5 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_Santander_Test : NSObject +@end +@implementation PodsDummy_Pods_Santander_Test +@end diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-frameworks.sh b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-frameworks.sh new file mode 100755 index 00000000..0582fe33 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-frameworks.sh @@ -0,0 +1,167 @@ +#!/bin/sh +set -e +set -u +set -o pipefail + +function on_error { + echo "$(realpath -mq "${0}"):$1: error: Unexpected failure" +} +trap 'on_error $LINENO' ERR + +if [ -z ${FRAMEWORKS_FOLDER_PATH+x} ]; then + # If FRAMEWORKS_FOLDER_PATH is not set, then there's nowhere for us to copy + # frameworks to, so exit 0 (signalling the script phase was successful). + exit 0 +fi + +echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + +COCOAPODS_PARALLEL_CODE_SIGN="${COCOAPODS_PARALLEL_CODE_SIGN:-false}" +SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" + +# Used as a return value for each invocation of `strip_invalid_archs` function. +STRIP_BINARY_RETVAL=0 + +# This protects against multiple targets copying the same framework dependency at the same time. The solution +# was originally proposed here: https://lists.samba.org/archive/rsync/2008-February/020158.html +RSYNC_PROTECT_TMP_FILES=(--filter "P .*.??????") + +# Copies and strips a vendored framework +install_framework() +{ + if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then + local source="${BUILT_PRODUCTS_DIR}/$1" + elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then + local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")" + elif [ -r "$1" ]; then + local source="$1" + fi + + local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + + if [ -L "${source}" ]; then + echo "Symlinked..." + source="$(readlink "${source}")" + fi + + # Use filter instead of exclude so missing patterns don't throw errors. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}" + + local basename + basename="$(basename -s .framework "$1")" + binary="${destination}/${basename}.framework/${basename}" + + if ! [ -r "$binary" ]; then + binary="${destination}/${basename}" + elif [ -L "${binary}" ]; then + echo "Destination binary is symlinked..." + dirname="$(dirname "${binary}")" + binary="${dirname}/$(readlink "${binary}")" + fi + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then + strip_invalid_archs "$binary" + fi + + # Resign the code if required by the build settings to avoid unstable apps + code_sign_if_enabled "${destination}/$(basename "$1")" + + # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7. + if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then + local swift_runtime_libs + swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u) + for lib in $swift_runtime_libs; do + echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" + rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" + code_sign_if_enabled "${destination}/${lib}" + done + fi +} + +# Copies and strips a vendored dSYM +install_dsym() { + local source="$1" + if [ -r "$source" ]; then + # Copy the dSYM into a the targets temp dir. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${DERIVED_FILES_DIR}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${DERIVED_FILES_DIR}" + + local basename + basename="$(basename -s .framework.dSYM "$source")" + binary="${DERIVED_FILES_DIR}/${basename}.framework.dSYM/Contents/Resources/DWARF/${basename}" + + # Strip invalid architectures so "fat" simulator / device frameworks work on device + if [[ "$(file "$binary")" == *"Mach-O dSYM companion"* ]]; then + strip_invalid_archs "$binary" + fi + + if [[ $STRIP_BINARY_RETVAL == 1 ]]; then + # Move the stripped file into its final destination. + echo "rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${DERIVED_FILES_DIR}/${basename}.framework.dSYM\" \"${DWARF_DSYM_FOLDER_PATH}\"" + rsync --delete -av "${RSYNC_PROTECT_TMP_FILES[@]}" --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${DERIVED_FILES_DIR}/${basename}.framework.dSYM" "${DWARF_DSYM_FOLDER_PATH}" + else + # The dSYM was not stripped at all, in this case touch a fake folder so the input/output paths from Xcode do not reexecute this script because the file is missing. + touch "${DWARF_DSYM_FOLDER_PATH}/${basename}.framework.dSYM" + fi + fi +} + +# Signs a framework with the provided identity +code_sign_if_enabled() { + if [ -n "${EXPANDED_CODE_SIGN_IDENTITY:-}" -a "${CODE_SIGNING_REQUIRED:-}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then + # Use the current code_sign_identity + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS:-} --preserve-metadata=identifier,entitlements '$1'" + + if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + code_sign_cmd="$code_sign_cmd &" + fi + echo "$code_sign_cmd" + eval "$code_sign_cmd" + fi +} + +# Strip invalid architectures +strip_invalid_archs() { + binary="$1" + # Get architectures for current target binary + binary_archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | awk '{$1=$1;print}' | rev)" + # Intersect them with the architectures we are building for + intersected_archs="$(echo ${ARCHS[@]} ${binary_archs[@]} | tr ' ' '\n' | sort | uniq -d)" + # If there are no archs supported by this binary then warn the user + if [[ -z "$intersected_archs" ]]; then + echo "warning: [CP] Vendored binary '$binary' contains architectures ($binary_archs) none of which match the current build architectures ($ARCHS)." + STRIP_BINARY_RETVAL=0 + return + fi + stripped="" + for arch in $binary_archs; do + if ! [[ "${ARCHS}" == *"$arch"* ]]; then + # Strip non-valid architectures in-place + lipo -remove "$arch" -output "$binary" "$binary" + stripped="$stripped $arch" + fi + done + if [[ "$stripped" ]]; then + echo "Stripped $binary of architectures:$stripped" + fi + STRIP_BINARY_RETVAL=1 +} + + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework" + install_framework "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework" + install_framework "${BUILT_PRODUCTS_DIR}/Result/Result.framework" +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework" + install_framework "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework" + install_framework "${BUILT_PRODUCTS_DIR}/Result/Result.framework" +fi +if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then + wait +fi diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-umbrella.h b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-umbrella.h new file mode 100644 index 00000000..b6ea7096 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double Pods_Santander_TestVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_Santander_TestVersionString[]; + diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig new file mode 100644 index 00000000..254c4636 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig @@ -0,0 +1,11 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.modulemap b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.modulemap new file mode 100644 index 00000000..075e8816 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.modulemap @@ -0,0 +1,6 @@ +framework module Pods_Santander_Test { + umbrella header "Pods-Santander-Test-umbrella.h" + + export * + module * { export * } +} diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.release.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.release.xcconfig new file mode 100644 index 00000000..254c4636 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.release.xcconfig @@ -0,0 +1,11 @@ +ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-Info.plist b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-Info.plist new file mode 100644 index 00000000..2243fe6e --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-acknowledgements.markdown b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-acknowledgements.markdown new file mode 100644 index 00000000..102af753 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-acknowledgements.markdown @@ -0,0 +1,3 @@ +# Acknowledgements +This application makes use of the following third party libraries: +Generated by CocoaPods - https://cocoapods.org diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-acknowledgements.plist b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-acknowledgements.plist new file mode 100644 index 00000000..7acbad1e --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-acknowledgements.plist @@ -0,0 +1,29 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-dummy.m b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-dummy.m new file mode 100644 index 00000000..7c07c6a8 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_Santander_TestTests : NSObject +@end +@implementation PodsDummy_Pods_Santander_TestTests +@end diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-umbrella.h b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-umbrella.h new file mode 100644 index 00000000..951842d9 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double Pods_Santander_TestTestsVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_Santander_TestTestsVersionString[]; + diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.debug.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.debug.xcconfig new file mode 100644 index 00000000..7781708e --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.debug.xcconfig @@ -0,0 +1,9 @@ +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.modulemap b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.modulemap new file mode 100644 index 00000000..eb9e407f --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.modulemap @@ -0,0 +1,6 @@ +framework module Pods_Santander_TestTests { + umbrella header "Pods-Santander-TestTests-umbrella.h" + + export * + module * { export * } +} diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.release.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.release.xcconfig new file mode 100644 index 00000000..7781708e --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.release.xcconfig @@ -0,0 +1,9 @@ +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-Info.plist b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-Info.plist new file mode 100644 index 00000000..2243fe6e --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-acknowledgements.markdown b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-acknowledgements.markdown new file mode 100644 index 00000000..102af753 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-acknowledgements.markdown @@ -0,0 +1,3 @@ +# Acknowledgements +This application makes use of the following third party libraries: +Generated by CocoaPods - https://cocoapods.org diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-acknowledgements.plist b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-acknowledgements.plist new file mode 100644 index 00000000..7acbad1e --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-acknowledgements.plist @@ -0,0 +1,29 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - https://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-dummy.m b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-dummy.m new file mode 100644 index 00000000..d432ce4f --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_Santander_TestUITests : NSObject +@end +@implementation PodsDummy_Pods_Santander_TestUITests +@end diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-umbrella.h b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-umbrella.h new file mode 100644 index 00000000..51307d78 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double Pods_Santander_TestUITestsVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_Santander_TestUITestsVersionString[]; + diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.debug.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.debug.xcconfig new file mode 100644 index 00000000..7781708e --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.debug.xcconfig @@ -0,0 +1,9 @@ +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.modulemap b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.modulemap new file mode 100644 index 00000000..aa00e249 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.modulemap @@ -0,0 +1,6 @@ +framework module Pods_Santander_TestUITests { + umbrella header "Pods-Santander-TestUITests-umbrella.h" + + export * + module * { export * } +} diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.release.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.release.xcconfig new file mode 100644 index 00000000..7781708e --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.release.xcconfig @@ -0,0 +1,9 @@ +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_PODFILE_DIR_PATH = ${SRCROOT}/. +PODS_ROOT = ${SRCROOT}/Pods diff --git a/Santander-Test/Pods/Target Support Files/Result/Result-Info.plist b/Santander-Test/Pods/Target Support Files/Result/Result-Info.plist new file mode 100644 index 00000000..c26f36f0 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Result/Result-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 4.1.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Santander-Test/Pods/Target Support Files/Result/Result-dummy.m b/Santander-Test/Pods/Target Support Files/Result/Result-dummy.m new file mode 100644 index 00000000..ba47f618 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Result/Result-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Result : NSObject +@end +@implementation PodsDummy_Result +@end diff --git a/Santander-Test/Pods/Target Support Files/Result/Result-prefix.pch b/Santander-Test/Pods/Target Support Files/Result/Result-prefix.pch new file mode 100644 index 00000000..beb2a244 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Result/Result-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Santander-Test/Pods/Target Support Files/Result/Result-umbrella.h b/Santander-Test/Pods/Target Support Files/Result/Result-umbrella.h new file mode 100644 index 00000000..25f5eb12 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Result/Result-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double ResultVersionNumber; +FOUNDATION_EXPORT const unsigned char ResultVersionString[]; + diff --git a/Santander-Test/Pods/Target Support Files/Result/Result.modulemap b/Santander-Test/Pods/Target Support Files/Result/Result.modulemap new file mode 100644 index 00000000..c5e6a4a2 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Result/Result.modulemap @@ -0,0 +1,6 @@ +framework module Result { + umbrella header "Result-umbrella.h" + + export * + module * { export * } +} diff --git a/Santander-Test/Pods/Target Support Files/Result/Result.xcconfig b/Santander-Test/Pods/Target Support Files/Result/Result.xcconfig new file mode 100644 index 00000000..4ca6b3d9 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/Result/Result.xcconfig @@ -0,0 +1,9 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Result +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/Result +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj new file mode 100644 index 00000000..691ed57b --- /dev/null +++ b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj @@ -0,0 +1,780 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 50; + objects = { + +/* Begin PBXBuildFile section */ + 493342D14E83E8F2E5CA3C31 /* Pods_Santander_TestTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0815CC0FAEEAF8D6E86F6807 /* Pods_Santander_TestTests.framework */; }; + 965C2F0722895E2500015140 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F0622895E2500015140 /* AppDelegate.swift */; }; + 965C2F0922895E2500015140 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F0822895E2500015140 /* ViewController.swift */; }; + 965C2F0C22895E2500015140 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F0A22895E2500015140 /* Main.storyboard */; }; + 965C2F0E22895E2800015140 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F0D22895E2800015140 /* Assets.xcassets */; }; + 965C2F1122895E2800015140 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F0F22895E2800015140 /* LaunchScreen.storyboard */; }; + 965C2F1C22895E2800015140 /* Santander_TestTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F1B22895E2800015140 /* Santander_TestTests.swift */; }; + 965C2F2722895E2800015140 /* Santander_TestUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F2622895E2800015140 /* Santander_TestUITests.swift */; }; + 965C2F36228966AF00015140 /* Constants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F35228966AF00015140 /* Constants.swift */; }; + 965C2F382289681F00015140 /* FundsServiceApi.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F372289681F00015140 /* FundsServiceApi.swift */; }; + 965C2F3B228974F500015140 /* FundsServiceApiManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F3A228974F500015140 /* FundsServiceApiManager.swift */; }; + 965C2F3E2289776F00015140 /* FormCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F3D2289776F00015140 /* FormCell.swift */; }; + 965C2F4022897AF800015140 /* Fund.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F3F22897AF800015140 /* Fund.swift */; }; + 973161DFBDDB30BB534A86DA /* Pods_Santander_TestUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 878E0A16E793237D34137EC7 /* Pods_Santander_TestUITests.framework */; }; + C4FCFE13C06111F180515DFA /* Pods_Santander_Test.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F563E135B794CADBF7401F8 /* Pods_Santander_Test.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 965C2F1822895E2800015140 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 965C2EFB22895E2500015140 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 965C2F0222895E2500015140; + remoteInfo = "Santander-Test"; + }; + 965C2F2322895E2800015140 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 965C2EFB22895E2500015140 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 965C2F0222895E2500015140; + remoteInfo = "Santander-Test"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 0815CC0FAEEAF8D6E86F6807 /* Pods_Santander_TestTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Santander_TestTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 21E66E0DEC791ED96A6B4107 /* Pods-Santander-TestUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Santander-TestUITests.release.xcconfig"; path = "Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.release.xcconfig"; sourceTree = ""; }; + 39073D8A59D67805EB72C3BC /* Pods-Santander-TestTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Santander-TestTests.debug.xcconfig"; path = "Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.debug.xcconfig"; sourceTree = ""; }; + 6C7F8C512B2B46A97F1AA7C2 /* Pods-Santander-TestTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Santander-TestTests.release.xcconfig"; path = "Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.release.xcconfig"; sourceTree = ""; }; + 878E0A16E793237D34137EC7 /* Pods_Santander_TestUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Santander_TestUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 88AD971CB0FCD8230DDD854A /* Pods-Santander-Test.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Santander-Test.release.xcconfig"; path = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.release.xcconfig"; sourceTree = ""; }; + 8F563E135B794CADBF7401F8 /* Pods_Santander_Test.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Santander_Test.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 944E346D8B737070B6AC9E04 /* Pods-Santander-TestUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Santander-TestUITests.debug.xcconfig"; path = "Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.debug.xcconfig"; sourceTree = ""; }; + 965C2F0322895E2500015140 /* Santander-Test.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Santander-Test.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 965C2F0622895E2500015140 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 965C2F0822895E2500015140 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; + 965C2F0B22895E2500015140 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 965C2F0D22895E2800015140 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 965C2F1022895E2800015140 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 965C2F1222895E2800015140 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 965C2F1722895E2800015140 /* Santander-TestTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Santander-TestTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 965C2F1B22895E2800015140 /* Santander_TestTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Santander_TestTests.swift; sourceTree = ""; }; + 965C2F1D22895E2800015140 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 965C2F2222895E2800015140 /* Santander-TestUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Santander-TestUITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 965C2F2622895E2800015140 /* Santander_TestUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Santander_TestUITests.swift; sourceTree = ""; }; + 965C2F2822895E2800015140 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 965C2F35228966AF00015140 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Constants.swift; sourceTree = ""; }; + 965C2F372289681F00015140 /* FundsServiceApi.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FundsServiceApi.swift; sourceTree = ""; }; + 965C2F3A228974F500015140 /* FundsServiceApiManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FundsServiceApiManager.swift; sourceTree = ""; }; + 965C2F3D2289776F00015140 /* FormCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormCell.swift; sourceTree = ""; }; + 965C2F3F22897AF800015140 /* Fund.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Fund.swift; sourceTree = ""; }; + A512F1F10FEC63C067350139 /* Pods-Santander-Test.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Santander-Test.debug.xcconfig"; path = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 965C2F0022895E2500015140 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + C4FCFE13C06111F180515DFA /* Pods_Santander_Test.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 965C2F1422895E2800015140 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 493342D14E83E8F2E5CA3C31 /* Pods_Santander_TestTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 965C2F1F22895E2800015140 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 973161DFBDDB30BB534A86DA /* Pods_Santander_TestUITests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 19CF96ADE36429C54AA25925 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 8F563E135B794CADBF7401F8 /* Pods_Santander_Test.framework */, + 0815CC0FAEEAF8D6E86F6807 /* Pods_Santander_TestTests.framework */, + 878E0A16E793237D34137EC7 /* Pods_Santander_TestUITests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 965C2EFA22895E2500015140 = { + isa = PBXGroup; + children = ( + 965C2F0522895E2500015140 /* Santander-Test */, + 965C2F1A22895E2800015140 /* Santander-TestTests */, + 965C2F2522895E2800015140 /* Santander-TestUITests */, + 965C2F0422895E2500015140 /* Products */, + C03B33535A1371552140448D /* Pods */, + 19CF96ADE36429C54AA25925 /* Frameworks */, + ); + sourceTree = ""; + }; + 965C2F0422895E2500015140 /* Products */ = { + isa = PBXGroup; + children = ( + 965C2F0322895E2500015140 /* Santander-Test.app */, + 965C2F1722895E2800015140 /* Santander-TestTests.xctest */, + 965C2F2222895E2800015140 /* Santander-TestUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 965C2F0522895E2500015140 /* Santander-Test */ = { + isa = PBXGroup; + children = ( + 965C2F3C2289767900015140 /* Models */, + 965C2F342289668000015140 /* Supporting Files */, + 965C2F0622895E2500015140 /* AppDelegate.swift */, + 965C2F0822895E2500015140 /* ViewController.swift */, + 965C2F0A22895E2500015140 /* Main.storyboard */, + 965C2F0D22895E2800015140 /* Assets.xcassets */, + 965C2F0F22895E2800015140 /* LaunchScreen.storyboard */, + 965C2F1222895E2800015140 /* Info.plist */, + ); + path = "Santander-Test"; + sourceTree = ""; + }; + 965C2F1A22895E2800015140 /* Santander-TestTests */ = { + isa = PBXGroup; + children = ( + 965C2F1B22895E2800015140 /* Santander_TestTests.swift */, + 965C2F1D22895E2800015140 /* Info.plist */, + ); + path = "Santander-TestTests"; + sourceTree = ""; + }; + 965C2F2522895E2800015140 /* Santander-TestUITests */ = { + isa = PBXGroup; + children = ( + 965C2F2622895E2800015140 /* Santander_TestUITests.swift */, + 965C2F2822895E2800015140 /* Info.plist */, + ); + path = "Santander-TestUITests"; + sourceTree = ""; + }; + 965C2F342289668000015140 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 965C2F392289682900015140 /* FundsServiceApi */, + 965C2F35228966AF00015140 /* Constants.swift */, + ); + path = "Supporting Files"; + sourceTree = ""; + }; + 965C2F392289682900015140 /* FundsServiceApi */ = { + isa = PBXGroup; + children = ( + 965C2F372289681F00015140 /* FundsServiceApi.swift */, + 965C2F3A228974F500015140 /* FundsServiceApiManager.swift */, + ); + path = FundsServiceApi; + sourceTree = ""; + }; + 965C2F3C2289767900015140 /* Models */ = { + isa = PBXGroup; + children = ( + 965C2F3D2289776F00015140 /* FormCell.swift */, + 965C2F3F22897AF800015140 /* Fund.swift */, + ); + path = Models; + sourceTree = ""; + }; + C03B33535A1371552140448D /* Pods */ = { + isa = PBXGroup; + children = ( + A512F1F10FEC63C067350139 /* Pods-Santander-Test.debug.xcconfig */, + 88AD971CB0FCD8230DDD854A /* Pods-Santander-Test.release.xcconfig */, + 39073D8A59D67805EB72C3BC /* Pods-Santander-TestTests.debug.xcconfig */, + 6C7F8C512B2B46A97F1AA7C2 /* Pods-Santander-TestTests.release.xcconfig */, + 944E346D8B737070B6AC9E04 /* Pods-Santander-TestUITests.debug.xcconfig */, + 21E66E0DEC791ED96A6B4107 /* Pods-Santander-TestUITests.release.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 965C2F0222895E2500015140 /* Santander-Test */ = { + isa = PBXNativeTarget; + buildConfigurationList = 965C2F2B22895E2800015140 /* Build configuration list for PBXNativeTarget "Santander-Test" */; + buildPhases = ( + A350BA9599603A07693E4C33 /* [CP] Check Pods Manifest.lock */, + 965C2EFF22895E2500015140 /* Sources */, + 965C2F0022895E2500015140 /* Frameworks */, + 965C2F0122895E2500015140 /* Resources */, + FFA4C426367581086C433180 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Santander-Test"; + productName = "Santander-Test"; + productReference = 965C2F0322895E2500015140 /* Santander-Test.app */; + productType = "com.apple.product-type.application"; + }; + 965C2F1622895E2800015140 /* Santander-TestTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 965C2F2E22895E2800015140 /* Build configuration list for PBXNativeTarget "Santander-TestTests" */; + buildPhases = ( + E0BD940A6A3E42133978040E /* [CP] Check Pods Manifest.lock */, + 965C2F1322895E2800015140 /* Sources */, + 965C2F1422895E2800015140 /* Frameworks */, + 965C2F1522895E2800015140 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 965C2F1922895E2800015140 /* PBXTargetDependency */, + ); + name = "Santander-TestTests"; + productName = "Santander-TestTests"; + productReference = 965C2F1722895E2800015140 /* Santander-TestTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 965C2F2122895E2800015140 /* Santander-TestUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 965C2F3122895E2800015140 /* Build configuration list for PBXNativeTarget "Santander-TestUITests" */; + buildPhases = ( + 70AA8CD8B4BB476952C6F02C /* [CP] Check Pods Manifest.lock */, + 965C2F1E22895E2800015140 /* Sources */, + 965C2F1F22895E2800015140 /* Frameworks */, + 965C2F2022895E2800015140 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 965C2F2422895E2800015140 /* PBXTargetDependency */, + ); + name = "Santander-TestUITests"; + productName = "Santander-TestUITests"; + productReference = 965C2F2222895E2800015140 /* Santander-TestUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 965C2EFB22895E2500015140 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1010; + LastUpgradeCheck = 1010; + ORGANIZATIONNAME = "Matheus Ribeiro"; + TargetAttributes = { + 965C2F0222895E2500015140 = { + CreatedOnToolsVersion = 10.1; + }; + 965C2F1622895E2800015140 = { + CreatedOnToolsVersion = 10.1; + TestTargetID = 965C2F0222895E2500015140; + }; + 965C2F2122895E2800015140 = { + CreatedOnToolsVersion = 10.1; + TestTargetID = 965C2F0222895E2500015140; + }; + }; + }; + buildConfigurationList = 965C2EFE22895E2500015140 /* Build configuration list for PBXProject "Santander-Test" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 965C2EFA22895E2500015140; + productRefGroup = 965C2F0422895E2500015140 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 965C2F0222895E2500015140 /* Santander-Test */, + 965C2F1622895E2800015140 /* Santander-TestTests */, + 965C2F2122895E2800015140 /* Santander-TestUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 965C2F0122895E2500015140 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 965C2F1122895E2800015140 /* LaunchScreen.storyboard in Resources */, + 965C2F0E22895E2800015140 /* Assets.xcassets in Resources */, + 965C2F0C22895E2500015140 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 965C2F1522895E2800015140 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 965C2F2022895E2800015140 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 70AA8CD8B4BB476952C6F02C /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Santander-TestUITests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + A350BA9599603A07693E4C33 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Santander-Test-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + E0BD940A6A3E42133978040E /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Santander-TestTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + FFA4C426367581086C433180 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework", + "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework", + "${BUILT_PRODUCTS_DIR}/Result/Result.framework", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + ); + outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Moya.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Result.framework", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 965C2EFF22895E2500015140 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 965C2F3B228974F500015140 /* FundsServiceApiManager.swift in Sources */, + 965C2F3E2289776F00015140 /* FormCell.swift in Sources */, + 965C2F0922895E2500015140 /* ViewController.swift in Sources */, + 965C2F0722895E2500015140 /* AppDelegate.swift in Sources */, + 965C2F36228966AF00015140 /* Constants.swift in Sources */, + 965C2F382289681F00015140 /* FundsServiceApi.swift in Sources */, + 965C2F4022897AF800015140 /* Fund.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 965C2F1322895E2800015140 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 965C2F1C22895E2800015140 /* Santander_TestTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 965C2F1E22895E2800015140 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 965C2F2722895E2800015140 /* Santander_TestUITests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 965C2F1922895E2800015140 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 965C2F0222895E2500015140 /* Santander-Test */; + targetProxy = 965C2F1822895E2800015140 /* PBXContainerItemProxy */; + }; + 965C2F2422895E2800015140 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 965C2F0222895E2500015140 /* Santander-Test */; + targetProxy = 965C2F2322895E2800015140 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 965C2F0A22895E2500015140 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 965C2F0B22895E2500015140 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 965C2F0F22895E2800015140 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 965C2F1022895E2800015140 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 965C2F2922895E2800015140 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 965C2F2A22895E2800015140 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "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 = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 965C2F2C22895E2800015140 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A512F1F10FEC63C067350139 /* Pods-Santander-Test.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = ZJ9A79V896; + INFOPLIST_FILE = "Santander-Test/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "br.com.matheus.Santander-Test"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 965C2F2D22895E2800015140 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 88AD971CB0FCD8230DDD854A /* Pods-Santander-Test.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = ZJ9A79V896; + INFOPLIST_FILE = "Santander-Test/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "br.com.matheus.Santander-Test"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 965C2F2F22895E2800015140 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 39073D8A59D67805EB72C3BC /* Pods-Santander-TestTests.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = ZJ9A79V896; + INFOPLIST_FILE = "Santander-TestTests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "br.com.matheus.Santander-TestTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Santander-Test.app/Santander-Test"; + }; + name = Debug; + }; + 965C2F3022895E2800015140 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6C7F8C512B2B46A97F1AA7C2 /* Pods-Santander-TestTests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = ZJ9A79V896; + INFOPLIST_FILE = "Santander-TestTests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "br.com.matheus.Santander-TestTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Santander-Test.app/Santander-Test"; + }; + name = Release; + }; + 965C2F3222895E2800015140 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 944E346D8B737070B6AC9E04 /* Pods-Santander-TestUITests.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = ZJ9A79V896; + INFOPLIST_FILE = "Santander-TestUITests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "br.com.matheus.Santander-TestUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = "Santander-Test"; + }; + name = Debug; + }; + 965C2F3322895E2800015140 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 21E66E0DEC791ED96A6B4107 /* Pods-Santander-TestUITests.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = ZJ9A79V896; + INFOPLIST_FILE = "Santander-TestUITests/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "br.com.matheus.Santander-TestUITests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = "Santander-Test"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 965C2EFE22895E2500015140 /* Build configuration list for PBXProject "Santander-Test" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 965C2F2922895E2800015140 /* Debug */, + 965C2F2A22895E2800015140 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 965C2F2B22895E2800015140 /* Build configuration list for PBXNativeTarget "Santander-Test" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 965C2F2C22895E2800015140 /* Debug */, + 965C2F2D22895E2800015140 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 965C2F2E22895E2800015140 /* Build configuration list for PBXNativeTarget "Santander-TestTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 965C2F2F22895E2800015140 /* Debug */, + 965C2F3022895E2800015140 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 965C2F3122895E2800015140 /* Build configuration list for PBXNativeTarget "Santander-TestUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 965C2F3222895E2800015140 /* Debug */, + 965C2F3322895E2800015140 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 965C2EFB22895E2500015140 /* Project object */; +} diff --git a/Santander-Test/Santander-Test.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Santander-Test/Santander-Test.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..f583a102 --- /dev/null +++ b/Santander-Test/Santander-Test.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Santander-Test/Santander-Test.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Santander-Test/Santander-Test.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/Santander-Test/Santander-Test.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Santander-Test/Santander-Test.xcworkspace/contents.xcworkspacedata b/Santander-Test/Santander-Test.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..501042af --- /dev/null +++ b/Santander-Test/Santander-Test.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/Santander-Test/Santander-Test.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Santander-Test/Santander-Test.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/Santander-Test/Santander-Test.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Santander-Test/Santander-Test/AppDelegate.swift b/Santander-Test/Santander-Test/AppDelegate.swift new file mode 100644 index 00000000..ce8e8760 --- /dev/null +++ b/Santander-Test/Santander-Test/AppDelegate.swift @@ -0,0 +1,46 @@ +// +// AppDelegate.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 13/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import UIKit + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + 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 invalidate graphics rendering callbacks. 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 active 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:. + } + + +} + diff --git a/Santander-Test/Santander-Test/Assets.xcassets/AppIcon.appiconset/Contents.json b/Santander-Test/Santander-Test/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..d8db8d65 --- /dev/null +++ b/Santander-Test/Santander-Test/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "83.5x83.5", + "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Santander-Test/Santander-Test/Assets.xcassets/Contents.json b/Santander-Test/Santander-Test/Assets.xcassets/Contents.json new file mode 100644 index 00000000..da4a164c --- /dev/null +++ b/Santander-Test/Santander-Test/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Santander-Test/Santander-Test/Base.lproj/LaunchScreen.storyboard b/Santander-Test/Santander-Test/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..bfa36129 --- /dev/null +++ b/Santander-Test/Santander-Test/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Santander-Test/Base.lproj/Main.storyboard b/Santander-Test/Santander-Test/Base.lproj/Main.storyboard new file mode 100644 index 00000000..f1bcf384 --- /dev/null +++ b/Santander-Test/Santander-Test/Base.lproj/Main.storyboard @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Santander-Test/Info.plist b/Santander-Test/Santander-Test/Info.plist new file mode 100644 index 00000000..16be3b68 --- /dev/null +++ b/Santander-Test/Santander-Test/Info.plist @@ -0,0 +1,45 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/Santander-Test/Santander-Test/Models/FormCell.swift b/Santander-Test/Santander-Test/Models/FormCell.swift new file mode 100644 index 00000000..18801e5e --- /dev/null +++ b/Santander-Test/Santander-Test/Models/FormCell.swift @@ -0,0 +1,24 @@ +// +// FormCell.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 13/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import Foundation + +struct FormCellsList: Decodable { + let cells: [FormCell] +} + +struct FormCell: Decodable { + let id: Int? + let type: Int? + let message: String? +// let typefield: Int? // TODO + let hidden: Bool? + let topSpacing: Int? + let show: Int? + let required: Bool? +} diff --git a/Santander-Test/Santander-Test/Models/Fund.swift b/Santander-Test/Santander-Test/Models/Fund.swift new file mode 100644 index 00000000..499576b6 --- /dev/null +++ b/Santander-Test/Santander-Test/Models/Fund.swift @@ -0,0 +1,59 @@ +// +// Fund.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 13/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import Foundation + +struct FundsList: Decodable { + let screen: Fund? +} + + +struct Fund: Decodable { + let title: String? + let fundName: String? + let whatIs: String? + let definition: String? + let riskTitle: String? + let risk: Int? + let infoTitle: String? + let moreInfo: FundMoreInfo? + let info: [FundInfo]? + let downInfo: [FundInfo]? +} + +struct FundMoreInfo: Decodable { + let month: FundMoreInfoMonth? + let year: FundMoreInfoYear? + let twelveMonths: FundMoreInfo12Months? + + enum CodingKeys: String, CodingKey { + case month + case year + case twelveMonths = "12months" + } +} + +struct FundMoreInfoMonth: Decodable { + let fund: Float? + let CDI: Float? +} + +struct FundMoreInfoYear: Decodable { + let fund: Float? + let CDI: Float? +} + +struct FundMoreInfo12Months: Decodable { + let fund: Float? + let CDI: Float? +} + +struct FundInfo: Decodable { + let name: String? + let data: String? +} diff --git a/Santander-Test/Santander-Test/Supporting Files/Constants.swift b/Santander-Test/Santander-Test/Supporting Files/Constants.swift new file mode 100644 index 00000000..32db4da5 --- /dev/null +++ b/Santander-Test/Santander-Test/Supporting Files/Constants.swift @@ -0,0 +1,13 @@ +// +// Constants.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 13/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import Foundation + +enum Constants { + static let baseUrl = "https://floating-mountain-50292.herokuapp.com" +} diff --git a/Santander-Test/Santander-Test/Supporting Files/FundsServiceApi/FundsServiceApi.swift b/Santander-Test/Santander-Test/Supporting Files/FundsServiceApi/FundsServiceApi.swift new file mode 100644 index 00000000..6236a8dd --- /dev/null +++ b/Santander-Test/Santander-Test/Supporting Files/FundsServiceApi/FundsServiceApi.swift @@ -0,0 +1,59 @@ +// +// FundsServiceApi.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 13/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import Moya + +enum FundsServiceApi { + case getFormCellsList + case getFundsList +} + +extension FundsServiceApi: TargetType { + var baseURL: URL { + return URL(string: Constants.baseUrl)! + } + + var path: String { + switch self { + case .getFormCellsList: + return "/cells.json" + case .getFundsList: + return "/fund.json" + } + } + + var method: Method { + switch self { + case .getFormCellsList, + .getFundsList: + return .get + } + } + + var sampleData: Data { + return Data() + } + + var task: Task { + switch self { + case .getFormCellsList, + .getFundsList: + return .requestPlain + } + } + + var headers: [String : String]? { + switch self { + case .getFormCellsList, + .getFundsList: + return ["content-type": "application/json"] + } + } + + +} diff --git a/Santander-Test/Santander-Test/Supporting Files/FundsServiceApi/FundsServiceApiManager.swift b/Santander-Test/Santander-Test/Supporting Files/FundsServiceApi/FundsServiceApiManager.swift new file mode 100644 index 00000000..d3336591 --- /dev/null +++ b/Santander-Test/Santander-Test/Supporting Files/FundsServiceApi/FundsServiceApiManager.swift @@ -0,0 +1,51 @@ +// +// FundsServiceApiManager.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 13/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import Moya + +class FundsServiceApiManager { + + static let shared = FundsServiceApiManager() + + private init() {} + + private let provider = MoyaProvider() + + func getCellsList(completion: @escaping (FormCellsList?, Error?) -> Void) { + provider.request(.getFormCellsList) { (response) in + switch response { + case .success(let value): + do { + let formCellsList: FormCellsList = try JSONDecoder().decode(FormCellsList.self, from: value.data) + completion(formCellsList, nil) + } catch { + completion(nil, error) + } + case .failure(let error): + completion(nil, error) + } + } + } + + func getFundsList(completion: @escaping (FundsList?, Error?) -> Void) { + provider.request(.getFundsList) { (response) in + switch response { + case .success(let value): + do { + let fundsList: FundsList = try JSONDecoder().decode(FundsList.self, from: value.data) + completion(fundsList, nil) + } catch { + completion(nil, error) + } + case .failure(let error): + completion(nil, error) + } + } + } + +} diff --git a/Santander-Test/Santander-Test/ViewController.swift b/Santander-Test/Santander-Test/ViewController.swift new file mode 100644 index 00000000..f432e035 --- /dev/null +++ b/Santander-Test/Santander-Test/ViewController.swift @@ -0,0 +1,30 @@ +// +// ViewController.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 13/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import UIKit + +class ViewController: UIViewController { + + override func viewDidLoad() { + super.viewDidLoad() + + let apiManager = FundsServiceApiManager.shared + + apiManager.getCellsList { (formCellsList, error) in + print(formCellsList) + } + + apiManager.getFundsList { (fundsList, error) in + print(fundsList) + } + + } + + +} + diff --git a/Santander-Test/Santander-TestTests/Info.plist b/Santander-Test/Santander-TestTests/Info.plist new file mode 100644 index 00000000..6c40a6cd --- /dev/null +++ b/Santander-Test/Santander-TestTests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/Santander-Test/Santander-TestTests/Santander_TestTests.swift b/Santander-Test/Santander-TestTests/Santander_TestTests.swift new file mode 100644 index 00000000..dfaebf16 --- /dev/null +++ b/Santander-Test/Santander-TestTests/Santander_TestTests.swift @@ -0,0 +1,34 @@ +// +// Santander_TestTests.swift +// Santander-TestTests +// +// Created by Matheus Ribeiro on 13/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import XCTest +@testable import Santander_Test + +class Santander_TestTests: XCTestCase { + + override func setUp() { + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + } + + func testExample() { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testPerformanceExample() { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/Santander-Test/Santander-TestUITests/Info.plist b/Santander-Test/Santander-TestUITests/Info.plist new file mode 100644 index 00000000..6c40a6cd --- /dev/null +++ b/Santander-Test/Santander-TestUITests/Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/Santander-Test/Santander-TestUITests/Santander_TestUITests.swift b/Santander-Test/Santander-TestUITests/Santander_TestUITests.swift new file mode 100644 index 00000000..2dcabe9a --- /dev/null +++ b/Santander-Test/Santander-TestUITests/Santander_TestUITests.swift @@ -0,0 +1,34 @@ +// +// Santander_TestUITests.swift +// Santander-TestUITests +// +// Created by Matheus Ribeiro on 13/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import XCTest + +class Santander_TestUITests: XCTestCase { + + override func 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. + 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. + } + + func testExample() { + // Use recording to get started writing UI tests. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + +} From 47656a7fbf7d8a8743e46f6a6510f85282a2b750 Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Mon, 13 May 2019 20:46:51 -0400 Subject: [PATCH 02/39] =?UTF-8?q?Resolu=C3=A7=C3=A3o=20do=20problema=20do?= =?UTF-8?q?=20typefield?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xcschemes/xcschememanagement.plist | 41 ++++++++++++++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 12549 bytes .../xcschemes/xcschememanagement.plist | 14 ++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 26667 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 5 +++ .../Santander-Test/Models/FormCell.swift | 23 +++++++++- .../Santander-Test/ViewController.swift | 6 +-- 7 files changed, 83 insertions(+), 6 deletions(-) create mode 100644 Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 Santander-Test/Santander-Test.xcodeproj/project.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Santander-Test/Santander-Test.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist diff --git a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 00000000..76050175 --- /dev/null +++ b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,41 @@ + + + + + SchemeUserState + + SuppressBuildableAutocreation + + 3383968E74B5371B20BB519B170DC7FD + + primary + + + 4B0183450F95394DC0C49E326A20B42D + + primary + + + BAAB01D1BA82ABAE2B535579B77ED0CB + + primary + + + C0E89653A2AC6FA0A38278FEF9AF42FC + + primary + + + C27DC25A308B276373505823128CD197 + + primary + + + EC79B224898B261BF083C0F8FD11ADD1 + + primary + + + + + diff --git a/Santander-Test/Santander-Test.xcodeproj/project.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcodeproj/project.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..e4a48e9420a82cc65de3e70b1d732ee5ea70e7f4 GIT binary patch literal 12549 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 + + + + SchemeUserState + + Santander-Test.xcscheme_^#shared#^_ + + orderHint + 6 + + + + diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..4e96d23adb4f9e39dfc1894ae496b8703a71b78d GIT binary patch literal 26667 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 + + diff --git a/Santander-Test/Santander-Test/Models/FormCell.swift b/Santander-Test/Santander-Test/Models/FormCell.swift index 18801e5e..a1224066 100644 --- a/Santander-Test/Santander-Test/Models/FormCell.swift +++ b/Santander-Test/Santander-Test/Models/FormCell.swift @@ -16,9 +16,30 @@ struct FormCell: Decodable { let id: Int? let type: Int? let message: String? -// let typefield: Int? // TODO + let typefield: AnyDecodable? let hidden: Bool? let topSpacing: Int? let show: Int? let required: Bool? } + +public struct AnyDecodable: Decodable { + + let value: Any + + public init(_ value: T?) { + self.value = value ?? () + } + + public init(from decoder: Decoder) throws { + let container = try decoder.singleValueContainer() + + if let string = try? container.decode(String.self) { + self.init(string) + } else if let int = try? container.decode(Int.self) { + self.init(int) + } else { + self.init(()) + } + } +} diff --git a/Santander-Test/Santander-Test/ViewController.swift b/Santander-Test/Santander-Test/ViewController.swift index f432e035..2f171ac4 100644 --- a/Santander-Test/Santander-Test/ViewController.swift +++ b/Santander-Test/Santander-Test/ViewController.swift @@ -16,11 +16,7 @@ class ViewController: UIViewController { let apiManager = FundsServiceApiManager.shared apiManager.getCellsList { (formCellsList, error) in - print(formCellsList) - } - - apiManager.getFundsList { (fundsList, error) in - print(fundsList) + print(formCellsList!.cells.map({$0.typefield})) } } From 0f7e3b9529db01ecb3f2fc64b7814ce89e53de9e Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Wed, 15 May 2019 01:15:49 -0400 Subject: [PATCH 03/39] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20b=C3=A1sica=20d?= =?UTF-8?q?as=20c=C3=A9lulas=20do=20form?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Santander-Test.xcodeproj/project.pbxproj | 144 ++++++++++++++++-- .../UserInterfaceState.xcuserstate | Bin 26667 -> 41854 bytes .../Santander-Test/Base.lproj/Main.storyboard | 24 --- .../GenericScenes/Checkbox/CheckboxCell.swift | 36 +++++ .../GenericScenes/Checkbox/CheckboxCell.xib | 62 ++++++++ .../GenericScenes/Field/FieldCell.swift | 29 ++++ .../GenericScenes/Field/FieldCell.xib | 60 ++++++++ .../GenericScenes/Send/SendCell.swift | 27 ++++ .../GenericScenes/Send/SendCell.xib | 44 ++++++ .../GenericScenes/Text/TextCell.swift | 21 +++ .../GenericScenes/Text/TextCell.xib | 38 +++++ Santander-Test/Santander-Test/Info.plist | 2 +- .../Scenes/Form/Form.storyboard | 47 ++++++ .../Scenes/Form/FormInteractor.swift | 37 +++++ .../Scenes/Form/FormModels.swift | 26 ++++ .../Scenes/Form/FormPresenter.swift | 28 ++++ .../Scenes/Form/FormRouter.swift | 57 +++++++ .../Scenes/Form/FormViewController.swift | 115 ++++++++++++++ .../Scenes/Form/FormWorker.swift | 18 +++ .../Extensions/UIColorExtensions.swift | 16 ++ .../Santander-Test/ViewController.swift | 26 ---- 21 files changed, 790 insertions(+), 67 deletions(-) delete mode 100644 Santander-Test/Santander-Test/Base.lproj/Main.storyboard create mode 100644 Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.swift create mode 100644 Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.xib create mode 100644 Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.swift create mode 100644 Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.xib create mode 100644 Santander-Test/Santander-Test/GenericScenes/Send/SendCell.swift create mode 100644 Santander-Test/Santander-Test/GenericScenes/Send/SendCell.xib create mode 100644 Santander-Test/Santander-Test/GenericScenes/Text/TextCell.swift create mode 100644 Santander-Test/Santander-Test/GenericScenes/Text/TextCell.xib create mode 100644 Santander-Test/Santander-Test/Scenes/Form/Form.storyboard create mode 100644 Santander-Test/Santander-Test/Scenes/Form/FormInteractor.swift create mode 100644 Santander-Test/Santander-Test/Scenes/Form/FormModels.swift create mode 100644 Santander-Test/Santander-Test/Scenes/Form/FormPresenter.swift create mode 100644 Santander-Test/Santander-Test/Scenes/Form/FormRouter.swift create mode 100644 Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift create mode 100644 Santander-Test/Santander-Test/Scenes/Form/FormWorker.swift create mode 100644 Santander-Test/Santander-Test/Supporting Files/Extensions/UIColorExtensions.swift delete mode 100644 Santander-Test/Santander-Test/ViewController.swift diff --git a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj index 691ed57b..e89a7bca 100644 --- a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj +++ b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj @@ -9,8 +9,6 @@ /* Begin PBXBuildFile section */ 493342D14E83E8F2E5CA3C31 /* Pods_Santander_TestTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0815CC0FAEEAF8D6E86F6807 /* Pods_Santander_TestTests.framework */; }; 965C2F0722895E2500015140 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F0622895E2500015140 /* AppDelegate.swift */; }; - 965C2F0922895E2500015140 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F0822895E2500015140 /* ViewController.swift */; }; - 965C2F0C22895E2500015140 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F0A22895E2500015140 /* Main.storyboard */; }; 965C2F0E22895E2800015140 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F0D22895E2800015140 /* Assets.xcassets */; }; 965C2F1122895E2800015140 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F0F22895E2800015140 /* LaunchScreen.storyboard */; }; 965C2F1C22895E2800015140 /* Santander_TestTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F1B22895E2800015140 /* Santander_TestTests.swift */; }; @@ -20,6 +18,22 @@ 965C2F3B228974F500015140 /* FundsServiceApiManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F3A228974F500015140 /* FundsServiceApiManager.swift */; }; 965C2F3E2289776F00015140 /* FormCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F3D2289776F00015140 /* FormCell.swift */; }; 965C2F4022897AF800015140 /* Fund.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F3F22897AF800015140 /* Fund.swift */; }; + 965C2F55228A891900015140 /* FormPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F4F228A891900015140 /* FormPresenter.swift */; }; + 965C2F56228A891900015140 /* FormWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F50228A891900015140 /* FormWorker.swift */; }; + 965C2F57228A891900015140 /* FormRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F51228A891900015140 /* FormRouter.swift */; }; + 965C2F58228A891900015140 /* FormModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F52228A891900015140 /* FormModels.swift */; }; + 965C2F59228A891900015140 /* FormViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F53228A891900015140 /* FormViewController.swift */; }; + 965C2F5A228A891900015140 /* FormInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F54228A891900015140 /* FormInteractor.swift */; }; + 965C2F5C228A8CC200015140 /* Form.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F5B228A8CC200015140 /* Form.storyboard */; }; + 965C2F64228A9B5800015140 /* FieldCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F63228A9B5800015140 /* FieldCell.xib */; }; + 965C2F66228A9DFC00015140 /* FieldCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F65228A9DFC00015140 /* FieldCell.swift */; }; + 965C2F69228B6D6400015140 /* TextCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F68228B6D6400015140 /* TextCell.xib */; }; + 965C2F6B228B6E1E00015140 /* TextCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F6A228B6E1E00015140 /* TextCell.swift */; }; + 965C2F6E228B6EB100015140 /* CheckboxCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F6D228B6EB100015140 /* CheckboxCell.xib */; }; + 965C2F70228B6EBE00015140 /* CheckboxCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F6F228B6EBE00015140 /* CheckboxCell.swift */; }; + 965C2F73228B9A4C00015140 /* SendCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F72228B9A4C00015140 /* SendCell.swift */; }; + 965C2F75228B9A8000015140 /* SendCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F74228B9A8000015140 /* SendCell.xib */; }; + 965C2F78228BBDB300015140 /* UIColorExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F77228BBDB300015140 /* UIColorExtensions.swift */; }; 973161DFBDDB30BB534A86DA /* Pods_Santander_TestUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 878E0A16E793237D34137EC7 /* Pods_Santander_TestUITests.framework */; }; C4FCFE13C06111F180515DFA /* Pods_Santander_Test.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F563E135B794CADBF7401F8 /* Pods_Santander_Test.framework */; }; /* End PBXBuildFile section */ @@ -52,8 +66,6 @@ 944E346D8B737070B6AC9E04 /* Pods-Santander-TestUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Santander-TestUITests.debug.xcconfig"; path = "Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.debug.xcconfig"; sourceTree = ""; }; 965C2F0322895E2500015140 /* Santander-Test.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Santander-Test.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 965C2F0622895E2500015140 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 965C2F0822895E2500015140 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; - 965C2F0B22895E2500015140 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 965C2F0D22895E2800015140 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 965C2F1022895E2800015140 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 965C2F1222895E2800015140 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -68,6 +80,22 @@ 965C2F3A228974F500015140 /* FundsServiceApiManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FundsServiceApiManager.swift; sourceTree = ""; }; 965C2F3D2289776F00015140 /* FormCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormCell.swift; sourceTree = ""; }; 965C2F3F22897AF800015140 /* Fund.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Fund.swift; sourceTree = ""; }; + 965C2F4F228A891900015140 /* FormPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormPresenter.swift; sourceTree = ""; }; + 965C2F50228A891900015140 /* FormWorker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormWorker.swift; sourceTree = ""; }; + 965C2F51228A891900015140 /* FormRouter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormRouter.swift; sourceTree = ""; }; + 965C2F52228A891900015140 /* FormModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormModels.swift; sourceTree = ""; }; + 965C2F53228A891900015140 /* FormViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormViewController.swift; sourceTree = ""; }; + 965C2F54228A891900015140 /* FormInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormInteractor.swift; sourceTree = ""; }; + 965C2F5B228A8CC200015140 /* Form.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Form.storyboard; sourceTree = ""; }; + 965C2F63228A9B5800015140 /* FieldCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FieldCell.xib; sourceTree = ""; }; + 965C2F65228A9DFC00015140 /* FieldCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FieldCell.swift; sourceTree = ""; }; + 965C2F68228B6D6400015140 /* TextCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TextCell.xib; sourceTree = ""; }; + 965C2F6A228B6E1E00015140 /* TextCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextCell.swift; sourceTree = ""; }; + 965C2F6D228B6EB100015140 /* CheckboxCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CheckboxCell.xib; sourceTree = ""; }; + 965C2F6F228B6EBE00015140 /* CheckboxCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckboxCell.swift; sourceTree = ""; }; + 965C2F72228B9A4C00015140 /* SendCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendCell.swift; sourceTree = ""; }; + 965C2F74228B9A8000015140 /* SendCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SendCell.xib; sourceTree = ""; }; + 965C2F77228BBDB300015140 /* UIColorExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIColorExtensions.swift; sourceTree = ""; }; A512F1F10FEC63C067350139 /* Pods-Santander-Test.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Santander-Test.debug.xcconfig"; path = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -134,11 +162,11 @@ 965C2F0522895E2500015140 /* Santander-Test */ = { isa = PBXGroup; children = ( + 965C2F5D228A8EDF00015140 /* GenericScenes */, + 965C2F4D228A848400015140 /* Scenes */, 965C2F3C2289767900015140 /* Models */, 965C2F342289668000015140 /* Supporting Files */, 965C2F0622895E2500015140 /* AppDelegate.swift */, - 965C2F0822895E2500015140 /* ViewController.swift */, - 965C2F0A22895E2500015140 /* Main.storyboard */, 965C2F0D22895E2800015140 /* Assets.xcassets */, 965C2F0F22895E2800015140 /* LaunchScreen.storyboard */, 965C2F1222895E2800015140 /* Info.plist */, @@ -167,6 +195,7 @@ 965C2F342289668000015140 /* Supporting Files */ = { isa = PBXGroup; children = ( + 965C2F76228BBDA100015140 /* Extensions */, 965C2F392289682900015140 /* FundsServiceApi */, 965C2F35228966AF00015140 /* Constants.swift */, ); @@ -191,6 +220,83 @@ path = Models; sourceTree = ""; }; + 965C2F4D228A848400015140 /* Scenes */ = { + isa = PBXGroup; + children = ( + 965C2F4E228A848E00015140 /* Form */, + ); + path = Scenes; + sourceTree = ""; + }; + 965C2F4E228A848E00015140 /* Form */ = { + isa = PBXGroup; + children = ( + 965C2F4F228A891900015140 /* FormPresenter.swift */, + 965C2F50228A891900015140 /* FormWorker.swift */, + 965C2F51228A891900015140 /* FormRouter.swift */, + 965C2F52228A891900015140 /* FormModels.swift */, + 965C2F53228A891900015140 /* FormViewController.swift */, + 965C2F54228A891900015140 /* FormInteractor.swift */, + 965C2F5B228A8CC200015140 /* Form.storyboard */, + ); + path = Form; + sourceTree = ""; + }; + 965C2F5D228A8EDF00015140 /* GenericScenes */ = { + isa = PBXGroup; + children = ( + 965C2F71228B9A2500015140 /* Send */, + 965C2F6C228B6E8C00015140 /* Checkbox */, + 965C2F67228B6C4300015140 /* Text */, + 965C2F5E228A8EF200015140 /* Field */, + ); + path = GenericScenes; + sourceTree = ""; + }; + 965C2F5E228A8EF200015140 /* Field */ = { + isa = PBXGroup; + children = ( + 965C2F63228A9B5800015140 /* FieldCell.xib */, + 965C2F65228A9DFC00015140 /* FieldCell.swift */, + ); + path = Field; + sourceTree = ""; + }; + 965C2F67228B6C4300015140 /* Text */ = { + isa = PBXGroup; + children = ( + 965C2F68228B6D6400015140 /* TextCell.xib */, + 965C2F6A228B6E1E00015140 /* TextCell.swift */, + ); + path = Text; + sourceTree = ""; + }; + 965C2F6C228B6E8C00015140 /* Checkbox */ = { + isa = PBXGroup; + children = ( + 965C2F6D228B6EB100015140 /* CheckboxCell.xib */, + 965C2F6F228B6EBE00015140 /* CheckboxCell.swift */, + ); + path = Checkbox; + sourceTree = ""; + }; + 965C2F71228B9A2500015140 /* Send */ = { + isa = PBXGroup; + children = ( + 965C2F72228B9A4C00015140 /* SendCell.swift */, + 965C2F74228B9A8000015140 /* SendCell.xib */, + ); + path = Send; + sourceTree = ""; + }; + 965C2F76228BBDA100015140 /* Extensions */ = { + isa = PBXGroup; + children = ( + 965C2F77228BBDB300015140 /* UIColorExtensions.swift */, + ); + path = Extensions; + sourceTree = ""; + }; C03B33535A1371552140448D /* Pods */ = { isa = PBXGroup; children = ( @@ -312,9 +418,13 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 965C2F75228B9A8000015140 /* SendCell.xib in Resources */, 965C2F1122895E2800015140 /* LaunchScreen.storyboard in Resources */, + 965C2F5C228A8CC200015140 /* Form.storyboard in Resources */, + 965C2F69228B6D6400015140 /* TextCell.xib in Resources */, 965C2F0E22895E2800015140 /* Assets.xcassets in Resources */, - 965C2F0C22895E2500015140 /* Main.storyboard in Resources */, + 965C2F6E228B6EB100015140 /* CheckboxCell.xib in Resources */, + 965C2F64228A9B5800015140 /* FieldCell.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -436,10 +546,20 @@ files = ( 965C2F3B228974F500015140 /* FundsServiceApiManager.swift in Sources */, 965C2F3E2289776F00015140 /* FormCell.swift in Sources */, - 965C2F0922895E2500015140 /* ViewController.swift in Sources */, + 965C2F70228B6EBE00015140 /* CheckboxCell.swift in Sources */, + 965C2F73228B9A4C00015140 /* SendCell.swift in Sources */, + 965C2F55228A891900015140 /* FormPresenter.swift in Sources */, 965C2F0722895E2500015140 /* AppDelegate.swift in Sources */, 965C2F36228966AF00015140 /* Constants.swift in Sources */, + 965C2F59228A891900015140 /* FormViewController.swift in Sources */, + 965C2F78228BBDB300015140 /* UIColorExtensions.swift in Sources */, + 965C2F66228A9DFC00015140 /* FieldCell.swift in Sources */, + 965C2F57228A891900015140 /* FormRouter.swift in Sources */, + 965C2F5A228A891900015140 /* FormInteractor.swift in Sources */, + 965C2F58228A891900015140 /* FormModels.swift in Sources */, + 965C2F6B228B6E1E00015140 /* TextCell.swift in Sources */, 965C2F382289681F00015140 /* FundsServiceApi.swift in Sources */, + 965C2F56228A891900015140 /* FormWorker.swift in Sources */, 965C2F4022897AF800015140 /* Fund.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -476,14 +596,6 @@ /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ - 965C2F0A22895E2500015140 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - 965C2F0B22895E2500015140 /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; 965C2F0F22895E2800015140 /* LaunchScreen.storyboard */ = { isa = PBXVariantGroup; children = ( diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index 4e96d23adb4f9e39dfc1894ae496b8703a71b78d..32b75a83d471e1a14c30812821e5d627c92e634b 100644 GIT binary patch delta 20516 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 C%K9b% delta 8924 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 - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.swift b/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.swift new file mode 100644 index 00000000..200a107b --- /dev/null +++ b/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.swift @@ -0,0 +1,36 @@ +// +// CheckboxCell.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 14/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import UIKit + +class CheckboxCell: UITableViewCell { + + @IBOutlet weak var checkboxOuterView: UIView! + @IBOutlet weak var checkboxInnerView: UIView! + @IBOutlet weak var label: UILabel! + + static let reuseIdentifier = "CheckboxCell" + + override func awakeFromNib() { + super.awakeFromNib() + + configureLayout() + } + + private func configureLayout() { + checkboxOuterView.layer.borderColor = UIColor.lightGrayColor.cgColor + checkboxOuterView.layer.borderWidth = 1 + checkboxOuterView.layer.cornerRadius = 3 + checkboxOuterView.backgroundColor = nil + + checkboxInnerView.backgroundColor = UIColor.darkRedColor + checkboxInnerView.layer.cornerRadius = 2 + + label.textColor = UIColor.lightGrayColor + } +} diff --git a/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.xib b/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.xib new file mode 100644 index 00000000..b54de1f3 --- /dev/null +++ b/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.xib @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.swift b/Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.swift new file mode 100644 index 00000000..e15813c3 --- /dev/null +++ b/Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.swift @@ -0,0 +1,29 @@ +// +// FieldCell.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 14/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import UIKit + +class FieldCell: UITableViewCell { + + @IBOutlet weak var label: UILabel! + @IBOutlet weak var textField: UITextField! + @IBOutlet weak var lineView: UIView! + + static let reuseIdentifier = "FieldCell" + + override func awakeFromNib() { + super.awakeFromNib() + + configureLayout() + } + + private func configureLayout() { + label.textColor = UIColor.lightGrayColor + } + +} diff --git a/Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.xib b/Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.xib new file mode 100644 index 00000000..fb1be791 --- /dev/null +++ b/Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.xib @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.swift b/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.swift new file mode 100644 index 00000000..00e4e14c --- /dev/null +++ b/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.swift @@ -0,0 +1,27 @@ +// +// SendCell.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 14/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import UIKit + +class SendCell: UITableViewCell { + + @IBOutlet weak var button: UIButton! + + static let reuseIdentifier = "SendCell" + + override func awakeFromNib() { + super.awakeFromNib() + + configureLayout() + } + + private func configureLayout() { + button.backgroundColor = UIColor.darkRedColor + button.layer.cornerRadius = 25 + } +} diff --git a/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.xib b/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.xib new file mode 100644 index 00000000..d1348ba9 --- /dev/null +++ b/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.xib @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Santander-Test/GenericScenes/Text/TextCell.swift b/Santander-Test/Santander-Test/GenericScenes/Text/TextCell.swift new file mode 100644 index 00000000..307baa88 --- /dev/null +++ b/Santander-Test/Santander-Test/GenericScenes/Text/TextCell.swift @@ -0,0 +1,21 @@ +// +// TextCell.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 14/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import UIKit + +class TextCell: UITableViewCell { + + @IBOutlet weak var label: UILabel! + + static let reuseIdentifier = "TextCell" + + override func awakeFromNib() { + super.awakeFromNib() + + } +} diff --git a/Santander-Test/Santander-Test/GenericScenes/Text/TextCell.xib b/Santander-Test/Santander-Test/GenericScenes/Text/TextCell.xib new file mode 100644 index 00000000..4c9a35c6 --- /dev/null +++ b/Santander-Test/Santander-Test/GenericScenes/Text/TextCell.xib @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Santander-Test/Info.plist b/Santander-Test/Santander-Test/Info.plist index 16be3b68..7f14ad0e 100644 --- a/Santander-Test/Santander-Test/Info.plist +++ b/Santander-Test/Santander-Test/Info.plist @@ -23,7 +23,7 @@ UILaunchStoryboardName LaunchScreen UIMainStoryboardFile - Main + Form UIRequiredDeviceCapabilities armv7 diff --git a/Santander-Test/Santander-Test/Scenes/Form/Form.storyboard b/Santander-Test/Santander-Test/Scenes/Form/Form.storyboard new file mode 100644 index 00000000..0c80537f --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/Form/Form.storyboard @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormInteractor.swift b/Santander-Test/Santander-Test/Scenes/Form/FormInteractor.swift new file mode 100644 index 00000000..3f0e70bc --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/Form/FormInteractor.swift @@ -0,0 +1,37 @@ +// +// FormInteractor.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 14/05/19. +// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol FormBusinessLogic { + func doSomething(request: Form.Something.Request) +} + +protocol FormDataStore { + //var name: String { get set } +} + +class FormInteractor: FormBusinessLogic, FormDataStore { + var presenter: FormPresentationLogic? + var worker: FormWorker? + //var name: String = "" + + // MARK: Do something + + func doSomething(request: Form.Something.Request) { + worker = FormWorker() + worker?.doSomeWork() + + let response = Form.Something.Response() + presenter?.presentSomething(response: response) + } +} diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormModels.swift b/Santander-Test/Santander-Test/Scenes/Form/FormModels.swift new file mode 100644 index 00000000..816bdaeb --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/Form/FormModels.swift @@ -0,0 +1,26 @@ +// +// FormModels.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 14/05/19. +// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +enum Form { + // MARK: Use cases + + enum Something { + struct Request { + } + struct Response { + } + struct ViewModel { + } + } +} diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormPresenter.swift b/Santander-Test/Santander-Test/Scenes/Form/FormPresenter.swift new file mode 100644 index 00000000..fdebe414 --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/Form/FormPresenter.swift @@ -0,0 +1,28 @@ +// +// FormPresenter.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 14/05/19. +// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol FormPresentationLogic { + func presentSomething(response: Form.Something.Response) +} + +class FormPresenter: FormPresentationLogic { + weak var viewController: FormDisplayLogic? + + // MARK: Do something + + func presentSomething(response: Form.Something.Response) { + let viewModel = Form.Something.ViewModel() + viewController?.displaySomething(viewModel: viewModel) + } +} diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormRouter.swift b/Santander-Test/Santander-Test/Scenes/Form/FormRouter.swift new file mode 100644 index 00000000..a23b3541 --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/Form/FormRouter.swift @@ -0,0 +1,57 @@ +// +// FormRouter.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 14/05/19. +// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +@objc protocol FormRoutingLogic { + //func routeToSomewhere(segue: UIStoryboardSegue?) +} + +protocol FormDataPassing { + var dataStore: FormDataStore? { get } +} + +class FormRouter: NSObject, FormRoutingLogic, FormDataPassing { + weak var viewController: FormViewController? + var dataStore: FormDataStore? + + // MARK: Routing + + //func routeToSomewhere(segue: UIStoryboardSegue?) + //{ + // if let segue = segue { + // let destinationVC = segue.destination as! SomewhereViewController + // var destinationDS = destinationVC.router!.dataStore! + // passDataToSomewhere(source: dataStore!, destination: &destinationDS) + // } else { + // let storyboard = UIStoryboard(name: "Main", bundle: nil) + // let destinationVC = storyboard.instantiateViewController(withIdentifier: "SomewhereViewController") as! SomewhereViewController + // var destinationDS = destinationVC.router!.dataStore! + // passDataToSomewhere(source: dataStore!, destination: &destinationDS) + // navigateToSomewhere(source: viewController!, destination: destinationVC) + // } + //} + + // MARK: Navigation + + //func navigateToSomewhere(source: FormViewController, destination: SomewhereViewController) + //{ + // source.show(destination, sender: nil) + //} + + // MARK: Passing data + + //func passDataToSomewhere(source: FormDataStore, destination: inout SomewhereDataStore) + //{ + // destination.name = source.name + //} +} diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift new file mode 100644 index 00000000..8c15002d --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift @@ -0,0 +1,115 @@ +// +// FormViewController.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 14/05/19. +// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol FormDisplayLogic: class { + func displaySomething(viewModel: Form.Something.ViewModel) +} + +class FormViewController: UIViewController { + + @IBOutlet weak var tableView: UITableView! + + var interactor: FormBusinessLogic? + var router: (NSObjectProtocol & FormRoutingLogic & FormDataPassing)? + + override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { + super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) + setup() + } + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + setup() + } + + private func setup() { + let viewController = self + let interactor = FormInteractor() + let presenter = FormPresenter() + let router = FormRouter() + viewController.interactor = interactor + viewController.router = router + interactor.presenter = presenter + presenter.viewController = viewController + router.viewController = viewController + router.dataStore = interactor + } + + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + if let scene = segue.identifier { + let selector = NSSelectorFromString("routeTo\(scene)WithSegue:") + if let router = router, router.responds(to: selector) { + router.perform(selector, with: segue) + } + } + } + + override func viewDidLoad() { + super.viewDidLoad() + + setupTableView() + + } + + private func setupTableView() { + registerTableViewCells() + } + + private func registerTableViewCells() { + let sendCell = UINib(nibName: "SendCell", bundle: nil) + tableView.register( + sendCell, + forCellReuseIdentifier: SendCell.reuseIdentifier + ) + + let checkboxCell = UINib(nibName: "CheckBoxCell", bundle: nil) + tableView.register( + checkboxCell, + forCellReuseIdentifier: CheckboxCell.reuseIdentifier + ) + + let textCell = UINib(nibName: "TextCell", bundle: nil) + tableView.register( + textCell, + forCellReuseIdentifier: TextCell.reuseIdentifier + ) + + let fieldCell = UINib(nibName: "FieldCell", bundle: nil) + tableView.register( + fieldCell, + forCellReuseIdentifier: FieldCell.reuseIdentifier + ) + } + +} + +extension FormViewController: FormDisplayLogic { + func displaySomething(viewModel: Form.Something.ViewModel) { + //nameTextField.text = viewModel.name + } +} + +extension FormViewController: UITableViewDataSource { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return 10 + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + let cell = tableView.dequeueReusableCell(withIdentifier: "FieldCell") as! FieldCell + + return cell + } + + +} diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormWorker.swift b/Santander-Test/Santander-Test/Scenes/Form/FormWorker.swift new file mode 100644 index 00000000..38f07023 --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/Form/FormWorker.swift @@ -0,0 +1,18 @@ +// +// FormWorker.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 14/05/19. +// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +class FormWorker { + func doSomeWork() { + } +} diff --git a/Santander-Test/Santander-Test/Supporting Files/Extensions/UIColorExtensions.swift b/Santander-Test/Santander-Test/Supporting Files/Extensions/UIColorExtensions.swift new file mode 100644 index 00000000..85cf5724 --- /dev/null +++ b/Santander-Test/Santander-Test/Supporting Files/Extensions/UIColorExtensions.swift @@ -0,0 +1,16 @@ +// +// UIColorExtensions.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 14/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import UIKit + +extension UIColor { + + static let darkRedColor = UIColor(red: 218/255, green: 1/255, blue: 1/255, alpha: 1.0) + static let lightGrayColor = UIColor(red: 151/255, green: 151/255, blue: 151/255, alpha: 1.0) + +} diff --git a/Santander-Test/Santander-Test/ViewController.swift b/Santander-Test/Santander-Test/ViewController.swift deleted file mode 100644 index 2f171ac4..00000000 --- a/Santander-Test/Santander-Test/ViewController.swift +++ /dev/null @@ -1,26 +0,0 @@ -// -// ViewController.swift -// Santander-Test -// -// Created by Matheus Ribeiro on 13/05/19. -// Copyright © 2019 Matheus Ribeiro. All rights reserved. -// - -import UIKit - -class ViewController: UIViewController { - - override func viewDidLoad() { - super.viewDidLoad() - - let apiManager = FundsServiceApiManager.shared - - apiManager.getCellsList { (formCellsList, error) in - print(formCellsList!.cells.map({$0.typefield})) - } - - } - - -} - From 9cbc2d533ecbef25931bfc329c41636b04e912b6 Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Wed, 15 May 2019 11:53:12 -0400 Subject: [PATCH 04/39] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20b=C3=A1sica=20d?= =?UTF-8?q?o=20FormViewControler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Santander-Test.xcodeproj/project.pbxproj | 28 ++-- .../UserInterfaceState.xcuserstate | Bin 41854 -> 43162 bytes .../Santander-Test/Models/FormCell.swift | 29 ++++- .../Scenes/Form/Form.storyboard | 2 +- .../Scenes/Form/FormInteractor.swift | 26 ++-- .../Scenes/Form/FormModels.swift | 38 +++++- .../Scenes/Form/FormPresenter.swift | 48 ++++++- .../Scenes/Form/FormViewController.swift | 43 +++++- .../Scenes/Form/FormWorker.swift | 12 +- .../FundsService}/FundsServiceApi.swift | 0 .../FundsService/FundsServiceApiManager.swift | 123 ++++++++++++++++++ .../FundsServiceApiManager.swift | 51 -------- 12 files changed, 319 insertions(+), 81 deletions(-) rename Santander-Test/Santander-Test/Supporting Files/{FundsServiceApi => API/FundsService}/FundsServiceApi.swift (100%) create mode 100644 Santander-Test/Santander-Test/Supporting Files/API/FundsService/FundsServiceApiManager.swift delete mode 100644 Santander-Test/Santander-Test/Supporting Files/FundsServiceApi/FundsServiceApiManager.swift diff --git a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj index e89a7bca..23a17b8f 100644 --- a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj +++ b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj @@ -195,22 +195,13 @@ 965C2F342289668000015140 /* Supporting Files */ = { isa = PBXGroup; children = ( + 965C2F7D228C4B8600015140 /* API */, 965C2F76228BBDA100015140 /* Extensions */, - 965C2F392289682900015140 /* FundsServiceApi */, 965C2F35228966AF00015140 /* Constants.swift */, ); path = "Supporting Files"; sourceTree = ""; }; - 965C2F392289682900015140 /* FundsServiceApi */ = { - isa = PBXGroup; - children = ( - 965C2F372289681F00015140 /* FundsServiceApi.swift */, - 965C2F3A228974F500015140 /* FundsServiceApiManager.swift */, - ); - path = FundsServiceApi; - sourceTree = ""; - }; 965C2F3C2289767900015140 /* Models */ = { isa = PBXGroup; children = ( @@ -297,6 +288,23 @@ path = Extensions; sourceTree = ""; }; + 965C2F7D228C4B8600015140 /* API */ = { + isa = PBXGroup; + children = ( + 965C2F7E228C4B9200015140 /* FundsService */, + ); + path = API; + sourceTree = ""; + }; + 965C2F7E228C4B9200015140 /* FundsService */ = { + isa = PBXGroup; + children = ( + 965C2F372289681F00015140 /* FundsServiceApi.swift */, + 965C2F3A228974F500015140 /* FundsServiceApiManager.swift */, + ); + path = FundsService; + sourceTree = ""; + }; C03B33535A1371552140448D /* Pods */ = { isa = PBXGroup; children = ( diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index 32b75a83d471e1a14c30812821e5d627c92e634b..2433278866751b7b8ccd4ff99211a32ce1013bd3 100644 GIT binary patch delta 20420 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 delta 19696 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 diff --git a/Santander-Test/Santander-Test/Models/FormCell.swift b/Santander-Test/Santander-Test/Models/FormCell.swift index a1224066..6baf4600 100644 --- a/Santander-Test/Santander-Test/Models/FormCell.swift +++ b/Santander-Test/Santander-Test/Models/FormCell.swift @@ -8,11 +8,36 @@ import Foundation +enum TypeField: Int { + case text = 1 + case telNumber = 2 + case email = 3 +} + +enum Type: Int { + case field = 1 + case text = 2 + case image = 3 + case checkbox = 4 + case send = 5 +} + +struct FormCell { + let id: Int? + let type: Type? + let message: String? + let typefield: TypeField? + let hidden: Bool? + let topSpacing: Int? + let show: Int? + let required: Bool? +} + struct FormCellsList: Decodable { - let cells: [FormCell] + let cells: [FormCellModel] } -struct FormCell: Decodable { +struct FormCellModel: Decodable { let id: Int? let type: Int? let message: String? diff --git a/Santander-Test/Santander-Test/Scenes/Form/Form.storyboard b/Santander-Test/Santander-Test/Scenes/Form/Form.storyboard index 0c80537f..09cd5879 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/Form.storyboard +++ b/Santander-Test/Santander-Test/Scenes/Form/Form.storyboard @@ -18,7 +18,7 @@ - + diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormInteractor.swift b/Santander-Test/Santander-Test/Scenes/Form/FormInteractor.swift index 3f0e70bc..851d304a 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormInteractor.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormInteractor.swift @@ -13,7 +13,7 @@ import UIKit protocol FormBusinessLogic { - func doSomething(request: Form.Something.Request) + func getFormCells(request: Form.GetFormCells.Request) } protocol FormDataStore { @@ -25,13 +25,23 @@ class FormInteractor: FormBusinessLogic, FormDataStore { var worker: FormWorker? //var name: String = "" - // MARK: Do something - - func doSomething(request: Form.Something.Request) { + func getFormCells(request: Form.GetFormCells.Request) { worker = FormWorker() - worker?.doSomeWork() - - let response = Form.Something.Response() - presenter?.presentSomething(response: response) + worker?.getFormCells(completion: { [unowned self] (formCells, error) in + guard let formCells = formCells else { + guard let error = error else { + let domain = "Ocorreu um erro inesperado!" + let error = NSError(domain: domain, code: 200, userInfo: nil) + let response = Form.FormError.Response(error: error, errorType: .missingCells) + self.presenter?.presentError(response: response) + return + } + let response = Form.FormError.Response(error: error as NSError, errorType: .getFormCells) + self.presenter?.presentError(response: response) + return + } + let response = Form.GetFormCells.Response(formCells: formCells) + self.presenter?.presentFormCells(response: response) + }) } } diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormModels.swift b/Santander-Test/Santander-Test/Scenes/Form/FormModels.swift index 816bdaeb..df17a157 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormModels.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormModels.swift @@ -13,7 +13,43 @@ import UIKit enum Form { - // MARK: Use cases + + enum ErrorType { + case getFormCells + case missingCells + } + + enum GetFormCells { + struct Request {} + struct Response { + let formCells: [FormCell] + } + struct ViewModel { + struct DisplayViewModel { + let type: Type + let message: String? + let typeField: TypeField? + let hidden: Bool + let topSpacing: Int + let show: Int? + let required: Bool + } + + var displayedFormCells: [DisplayViewModel] = [] + } + } + + enum FormError { + struct Request {} + struct Response { + let error: NSError + let errorType: ErrorType + } + struct ViewModel { + let message: String + let errorType: ErrorType + } + } enum Something { struct Request { diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormPresenter.swift b/Santander-Test/Santander-Test/Scenes/Form/FormPresenter.swift index fdebe414..81d689e3 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormPresenter.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormPresenter.swift @@ -14,15 +14,59 @@ import UIKit protocol FormPresentationLogic { func presentSomething(response: Form.Something.Response) + func presentFormCells(response: Form.GetFormCells.Response) + func presentError(response: Form.FormError.Response) } class FormPresenter: FormPresentationLogic { weak var viewController: FormDisplayLogic? - // MARK: Do something - func presentSomething(response: Form.Something.Response) { let viewModel = Form.Something.ViewModel() viewController?.displaySomething(viewModel: viewModel) } + + func presentFormCells(response: Form.GetFormCells.Response) { + + var displayedCells: [Form.GetFormCells.ViewModel.DisplayViewModel] = [] + for formCell in response.formCells { + + guard let type = formCell.type else { + continue + } + let message = formCell.message + let typeField = formCell.typefield + let hidden = formCell.hidden ?? false + let topSpacing = formCell.topSpacing ?? 20 + let show = formCell.show + let required = formCell.required ?? false + + let displayedCell = Form.GetFormCells.ViewModel.DisplayViewModel( + type: type, + message: message, + typeField: typeField, + hidden: hidden, + topSpacing: topSpacing, + show: show, + required: required + ) + + displayedCells.append(displayedCell) + } + let viewModel = Form.GetFormCells.ViewModel(displayedFormCells: displayedCells) + viewController?.displayFormCells(viewModel: viewModel) + } + + func presentError(response: Form.FormError.Response) { + + var message: String + switch response.errorType { + case .getFormCells: + message = response.error.localizedDescription + case .missingCells: + message = response.error.domain + } + let viewModel = Form.FormError.ViewModel(message: message, errorType: response.errorType) + viewController?.displayError(viewModel: viewModel) + } } diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift index 8c15002d..362842b2 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift @@ -14,12 +14,16 @@ import UIKit protocol FormDisplayLogic: class { func displaySomething(viewModel: Form.Something.ViewModel) + func displayFormCells(viewModel: Form.GetFormCells.ViewModel) + func displayError(viewModel: Form.FormError.ViewModel) } class FormViewController: UIViewController { @IBOutlet weak var tableView: UITableView! + private var displayedFormCells: [Form.GetFormCells.ViewModel.DisplayViewModel] = [] + var interactor: FormBusinessLogic? var router: (NSObjectProtocol & FormRoutingLogic & FormDataPassing)? @@ -59,13 +63,18 @@ class FormViewController: UIViewController { super.viewDidLoad() setupTableView() - + requestData() } private func setupTableView() { registerTableViewCells() } + private func requestData() { + let request = Form.GetFormCells.Request() + interactor?.getFormCells(request: request) + } + private func registerTableViewCells() { let sendCell = UINib(nibName: "SendCell", bundle: nil) tableView.register( @@ -73,7 +82,7 @@ class FormViewController: UIViewController { forCellReuseIdentifier: SendCell.reuseIdentifier ) - let checkboxCell = UINib(nibName: "CheckBoxCell", bundle: nil) + let checkboxCell = UINib(nibName: "CheckboxCell", bundle: nil) tableView.register( checkboxCell, forCellReuseIdentifier: CheckboxCell.reuseIdentifier @@ -98,17 +107,41 @@ extension FormViewController: FormDisplayLogic { func displaySomething(viewModel: Form.Something.ViewModel) { //nameTextField.text = viewModel.name } + + func displayFormCells(viewModel: Form.GetFormCells.ViewModel) { + displayedFormCells = viewModel.displayedFormCells + tableView.reloadData() + } + + func displayError(viewModel: Form.FormError.ViewModel) { + // TODO + print(viewModel.message) + } } extension FormViewController: UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return 10 + return displayedFormCells.count } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - let cell = tableView.dequeueReusableCell(withIdentifier: "FieldCell") as! FieldCell - return cell + switch displayedFormCells[indexPath.row].type { + case Type.field: + let cell = tableView.dequeueReusableCell(withIdentifier: FieldCell.reuseIdentifier) as! FieldCell + return cell + case Type.text: + let cell = tableView.dequeueReusableCell(withIdentifier: TextCell.reuseIdentifier) as! TextCell + return cell + case Type.image: + return UITableViewCell() + case Type.checkbox: + let cell = tableView.dequeueReusableCell(withIdentifier: CheckboxCell.reuseIdentifier) as! CheckboxCell + return cell + case Type.send: + let cell = tableView.dequeueReusableCell(withIdentifier: SendCell.reuseIdentifier) as! SendCell + return cell + } } diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormWorker.swift b/Santander-Test/Santander-Test/Scenes/Form/FormWorker.swift index 38f07023..d33bd2b9 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormWorker.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormWorker.swift @@ -13,6 +13,16 @@ import UIKit class FormWorker { - func doSomeWork() { + + func getFormCells(completion: @escaping ([FormCell]?, Error?) -> Void) { + let apiManager = FundsServiceApiManager.shared + apiManager.getFormCells { (formCells, error) in + guard let formCells = formCells else { + completion(nil, error) + return + } + + completion(formCells, nil) + } } } diff --git a/Santander-Test/Santander-Test/Supporting Files/FundsServiceApi/FundsServiceApi.swift b/Santander-Test/Santander-Test/Supporting Files/API/FundsService/FundsServiceApi.swift similarity index 100% rename from Santander-Test/Santander-Test/Supporting Files/FundsServiceApi/FundsServiceApi.swift rename to Santander-Test/Santander-Test/Supporting Files/API/FundsService/FundsServiceApi.swift diff --git a/Santander-Test/Santander-Test/Supporting Files/API/FundsService/FundsServiceApiManager.swift b/Santander-Test/Santander-Test/Supporting Files/API/FundsService/FundsServiceApiManager.swift new file mode 100644 index 00000000..ff57dc96 --- /dev/null +++ b/Santander-Test/Santander-Test/Supporting Files/API/FundsService/FundsServiceApiManager.swift @@ -0,0 +1,123 @@ +// +// FundsServiceApiManager.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 13/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import Moya + +class FundsServiceApiManager { + + static let shared = FundsServiceApiManager() + + private init() {} + + private let provider = MoyaProvider() + + func getFormCells(completion: @escaping ([FormCell]?, Error?) -> Void) { + provider.request(.getFormCellsList) { [unowned self] (response) in + switch response { + case .success(let value): + do { + let formCellsList: FormCellsList = try JSONDecoder().decode(FormCellsList.self, from: value.data) + let formCells = self.getFormCells(from: formCellsList) + + completion(formCells, nil) + } catch { + completion(nil, error) + } + case .failure(let error): + completion(nil, error) + } + } + } + + func getFundsList(completion: @escaping (FundsList?, Error?) -> Void) { + provider.request(.getFundsList) { (response) in + switch response { + case .success(let value): + do { + let fundsList: FundsList = try JSONDecoder().decode(FundsList.self, from: value.data) + completion(fundsList, nil) + } catch { + completion(nil, error) + } + case .failure(let error): + completion(nil, error) + } + } + } + + private func getFormCells(from formCellsList: FormCellsList) -> [FormCell] { + + var formCells: [FormCell] = [] + for formCellModel in formCellsList.cells { + let id = formCellModel.id + let type: Type? = { + switch formCellModel.type { + case 1: + return Type.field + case 2: + return Type.text + case 3: + return Type.image + case 4: + return Type.checkbox + case 5: + return Type.send + default: + return nil + } + }() + let message = formCellModel.message + let typefield: TypeField? = { + if let typeFieldString = formCellModel.typefield?.value as? String { + switch typeFieldString { + case "email": + return TypeField.email + case "telNumber": + return TypeField.telNumber + case "text": + return TypeField.text + default: + return nil + } + } else if let typeFieldInt = formCellModel.typefield?.value as? Int { + switch typeFieldInt { + case 1: + return TypeField.text + case 2: + return TypeField.telNumber + case 3: + return TypeField.email + default: + return nil + } + } else { + return nil + } + }() + let hidden = formCellModel.hidden + let topSpacing = formCellModel.topSpacing + let show = formCellModel.show + let required = formCellModel.required + + let formCell = FormCell( + id: id, + type: type, + message: message, + typefield: typefield, + hidden: hidden, + topSpacing: topSpacing, + show: show, + required: required + ) + formCells.append(formCell) + } + + return formCells + } + +} diff --git a/Santander-Test/Santander-Test/Supporting Files/FundsServiceApi/FundsServiceApiManager.swift b/Santander-Test/Santander-Test/Supporting Files/FundsServiceApi/FundsServiceApiManager.swift deleted file mode 100644 index d3336591..00000000 --- a/Santander-Test/Santander-Test/Supporting Files/FundsServiceApi/FundsServiceApiManager.swift +++ /dev/null @@ -1,51 +0,0 @@ -// -// FundsServiceApiManager.swift -// Santander-Test -// -// Created by Matheus Ribeiro on 13/05/19. -// Copyright © 2019 Matheus Ribeiro. All rights reserved. -// - -import Moya - -class FundsServiceApiManager { - - static let shared = FundsServiceApiManager() - - private init() {} - - private let provider = MoyaProvider() - - func getCellsList(completion: @escaping (FormCellsList?, Error?) -> Void) { - provider.request(.getFormCellsList) { (response) in - switch response { - case .success(let value): - do { - let formCellsList: FormCellsList = try JSONDecoder().decode(FormCellsList.self, from: value.data) - completion(formCellsList, nil) - } catch { - completion(nil, error) - } - case .failure(let error): - completion(nil, error) - } - } - } - - func getFundsList(completion: @escaping (FundsList?, Error?) -> Void) { - provider.request(.getFundsList) { (response) in - switch response { - case .success(let value): - do { - let fundsList: FundsList = try JSONDecoder().decode(FundsList.self, from: value.data) - completion(fundsList, nil) - } catch { - completion(nil, error) - } - case .failure(let error): - completion(nil, error) - } - } - } - -} From 08a80786cbaafc4c80faaa43df3274fd3941587b Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Wed, 15 May 2019 13:07:06 -0400 Subject: [PATCH 05/39] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20do=20viewModel?= =?UTF-8?q?=20dos=20forms?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 43162 -> 43075 bytes .../GenericScenes/Checkbox/CheckboxCell.swift | 17 +++++++++++++++++ .../GenericScenes/Checkbox/CheckboxCell.xib | 4 ++-- .../GenericScenes/Field/FieldCell.swift | 17 +++++++++++++++++ .../GenericScenes/Field/FieldCell.xib | 4 ++-- .../GenericScenes/Send/SendCell.swift | 17 +++++++++++++++++ .../GenericScenes/Send/SendCell.xib | 2 +- .../GenericScenes/Text/TextCell.swift | 17 +++++++++++++++++ .../GenericScenes/Text/TextCell.xib | 2 +- .../Scenes/Form/FormViewController.swift | 7 ++++++- 10 files changed, 80 insertions(+), 7 deletions(-) diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index 2433278866751b7b8ccd4ff99211a32ce1013bd3..22aa71d7eaf04befd2ebd19ecd71283cb5887c36 100644 GIT binary patch delta 19771 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 CB%eqC diff --git a/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.swift b/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.swift index 200a107b..b78f454a 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.swift @@ -16,6 +16,12 @@ class CheckboxCell: UITableViewCell { static let reuseIdentifier = "CheckboxCell" + var viewModel: CheckboxCell.ViewModel? { + didSet { + didSetViewModel() + } + } + override func awakeFromNib() { super.awakeFromNib() @@ -33,4 +39,15 @@ class CheckboxCell: UITableViewCell { label.textColor = UIColor.lightGrayColor } + + private func didSetViewModel() { + guard let viewModel = viewModel else { return } + label.text = viewModel.message ?? "-" + } +} + +extension CheckboxCell { + struct ViewModel { + let message: String? + } } diff --git a/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.xib b/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.xib index b54de1f3..95d88ccf 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.xib +++ b/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.xib @@ -36,8 +36,8 @@ -

r$IgOl78pt{1T(X^9 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 delta 17635 zcmai)2V7J~*YNkw?RQyN+R~fA(ouR*l-_%9iYN#uTUeH&M)!`f#Rg`LJt~UE5_^j+ z_QYPJ#@K6Oi#3+S#CI+$#yokx=ab(Z|=FdU2klfYy!1xy9gKpSWW)4}IpCYS~0f%#xDSOQjowO}LI1ik?~ z!5**|d=CzRW8gSA3(kX|z$I`C+y-~RBk(JD4c_9$xCw5D+v5(nBkqJd<1V-t?v4B4 z{&-J31dqg{@faN*iznkLcq*QTXW`j+4xWn_;-z>QUX9n`Bk@o0iTG#uBz!VH1#ib^ z;j{5Mcn7{1UxKf|*W;VT;fL|#_zC0}0(L*|l&WD!|LmXoz)9XXU7M%I&RvW09Vhm(*TLw-uOk?rJk@^ey8&LS6(3&}-f z2f3JBNv8PHHK&f?7wdr#4U< zsU6f#9kq)(OdX+)Qpc#{)M@HR>N<6Ux=H;?J*J*ePpN0rOX^SRFPfrh+MKqaEom8T zMcdImXjj^ecBkdEKi!k=Mfahj=)QD6I+~8B)97?MpDv&a=|S{hx{9u*htNam23kWm z(ptKS9z~C)b@XI<3O$w9O{3drJw2D6M=zl}>812~dIP(Uj9!!r|^&zMO}J2Qj% zf?2|JGE13d%va2EW(~8E*~NUz>}C!#N0_6`G3FHW1M?GeiMhqxX6`U|nFq{c<~QaI z^E*qiG|R9o%dy6+B`agCSZmgXbzyt3u51V!!A7!u*?w#s8_(*J*%UT|&17@gJhp-z z%vQ1WteVxbW7%=+cyp(RaK@Y&XU;isuAC3olMCYFxOgssOW`uOOsVmq_y~RFaUva27OdKwb6~~Da#f9P` zak02WTq+(Qt`rXvvxCJoVuiRttkv(P`eE7ncSv_L_;842ZX830QO5lf>#FOk;;QTG z{afn>Z9FO=Xg#ou(4Vvj!ou{YEPOZCT1Er&%e)mY<7E(Yg;)s0q9E3H;|{A_4EsrM zY_m`%dMJ7b5WF^IP~${4V{H9vXiz z2uokYSDh8HB2FX*)u2u!Ujl}J8c@q`<-g&#EdfKpFi_8L=XdZs^(C%_l|Ta;Me;?9 z_<-(G&7j5b!Zo^1)b+3X%SbRrBwq$T0i(cZpaVRB{I~pWeh@hABKQd~dE-A@j7b>%uMR z^?q;w9Mn&-x53Zx=k>oj*XY}a(Uu?U!5Psq(O2LwIHLD+u(mlWT2&!6k1x!RR}F4b zR4cXVs=<}oI+apiDi0B#KsBDkqQPl!K)=?(%KajL&QSaZaIPRTuOK&lG5A5W${?f* zf{=dXFX`9GWx9Y~qegX)*JW@`Bwq}!09*bFzi=_Q4sP&Q`D=VY|2%bloi1mz;KE<$I~Ifc-~oRFVi+G#5>v0O)+j5r)!lg?gXbc%CBPGS0dIZ@ z-^njs;ssuaBEd`kCKA*;KFk3428-+fzw@{Fn(mT+;-vnai_2gNr*Q^n(T^B6;&1bJ z_^14D=;u%VFFv3`YNl=)R9`pPzfsks8C>l*SXI^CHZH|2MP{A2DQvS-xD9`we}E7k@?rY*1>?Q4U3WkEhc4qiaCec}V%!yX;~(+AF2?1!2mhFV zq90*rufTn~rjc~RN9u+5!UM2aEE*5yf9Ibe^%C)Kx_XC)V(E+VFg%=p&cFOH_we3$ zlt|uz_u*f3;4JEq&>LlCb6rj4p!(_*ZMC98S*fV5kh<#k23zTzJyVoOxI-!jS9`se z5gvyp2sOm>uR8EV{xu&^T33biq;5!EwFXV3VnG`IDe(zubz1+VYGqwhV;mZr8kJ_a zf1IjGs7_s}(Kedv-WmSA*Hb(l9Kj7GUt>$%5Ut;PQP;i4 z(KpoQ=x0Zm>$e2=!20Pyc@H<#R<#DTRFx+b_`ofHUvfxYeRY)ndY?@FoCq_am`wh@ z=Bi;)ips&N#@2vd{sF;yf^p^sodYlCxrU0IfWPOqU!yxS< zq)T`)#6h+U2mYrv;+04j215)8R@UXcI^sjne8FoVhW|ZULvf9ukGe)& zi#OrTcnjW&4~G~5F%n{?5Oai>1;m^n<}3`PdAC}AB(d&M8-q zF$Q96C;n-dZjOf-CnzVxjQOw%scl}Da>t<|NYL*t7^TCf3VhQbCg!UQeV&e`cjBMp zdf|bX5yT{hl&_K+NejDMo{N8J(CGR6BZ!#@D!q_@3^6GmHlV88$W$w9w6&&~`^TEy zi7z!6PKen9lo%!Mx&I4WH0L#}6n?Xw_CL8KomKik2`YyG19zy41dSp3UmGsi23UYPgfmA;OK8`H$Sd}K+4#Q59lH#Xe@Fu!4NFO z0w5Oj!LAZUgcQvI>=*x2Ve$zHgJTBJBQE z<}xaSbbhG2P$;;oQ1(9x^&s3nfFVhQc7u5eU|t03Y8b>K{|56T0{*iRA`mqa46$&b zjR?Ke%fTgri27Hqz9JU_jcjkhzv`pU^m4aNAQBC3zz;+UkxHbA#6&t4O=J>T`l(*& z&MCYIV*MbNexAr7a?!^;BA+Ng8PbVjY!OkSf8&*-OMzG##G*f%21FTA-aQSHAr|w| zEFdb;EFcCEgNZ7lnivAHSTs!_77wumh$ViQ1^*vUqT9Kcj^rxIwLx{@-dX z_!L+)k30%q^pD;UV^DvJMHyJMC<9`tLXXpUkwG^mAT1^`kq89yfm{w^GBKq>>VZ~@ zB9&%XqZ+L-`IUp>RQd%pqkrea8D%2VvzVAFI3ynWskDvoQoqWFquPjeVS#%83SUf2 z*Wd7oHJ^cG`UNqwC^OH$s#05-WlF5lhx!ix54Tsp*LNaSP?4Dz8MHCm?=;X&5X~3u z7hMwF6x|a&!&pp=NiY-460^nJF@G!z%f-sDLD*2N32VWIVkJjVK1N72nns1=xjui{b$LP$b|x6bm?lAJc!=%Sm?JNnE0^vOYHx}(Gmk$kPx5+6<+Cr%J2iBrUB;tX+?_<=Y_oF^_2KN1&- zpNLDuW#S5PmAFP+N6Q|>20&~e#0EjE3Swvq)FSHuv3iIpA*P0y24Y%>HAAcwVk02- z3B*Q2jEC45h>b;U5jTlj#BJgZahK4y1X)%P&xq&53*tB8CB()<>~n}Mg4h~}eFL$5 z5IX^}pCI-##9lz`F9;Y2WDvMO&=Z142ofR4fuIb68VDNEw&ib6f%wB<&MWj!oLenE z`ap^dA1cv@YW=BNWBV?baKic zq2^{E))Ugi@U=$IhblgLZDDv_r+*jPYWa6=8^h~i71Fw{x~_*=ee~7Q@KsSE9rd2b z=c6iJ4PRCIFT+3o=(VTeb%Q=8V){pQ`59g}R!Cb>T?KmoC=-2Jr0k;{frcDS-Tk^A z#yB)7tNi~Zs4zpu7X9PMIUkkpV|YEhLOSw2tsp;6|D=xlx3FUjnMYPg^(b?VepQ5% zet2(_kE%;FURlf&z_^6l2)(OkDPTxOjT=`APXsrv z9l3F&PH^L<>!(E9_Z&-pCUA@+$CDFCM4*S*42XRJv6-FZByuu2g+%qvg4jHW&4<{R z0*Q{CA&{Uvv%5)V3nX*MxxxdnIS_lFA`%y=n`^YRYpoYa#obU#$Ylnor2^Cf0cyDb zwea7*B|fRU&}wpn!0Ne%TuZJa*F&rWVv8ZR1Y(_? z|hTSW`?j!dL55&HL*m6UPU>&4#*J$QFEZg1gG4iAV_JjcYwE%lsfL*O$ zUt}J7vOC*(@{)jef&7uYNFsZ)7GmolhA=mDl9#)N^cuuA8isVUL6CO^He{DJb+g?U z*ybWO^mIuPu_0M5|FE+lpOP;OFwX^;EdtC-0cPuek=*ibv_B}3fcBRBll+T(2eEAs z+m5{M9T3~uNnrvTg}lLC2DaUZZJJJu&?vMu`1U;-Wg?(WL5hhUqzuA-10^58C>dqb z1x8s5V0#c4Wha2`{Wlmh`8^orOt~X4%7yAdxl(QrL!CYVv4hC-|E`mgcY%39?0W;) zQ2{KwmjH&m)I;51!3c~Bp+bcRVuvAi#E_!#G?RvRw-iN18}RxGc*g|1SOM?2z9P}y zFNsPQIFhLpDwRTx+)0R?g4k(@o#~`9x-haKcGiG#p-VnR0tQ-lf9S?26EMoD{=x&X za}YakND)T7w0mKvs;C+R#t;GHM**Wwz_|EtDX~kt*_9LusdZ8+N=-FTXl1;F_DYu_ zb_HTrJ1K1!UJJyo8Srikc)6nmJRQWYcjJu_@IIx+q6aOIC<1e{E4_vAtfjQnq`R#t zRGR^CngDo50GuuW-qo*4w(mKUnkSIVqGnTbD5RLbKSlsa52D;ept%T@z495sI&VeTw;@P1IHc!xn+znZU43 zV0iv-A(3v~;NMdF1+?AN9%?Uz7X9BK_7Y;RAojYGI?yGf?;-ZaAfrD7FtZZ^*hz@} z-VJs}&*t0PQWvSqhUPB`&A%0zzbZ8Ur~c1Wd%s)MFG4%FsXNqN3eDYj5QreaAOM}z zy{>j1LV$O*11O=L%;!QoFCZYg+j)fqKu)3F2#;V_0cl8)0BpLu^Nt2x5HyA$0R0h! zB;L9g&Cn7=L9;YRi)kYWSO_=>#1I&D(#Et2Eu~E%kU)S^GYHHP$5b6{jX-D{2#nu@ z(Dn#~cAy=F2Lclaq=poMd@fCOjW$?9k+k7G741QL8>qYlDhotK`y$Z*%YToI`4`=V z0_aeIRUSwO(ZO^G1Xd7OLx4bRJLxb%WHfTa>UAP6>yCroHQi*6U1 zpAJDtck^gTMj;(~rtk>C9Dq!rkRtIA-94R8FEmgr5GcY0iVlGyqH7)N?9R4~UM1js zMK7mU(8%BK4M86Wq9EwoNq^mivlfDW2AntnCx_l5;B18;x*KP^AdMaLPT_$d1_Csc zLW*!aq$%Ak?Weyp038&7;su~X0#Jhfj~x4+$LTWy#|io*eTqH}K@tSX5Trnm+DV^9 zwq`ti9s*>m(agLBL8d^GL0=I_u0oLBO>#pZxrtN^JrHD|WlKm9M?^QpJ^G=6;(My z1V!&57#bNC2ODF?w5uUTDl}Ar8e+_ahD!DQ^6h(CGY+U7#)h$F>==6p${|3zt^p8K zbTW>N6XVRF9ShRLK@bdvph{>-$9M`YAx*37ZV5%2k!_{k2#;V}1=Av=e3fgo^Lxj} z_L3^j!LUvyfk{N5 zXqf6DP<4T-1<+z9O90J=K+z4Fhd{~wOo8wSD*!;At&pOT$#jjjFrap~S!VD9LYM5H4jzJt+2$~>hhM=XBsTW3wK`5<;5gO5@CQP${(*nWp zZk!PahjFGtgh${O%!`nI@NXE%j5RQPDlm)`7{&_>pP<=e?>(8BDw20FQy>`K!AygI z|Hnp>(RXbFfUZK?A8kMK^r^*W5i^U70{AVbP*(P#hc0lkMiW7iI`okq*E_;{*|H^d`<@z3iDMGHPdY4iU-EroGAz;=O zAYx7n!aM`PbiV2b<{Ub?Lg!b^dFBG6XD*gBR@YY#7EXmA&_nP!1Ud+2xuV#7;sJbL zw-IJ8Gs4LdbA>@ucLoGsEM~5YP@iY=-h4n|LRFnsr76s>)YMdKQA}6=eW?upnfXP3 zy|f2;kGU^eh5qNP_b77=f5<#CkacU$6XuyPE>9tt+rd1CVE#YH<+Wj4=4~8RmM8AT z{J{!-GV_-CllhB53;UN4EP!Ak1dBRZjGT`>m+E^3jO^W z$3bqauSotC>kg7w57v|QV!c@(2v+ewLa-WwwGg0T-Uz|wuUJ3UpY6%^VguMfHVA^P z5FCKuAOxo%xB|g15TFyIkHQXYxS``;qXP&4&HR(0ULSqUF%;VJcVI%;>bvUl*%CAw zAP?k&0%T#=^Bee${H9K}lq~~=EHaMYK(L+P1i`NN%FhlIhN2RJZG2T}UP_Z+b)8>P z^@wg+SF^Q9$%Nx;;qZDfTgM_}f%JbT5{;u(|04Z$7=_Cc^8#peTD`@KIm956Bb`1n*>L22DA0)J%MVs)Cj`!Kk?3RDN*v9Vpp90#;?qm0}2iSvx zfQ~?L6oO+AoPgk@K|nA2_^Ef+sD!iqh!FpT?E;(WIn zA)ldxy$Jz2)Gw_q3inet`e_P2NZ>AeU-TchAlL`&Lt)AL0fKYia>%>54$(n>cmFwG&hH=H z;d*fa=taWcS3bC4uJ`}!U>`1u>&x}yqJ<9Lg5Wj;cObY6!O!|}4Si*a|K>{N(z-gC z#pVCkP8M*5sFTGI+=J+X0qW$h-JL}H@(vC;Q}@wehE?YIr3~@YjEH|f;kkia)qf5q zSIrF(2J;~Vk3JeqZYVcQqz`W}(W(B~eGNDKe|B~RH&2-fh9O7JR&flS43dAuXA{ae|TVMU~phia6mw4XmH>t zlde^l8!Pl{90bn{TJRY+Nf1!~X`KGQ2?!J$v_P2l-Ad3cgSi}XL^?RMsJ-go(31BC zjrHF_aBi`|Jio4xs@{iAP4rJ2&Apd$D-A6baLc>QGg^s$NA?++q(W{rw+7uLLgVlU z1aI{L+FrU1+$Pitx;V7016>&Udy;V9aJ&Df{Pu8rxqaMz?tmb_KOy)Ff_D(dAPx-n z;z4oL&WO!p1$z+^=-(?WBqFd^U~ouKM0j{mFftdx!TuqEAwfaCLc@Z?gF}J?!wvR= zJ0eK%D8xlbGvbs=zk)_5ooao>#K%CUaHOce1%iJB2 z*>dg*ca^)wUFU9aH@REfZHUtlXCTf(oP)R+;zkgcK-_pacUR;la^dcA_qhk$Ly;TA zP0($vaEMDGZVH7H8uN`io9r+-_oo;`8p-{|y%UQdZV7Q2#I2TyffyGP5VwYSFNnM7 z|7=#}a9HG0u~=**mWYkTCJ?uQxD&*CK-?YTo*z6vv6)zgDioWGEySocTZr31+JLYY1|EWxJ#PQVY7VC~|fOB4_Px3NYZ# z2#62JaW05$s;jShFF&!L7+HmX6(c8$gT%pt2Zg&r+)cl`)jljjjIOr)DZ}*Uy-|N5 z?gMe(W#lGoyf{akiw*)&6l?`LUB~?(-jg4WeggC+?Jjz8yG~bz8Yma{7Y-z~b&6`_ zttR#h8as9=#QnQY@x&G4frbOS>c!#;(W(LYs;bK2&XroUm`C;sk>2l`q2elZwL~Q0 z!QVqsD;|pGfbgzEJPhJN?`@P=`5~uJQYRK`u*gMxjiH(*EPW+%0Ns)E=YdYxE}(O@ zlf(&bp5O(p>hk|qcb%r8z#uw48zda7fmeK0h14W7FRglbbybXJaBW?4wdS<=Q}Nh> zJT1Cw!($>wWFzV!@)3oIB1QeEwbW*6AG!m3j=D_gZcw*Sbn8C#5M6+MN?W7Lt$omi z)(kp}&Y|5@Dhc+<_ znGSS`bSb((x`Nq>E|2bE_Av*T@0dgA3h6QC1iC_ck9o_Qpo^j5Yz?~gIYGyM!Omi5 zvrE}E=)&g)bmemkyPMsMoQ8w!_vq^9Lr#pYcJ|}axe~67>yIvTR&s-p)z)xYu9<7) zMj&%Ln&Y`y+z#$Ox{qm%?qG(ABgK7?LdBpPm<8z0Wi`5TIaFLPR*FZ7CyCp{)5Uu6 zZ1G(2eDMOYZlQRMc!&6a_&f0-@e%Pc@j3AY@kQ|^@fGnk@m=u?@gGKvk;KTv$ka$? zWNlx?!VZ8zF)bj;|q(HWy_MmLRa8~to_&**{CYoj+tzZ<>PNz5hA5?6`4#8cue@s&hK z`bhdpVkB{r1WB%>KvEtMd?{HZSu9y9 z`AV`vvQ=_Ga$0g$a!ztVa#3(EjyvTU5@haoh#%qn&8*en;Y<%4Kxrv8Kib<|Xfk}}`iAk+VgUM)Z zW}7TES!c4rWRuAjlW$D6n;bOx-sG^!QIq2)CrwV9yph^UU8SBg`;AH~5lq}kG3 zX}+{h`iXS1bb)lcbf@%N=^p7m=>h3$Q_PezH8M5UnMzH~Of5`ZOnprQO@mECO~Xx# zOb43kOvjooF8P=`GVcW}KP1nVp%lnU`6hS%0%Z zW>d{(nk_Z^+H9NIDYGkPFU($=y*B&Z?5){f<|1=oPMA~Xj5%lSV(x10Zth|3W$t6{ zXWr91z+4w(9%3G59$}tmt~4KSzSMk^`62Vm=1(k)EL<$SEqpBeEJ7`MTjW}lS(IB0 zuo!5euuxlQESfA@EQVWrX|c>=t;KqajTW0NwpwhncxLHtSz$TTa*5?~%axX2Tdud< zXt~*PtK~_{rfHIm$d_{<2=OKv}R(7AlLArOMJ}nX+tIk*q{kChIS& zkSSy%WK(4`WlLl$WnatI$kxfW%C^aN$acwg%MQuT$u7&T%C5_9%I?V?$R5ca%br>h zRuU^)D+enls~%QvR&uL&s~oE#R<%|`t?I3mR%$DamDZ}+s?}a_aGYK7HKt8-Qlt$w#QwYIkov`)0Hv({Qe>#^43tv|D#Y(3R_v-Ljf zgVx_$AF)1WeZu;z^>yo?t?yYsuzqCy!uqB4YwO>w-`aTEMB5bGRN7S846&)TX|fq> zGu~#R%_N&CHq&g{Z9cc@uvucW)aEOj6*jAER@u3 zm|cWjZ@VbFB0HtsB)eI5v+d^C&9hr>x593v-Pd-T?e^K7v^#Bg*6y6$1-pxOm+XGA zyKncYsXn)E6 zw*4FXKkWasf9HTX;0_@UeH~I9(i}1zvK(?8@*D~r202tY3~{J+XmV(A8169AVU)up zhba!z9NHbebXe%n;jqMEox=u)O%7We4mzB1xa#nW!+nQ`4!`Oghd8Pn$2m@NT;zDx z@w($LjxQWvI=*)N-3fPMos6BVoNS%!ogAG)o#LF5ol>3BopPM=oC=(ZoT{CMI<+`` z;xyWccN*t3!D*7y6sMU^OPp3ZeeJZyX`Rznr)^FNvF$B51bx3 zJ$8EP^xWw;r&msIoEc{w=WOI`>@0OQbGC4nIa@pXIY&CjIVU(LIj1a zI+r^Sa31O0;e62fw(}k5U!DJO5xD>t!i9AayGUG2Tr6GOT>M=8U3$3$x+J-zxTLvc zxMaEHxRkn7xKz3fcByvJxHP%6xQuZ5#AURL-esH1cP@urj=G%Cxtwx2<8q}3)5Elf zV-M#ZJ$ksgo^rkDCUbLjb9eJ_^KuJx3vml~i*(Cz8{k&$R^wLZHq1@q*5uaWHp1-_ zw{dP0-6p$Db(`z9!fln?YPYp+>)kfGZFbx0_MO{dw_|Q6-Ojk3bNkWllG_!x=k6kR z*4@b6#NEu@(%sSB#og6i=kD(5?(LrBu5h33zRrD{`%d@W?t9&jxSw@D?|#w!vimjn z8}7H<@3=p6f93wh{jD66qaz|YBe#;<%6rNK(!ex9M85uSZK`+3HCrg>(1=6L3L7J3$Y zR(cNeZ1$YyInT4x^DEDlo~u3Ad2aLE;knCmx948Z{hl{G|MGJ2iu6kIO7+U{%J$0j z%J-`EYVvCJ8sRm{OUHYS@tW+_?xpvd={4JHsn^$DYrNKZZSdOWwbSccuf1OTy^eWZ z^t$eK)9bd^U9U%8PrROa{pR(`TjVYAmU^3cTY6i2+j_ftdwTnL`+N8Dj`EK8PV`Rp zPW8_5&i5|#F7Yn&uJ%@XkMthnJ=S}?_eAeD@6Wwwc+c{leJ>k-Dif+ET6ePYkfBOZ1&mev(0CR&jFv4 zK4*N+`TXc}$>*xib)QE*kA0r{Jogp(0$;+H@-_Fh^tJM}@s;~}`g;5N`bPNn@$Ksy z?VIIW?mNJDpzk2xk-npSb-eGVzTbe6TYwgFh37JU%yw+!@T@Jby zbTjC7uw!s>aCPwK!CwT=4xSghAh;vAGx)3EmBFin*9C73-V(emcxUkL;C;adgAWBC z4L%WkI{2>;EQAQ5L%0x0h&04JL>6KbVjtoZ(j&w@#52Sv#6Kh;Bse52Br+r_q+dvS zNM=ZONM6X%kRL;S3b`C|Ewm_9R~0%Wv^I2D=$+7Kp)W#ThQ0}_3{!@w!!%({Vb{YR zg*^^?8ulW5Xn0Hb@bHo0qr>lqzY2d7{zv#<5u+m}M@)@qi}*aUM`X{)fXJZ8(8z<4 zXCi-yJRfNBNJTa+ZqHp)KAG0H_3 zwKeKM)OS&bqK@|M+c&LmM&GQyxqXlJ{ju*)eJ}UD)-ShTMZd~^gZmBXcctI`eh>To z+V5#}Rdhr2i0Dz#eDtT$4@o!`6^~*%<7meG23Ex z#_W#S7jq!yMl2oc6Pp^F7h4!x5?dBq6|0C<$2P_`#}1Dj89ORg7dtU_QtYhQ`LPRP zJ7Sl`E{|OmyE=Af?C#iOvFBocjJ*_lHTFjA{n$sbPhy|PzKnexXBpQ!t|D%9+=RGE zaZ}^k;%4jOI^sIxzKUBJw>oZZ-1@kUaXaI_jXN55D(+0&xwxO=F2`MqyAk&!?s>c@ zo{cw(H;Ffkw~Tj;cZqk6caQgs_l{4BSHw?`Ul+eEerNpd_`UH*;?KsPkG~jyIsRJw zjrd>VpU3|e|2qE9_;(2)fk-eBKQn+dlQ9wod?c$4r)!e5D^M388bXptyOv`KVKbWU_lbWaRU3`>kp%t*{m z%u6gxEJ+-cSe;mtSeICzs7#!kxIXb*;)}#TlSD~)5}9P2WR+x_Z1JAZb{VHmN0PMAE1vKIyZhDM{0k+LQE2UnFfv`Z4Kk zvR$%UvPZIavTt%oa^K{bpr&2DaTu!-`ax>*l z%Fn4ps&{H;sv@;Hb$IG0siRXTq_(H(Q)i~mNu8g%Aazmdiquu9-=ywJ-JQBG_50Mr zsmD@Jq+UtAp86>Dr7rbN>f6+JX&_CUW}GHXGfT5fvq}q2D@_}n_GQ|#v=wPzr>#lb znzkoxU)q7R@6ryX9Z9>8b~){8+KsfkX}_dBNPCp_Htk)yQMzTib-G=;W4cSace-DC z&-8%w;PlY+y!7GeU#9O&KbU?f{b>5}^z-T0(r>2UN&hANLHeWg$LYGa8CV9ML1lG+>C;Z;*8RamW(em_GVnqxR>!T<8j8*jNdcy zOe&MjG|Du|G|e>6w9ItObk6k449pD949o13**7yLGcGeXvmkR&=CDj1CvdePJa>;Vd^34j#3eW1D)i*09D=sS`D>thst0b#D zt1@eF){v~)td^`1Srf9_v-DXrv*u*Y&sv(bJZn|fnymF%8?#Pjz09`Fj>wM9PRLHq zPR-8CF3+yW9+X|3U7I~LyFOc)t@TusWzWr?pRHS!y(W7{_JQp0 zvyWsS&pwrXG5d1%)$Hrpx3cf#fE>@9^qgTi+MJf05jmgajLVspGd*WU&a9ldIrDQC zJCD;LYfbIDvLm&^6Y&B$%Y zZO@&PJ3n_}Zb$CQ+>NWPo95XKweN@c3yMd+`Mgh`|=Lv9m+eBcQ)^G-nG0NdAIZK z=KYd)KkrrE+q}Q>v3x3@$rtBK^6m4T@_q9|^276c=l9Kz$xqGC$j{2p$=BuQ7v?wS z&&l7Fe>wk7{xA6t@*m~D%zsya72pMA0bRfr$O`NV915HZ+zUJkybF8_dKdI9NGr%M zC@Lr|=wC3fpst|4KvkeAXewwam{G93;A+92g;XJ1XjEuiXjSN3=vpW*^eXf%^e+r6 zj3`VjOe@SN%q}b_EGjH5EY}qdD^wPaEF4=np>R^+)WY_{Ife5J7ZxrqTw3^5;eo>Y zMaD&bMWICzMSY6;79|yB7v&Wd7L^p07Y!&HSX5WkTr{$1R1se^u4qEhq@pQB^NJP} ztt#47w6$n^(XOIBMTd)y6`d$LRdlxKT+y>)>*7AeWyMv+HN``V>x-L;M;Gg0@z~-C z#gmGs6wfJMP`s#kN%8XHmBp)z*A{7LSky3&KC-WtnxEZJ9%v zQ<-y_S6QF3l(N*aw6ct{!m^UG^0EPCsgvSnqf%GQ*v zE89@Et!z)(*|N)JZ_Dv=*Yb$+#PX!_;u4%X<- z)Lg2$T63f3cFoTe_X+ z8*4Y$ep9=>c4zJG+GDk+YtPo6uf0@zrS^L5&Dy86FYE9+vpUN2)P_Wp(}Q2G*U|)!nMQQ}=V-{h{m%M>^@r+@)*r7w zRez@bQvKEX8}+y9f35#RAyNPZpy-+nQmIys(kUk?rzoc>+m)XyXDDYXmnfGhS17+$u2pVOZc=Vh z?pEGcK3Bd}zES?6qEzN83zenHO69EbQ-!L+RgtPbs=lfuRjMjOm8Hs6<*WLu2C4?D zs#R*$DAicic-2JJB-M1)4Am^v9MwG4a@7jeO4Zk@ZL0069jaZbBP!hm)kW1M)fLq> z)eY4x)f3fo)l1bI)mzm&HKxYZM(Qwiv^q|ms7_YrsRybn)q~VkYK3})`cw5d^#t{2 z>dERE>RIZ!>iO!0>JIfv^=kDx^#=8B^#S#F>O<<|>Qm~o>T~Lw>RamD>bvUa>KE$Y z)UO(d2Ga)f2FnI3U4u=7U4uh|cY|L;uZEz8(1wVH-VIR=i46@6BN|3E@C{=c+8Wv$ zrZ?yt<~OWp*wC=4VN1g|4ci;`H+HMx+56LPKdJ z8mY!yW2v#yxM|!qa*d}ZL=&nB(?nO_8QVQ>M}N*HmcgH7bop)1+zDjMR+M z=rj{G>owaoyEJ<=`!vTjKWQ#$E^Dr8e%8Fu{Hb}@h&AGkWTSDTw9&lLveCNHw$Y=} zyV0+)S7T6PNMmecd}Cr`O5={kLye~!&o-WG{IT(;##@bd8h>uQ-}tEUvDQ-CL+h^f z(0Xfqwf;J7Z*8(RRhzEO)MjgQwfQJwTcxeh4%I5OYOO}A)sE6G*RI!Y(r(pm(;m>C z)}GOx)t=K{)jrVvs(q?`p?#%&(?mDPnp~TLo5GqRo1&Vco8p=hn^Kz6oBB5mY#P*5 z)l}0ov`NvVZqhVqn?^T%*0i{3ThocATTOp7>nxhRn};=Pnuj-!ZJypdyLn#og659q z<;|;_*EFwh-q?J%1#7Wwac%K$31|s!32TXLiE8QBlHQWnQrJ?`QrQ-IrlvaJ~%+@)r^IMm+E^A%U`gQA?*3GTowxzVCx0SRFX{&3iZ&S5t+M3#0 z+s3s`Y@5_JwXMDF^R^jnGuw8wU2o^wgWIFp6WTM|bJ|PWE8B;(H?_C4^X;Fuk87XM zKBIkB`<(Xq?F-vG+E=!(ZeQEJzI}W9j`m&c-?c|wYQNHcz5Q1E-S&I!58EHNKWqQ3 d{dN2A(~YK^PPa1LOaj30TRhJ2yE~n3^MAov#m@i$ diff --git a/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.swift b/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.swift index b78f454a..09373744 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.swift @@ -14,6 +14,8 @@ class CheckboxCell: UITableViewCell { @IBOutlet weak var checkboxInnerView: UIView! @IBOutlet weak var label: UILabel! + @IBOutlet weak var topConstraint: NSLayoutConstraint! + static let reuseIdentifier = "CheckboxCell" var viewModel: CheckboxCell.ViewModel? { @@ -43,11 +45,13 @@ class CheckboxCell: UITableViewCell { private func didSetViewModel() { guard let viewModel = viewModel else { return } label.text = viewModel.message ?? "-" + topConstraint.constant = CGFloat(viewModel.topSpace ?? 8) } } extension CheckboxCell { struct ViewModel { let message: String? + let topSpace: Int? } } diff --git a/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.xib b/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.xib index 95d88ccf..4fb21c6b 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.xib +++ b/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.xib @@ -13,11 +13,11 @@ - + - + @@ -37,7 +37,7 @@ - + + @@ -55,6 +56,7 @@ + diff --git a/Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.swift b/Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.swift index e5c94105..15572afc 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.swift @@ -14,6 +14,8 @@ class FieldCell: UITableViewCell { @IBOutlet weak var textField: UITextField! @IBOutlet weak var lineView: UIView! + @IBOutlet weak var topConstraint: NSLayoutConstraint! + static let reuseIdentifier = "FieldCell" var viewModel: FieldCell.ViewModel? { @@ -35,6 +37,7 @@ class FieldCell: UITableViewCell { private func didSetViewModel() { guard let viewModel = viewModel else { return } label.text = viewModel.message ?? "-" + topConstraint.constant = CGFloat(viewModel.topSpace ?? 8) } } @@ -42,5 +45,6 @@ class FieldCell: UITableViewCell { extension FieldCell { struct ViewModel { let message: String? + let topSpace: Int? } } diff --git a/Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.xib b/Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.xib index 601e6225..358aa9a4 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.xib +++ b/Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.xib @@ -13,23 +13,23 @@ - + - + - + @@ -41,10 +41,10 @@ + - - + @@ -53,6 +53,7 @@ + diff --git a/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.swift b/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.swift index 3a52428d..1762a171 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.swift @@ -12,6 +12,8 @@ class SendCell: UITableViewCell { @IBOutlet weak var button: UIButton! + @IBOutlet weak var topConstraint: NSLayoutConstraint! + static let reuseIdentifier = "SendCell" var viewModel: SendCell.ViewModel? { @@ -34,11 +36,13 @@ class SendCell: UITableViewCell { private func didSetViewModel() { guard let viewModel = viewModel else { return } button.setTitle(viewModel.message ?? "-", for: .normal) + topConstraint.constant = CGFloat(viewModel.topSpace ?? 8) } } extension SendCell { struct ViewModel { let message: String? + let topSpace: Int? } } diff --git a/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.xib b/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.xib index 59628ddc..1d92a44b 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.xib +++ b/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.xib @@ -13,11 +13,11 @@ - + diff --git a/Santander-Test/Santander-Test/Scenes/Form/Form.storyboard b/Santander-Test/Santander-Test/Scenes/Form/Form.storyboard index 505a49a4..451db63a 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/Form.storyboard +++ b/Santander-Test/Santander-Test/Scenes/Form/Form.storyboard @@ -13,7 +13,7 @@ - + diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormRouter.swift b/Santander-Test/Santander-Test/Scenes/Form/FormRouter.swift index a23b3541..28383be6 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormRouter.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormRouter.swift @@ -13,7 +13,7 @@ import UIKit @objc protocol FormRoutingLogic { - //func routeToSomewhere(segue: UIStoryboardSegue?) + func routeToSuccess(segue: UIStoryboardSegue?) } protocol FormDataPassing { @@ -24,34 +24,13 @@ class FormRouter: NSObject, FormRoutingLogic, FormDataPassing { weak var viewController: FormViewController? var dataStore: FormDataStore? - // MARK: Routing + func routeToSuccess(segue: UIStoryboardSegue?) { + let storyboard = UIStoryboard(name: "Success", bundle: nil) + let destinationVC = storyboard.instantiateViewController(withIdentifier: "Success") as! SuccessViewController + navigateToSuccess(source: viewController!, destination: destinationVC) + } - //func routeToSomewhere(segue: UIStoryboardSegue?) - //{ - // if let segue = segue { - // let destinationVC = segue.destination as! SomewhereViewController - // var destinationDS = destinationVC.router!.dataStore! - // passDataToSomewhere(source: dataStore!, destination: &destinationDS) - // } else { - // let storyboard = UIStoryboard(name: "Main", bundle: nil) - // let destinationVC = storyboard.instantiateViewController(withIdentifier: "SomewhereViewController") as! SomewhereViewController - // var destinationDS = destinationVC.router!.dataStore! - // passDataToSomewhere(source: dataStore!, destination: &destinationDS) - // navigateToSomewhere(source: viewController!, destination: destinationVC) - // } - //} - - // MARK: Navigation - - //func navigateToSomewhere(source: FormViewController, destination: SomewhereViewController) - //{ - // source.show(destination, sender: nil) - //} - - // MARK: Passing data - - //func passDataToSomewhere(source: FormDataStore, destination: inout SomewhereDataStore) - //{ - // destination.name = source.name - //} + func navigateToSuccess(source: FormViewController, destination: SuccessViewController) { + source.show(destination, sender: nil) + } } diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift index bbb1a373..acd94972 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift @@ -175,6 +175,7 @@ extension FormViewController: UITableViewDataSource { message: formCell.message, topSpace: formCell.topSpacing ) + cell.delegate = self return cell } } @@ -186,3 +187,9 @@ extension FormViewController: FieldCellDelegate { interactor?.validateField(request: request) } } + +extension FormViewController: SendCellDelegate { + func buttonPressed() { + router?.routeToSuccess(segue: nil) + } +} diff --git a/Santander-Test/Santander-Test/Scenes/Success/Success.storyboard b/Santander-Test/Santander-Test/Scenes/Success/Success.storyboard new file mode 100644 index 00000000..ba2c4c5b --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/Success/Success.storyboard @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Santander-Test/Scenes/Success/SuccessInteractor.swift b/Santander-Test/Santander-Test/Scenes/Success/SuccessInteractor.swift new file mode 100644 index 00000000..3ca9f4fa --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/Success/SuccessInteractor.swift @@ -0,0 +1,29 @@ +// +// SuccessInteractor.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 16/05/19. +// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol SuccessBusinessLogic { + +} + +protocol SuccessDataStore +{ + //var name: String { get set } +} + +class SuccessInteractor: SuccessBusinessLogic, SuccessDataStore +{ + var presenter: SuccessPresentationLogic? + var worker: SuccessWorker? + //var name: String = "" +} diff --git a/Santander-Test/Santander-Test/Scenes/Success/SuccessModels.swift b/Santander-Test/Santander-Test/Scenes/Success/SuccessModels.swift new file mode 100644 index 00000000..38bc53b8 --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/Success/SuccessModels.swift @@ -0,0 +1,16 @@ +// +// SuccessModels.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 16/05/19. +// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +enum Success { +} diff --git a/Santander-Test/Santander-Test/Scenes/Success/SuccessPresenter.swift b/Santander-Test/Santander-Test/Scenes/Success/SuccessPresenter.swift new file mode 100644 index 00000000..369bd6bf --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/Success/SuccessPresenter.swift @@ -0,0 +1,23 @@ +// +// SuccessPresenter.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 16/05/19. +// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol SuccessPresentationLogic +{ + +} + +class SuccessPresenter: SuccessPresentationLogic +{ + weak var viewController: SuccessDisplayLogic? +} diff --git a/Santander-Test/Santander-Test/Scenes/Success/SuccessRouter.swift b/Santander-Test/Santander-Test/Scenes/Success/SuccessRouter.swift new file mode 100644 index 00000000..f8acd016 --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/Success/SuccessRouter.swift @@ -0,0 +1,36 @@ +// +// SuccessRouter.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 16/05/19. +// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +@objc protocol SuccessRoutingLogic { + func routeToForm(segue: UIStoryboardSegue?) +} + +protocol SuccessDataPassing { + var dataStore: SuccessDataStore? { get } +} + +class SuccessRouter: NSObject, SuccessRoutingLogic, SuccessDataPassing { + weak var viewController: SuccessViewController? + var dataStore: SuccessDataStore? + + func routeToForm(segue: UIStoryboardSegue?) { + let storyboard = UIStoryboard(name: "Form", bundle: nil) + let destinationVC = storyboard.instantiateViewController(withIdentifier: "Form") as! FormViewController + navigateToForm(source: viewController!, destination: destinationVC) + } + + func navigateToForm(source: SuccessViewController, destination: FormViewController) { + source.show(destination, sender: nil) + } +} diff --git a/Santander-Test/Santander-Test/Scenes/Success/SuccessViewController.swift b/Santander-Test/Santander-Test/Scenes/Success/SuccessViewController.swift new file mode 100644 index 00000000..7848f315 --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/Success/SuccessViewController.swift @@ -0,0 +1,64 @@ +// +// SuccessViewController.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 16/05/19. +// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol SuccessDisplayLogic: class { + +} + +class SuccessViewController: UIViewController, SuccessDisplayLogic { + var interactor: SuccessBusinessLogic? + var router: (NSObjectProtocol & SuccessRoutingLogic & SuccessDataPassing)? + + override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { + super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) + setup() + } + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + setup() + } + + private func setup() { + let viewController = self + let interactor = SuccessInteractor() + let presenter = SuccessPresenter() + let router = SuccessRouter() + viewController.interactor = interactor + viewController.router = router + interactor.presenter = presenter + presenter.viewController = viewController + router.viewController = viewController + router.dataStore = interactor + } + + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + if let scene = segue.identifier { + let selector = NSSelectorFromString("routeTo\(scene)WithSegue:") + if let router = router, router.responds(to: selector) { + router.perform(selector, with: segue) + } + } + } + + override func viewDidLoad() { + super.viewDidLoad() + + } + + @IBAction func sendNewMessageButton(_ sender: Any) { + router?.routeToForm(segue: nil) + } + +} diff --git a/Santander-Test/Santander-Test/Scenes/Success/SuccessWorker.swift b/Santander-Test/Santander-Test/Scenes/Success/SuccessWorker.swift new file mode 100644 index 00000000..89ddac58 --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/Success/SuccessWorker.swift @@ -0,0 +1,20 @@ +// +// SuccessWorker.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 16/05/19. +// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +class SuccessWorker +{ + func doSomeWork() + { + } +} From dd463a63a27834e1441c0aa387aa05334edf1c33 Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Thu, 16 May 2019 04:37:14 -0400 Subject: [PATCH 11/39] Ajuste do router da tela de success --- .../Santander-Test.xcodeproj/project.pbxproj | 16 ---------- .../UserInterfaceState.xcuserstate | Bin 55991 -> 55110 bytes .../Scenes/Form/Form.storyboard | 21 ++++++++++++- .../Scenes/Form/FormRouter.swift | 2 +- .../Scenes/Success/SuccessInteractor.swift | 29 ------------------ .../Scenes/Success/SuccessModels.swift | 16 ---------- .../Scenes/Success/SuccessPresenter.swift | 23 -------------- .../Scenes/Success/SuccessRouter.swift | 9 ++---- .../Success/SuccessViewController.swift | 16 ++-------- .../Scenes/Success/SuccessWorker.swift | 20 ------------ 10 files changed, 25 insertions(+), 127 deletions(-) delete mode 100644 Santander-Test/Santander-Test/Scenes/Success/SuccessInteractor.swift delete mode 100644 Santander-Test/Santander-Test/Scenes/Success/SuccessModels.swift delete mode 100644 Santander-Test/Santander-Test/Scenes/Success/SuccessPresenter.swift delete mode 100644 Santander-Test/Santander-Test/Scenes/Success/SuccessWorker.swift diff --git a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj index ddc8ff3e..05a70f99 100644 --- a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj +++ b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj @@ -37,12 +37,8 @@ 965C2F82228CAB1000015140 /* FieldValidation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F81228CAB1000015140 /* FieldValidation.swift */; }; 965C2F84228D409C00015140 /* MainTabBar.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F83228D409C00015140 /* MainTabBar.storyboard */; }; 965C2F86228D474300015140 /* MainTabBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F85228D474300015140 /* MainTabBar.swift */; }; - 965C2F8F228D502200015140 /* SuccessPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F89228D502200015140 /* SuccessPresenter.swift */; }; - 965C2F90228D502200015140 /* SuccessWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F8A228D502200015140 /* SuccessWorker.swift */; }; 965C2F91228D502200015140 /* SuccessRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F8B228D502200015140 /* SuccessRouter.swift */; }; - 965C2F92228D502200015140 /* SuccessModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F8C228D502200015140 /* SuccessModels.swift */; }; 965C2F93228D502200015140 /* SuccessViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F8D228D502200015140 /* SuccessViewController.swift */; }; - 965C2F94228D502200015140 /* SuccessInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F8E228D502200015140 /* SuccessInteractor.swift */; }; 965C2F96228D503300015140 /* Success.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F95228D503300015140 /* Success.storyboard */; }; 973161DFBDDB30BB534A86DA /* Pods_Santander_TestUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 878E0A16E793237D34137EC7 /* Pods_Santander_TestUITests.framework */; }; C4FCFE13C06111F180515DFA /* Pods_Santander_Test.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F563E135B794CADBF7401F8 /* Pods_Santander_Test.framework */; }; @@ -109,12 +105,8 @@ 965C2F81228CAB1000015140 /* FieldValidation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FieldValidation.swift; sourceTree = ""; }; 965C2F83228D409C00015140 /* MainTabBar.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = MainTabBar.storyboard; sourceTree = ""; }; 965C2F85228D474300015140 /* MainTabBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTabBar.swift; sourceTree = ""; }; - 965C2F89228D502200015140 /* SuccessPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuccessPresenter.swift; sourceTree = ""; }; - 965C2F8A228D502200015140 /* SuccessWorker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuccessWorker.swift; sourceTree = ""; }; 965C2F8B228D502200015140 /* SuccessRouter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuccessRouter.swift; sourceTree = ""; }; - 965C2F8C228D502200015140 /* SuccessModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuccessModels.swift; sourceTree = ""; }; 965C2F8D228D502200015140 /* SuccessViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuccessViewController.swift; sourceTree = ""; }; - 965C2F8E228D502200015140 /* SuccessInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuccessInteractor.swift; sourceTree = ""; }; 965C2F95228D503300015140 /* Success.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Success.storyboard; sourceTree = ""; }; A512F1F10FEC63C067350139 /* Pods-Santander-Test.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Santander-Test.debug.xcconfig"; path = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -340,12 +332,8 @@ 965C2F88228D4FD700015140 /* Success */ = { isa = PBXGroup; children = ( - 965C2F89228D502200015140 /* SuccessPresenter.swift */, - 965C2F8A228D502200015140 /* SuccessWorker.swift */, 965C2F8B228D502200015140 /* SuccessRouter.swift */, - 965C2F8C228D502200015140 /* SuccessModels.swift */, 965C2F8D228D502200015140 /* SuccessViewController.swift */, - 965C2F8E228D502200015140 /* SuccessInteractor.swift */, 965C2F95228D503300015140 /* Success.storyboard */, ); path = Success; @@ -600,7 +588,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 965C2F90228D502200015140 /* SuccessWorker.swift in Sources */, 965C2F3B228974F500015140 /* FundsServiceApiManager.swift in Sources */, 965C2F3E2289776F00015140 /* FormCell.swift in Sources */, 965C2F86228D474300015140 /* MainTabBar.swift in Sources */, @@ -617,14 +604,11 @@ 965C2F57228A891900015140 /* FormRouter.swift in Sources */, 965C2F5A228A891900015140 /* FormInteractor.swift in Sources */, 965C2F58228A891900015140 /* FormModels.swift in Sources */, - 965C2F94228D502200015140 /* SuccessInteractor.swift in Sources */, 965C2F6B228B6E1E00015140 /* TextCell.swift in Sources */, 965C2F382289681F00015140 /* FundsServiceApi.swift in Sources */, 965C2F56228A891900015140 /* FormWorker.swift in Sources */, - 965C2F8F228D502200015140 /* SuccessPresenter.swift in Sources */, 965C2F4022897AF800015140 /* Fund.swift in Sources */, 965C2F93228D502200015140 /* SuccessViewController.swift in Sources */, - 965C2F92228D502200015140 /* SuccessModels.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index 74061582e29baddcd3747bf4d3fbc2444d58b434..d52844ed456ae3af1f1967dffd080f1a82963e24 100644 GIT binary patch delta 24370 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%0D8#x2He#>0(A8f%O{GahX`)_9rm4&(F2 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 diff --git a/Santander-Test/Santander-Test/Scenes/Form/Form.storyboard b/Santander-Test/Santander-Test/Scenes/Form/Form.storyboard index 451db63a..a25570b5 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/Form.storyboard +++ b/Santander-Test/Santander-Test/Scenes/Form/Form.storyboard @@ -1,5 +1,5 @@ - + @@ -35,12 +35,31 @@ + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormRouter.swift b/Santander-Test/Santander-Test/Scenes/Form/FormRouter.swift index 28383be6..880a7556 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormRouter.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormRouter.swift @@ -31,6 +31,6 @@ class FormRouter: NSObject, FormRoutingLogic, FormDataPassing { } func navigateToSuccess(source: FormViewController, destination: SuccessViewController) { - source.show(destination, sender: nil) + viewController?.navigationController?.pushViewController(destination, animated: true) } } diff --git a/Santander-Test/Santander-Test/Scenes/Success/SuccessInteractor.swift b/Santander-Test/Santander-Test/Scenes/Success/SuccessInteractor.swift deleted file mode 100644 index 3ca9f4fa..00000000 --- a/Santander-Test/Santander-Test/Scenes/Success/SuccessInteractor.swift +++ /dev/null @@ -1,29 +0,0 @@ -// -// SuccessInteractor.swift -// Santander-Test -// -// Created by Matheus Ribeiro on 16/05/19. -// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. -// -// This file was generated by the Clean Swift Xcode Templates so -// you can apply clean architecture to your iOS and Mac projects, -// see http://clean-swift.com -// - -import UIKit - -protocol SuccessBusinessLogic { - -} - -protocol SuccessDataStore -{ - //var name: String { get set } -} - -class SuccessInteractor: SuccessBusinessLogic, SuccessDataStore -{ - var presenter: SuccessPresentationLogic? - var worker: SuccessWorker? - //var name: String = "" -} diff --git a/Santander-Test/Santander-Test/Scenes/Success/SuccessModels.swift b/Santander-Test/Santander-Test/Scenes/Success/SuccessModels.swift deleted file mode 100644 index 38bc53b8..00000000 --- a/Santander-Test/Santander-Test/Scenes/Success/SuccessModels.swift +++ /dev/null @@ -1,16 +0,0 @@ -// -// SuccessModels.swift -// Santander-Test -// -// Created by Matheus Ribeiro on 16/05/19. -// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. -// -// This file was generated by the Clean Swift Xcode Templates so -// you can apply clean architecture to your iOS and Mac projects, -// see http://clean-swift.com -// - -import UIKit - -enum Success { -} diff --git a/Santander-Test/Santander-Test/Scenes/Success/SuccessPresenter.swift b/Santander-Test/Santander-Test/Scenes/Success/SuccessPresenter.swift deleted file mode 100644 index 369bd6bf..00000000 --- a/Santander-Test/Santander-Test/Scenes/Success/SuccessPresenter.swift +++ /dev/null @@ -1,23 +0,0 @@ -// -// SuccessPresenter.swift -// Santander-Test -// -// Created by Matheus Ribeiro on 16/05/19. -// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. -// -// This file was generated by the Clean Swift Xcode Templates so -// you can apply clean architecture to your iOS and Mac projects, -// see http://clean-swift.com -// - -import UIKit - -protocol SuccessPresentationLogic -{ - -} - -class SuccessPresenter: SuccessPresentationLogic -{ - weak var viewController: SuccessDisplayLogic? -} diff --git a/Santander-Test/Santander-Test/Scenes/Success/SuccessRouter.swift b/Santander-Test/Santander-Test/Scenes/Success/SuccessRouter.swift index f8acd016..5def1213 100644 --- a/Santander-Test/Santander-Test/Scenes/Success/SuccessRouter.swift +++ b/Santander-Test/Santander-Test/Scenes/Success/SuccessRouter.swift @@ -16,13 +16,8 @@ import UIKit func routeToForm(segue: UIStoryboardSegue?) } -protocol SuccessDataPassing { - var dataStore: SuccessDataStore? { get } -} - -class SuccessRouter: NSObject, SuccessRoutingLogic, SuccessDataPassing { +class SuccessRouter: NSObject, SuccessRoutingLogic { weak var viewController: SuccessViewController? - var dataStore: SuccessDataStore? func routeToForm(segue: UIStoryboardSegue?) { let storyboard = UIStoryboard(name: "Form", bundle: nil) @@ -31,6 +26,6 @@ class SuccessRouter: NSObject, SuccessRoutingLogic, SuccessDataPassing { } func navigateToForm(source: SuccessViewController, destination: FormViewController) { - source.show(destination, sender: nil) + viewController?.navigationController?.popViewController(animated: true) } } diff --git a/Santander-Test/Santander-Test/Scenes/Success/SuccessViewController.swift b/Santander-Test/Santander-Test/Scenes/Success/SuccessViewController.swift index 7848f315..3b100181 100644 --- a/Santander-Test/Santander-Test/Scenes/Success/SuccessViewController.swift +++ b/Santander-Test/Santander-Test/Scenes/Success/SuccessViewController.swift @@ -12,13 +12,8 @@ import UIKit -protocol SuccessDisplayLogic: class { - -} - -class SuccessViewController: UIViewController, SuccessDisplayLogic { - var interactor: SuccessBusinessLogic? - var router: (NSObjectProtocol & SuccessRoutingLogic & SuccessDataPassing)? +class SuccessViewController: UIViewController { + var router: (NSObjectProtocol & SuccessRoutingLogic)? override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) @@ -32,15 +27,9 @@ class SuccessViewController: UIViewController, SuccessDisplayLogic { private func setup() { let viewController = self - let interactor = SuccessInteractor() - let presenter = SuccessPresenter() let router = SuccessRouter() - viewController.interactor = interactor viewController.router = router - interactor.presenter = presenter - presenter.viewController = viewController router.viewController = viewController - router.dataStore = interactor } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { @@ -60,5 +49,4 @@ class SuccessViewController: UIViewController, SuccessDisplayLogic { @IBAction func sendNewMessageButton(_ sender: Any) { router?.routeToForm(segue: nil) } - } diff --git a/Santander-Test/Santander-Test/Scenes/Success/SuccessWorker.swift b/Santander-Test/Santander-Test/Scenes/Success/SuccessWorker.swift deleted file mode 100644 index 89ddac58..00000000 --- a/Santander-Test/Santander-Test/Scenes/Success/SuccessWorker.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// SuccessWorker.swift -// Santander-Test -// -// Created by Matheus Ribeiro on 16/05/19. -// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. -// -// This file was generated by the Clean Swift Xcode Templates so -// you can apply clean architecture to your iOS and Mac projects, -// see http://clean-swift.com -// - -import UIKit - -class SuccessWorker -{ - func doSomeWork() - { - } -} From 01082b96bd7ed83b4cf60cef7b09d8b5b0bde9c3 Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Thu, 16 May 2019 05:21:26 -0400 Subject: [PATCH 12/39] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20da=20fonte=20no?= =?UTF-8?q?=20aplicativo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Santander-Test.xcodeproj/project.pbxproj | 44 ++++++++++++++++++ .../UserInterfaceState.xcuserstate | Bin 55110 -> 55684 bytes .../GenericScenes/Checkbox/CheckboxCell.xib | 9 +++- .../GenericScenes/Field/FieldCell.xib | 11 +++-- .../GenericScenes/Send/SendCell.xib | 6 +++ .../GenericScenes/Text/TextCell.xib | 7 ++- Santander-Test/Santander-Test/Info.plist | 12 +++++ .../Scenes/Success/Success.storyboard | 33 +++++++++---- .../Success/SuccessViewController.swift | 11 ++++- .../DINEngschriftStd.otf | Bin 0 -> 29432 bytes .../DINMittelschriftStd.otf | Bin 0 -> 29448 bytes .../DINNeuzeitGroteskStd-BdCond.otf | Bin 0 -> 30452 bytes .../DINNeuzeitGroteskStd-Light.otf | Bin 0 -> 30424 bytes .../DINPro-Black.otf | Bin 0 -> 88940 bytes .../DINPro-Bold.otf | Bin 0 -> 90228 bytes .../DINPro-Light.otf | Bin 0 -> 88240 bytes .../DINPro-Medium.otf | Bin 0 -> 89060 bytes .../DINPro-Regular.otf | Bin 0 -> 87364 bytes 18 files changed, 116 insertions(+), 17 deletions(-) create mode 100755 Santander-Test/Santander-Test/Supporting Files/Fonts/20. Din [1926 - Ludwig Goller]/DINEngschriftStd.otf create mode 100755 Santander-Test/Santander-Test/Supporting Files/Fonts/20. Din [1926 - Ludwig Goller]/DINMittelschriftStd.otf create mode 100755 Santander-Test/Santander-Test/Supporting Files/Fonts/20. Din [1926 - Ludwig Goller]/DINNeuzeitGroteskStd-BdCond.otf create mode 100755 Santander-Test/Santander-Test/Supporting Files/Fonts/20. Din [1926 - Ludwig Goller]/DINNeuzeitGroteskStd-Light.otf create mode 100755 Santander-Test/Santander-Test/Supporting Files/Fonts/20. Din [1926 - Ludwig Goller]/DINPro-Black.otf create mode 100755 Santander-Test/Santander-Test/Supporting Files/Fonts/20. Din [1926 - Ludwig Goller]/DINPro-Bold.otf create mode 100755 Santander-Test/Santander-Test/Supporting Files/Fonts/20. Din [1926 - Ludwig Goller]/DINPro-Light.otf create mode 100755 Santander-Test/Santander-Test/Supporting Files/Fonts/20. Din [1926 - Ludwig Goller]/DINPro-Medium.otf create mode 100755 Santander-Test/Santander-Test/Supporting Files/Fonts/20. Din [1926 - Ludwig Goller]/DINPro-Regular.otf diff --git a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj index 05a70f99..e79a43fb 100644 --- a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj +++ b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj @@ -40,6 +40,15 @@ 965C2F91228D502200015140 /* SuccessRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F8B228D502200015140 /* SuccessRouter.swift */; }; 965C2F93228D502200015140 /* SuccessViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F8D228D502200015140 /* SuccessViewController.swift */; }; 965C2F96228D503300015140 /* Success.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F95228D503300015140 /* Success.storyboard */; }; + 965C2FA1228D5BF000015140 /* DINPro-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F98228D5BF000015140 /* DINPro-Light.otf */; }; + 965C2FA2228D5BF000015140 /* DINMittelschriftStd.otf in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F99228D5BF000015140 /* DINMittelschriftStd.otf */; }; + 965C2FA3228D5BF000015140 /* DINPro-Black.otf in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F9A228D5BF000015140 /* DINPro-Black.otf */; }; + 965C2FA4228D5BF000015140 /* DINPro-Bold.otf in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F9B228D5BF000015140 /* DINPro-Bold.otf */; }; + 965C2FA5228D5BF000015140 /* DINPro-Regular.otf in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F9C228D5BF000015140 /* DINPro-Regular.otf */; }; + 965C2FA6228D5BF000015140 /* DINEngschriftStd.otf in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F9D228D5BF000015140 /* DINEngschriftStd.otf */; }; + 965C2FA7228D5BF000015140 /* DINPro-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F9E228D5BF000015140 /* DINPro-Medium.otf */; }; + 965C2FA8228D5BF000015140 /* DINNeuzeitGroteskStd-BdCond.otf in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F9F228D5BF000015140 /* DINNeuzeitGroteskStd-BdCond.otf */; }; + 965C2FA9228D5BF000015140 /* DINNeuzeitGroteskStd-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 965C2FA0228D5BF000015140 /* DINNeuzeitGroteskStd-Light.otf */; }; 973161DFBDDB30BB534A86DA /* Pods_Santander_TestUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 878E0A16E793237D34137EC7 /* Pods_Santander_TestUITests.framework */; }; C4FCFE13C06111F180515DFA /* Pods_Santander_Test.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F563E135B794CADBF7401F8 /* Pods_Santander_Test.framework */; }; /* End PBXBuildFile section */ @@ -108,6 +117,15 @@ 965C2F8B228D502200015140 /* SuccessRouter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuccessRouter.swift; sourceTree = ""; }; 965C2F8D228D502200015140 /* SuccessViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuccessViewController.swift; sourceTree = ""; }; 965C2F95228D503300015140 /* Success.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = Success.storyboard; sourceTree = ""; }; + 965C2F98228D5BF000015140 /* DINPro-Light.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "DINPro-Light.otf"; path = "20. Din [1926 - Ludwig Goller]/DINPro-Light.otf"; sourceTree = ""; }; + 965C2F99228D5BF000015140 /* DINMittelschriftStd.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = DINMittelschriftStd.otf; path = "20. Din [1926 - Ludwig Goller]/DINMittelschriftStd.otf"; sourceTree = ""; }; + 965C2F9A228D5BF000015140 /* DINPro-Black.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "DINPro-Black.otf"; path = "20. Din [1926 - Ludwig Goller]/DINPro-Black.otf"; sourceTree = ""; }; + 965C2F9B228D5BF000015140 /* DINPro-Bold.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "DINPro-Bold.otf"; path = "20. Din [1926 - Ludwig Goller]/DINPro-Bold.otf"; sourceTree = ""; }; + 965C2F9C228D5BF000015140 /* DINPro-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "DINPro-Regular.otf"; path = "20. Din [1926 - Ludwig Goller]/DINPro-Regular.otf"; sourceTree = ""; }; + 965C2F9D228D5BF000015140 /* DINEngschriftStd.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = DINEngschriftStd.otf; path = "20. Din [1926 - Ludwig Goller]/DINEngschriftStd.otf"; sourceTree = ""; }; + 965C2F9E228D5BF000015140 /* DINPro-Medium.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "DINPro-Medium.otf"; path = "20. Din [1926 - Ludwig Goller]/DINPro-Medium.otf"; sourceTree = ""; }; + 965C2F9F228D5BF000015140 /* DINNeuzeitGroteskStd-BdCond.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "DINNeuzeitGroteskStd-BdCond.otf"; path = "20. Din [1926 - Ludwig Goller]/DINNeuzeitGroteskStd-BdCond.otf"; sourceTree = ""; }; + 965C2FA0228D5BF000015140 /* DINNeuzeitGroteskStd-Light.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "DINNeuzeitGroteskStd-Light.otf"; path = "20. Din [1926 - Ludwig Goller]/DINNeuzeitGroteskStd-Light.otf"; sourceTree = ""; }; A512F1F10FEC63C067350139 /* Pods-Santander-Test.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Santander-Test.debug.xcconfig"; path = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -207,6 +225,7 @@ 965C2F342289668000015140 /* Supporting Files */ = { isa = PBXGroup; children = ( + 965C2F97228D5B8600015140 /* Fonts */, 965C2F7D228C4B8600015140 /* API */, 965C2F76228BBDA100015140 /* Extensions */, 965C2F35228966AF00015140 /* Constants.swift */, @@ -339,6 +358,22 @@ path = Success; sourceTree = ""; }; + 965C2F97228D5B8600015140 /* Fonts */ = { + isa = PBXGroup; + children = ( + 965C2F9D228D5BF000015140 /* DINEngschriftStd.otf */, + 965C2F99228D5BF000015140 /* DINMittelschriftStd.otf */, + 965C2F9F228D5BF000015140 /* DINNeuzeitGroteskStd-BdCond.otf */, + 965C2FA0228D5BF000015140 /* DINNeuzeitGroteskStd-Light.otf */, + 965C2F9A228D5BF000015140 /* DINPro-Black.otf */, + 965C2F9B228D5BF000015140 /* DINPro-Bold.otf */, + 965C2F98228D5BF000015140 /* DINPro-Light.otf */, + 965C2F9E228D5BF000015140 /* DINPro-Medium.otf */, + 965C2F9C228D5BF000015140 /* DINPro-Regular.otf */, + ); + path = Fonts; + sourceTree = ""; + }; C03B33535A1371552140448D /* Pods */ = { isa = PBXGroup; children = ( @@ -462,12 +497,21 @@ files = ( 965C2F75228B9A8000015140 /* SendCell.xib in Resources */, 965C2F1122895E2800015140 /* LaunchScreen.storyboard in Resources */, + 965C2FA7228D5BF000015140 /* DINPro-Medium.otf in Resources */, + 965C2FA1228D5BF000015140 /* DINPro-Light.otf in Resources */, 965C2F96228D503300015140 /* Success.storyboard in Resources */, 965C2F5C228A8CC200015140 /* Form.storyboard in Resources */, + 965C2FA3228D5BF000015140 /* DINPro-Black.otf in Resources */, + 965C2FA6228D5BF000015140 /* DINEngschriftStd.otf in Resources */, 965C2F69228B6D6400015140 /* TextCell.xib in Resources */, 965C2F0E22895E2800015140 /* Assets.xcassets in Resources */, 965C2F84228D409C00015140 /* MainTabBar.storyboard in Resources */, + 965C2FA9228D5BF000015140 /* DINNeuzeitGroteskStd-Light.otf in Resources */, + 965C2FA2228D5BF000015140 /* DINMittelschriftStd.otf in Resources */, + 965C2FA8228D5BF000015140 /* DINNeuzeitGroteskStd-BdCond.otf in Resources */, 965C2F6E228B6EB100015140 /* CheckboxCell.xib in Resources */, + 965C2FA4228D5BF000015140 /* DINPro-Bold.otf in Resources */, + 965C2FA5228D5BF000015140 /* DINPro-Regular.otf in Resources */, 965C2F64228A9B5800015140 /* FieldCell.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index d52844ed456ae3af1f1967dffd080f1a82963e24..2c0032bc86b789ea3e9a39516ee7486b1e5b6a84 100644 GIT binary patch delta 28348 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 gZJePVd_iXlD#U8?CThEBduV%U)3h1d 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 + + + DINPro-Regular + + @@ -37,8 +42,8 @@ diff --git a/Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.xib b/Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.xib index 685ea958..8f01ad2c 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.xib +++ b/Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.xib @@ -9,6 +9,11 @@ + + + DINPro-Regular + + @@ -26,8 +31,8 @@ @@ -45,7 +50,7 @@ - + diff --git a/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.xib b/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.xib index d39acc54..d316477b 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.xib +++ b/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.xib @@ -9,6 +9,11 @@ + + + DINPro-Medium + + @@ -22,6 +27,7 @@ + diff --git a/Santander-Test/Santander-Test/GenericScenes/Text/TextCell.xib b/Santander-Test/Santander-Test/GenericScenes/Text/TextCell.xib index 51753b25..6111df2a 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Text/TextCell.xib +++ b/Santander-Test/Santander-Test/GenericScenes/Text/TextCell.xib @@ -9,6 +9,11 @@ + + + DINPro-Medium + + @@ -18,7 +23,7 @@ diff --git a/Santander-Test/Santander-Test/Info.plist b/Santander-Test/Santander-Test/Info.plist index a37a1491..3748ff4d 100644 --- a/Santander-Test/Santander-Test/Info.plist +++ b/Santander-Test/Santander-Test/Info.plist @@ -2,6 +2,18 @@ + UIAppFonts + + DINPro-Medium.otf + DINPro-Regular.otf + DINPro-Light.otf + DINPro-Bold.otf + DINPro-Black.otf + DINNeuzeitGroteskStd-Light.otf + DINNeuzeitGroteskStd-BdCond.otf + DINMittelschriftStd.otf + DINEngschriftStd.otf + CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleExecutable diff --git a/Santander-Test/Santander-Test/Scenes/Success/Success.storyboard b/Santander-Test/Santander-Test/Scenes/Success/Success.storyboard index ba2c4c5b..153af90f 100644 --- a/Santander-Test/Santander-Test/Scenes/Success/Success.storyboard +++ b/Santander-Test/Santander-Test/Scenes/Success/Success.storyboard @@ -9,6 +9,11 @@ + + + DINPro-Medium + + @@ -19,30 +24,34 @@ - - + + - diff --git a/Santander-Test/Santander-Test/Scenes/Success/SuccessViewController.swift b/Santander-Test/Santander-Test/Scenes/Success/SuccessViewController.swift index 3b100181..85db2c74 100644 --- a/Santander-Test/Santander-Test/Scenes/Success/SuccessViewController.swift +++ b/Santander-Test/Santander-Test/Scenes/Success/SuccessViewController.swift @@ -13,6 +13,10 @@ import UIKit class SuccessViewController: UIViewController { + + @IBOutlet weak var thankYouLabel: UILabel! + @IBOutlet weak var sendNewMessageButton: UIButton! + var router: (NSObjectProtocol & SuccessRoutingLogic)? override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { @@ -43,7 +47,12 @@ class SuccessViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() - + configureLayout() + } + + private func configureLayout() { + thankYouLabel.textColor = UIColor.darkGrayColor + sendNewMessageButton.tintColor = UIColor.darkRedColor } @IBAction func sendNewMessageButton(_ sender: Any) { diff --git a/Santander-Test/Santander-Test/Supporting Files/Fonts/20. Din [1926 - Ludwig Goller]/DINEngschriftStd.otf b/Santander-Test/Santander-Test/Supporting Files/Fonts/20. Din [1926 - Ludwig Goller]/DINEngschriftStd.otf new file mode 100755 index 0000000000000000000000000000000000000000..ae85f8ee3b9487c8ed754a72d2d14ee5c5004243 GIT binary patch literal 29432 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 Y%kQT5oru3neL=`iEUtfENfi+I7d^Ox6aWAK literal 0 HcmV?d00001 diff --git a/Santander-Test/Santander-Test/Supporting Files/Fonts/20. Din [1926 - Ludwig Goller]/DINMittelschriftStd.otf b/Santander-Test/Santander-Test/Supporting Files/Fonts/20. Din [1926 - Ludwig Goller]/DINMittelschriftStd.otf new file mode 100755 index 0000000000000000000000000000000000000000..9a6e0d4ff5d0db37d9e7c5e3c6c479a47f21debd GIT binary patch literal 29448 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�v3OYaenCm)= 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

(C`csk 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 axGu^Di+^-cwl!H^xyk;UG0O%)dj20v|70ov literal 0 HcmV?d00001 diff --git a/Santander-Test/Santander-Test/Supporting Files/Fonts/20. Din [1926 - Ludwig Goller]/DINPro-Light.otf b/Santander-Test/Santander-Test/Supporting Files/Fonts/20. Din [1926 - Ludwig Goller]/DINPro-Light.otf new file mode 100755 index 0000000000000000000000000000000000000000..8a7f085abd28e11f37fba052fd493514a3be21ad GIT binary patch literal 88240 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 Mo`yNvtp)A*A0xKva{vGU literal 0 HcmV?d00001 diff --git a/Santander-Test/Santander-Test/Supporting Files/Fonts/20. Din [1926 - Ludwig Goller]/DINPro-Medium.otf b/Santander-Test/Santander-Test/Supporting Files/Fonts/20. Din [1926 - Ludwig Goller]/DINPro-Medium.otf new file mode 100755 index 0000000000000000000000000000000000000000..b4608d06d170998c463a5451d552b533149dabef GIT binary patch literal 89060 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 literal 0 HcmV?d00001 From 1d75396266eb6e474897309cb9cea02db0f06cbb Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Thu, 16 May 2019 17:44:56 -0400 Subject: [PATCH 13/39] =?UTF-8?q?Implementa=C3=A7ao=20da=20anima=C3=A7?= =?UTF-8?q?=C3=A3o=20de=20pressionar=20bot=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Santander-Test.xcodeproj/project.pbxproj | 4 ++ .../UserInterfaceState.xcuserstate | Bin 55684 -> 58418 bytes .../GenericScenes/Send/SendButton.swift | 53 ++++++++++++++++++ .../GenericScenes/Send/SendCell.swift | 16 ++---- .../GenericScenes/Send/SendCell.xib | 7 +-- .../Extensions/UIColorExtensions.swift | 1 + 6 files changed, 66 insertions(+), 15 deletions(-) create mode 100644 Santander-Test/Santander-Test/GenericScenes/Send/SendButton.swift diff --git a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj index e79a43fb..43bd0388 100644 --- a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj +++ b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj @@ -49,6 +49,7 @@ 965C2FA7228D5BF000015140 /* DINPro-Medium.otf in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F9E228D5BF000015140 /* DINPro-Medium.otf */; }; 965C2FA8228D5BF000015140 /* DINNeuzeitGroteskStd-BdCond.otf in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F9F228D5BF000015140 /* DINNeuzeitGroteskStd-BdCond.otf */; }; 965C2FA9228D5BF000015140 /* DINNeuzeitGroteskStd-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 965C2FA0228D5BF000015140 /* DINNeuzeitGroteskStd-Light.otf */; }; + 965C2FAB228DF72A00015140 /* SendButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FAA228DF72A00015140 /* SendButton.swift */; }; 973161DFBDDB30BB534A86DA /* Pods_Santander_TestUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 878E0A16E793237D34137EC7 /* Pods_Santander_TestUITests.framework */; }; C4FCFE13C06111F180515DFA /* Pods_Santander_Test.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F563E135B794CADBF7401F8 /* Pods_Santander_Test.framework */; }; /* End PBXBuildFile section */ @@ -126,6 +127,7 @@ 965C2F9E228D5BF000015140 /* DINPro-Medium.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "DINPro-Medium.otf"; path = "20. Din [1926 - Ludwig Goller]/DINPro-Medium.otf"; sourceTree = ""; }; 965C2F9F228D5BF000015140 /* DINNeuzeitGroteskStd-BdCond.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "DINNeuzeitGroteskStd-BdCond.otf"; path = "20. Din [1926 - Ludwig Goller]/DINNeuzeitGroteskStd-BdCond.otf"; sourceTree = ""; }; 965C2FA0228D5BF000015140 /* DINNeuzeitGroteskStd-Light.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "DINNeuzeitGroteskStd-Light.otf"; path = "20. Din [1926 - Ludwig Goller]/DINNeuzeitGroteskStd-Light.otf"; sourceTree = ""; }; + 965C2FAA228DF72A00015140 /* SendButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendButton.swift; sourceTree = ""; }; A512F1F10FEC63C067350139 /* Pods-Santander-Test.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Santander-Test.debug.xcconfig"; path = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -310,6 +312,7 @@ children = ( 965C2F72228B9A4C00015140 /* SendCell.swift */, 965C2F74228B9A8000015140 /* SendCell.xib */, + 965C2FAA228DF72A00015140 /* SendButton.swift */, ); path = Send; sourceTree = ""; @@ -643,6 +646,7 @@ 965C2F0722895E2500015140 /* AppDelegate.swift in Sources */, 965C2F36228966AF00015140 /* Constants.swift in Sources */, 965C2F59228A891900015140 /* FormViewController.swift in Sources */, + 965C2FAB228DF72A00015140 /* SendButton.swift in Sources */, 965C2F78228BBDB300015140 /* UIColorExtensions.swift in Sources */, 965C2F66228A9DFC00015140 /* FieldCell.swift in Sources */, 965C2F57228A891900015140 /* FormRouter.swift in Sources */, diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index 2c0032bc86b789ea3e9a39516ee7486b1e5b6a84..5ec1585e02a69b66c27bc73487206b4388af7652 100644 GIT binary patch delta 30030 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 Dn;b2K delta 28810 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 P)Vu#?_mASgmq7jxyWpd% diff --git a/Santander-Test/Santander-Test/GenericScenes/Send/SendButton.swift b/Santander-Test/Santander-Test/GenericScenes/Send/SendButton.swift new file mode 100644 index 00000000..e6dda69b --- /dev/null +++ b/Santander-Test/Santander-Test/GenericScenes/Send/SendButton.swift @@ -0,0 +1,53 @@ +// +// SendButton.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 16/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import UIKit + +protocol SendButtonDelegate: class { + func buttonPressed() +} + +class SendButton: UIButton { + + weak var delegate: SendButtonDelegate? + + private var originalWidth: CGFloat = 0 + private var originalHeight: CGFloat = 0 + + override func awakeFromNib() { + super.awakeFromNib() + configureLayout() + } + + private func configureLayout() { + backgroundColor = UIColor.darkRedColor + layer.cornerRadius = 25 + } + + override func touchesBegan(_ touches: Set, with event: UIEvent?) { + + originalWidth = frame.size.width + originalHeight = frame.size.height + + let buttonCenter = center + frame.size = CGSize(width: originalWidth * 0.9, height: originalHeight * 0.9) + center = buttonCenter + layer.cornerRadius = 22.5 + backgroundColor = UIColor.lightRedColor + } + + override func touchesEnded(_ touches: Set, with event: UIEvent?) { + + let buttonCenter = center + frame.size = CGSize(width: originalWidth, height: originalHeight) + center = buttonCenter + layer.cornerRadius = 25 + backgroundColor = UIColor.darkRedColor + delegate?.buttonPressed() + } +} diff --git a/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.swift b/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.swift index 7ab5146d..d218ce4d 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.swift @@ -14,7 +14,7 @@ protocol SendCellDelegate: class { class SendCell: UITableViewCell { - @IBOutlet weak var button: UIButton! + @IBOutlet weak var button: SendButton! @IBOutlet weak var topConstraint: NSLayoutConstraint! @@ -30,13 +30,7 @@ class SendCell: UITableViewCell { override func awakeFromNib() { super.awakeFromNib() - - configureLayout() - } - - private func configureLayout() { - button.backgroundColor = UIColor.darkRedColor - button.layer.cornerRadius = 25 + button.delegate = self } private func didSetViewModel() { @@ -44,8 +38,10 @@ class SendCell: UITableViewCell { button.setTitle(viewModel.message ?? "-", for: .normal) topConstraint.constant = CGFloat(viewModel.topSpace ?? 8) } - - @IBAction func buttonPressed(_ sender: Any) { +} + +extension SendCell: SendButtonDelegate { + func buttonPressed() { delegate?.buttonPressed() } } diff --git a/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.xib b/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.xib index d316477b..7c5586bb 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.xib +++ b/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.xib @@ -21,7 +21,7 @@ - @@ -46,7 +43,7 @@ - + diff --git a/Santander-Test/Santander-Test/Supporting Files/Extensions/UIColorExtensions.swift b/Santander-Test/Santander-Test/Supporting Files/Extensions/UIColorExtensions.swift index 486ef0b0..50a5b2bb 100644 --- a/Santander-Test/Santander-Test/Supporting Files/Extensions/UIColorExtensions.swift +++ b/Santander-Test/Santander-Test/Supporting Files/Extensions/UIColorExtensions.swift @@ -12,6 +12,7 @@ extension UIColor { static let darkRedColor = UIColor(red: 218/255, green: 1/255, blue: 1/255, alpha: 1.0) static let darkGrayColor = UIColor(red: 151/255, green: 151/255, blue: 151/255, alpha: 1.0) + static let lightRedColor = UIColor(red: 235/255, green: 118/255, blue: 118/255, alpha: 1.0) static let lightGrayColor = UIColor(red: 239/255, green: 238/255, blue: 237/255, alpha: 1.0) static let lightGreenColor = UIColor(red: 101/255, green: 190/255, blue: 48/255, alpha: 1.0) } From 1dc7c5db7e647d704dd9e3e172986fe5bde54b18 Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Fri, 17 May 2019 05:28:41 -0400 Subject: [PATCH 14/39] =?UTF-8?q?Cria=C3=A7=C3=A3o=20das=20c=C3=A9lulas=20?= =?UTF-8?q?do=20fundo=20de=20investimento?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Santander-Test.xcodeproj/project.pbxproj | 148 ++++++++++++++++- .../UserInterfaceState.xcuserstate | Bin 58418 -> 94575 bytes .../download_arrow.imageset/Contents.json | 21 +++ .../download_arrow.png | Bin 0 -> 629 bytes .../risk_pointer.imageset/Contents.json | 21 +++ .../risk_pointer.imageset/risk_pointer.png | Bin 0 -> 788 bytes .../separator.imageset/Contents.json | 21 +++ .../separator.imageset/separator.png | Bin 0 -> 798 bytes .../{ => Form}/Checkbox/CheckboxCell.swift | 0 .../{ => Form}/Checkbox/CheckboxCell.xib | 0 .../{ => Form}/Field/FieldCell.swift | 0 .../{ => Form}/Field/FieldCell.xib | 0 .../{ => Form}/Send/SendButton.swift | 0 .../{ => Form}/Send/SendCell.swift | 0 .../{ => Form}/Send/SendCell.xib | 0 .../{ => Form}/Text/TextCell.swift | 0 .../{ => Form}/Text/TextCell.xib | 0 .../Fund/DownInfo/FundDownInfoCell.swift | 55 +++++++ .../Fund/DownInfo/FundDownInfoCell.xib | 83 ++++++++++ .../Fund/Header/FundHeader.swift | 44 ++++++ .../GenericScenes/Fund/Header/FundHeader.xib | 97 ++++++++++++ .../Fund/Info/FundInfoCell.swift | 46 ++++++ .../GenericScenes/Fund/Info/FundInfoCell.xib | 48 ++++++ .../Fund/MoreInfo/FundMoreInfoCell.swift | 61 +++++++ .../Fund/MoreInfo/FundMoreInfoCell.xib | 149 ++++++++++++++++++ .../GenericScenes/Fund/Risk/FundRisk.swift | 47 ++++++ .../GenericScenes/Fund/Risk/FundRisk.xib | 80 ++++++++++ .../Scenes/FundDetail/FundDetail.storyboard | 42 +++++ .../FundDetail/FundDetailInteractor.swift | 41 +++++ .../Scenes/FundDetail/FundDetailModels.swift | 30 ++++ .../FundDetail/FundDetailPresenter.swift | 31 ++++ .../Scenes/FundDetail/FundDetailRouter.swift | 60 +++++++ .../FundDetail/FundDetailViewController.swift | 110 +++++++++++++ .../Scenes/FundDetail/FundDetailWorker.swift | 20 +++ .../Scenes/MainTabBar/MainTabBar.storyboard | 13 +- 35 files changed, 1259 insertions(+), 9 deletions(-) create mode 100644 Santander-Test/Santander-Test/Assets.xcassets/download_arrow.imageset/Contents.json create mode 100644 Santander-Test/Santander-Test/Assets.xcassets/download_arrow.imageset/download_arrow.png create mode 100644 Santander-Test/Santander-Test/Assets.xcassets/risk_pointer.imageset/Contents.json create mode 100644 Santander-Test/Santander-Test/Assets.xcassets/risk_pointer.imageset/risk_pointer.png create mode 100644 Santander-Test/Santander-Test/Assets.xcassets/separator.imageset/Contents.json create mode 100644 Santander-Test/Santander-Test/Assets.xcassets/separator.imageset/separator.png rename Santander-Test/Santander-Test/GenericScenes/{ => Form}/Checkbox/CheckboxCell.swift (100%) rename Santander-Test/Santander-Test/GenericScenes/{ => Form}/Checkbox/CheckboxCell.xib (100%) rename Santander-Test/Santander-Test/GenericScenes/{ => Form}/Field/FieldCell.swift (100%) rename Santander-Test/Santander-Test/GenericScenes/{ => Form}/Field/FieldCell.xib (100%) rename Santander-Test/Santander-Test/GenericScenes/{ => Form}/Send/SendButton.swift (100%) rename Santander-Test/Santander-Test/GenericScenes/{ => Form}/Send/SendCell.swift (100%) rename Santander-Test/Santander-Test/GenericScenes/{ => Form}/Send/SendCell.xib (100%) rename Santander-Test/Santander-Test/GenericScenes/{ => Form}/Text/TextCell.swift (100%) rename Santander-Test/Santander-Test/GenericScenes/{ => Form}/Text/TextCell.xib (100%) create mode 100644 Santander-Test/Santander-Test/GenericScenes/Fund/DownInfo/FundDownInfoCell.swift create mode 100644 Santander-Test/Santander-Test/GenericScenes/Fund/DownInfo/FundDownInfoCell.xib create mode 100644 Santander-Test/Santander-Test/GenericScenes/Fund/Header/FundHeader.swift create mode 100644 Santander-Test/Santander-Test/GenericScenes/Fund/Header/FundHeader.xib create mode 100644 Santander-Test/Santander-Test/GenericScenes/Fund/Info/FundInfoCell.swift create mode 100644 Santander-Test/Santander-Test/GenericScenes/Fund/Info/FundInfoCell.xib create mode 100644 Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.swift create mode 100644 Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.xib create mode 100644 Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.swift create mode 100644 Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.xib create mode 100644 Santander-Test/Santander-Test/Scenes/FundDetail/FundDetail.storyboard create mode 100644 Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailInteractor.swift create mode 100644 Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailModels.swift create mode 100644 Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailPresenter.swift create mode 100644 Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailRouter.swift create mode 100644 Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift create mode 100644 Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailWorker.swift diff --git a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj index 43bd0388..8cb14f18 100644 --- a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj +++ b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj @@ -9,7 +9,6 @@ /* Begin PBXBuildFile section */ 493342D14E83E8F2E5CA3C31 /* Pods_Santander_TestTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0815CC0FAEEAF8D6E86F6807 /* Pods_Santander_TestTests.framework */; }; 965C2F0722895E2500015140 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F0622895E2500015140 /* AppDelegate.swift */; }; - 965C2F0E22895E2800015140 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F0D22895E2800015140 /* Assets.xcassets */; }; 965C2F1122895E2800015140 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F0F22895E2800015140 /* LaunchScreen.storyboard */; }; 965C2F1C22895E2800015140 /* Santander_TestTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F1B22895E2800015140 /* Santander_TestTests.swift */; }; 965C2F2722895E2800015140 /* Santander_TestUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2F2622895E2800015140 /* Santander_TestUITests.swift */; }; @@ -50,6 +49,24 @@ 965C2FA8228D5BF000015140 /* DINNeuzeitGroteskStd-BdCond.otf in Resources */ = {isa = PBXBuildFile; fileRef = 965C2F9F228D5BF000015140 /* DINNeuzeitGroteskStd-BdCond.otf */; }; 965C2FA9228D5BF000015140 /* DINNeuzeitGroteskStd-Light.otf in Resources */ = {isa = PBXBuildFile; fileRef = 965C2FA0228D5BF000015140 /* DINNeuzeitGroteskStd-Light.otf */; }; 965C2FAB228DF72A00015140 /* SendButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FAA228DF72A00015140 /* SendButton.swift */; }; + 965C2FBF228E128E00015140 /* FundDetailPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FB9228E128E00015140 /* FundDetailPresenter.swift */; }; + 965C2FC0228E128E00015140 /* FundDetailWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FBA228E128E00015140 /* FundDetailWorker.swift */; }; + 965C2FC1228E128E00015140 /* FundDetailRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FBB228E128E00015140 /* FundDetailRouter.swift */; }; + 965C2FC2228E128E00015140 /* FundDetailModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FBC228E128E00015140 /* FundDetailModels.swift */; }; + 965C2FC3228E128E00015140 /* FundDetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FBD228E128E00015140 /* FundDetailViewController.swift */; }; + 965C2FC4228E128E00015140 /* FundDetailInteractor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FBE228E128E00015140 /* FundDetailInteractor.swift */; }; + 965C2FC8228E1E0700015140 /* FundHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = 965C2FC7228E1E0700015140 /* FundHeader.xib */; }; + 965C2FCA228E244900015140 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 965C2FC9228E244900015140 /* Assets.xcassets */; }; + 965C2FCC228E26A900015140 /* FundHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FCB228E26A900015140 /* FundHeader.swift */; }; + 965C2FD0228E4C5A00015140 /* FundRisk.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FCF228E4C5A00015140 /* FundRisk.swift */; }; + 965C2FD2228E4D0D00015140 /* FundRisk.xib in Resources */ = {isa = PBXBuildFile; fileRef = 965C2FD1228E4D0D00015140 /* FundRisk.xib */; }; + 965C2FD6228E5C4100015140 /* FundDetail.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 965C2FD5228E5C4100015140 /* FundDetail.storyboard */; }; + 965C2FD9228E9D4600015140 /* FundMoreInfoCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 965C2FD8228E9D4600015140 /* FundMoreInfoCell.xib */; }; + 965C2FDB228E9D5A00015140 /* FundMoreInfoCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FDA228E9D5A00015140 /* FundMoreInfoCell.swift */; }; + 965C2FDE228EA9BD00015140 /* FundInfoCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 965C2FDD228EA9BD00015140 /* FundInfoCell.xib */; }; + 965C2FE0228EA9CB00015140 /* FundInfoCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FDF228EA9CB00015140 /* FundInfoCell.swift */; }; + 965C2FE3228EACC300015140 /* FundDownInfoCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 965C2FE2228EACC300015140 /* FundDownInfoCell.xib */; }; + 965C2FE5228EACD400015140 /* FundDownInfoCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FE4228EACD400015140 /* FundDownInfoCell.swift */; }; 973161DFBDDB30BB534A86DA /* Pods_Santander_TestUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 878E0A16E793237D34137EC7 /* Pods_Santander_TestUITests.framework */; }; C4FCFE13C06111F180515DFA /* Pods_Santander_Test.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F563E135B794CADBF7401F8 /* Pods_Santander_Test.framework */; }; /* End PBXBuildFile section */ @@ -82,7 +99,6 @@ 944E346D8B737070B6AC9E04 /* Pods-Santander-TestUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Santander-TestUITests.debug.xcconfig"; path = "Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.debug.xcconfig"; sourceTree = ""; }; 965C2F0322895E2500015140 /* Santander-Test.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Santander-Test.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 965C2F0622895E2500015140 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 965C2F0D22895E2800015140 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 965C2F1022895E2800015140 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 965C2F1222895E2800015140 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 965C2F1722895E2800015140 /* Santander-TestTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Santander-TestTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -128,6 +144,24 @@ 965C2F9F228D5BF000015140 /* DINNeuzeitGroteskStd-BdCond.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "DINNeuzeitGroteskStd-BdCond.otf"; path = "20. Din [1926 - Ludwig Goller]/DINNeuzeitGroteskStd-BdCond.otf"; sourceTree = ""; }; 965C2FA0228D5BF000015140 /* DINNeuzeitGroteskStd-Light.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "DINNeuzeitGroteskStd-Light.otf"; path = "20. Din [1926 - Ludwig Goller]/DINNeuzeitGroteskStd-Light.otf"; sourceTree = ""; }; 965C2FAA228DF72A00015140 /* SendButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SendButton.swift; sourceTree = ""; }; + 965C2FB9228E128E00015140 /* FundDetailPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FundDetailPresenter.swift; sourceTree = ""; }; + 965C2FBA228E128E00015140 /* FundDetailWorker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FundDetailWorker.swift; sourceTree = ""; }; + 965C2FBB228E128E00015140 /* FundDetailRouter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FundDetailRouter.swift; sourceTree = ""; }; + 965C2FBC228E128E00015140 /* FundDetailModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FundDetailModels.swift; sourceTree = ""; }; + 965C2FBD228E128E00015140 /* FundDetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FundDetailViewController.swift; sourceTree = ""; }; + 965C2FBE228E128E00015140 /* FundDetailInteractor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FundDetailInteractor.swift; sourceTree = ""; }; + 965C2FC7228E1E0700015140 /* FundHeader.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FundHeader.xib; sourceTree = ""; }; + 965C2FC9228E244900015140 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 965C2FCB228E26A900015140 /* FundHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FundHeader.swift; sourceTree = ""; }; + 965C2FCF228E4C5A00015140 /* FundRisk.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FundRisk.swift; sourceTree = ""; }; + 965C2FD1228E4D0D00015140 /* FundRisk.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FundRisk.xib; sourceTree = ""; }; + 965C2FD5228E5C4100015140 /* FundDetail.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = FundDetail.storyboard; sourceTree = ""; }; + 965C2FD8228E9D4600015140 /* FundMoreInfoCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FundMoreInfoCell.xib; sourceTree = ""; }; + 965C2FDA228E9D5A00015140 /* FundMoreInfoCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FundMoreInfoCell.swift; sourceTree = ""; }; + 965C2FDD228EA9BD00015140 /* FundInfoCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FundInfoCell.xib; sourceTree = ""; }; + 965C2FDF228EA9CB00015140 /* FundInfoCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FundInfoCell.swift; sourceTree = ""; }; + 965C2FE2228EACC300015140 /* FundDownInfoCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FundDownInfoCell.xib; sourceTree = ""; }; + 965C2FE4228EACD400015140 /* FundDownInfoCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FundDownInfoCell.swift; sourceTree = ""; }; A512F1F10FEC63C067350139 /* Pods-Santander-Test.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Santander-Test.debug.xcconfig"; path = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -199,9 +233,9 @@ 965C2F3C2289767900015140 /* Models */, 965C2F342289668000015140 /* Supporting Files */, 965C2F0622895E2500015140 /* AppDelegate.swift */, - 965C2F0D22895E2800015140 /* Assets.xcassets */, 965C2F0F22895E2800015140 /* LaunchScreen.storyboard */, 965C2F1222895E2800015140 /* Info.plist */, + 965C2FC9228E244900015140 /* Assets.xcassets */, ); path = "Santander-Test"; sourceTree = ""; @@ -248,6 +282,7 @@ 965C2F4D228A848400015140 /* Scenes */ = { isa = PBXGroup; children = ( + 965C2FAC228E118700015140 /* FundDetail */, 965C2F88228D4FD700015140 /* Success */, 965C2F87228D494900015140 /* MainTabBar */, 965C2F4E228A848E00015140 /* Form */, @@ -272,10 +307,8 @@ 965C2F5D228A8EDF00015140 /* GenericScenes */ = { isa = PBXGroup; children = ( - 965C2F71228B9A2500015140 /* Send */, - 965C2F6C228B6E8C00015140 /* Checkbox */, - 965C2F67228B6C4300015140 /* Text */, - 965C2F5E228A8EF200015140 /* Field */, + 965C2FC6228E1B8F00015140 /* Fund */, + 965C2FC5228E1B3700015140 /* Form */, ); path = GenericScenes; sourceTree = ""; @@ -377,6 +410,88 @@ path = Fonts; sourceTree = ""; }; + 965C2FAC228E118700015140 /* FundDetail */ = { + isa = PBXGroup; + children = ( + 965C2FB9228E128E00015140 /* FundDetailPresenter.swift */, + 965C2FBA228E128E00015140 /* FundDetailWorker.swift */, + 965C2FBB228E128E00015140 /* FundDetailRouter.swift */, + 965C2FBC228E128E00015140 /* FundDetailModels.swift */, + 965C2FBD228E128E00015140 /* FundDetailViewController.swift */, + 965C2FBE228E128E00015140 /* FundDetailInteractor.swift */, + 965C2FD5228E5C4100015140 /* FundDetail.storyboard */, + ); + path = FundDetail; + sourceTree = ""; + }; + 965C2FC5228E1B3700015140 /* Form */ = { + isa = PBXGroup; + children = ( + 965C2F71228B9A2500015140 /* Send */, + 965C2F6C228B6E8C00015140 /* Checkbox */, + 965C2F67228B6C4300015140 /* Text */, + 965C2F5E228A8EF200015140 /* Field */, + ); + path = Form; + sourceTree = ""; + }; + 965C2FC6228E1B8F00015140 /* Fund */ = { + isa = PBXGroup; + children = ( + 965C2FE1228EAC9300015140 /* DownInfo */, + 965C2FDC228EA9A900015140 /* Info */, + 965C2FD7228E9D1200015140 /* MoreInfo */, + 965C2FCE228E4BF800015140 /* Risk */, + 965C2FCD228E4BE600015140 /* Header */, + ); + path = Fund; + sourceTree = ""; + }; + 965C2FCD228E4BE600015140 /* Header */ = { + isa = PBXGroup; + children = ( + 965C2FC7228E1E0700015140 /* FundHeader.xib */, + 965C2FCB228E26A900015140 /* FundHeader.swift */, + ); + path = Header; + sourceTree = ""; + }; + 965C2FCE228E4BF800015140 /* Risk */ = { + isa = PBXGroup; + children = ( + 965C2FCF228E4C5A00015140 /* FundRisk.swift */, + 965C2FD1228E4D0D00015140 /* FundRisk.xib */, + ); + path = Risk; + sourceTree = ""; + }; + 965C2FD7228E9D1200015140 /* MoreInfo */ = { + isa = PBXGroup; + children = ( + 965C2FD8228E9D4600015140 /* FundMoreInfoCell.xib */, + 965C2FDA228E9D5A00015140 /* FundMoreInfoCell.swift */, + ); + path = MoreInfo; + sourceTree = ""; + }; + 965C2FDC228EA9A900015140 /* Info */ = { + isa = PBXGroup; + children = ( + 965C2FDD228EA9BD00015140 /* FundInfoCell.xib */, + 965C2FDF228EA9CB00015140 /* FundInfoCell.swift */, + ); + path = Info; + sourceTree = ""; + }; + 965C2FE1228EAC9300015140 /* DownInfo */ = { + isa = PBXGroup; + children = ( + 965C2FE2228EACC300015140 /* FundDownInfoCell.xib */, + 965C2FE4228EACD400015140 /* FundDownInfoCell.swift */, + ); + path = DownInfo; + sourceTree = ""; + }; C03B33535A1371552140448D /* Pods */ = { isa = PBXGroup; children = ( @@ -501,13 +616,19 @@ 965C2F75228B9A8000015140 /* SendCell.xib in Resources */, 965C2F1122895E2800015140 /* LaunchScreen.storyboard in Resources */, 965C2FA7228D5BF000015140 /* DINPro-Medium.otf in Resources */, + 965C2FCA228E244900015140 /* Assets.xcassets in Resources */, 965C2FA1228D5BF000015140 /* DINPro-Light.otf in Resources */, 965C2F96228D503300015140 /* Success.storyboard in Resources */, 965C2F5C228A8CC200015140 /* Form.storyboard in Resources */, + 965C2FD2228E4D0D00015140 /* FundRisk.xib in Resources */, 965C2FA3228D5BF000015140 /* DINPro-Black.otf in Resources */, + 965C2FD6228E5C4100015140 /* FundDetail.storyboard in Resources */, + 965C2FDE228EA9BD00015140 /* FundInfoCell.xib in Resources */, + 965C2FC8228E1E0700015140 /* FundHeader.xib in Resources */, + 965C2FD9228E9D4600015140 /* FundMoreInfoCell.xib in Resources */, 965C2FA6228D5BF000015140 /* DINEngschriftStd.otf in Resources */, + 965C2FE3228EACC300015140 /* FundDownInfoCell.xib in Resources */, 965C2F69228B6D6400015140 /* TextCell.xib in Resources */, - 965C2F0E22895E2800015140 /* Assets.xcassets in Resources */, 965C2F84228D409C00015140 /* MainTabBar.storyboard in Resources */, 965C2FA9228D5BF000015140 /* DINNeuzeitGroteskStd-Light.otf in Resources */, 965C2FA2228D5BF000015140 /* DINMittelschriftStd.otf in Resources */, @@ -638,17 +759,28 @@ 965C2F3B228974F500015140 /* FundsServiceApiManager.swift in Sources */, 965C2F3E2289776F00015140 /* FormCell.swift in Sources */, 965C2F86228D474300015140 /* MainTabBar.swift in Sources */, + 965C2FC0228E128E00015140 /* FundDetailWorker.swift in Sources */, 965C2F70228B6EBE00015140 /* CheckboxCell.swift in Sources */, + 965C2FCC228E26A900015140 /* FundHeader.swift in Sources */, + 965C2FC1228E128E00015140 /* FundDetailRouter.swift in Sources */, 965C2F73228B9A4C00015140 /* SendCell.swift in Sources */, + 965C2FE0228EA9CB00015140 /* FundInfoCell.swift in Sources */, + 965C2FBF228E128E00015140 /* FundDetailPresenter.swift in Sources */, + 965C2FC4228E128E00015140 /* FundDetailInteractor.swift in Sources */, 965C2F55228A891900015140 /* FormPresenter.swift in Sources */, 965C2F82228CAB1000015140 /* FieldValidation.swift in Sources */, + 965C2FC3228E128E00015140 /* FundDetailViewController.swift in Sources */, 965C2F91228D502200015140 /* SuccessRouter.swift in Sources */, 965C2F0722895E2500015140 /* AppDelegate.swift in Sources */, 965C2F36228966AF00015140 /* Constants.swift in Sources */, 965C2F59228A891900015140 /* FormViewController.swift in Sources */, + 965C2FD0228E4C5A00015140 /* FundRisk.swift in Sources */, 965C2FAB228DF72A00015140 /* SendButton.swift in Sources */, 965C2F78228BBDB300015140 /* UIColorExtensions.swift in Sources */, 965C2F66228A9DFC00015140 /* FieldCell.swift in Sources */, + 965C2FE5228EACD400015140 /* FundDownInfoCell.swift in Sources */, + 965C2FDB228E9D5A00015140 /* FundMoreInfoCell.swift in Sources */, + 965C2FC2228E128E00015140 /* FundDetailModels.swift in Sources */, 965C2F57228A891900015140 /* FormRouter.swift in Sources */, 965C2F5A228A891900015140 /* FormInteractor.swift in Sources */, 965C2F58228A891900015140 /* FormModels.swift in Sources */, diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index 5ec1585e02a69b66c27bc73487206b4388af7652..7d6a8843f06d6b97ca315c980ed0b253d56916d7 100644 GIT binary patch literal 94575 zcmdqK2YeL88$Y}=vwOF@*Y51jCW4P|ehyp|Z1s<#my1Jp#i<`}r za%XV?u8a$F5w4D_=N51axkcQ0+;VOex0<_zThDFauHmlbuH&xfZsvAyw{UlG_j7x> z2e?PLC%7lMr??lm*SNR254q2|Z@KTd-?-noKM;=uWI|>nA_>XJhq|FtP!E)VdZIq4 zFUmy&&_Hws8iWR;A!t0BfJ)FrGzm>cQ_xg26IG%)XaPDGEkoy_6=*eDgDylDp$%vw zx*TmrSD~xX^=K<csibeXX06SHlB;C@Y%Qy*W(5FT)YfljyK~i_zHX_z6xKB zuff;i>+tn>8@?Iuz_;VwcrV_EAHWadhw-cUHT*h$1HXyi!Uyr&_#ONO{t|zMzsBF- zAMo$^5Bw+o3;#_B;fX**A`u5sNF3=(;z>`^hx8|jB$cF*ERs!f$Y7F3ipVfBhKwcS z$W$_ol#@ARF5Sw}7=myyfKW^x_5o@^!C$t`3zxr5wE?j!e;y<|T*Kpr9w zlgG)^koe*QGR58s#X$Dhvk=M(uP zKABJFGx!`nmmk89;79SJ`SJV&elkCupUs!?<@_9eE?>o;&DZc@KEf~ORi5%I`1ASo z{04p_zlpz;-^^dbU(0XfZ{qLZ@8s{|ALRG*2l&VNC-`Ui*ZDX2H~EkFkNHpdZ}{K% zLjo^|f>lrij}Rwx5xNOIgx*3wAxTIU(uHhcv@k{(D~uDy3loGAVWKcem@J$v%oD1G z`9h5l5^9BWgs^atutC@;TrO-Dt`e>mt{1inO~MVr&B6|0mvEbKr*M~Wudq*eKzK-a zSa?==PIz8;L3mMkNqAFuU-&@yQ20prQusmmUHI3;nan1;$zk%Dx|w>Kl1#~_6jQco zuxW^Cs435sZz?vOX&Px7Wg2aoXqsf2Y?@-4ZJKMUGS!+EniiQBo0gcCnpT+3H?1_S zGOadUY`Vm>-n7BA(R78W(R8!vcGGUt9i}@?cbWE@_L&|qJ!sl*dffDc=}FU5rl(CW znO-&>G`(&5$n>S@E7OmrKTQ9c&1TW;F#F7Y^C{+D=Kkg^bGA9hJj6WAJls6SJjp!M zTxp(Tt})k}7nm2C7nv8ERWmiOFrRN;X}-{Wk@;ftCFb?!&F1UO*PFMSZ#C~S?=kN) zKVp8y{H*yE^Fj05=8w!@ntw3=BVv(=W>FNaqD^#)F3~6Y#RRdZ*h}m!o+c)WN#bB} zh&WWt6Z6Fau}~}$hlwM_QQ~NEyf{IeEmnwiV!gOPTp}(Nmy4=+k$ACqiMU?eAYLY3 zE?z0#Ebb6*5qFBWio3+y#M{N);vVsC@qTfy_=NbR_`LX@_`djo_^J4r___GC_>K67 zct|`f5s8;Pl2`IcU8Qc)DblG@g49#$CnZVAQm!;W8YrD14V4O{Lg`Ftj5Jo7AzvV*~&ca&+i__w@_$=|3?v`GbzLs3e0Lwtj5X(?Yp{2+&-ZIHD z*>aYp!ZO#g$g!-m|=K`O@;OjZ0wb(VFuwbWW}onu{SU1VKsU1mMcy25(Cb-nd!>-E;H)*aSe);p{Z zTOYALVSUp2to1qTTh@22?^(aFeq;T?#@Ub!+e|jI&0@3K;%q%_eQbSg>9%a!K-);$ zDBEb;c-sWqWZM*5xowVZt}Sd^U|V9lz;>bSBHISrM%(4K&9+9{cH51%-L^fp`)p6y zp0+(>d%^aK?N!?cwohz7*#5HpW5;%v-EH^VPqufpUtqt)zTSSR{WAL%_ABkz+OM-W z+PB$nwBKakX}{IJ+kS`rZu>pXcX>~Gl*+TXLk zZ~xf-iTw-vm-cV%-`Rh%|7`!={)hdL{jdW$u*2jqJ1h>XLvc7AUWd9D^PCjsnMU#|XzL$7siR#{|b@#}vm5$4tjrj({WR zsC1m|nCA#NY8`csddFhN632Ot<&N_mD;;Yc>l~LmHaoUBu5euGxYp6+xWTdAaiill z$L)^Yjt3kMI`%sbI3995=6Kfeoa1@N3ywD&Z#v#`eCqhj@wwv*$Cr+89ltn!bsTp5 zyxC|1R$*cFH3R!&k*R=O(PlwL}2wo;~4DQ7ETC8E?RszQ|&%K6GlWv#Ma*`QpZT&Y~8Y*%hnZc=Vmb||})J<0>h zgUWv88Rc2!Ipulf1?3gxpz^lzj`E4}sq&fflk&6ji}I`ToAQ?vIVGp;v^f3FIA<5< zNzRjAvGp-*A~|mt}9*Fx|&=!xNddra^2?I>)Pjf!1bVOzv~g#)2?S+&$^y- zz2p$@R1AZ`UE$VYlR#-4?giZF4)_aqcee?(QD$1b4DK z#hvO-bEmtr-Gkjj+{4`?+{Nxm?#b>c?y2r+?pf{%chFtwp5vbDu63W|Ugkc}z1*$3 zse6_CBKKwP%iWvZjqYvkCie~Q?d~1!-R?Ww_q+GH_qm^RKjnVf{fzrr_lxc~-0!Fcc)T8;$M1>rboC^7dV2bM5d)9c?dM@%@>bcr; zjptg=&7K{eTRb~Gw|aJa?)4n-Jmh)U^StK;&x@XyJTH4*_q^+Q&-0n*bI%u^Up&8h ze)Ih9`NMO_OS~4Z)ob&1@t)*8+1u6I&D-7E$D86!^$zk5_73q5_2zktyraAmy_39? zy=C5VZ-qDLt@NJlJ;%G)yTrTHyT-fLyUu%o_d@S_?`H3H-s`eO11*ee-

iyVG}wDApmhYhNZQnb-4}72dzW4p$`_XsU_mA&iKj%k&!Eg0@{9b=|e-D3xzo);Kzpp>V zpX1N<5AYB35BHDo7yHljkMU3P&+^aqSNP}ptNiu;1^$KpMgGP9<$l$_%D>*f!N1YJ z$$zQ;GXHh{>-}5(P5vGJTl_oyclr1D@Alv0zt{hO{~`Yq{%8Ep`rq@v@BhI6q5mWQ z$No?JpZdS>f9?Oq|AYTG|L^|4{fGRA<4~MAPK=Y{y2YImcWPXGT=%#haS3rf<9fyQ zjyo-`Ph8))esLLbnQ>Wh*>OYSisR0V8yPn$Zgkw3xUq55;-<&VhzrJ5#?6U4CoUXU zAGa!Qb=;b`wQ=j>E{@v}w=r&0+~&Az;s#c^G@lem+)u3R@&P)({?6;(--T^Q>yCb zmQ>ZusSd)MQl(GpiuEE&$COM6M(RT003%ju*ZXEJg-hkqxO6Uq%jB}SY%WK&sdm+&Dyma; zsczMydT-_i0FGyHgSf%m5N;?So3Hu+$vE{!b(gwZJphfLEe!a#e8QO!liKuR+SBx++Le6^zV+ z!gO+3HieT6fW~o?x!yN$(qYg>FnYnxahB@kLw`AMs73LyNTNbDKFzLR}&$1lA7GaZGi`C zxvSI^c+gMHP}3)uK%0Y+$)ka9sw1<8!%euVTz_cPzLjg@dT-+zAm=tU74oHR(~4QE z71B>lpExWOoZdVfyI_CP3a$>vaEmn(zLA9{_$BkY0H)w37_Vk zZ7$(C^^BGhUgTbG?!8ykL29~@<8|&$_F|oSdIR^CI=JPXX z?i2Q6o0`_ZeX0&^dGQ7J6?^feng{Sht3e)4X#tw4mX@I-DYCGtvYBVT=YC>f{lNXG z7N~`d+|S%EYLQyPO6YP!4p&F0#ZBA*#36(*DC0BLk?JT`w68WCjDQq@+?AAvYJ&xHL!k)MnO$L6t}6;e z7EcTn*MQ=KVP-s|qJRz8GcR8A=rc@bH5@g!2+10d15h$S8IG>P@0_9`hHtd9hXD;Ro} zRl%^v&*)SX57oAAyxwrAu@QCWc6aphi03Vc)r4w-deOa5Z{VgjMaKZ&h)!d593$1Z zD5s!)C>7K^Ivw>#i71Jii&E4{>ST3_Iu+FXwCyMjrK2>iC&~h|Xu3KBe*Eg?pz48h zn85(rxqMzhXg*^i=D62%W~t(bSK0_PF&wCgQ~^MmnG%6Fh55sq2LZ;$@Q#5QEe?kK zu{G6;C)C%}KsV)Ahsx(crf#gJ=&NGL0+lg-jb>M{(U_rV1Xy|~59Ol*REUbuFf?49 zsm@YotEK8$YCtW!ky$2aBpLn8e|+1 zSP<03uey4%@jix{g1J@I72#k_w6@faG8K%Qq*XG9As3q`0rC{ohoO+VQGt38!4kbU zCj=`2>zeZ5$l&6anH7(wp&1Qmx>}*GeGSb*v*Af8Itv9*87fB=2zpU5M&nT-T@lP~ zkq=N(bF~!n164IGk3qc^!vMNyY^9O6<(;}xtyI^jLG}DnCAHaZi2*RFXi>1dp6Q&T zngvziPz|&F3q!09o#wfyekZCzXQO$j8qG&FD1>U!IVg-Gs7{@u&Qs^BA@v+JqSmVm z)y3*k^*mKoSGH+QPV0# zMrulKSxQQCii@=rwXISxn$yyUnnVU9CudhyX5>_)1e-j(wEWaw<#X91-*)1L$9MZ(D~>sbP#PqYe53vL)W0~=wkE{+KoOz4d@oNPQ5_A zP`yaK7zE=Ib-fx^Yd|D7s0-93YOT6aU9N6Y7Xg!8+FC?2(^FdArUkNFZh?VvDqC(r zo^#S#-=$ahv z&@bHXNn=XjW@c+fh%t0CQgfq*?thp!8bjirSm1i!g8qV${SZ2g{z3m@4kL^)!Mu6} zjPX~hSE*O4*QnR3*QwX5Th)eJxbE1@^~4gEv4#C((>!c}F~1Q8$!%(rdV}_lP55pw z?0}+hI21l|0;VfCHY^$zf;J|W&(nM$Fs?Hzsm-7mVe>YYDU!dKnP@PHWy2HrS^~8& zs6r)dO2RA*V>r}|F@53zZ(>rj0;12NMS^L;M3N0U#sso0-LBR(4iAUwYoU-fbB@gP zWy>_~#iyVdTh+A+((iiUgstj!o$Y_Yy&75PM*9PwhWo)z>i~Gya#1`k-02xKzphU$TK& zR|E5PXu9Eyz`6Jgm>S^$c%XWldV3?|NZ>xr3iWFJ%8bTQ!N9y=g<&(EI(0(xo2a2U zEF7BO>;*D9qyQJO4k=XcXu!kNJ6VS~K~Xk)gESjW?|?JWjBR)%9)(A%cd7TQ52$O6 zLdM~VoNF5%k0;;~b&q)Zbm)odtoh$3a3H)d3YVy zdk0>QRZQ^;d_G=@SK-xo4PL80qCToVrarDdp+2cTr9Q1bqdvO>Uw|)U_Bz<^1MmjC z5pTkms?VvmntQH0GfVh1qbV_!2k+T;Ul z=bDN@7~DzFzHLclO4Z7#U0I&&fXSm;>zR-YgR9|F`?xm9u zb)a_CbfbV<@U5(Xo$5;sc$fMzc!WlSy==U_1K-Vf<4$}R-lM*vzN)^q4c`OU->1IL z(B>F(^o^-cn|zdjvo<3*)Pw5V>O1PY>U%fhXYq6RdHe$RC4LFNtiG>) zp#Gp9QuEZq>OX4wOg45fS2-IMX6Q6UXH9V(89UHJF|&;^n)kkoVMn#|?quU#iw1A@ z5X>;%fn^9BQCnXIz6sq6lo$!shszD0Bz_lv#JQUAd-#3)0sc_^Q2j{#SpB34e~drD zpW@HdPt`Bguhg$uPn=Yu>~t{}f_`1v{X+X$q0CYI2}4sf zMZzg#jqW{!|K(hb_%QxQ{YL$^k#Gd5->KiLS(7TEj>znas8KyCSTm zCLZD?KJ{ny7xh>5H}&`C=^^)}HXF%fvytfJgWIM}Ez;Q3!g#a^%P?n21ly_k(K;>F z>8(9_Cq8Y++=gX9|c2o5N5&2 z2B$@mrxuJYEJ|kH>0s5^lH^z`wau;OT~2QCShl)knw$-#`ns3Swwjeg(g`fWwKulrVjW#8X3(g5d>LV>2 z`3lM9EMx$3lQT#XTV*T*f8h-H8xB^(q-8-6JbeGEf9cc?Aw$8|1`%u|L!$E!k`Js) z3MfMA3eZa}-sRMk)SUkDnHf3F?qxEZoC(GV8G&!0h^Q|#l96N-MLb1v1E!ymdODeXqzWdb z+yD}wNMt%VLCw-xv;sUbBuJ6eY>kk)r1sc~l7vZw)RB7p5?QFePmxR!6dO-bcl9tu zJ(?ZbWC>XgnushV=aOaQJc=w7!TP9;B6|~22}Nn-e2N?txzy@k#QBO9fYBkqO&xUDtc6x4$ z0(h3Z*hV&A0@-|pqTWn4CmOQ(I%B^#C_1gBrw@{kjwPGqWAX|4lzc`$Ctr{+De6N} zUy2GT8c)%1iY8E`tqJuj56w>s)YewR^6?QPOM(6!oVlv5EXlejz`S-zZ9=C7$oaC7zj+IHqtylztxbCRo?x3D5HaMX8{BC`#YPn|YC!D9WHHlcFppI{xDPvGsM# zZi%e~I<`0;Mv-|(KJGFK7Q05)09&=nH>IkgZmvs-D!3q69qpDv=#HNHEUUP1VyL+_ zI?~2?G&)cV1+bUR<4sF7F!w18E~oUh-oB-2>A6YSS=qTc zIcb?`nOV76AQow9X-TWH(O@pb7oC}#4vLT`n`?bTvSySHP84ldeUN+bgH3f4BKswW|d{KcgCa3wMWUV zAGI~-co?o30b^LQ_U$>oLRY2ZI?19 zSMjU)HT+tNW>PeZqS+LcHi3(20DloUHFB9oKMNcUpjJ+v90*sjmd55JX}@FBA-Ap#w5{7XA@N&!ppRojzRbq{z@3; z`70LxQPX}#WqbJh+GM^TGVi0Pie)}q&1&hZ zgrUpTnA{KXkFbV4Oi^_M|0qTCwU)K-kK>x8n*BcsLs!H$;4S{$Ho4z}+#gUBX1OD5SY+`*hUZ52j8zQP8uBXtDgPP&Iczuh z0=fCG_^-i^3x`6mu4*`S#z4=27M`QIh4gui=AT?tr@x7-4Oh*F0Gl?iC<3r3s;6kh z>-@L;cTmUo{15z(P|p|qFF2n6l^Z=3Hp^+N!INtPY&myExxU1%JJREgIdn(fju{Yp z0lBng9#+?KiYP@3T5IRu`9BQpd>%y$TWe<+yl>$D;r|sl0SVxe1NmJ{(GtqE;JM9; z`TypWS@7yQc3Hm=iBE-^nVOGJfq(iNsj~UA*E@oGy>A<7ngtw<6wXXIl03Uvr@D33JZo6<>zG=%vj1m=^vkylCtdO`0hOt+Ka-2#naaHH}>e+5^dM} zG-sc_{lHisQ=;Re(-;$Qd}{2w)@5nSae5SQM;z19b09Y<8AxkgZDUeTc$}IR6B^i< z+EZH#t;{GZ%M6yMr^14%V@wGImINzwZ4?Z@uQ;-@b8-g^JY&${Aw%=>p(}?CA5nZ} z@u<;b#*Q05p=6d(kw!6e-^8lAYEY(5U?rV`3E<^|P|`32n1g`kGeZ`V6-S_+$>8!S zE-nPriX+U~4fgJsl3`Wh2&@i7YC|l96C6fbNSW^BRhmoH;f%oRlDfs!!O?-pJn(55 zbvCPn;zGUJ;o(}X9-yGOVo@_XW9r!qN<}JBO`@b?32Y=@H7gE?GIuH*>}?(xf?dr{ zh*3{~oy=(vTRjRwiECk(@)l4+uW(;OfZ$(9fY3QR1kJf1V2b7Rv8O521HqxfjG43$W8S6PC}4Vex7_?BfmKT3C1420L``1BdyW;9~w9 z{{VY$9i#{7%R<;yI~DfRR*`vRKB*xgat?Tl>c|4J2)se(lJkhFjdie)tp9~z=a~P< zDvDO=YAr*^gkCeEM?uwW6EcJ>Za4G>^TbE31|dhthuCr) zdW@PLr=};V=_zJLc=BPzWnL|tMn$wRd2qMEiqA>WMHzj()%@ZSa72Q8Ffvn*rY|X< z8)Uv0kA4d)$Y8fY0Gc*Tf}zYNRBVO28e%gmT2@~4Z291btk5!6)h&i~D6sl~^9`M( zb1fKuC+Sx#FrsD-)CM6;Y+;Cbc_6tl32#mwr-wf4G#iC6k_|wo2xoD9(Pb1}PSIwHwor7%O+r8@6Uv1OAt+P|bA-7RT}kl(iZ@bx zHO045@&GlJQ4?i2#!d`kNzj5L4a3Nwt7ZN7zs)5|K!g{Ug|zj!(~jx}X6Fd#1e7WR zj+#<;7>^0nur;8P#o!B{-{L(!vQ7VCvh%+>sGBj+s7wcU2s_`Pq`sChM4QPJTUjyE zz})+2ErT5t!8-8T1*$`HjLwe;%OU7Ps1xdi1;RpMk+4`;A}kfo6_yELvt32eH56S( z(N>BYDT0X<%m8kpXa_~NP;~1pf+|p9g>b&GQdlLd7S;%Bg>?c*ANVC7py)A*-lXVj zivFS4M6sP>KgInhge0W5ng9yx^$FnBM~!z1ROVKcr&Ol2&Ul%g@!F$iEUU=PsmRKR z$#|un@%p1?tjGzb1v4OYu4S$&T&HJjIBLc~c5X!)Y(Hw9ahslT+fg%?2U2oUg0UHI z(lg$0)Qn|i*(sGdv2DCn&v@feGX}D9p+X4UYt_a(^o%zjJ!5t-y)vVsbw>0M%c!nu zUDjT`ter4y2O{@cXFQ;1+;#MfnK`+^Y~Trf)mL~#cmjNW!lS}t!s8Ud6m&O5 zcWe`$6rK{Ersz(J?xJXqnm&bX{ep$aiA%t5HZ>g5=P(IF2mUZQKIw(M2}9odWK(g^ zO~tx>|1vBC2(JjQ3a<&TQ*<{)_fxc&qJ7b20^u$8{-E$S{Ck(8dnmeB`~N<5MZ%CD z^r0@n81WMJzgDLVg*(0Ik6G5Y^~_qPXl|qEuk`m?3Zq<>#CXrvOtp$3h4CJ0zo*%S zEc_w-4GT#+9t?~|;gE2cq6aD3ucpT~)P$fk6E+bOZxSdvK+(e#Jwnl=(b`NRt4(XD z$=a%+4?#m?nq^XSvb3b_G|S{S$c7XK*{zyoI>mV3QL{|FOb{8h&D2|O81%K)(Ogf{ z>8Ac{V1I(5Ct>?bRiwBky)a?OuIYy-47#be2D&K~N;jpM(oGpAZ~;F>(eo66Hy(lq z^!GXJeXePMX`l(5ufR9YQ1mQC&$0e|V?=p8^j^Y)%P0J+vWxxSKEG=#yEqWIU^x8M zJJwXd$|y7ynTDCb3;zN|FH-apMK3d`K7YQ4mSg|N`ObLAk+A>eD-zFQ7emX-@m9Fd z=@`Sx7;7458qZJyf5dAP0RuwkC+z?5hx~Y!W5}16RKs5=<5|;52jD`_Iu)`Wl`l-C zrgA1JASb5YI(ig6zRgr&3UWOudW)ii%!`#Un8STFW$M$tS|wQ0TyoG3ul z2NZou(N_j?=dkx-Q^Ztf0>{HU6oEXvN74HXx$plua26x0J}I~ z`F<$;jgo#YD`T1IJkxTMO3{ZDeMHg66n(;4y?oDLmJmG6w|@44cJWTx-SO<=z=XFp zvJ0KgHLQ%argf$ZOkf3mM$zXKeL>Netc(qOJiso7e6#bZcy=)~b%$#! zTbv~7%{Cesb3?OuKzfklmMZd8!9$4d!XE}y^f9b{W7n=V-a)Wj;G<)Ei zDqQJh9AITUWO~^2i0M&^{-EejivFVLZ-(4w^?ohKkVhXLqF;QLcKJ}aN;r`J_!@Sh zm+=gg(LQnsL%!~D#wVh3!1&6eEfW z#XQA=0imW#b?pS*&D06|A7e&(Yo%-YTBol=?evpDe+Sy>Pvd<@+R4nBNo=#syjh^w zOtE;ROqnGp%`BTOW~7b>PjrSe4be1{L zj&?Mcnae@6aU8{6+G=STFs#Jnwyoyn)Sgmtr(uEK0v#}W<||NEk!%_l)2fA?66rs zntzAg=;oiyKbwCs|7!k?;(-){ln$XdkK%$G%zv2wH2-D(+kA-PB8sO|Tu$*KiqDUk z$cacZ+VL5sN^NIEdgvRMlbJ(~IqU-AB<8@=XaB9{4x&jXV{oZb--%?D)R&jT9-!pt z-wtT8=(G$iRhD)lE$xQjbwH7#QQ9PXD5fm3U@fV3*#dxthEbPK9#b;8i?S(#CuuFTPED6Q= zExxJ_gJ3!cc!_FNv5(jfmORD26pw6RVJunz%Q53o#AFd-D7K3!Vyc)Xri&ROD5KF7 zkD+)h#p5U*Pw|B9Vz!tg=86NvfgFq~B@|DjcoM}^DV}x$1(|$u;q0GEcMmC5`YnaU zk))i|%&gS(?2PR6w3O`3jQ;Vk#FLwp2`fC=sp;@MBP}aS4>J*mLp+^0LWC}yOz{+m zH7QB0PE4s!%qh#6K4tpC#MD6Iw7NnA=`rHiBf?IMHznfKqw>lOai+m5GboTc9Rf+o z&dAKo0$E8-%TCHp%gV`4OUua0%1zBljf%=046-{Zh9&Lk3m4@kPAf~S$Q@}QbdPv% z2Mn=Kd7|du&@d{mlzIbH=PC8{FoVc_! zBO@sTkjY9*2V~MyGg$OdRyGJ#Zcb)qc6MfVR%Tihtq+-E`AGbj;^h>>Zt&>^H8qKo z$`i-cPMuy}SerN^oLD}xS+RT}e%S$f-->XiM+f5cGl!XX_3UD1?2`X|41BDI{#9<#=s1uusP8Ddqm-x{C6|^evpd5yVheOhTI58uccc_4116eMs+1^oIk2)0u;l_(6psA2z}ll4W{@?^-}#op0-^zc1=Ge zg-JtBW^({-`Hj@E&_w$y1EVQguiAF8O=_N0`sgKd&VS4GN) zlvl%wX5vCPeGA<4i4|30SoZ=8f6)J{Z7aR!uuZuvBz_R9q&KUhJ}@UZNM9;zS=t*F zeUYS5)H}lHN~~n(=rD>BYhlw&WDx8%Desk*(mq9_s>;F;j+G3-vB7FMASbMEC4&1f z>?^5YtJp_uqDic%u2`@n5?FBdyl{P>cFw{jWs&N+3v1`kubZ^ViqntNa zJ6PxhX1n7l1KKh>oan@kmWm|RKwt)(0&|2cC6%$=?CncQ`$=^X55Xq`U}pl9J9mDd z_Bac7=QJ#K<6a`{RYq1nf*G^3Dwnnvi|4)b7DJ314T_9-MWe-FUrX( z&B{2={Bk^679Ff374rriVVI?+C8b8+>MCfE4nm@~5ihYS6k#b6n+>_%b#TsZ`CRaB zM+UX**Q=;YYJQ%iS*+0*L}LyyPMQSMMrph>K`N2JXLmit;Ie3-xUor^EKQN7O4BIb zM)6G)-%RliHk&wMP63e4g2}5CptvczC?ZwBT89*rD&Yq_M>kNsUHg3_?A-TVrih9= zVWiBR*GobZ>2D7zs0vS!UPHe5Wru%v(5fn7st;qoIlbM=@PE@ZHil3 zDxE7Wlg^WtOR7Yr71H_AO7f+&T3REmmDWiYNEb>MNiYfBMe*$v-$C(R6yHtpy%gV1 z@ji+lr1${rw50f9iXWx;af+X$_-TrtrTBS@Ut~3`mo`WnrA^YM(q+=+(q?IkbcJ-K zbd_|qbd7Yabe(j)v{iyWdzs=dDgK=j2PG#_(ub0CN=8#Mm6CEw&Y>hsVP7?DQzjQt zawR3(DY=7^yJBZs+x6MjZKcYh&X~rwvrCN4Y?GUJ8MEDTE%9X1Ejl@{4?#Un0PB}YN04>9PS%~JN~H72Dhbw9B(q=IHtZuP*`rgkr&Ouy3`(NQX6>&L9YMKJUf!Q=XL7#mn!ER2kLaR z+C%9TosNe(X<_&X7HXlRJ$8nuD>zU9KT@ikdmJ!fJ;nrVLRDm5^Tmoh%e{5q~#J$5w0exsB0 z%yAjY7%*@`(4xBbI_yWClIM=!Sa0Z@qbi`^bh2JJeiqSD1r3g5VzU3z@zFzu?6)$5 z^soo%9~lA_o1}kbPDU~uulEYYuTuOP#jiKXye!CAhM2`SD1Hl`Q2gGp7I6RXpYb8v zVSXSxD1H-`f7+Z4A-iQCL}SSw*-P<3ir;RO{c;?|?@;_MqxFA0*&{lekh{t74H)+A z0OLV-xkv1SUUGj}9g};@r^$WfzH&bq!rI=a_ydYRr1&F>VJYyF?ZQDhNluniLjxJn+QO~k&|mMwo^y>curF)E!PPlmNIxkR4GRxe>*_bsep zZj-0TQz7yNe@8LINdKQ4;9`_NTP}_5)iN1k;#>E7r9A)Gi=c9i9FlA0bL22v1pSfX zpD6yB;$JELO+%_C zY3Z4{(Oy`@dSNlezqHHv%jEMq=#Uli8t4%De0in3N?uLz9~A#dF)R=N%{pYAyjq5k zc$gU(bNGa-;DdGCNOGK0t}JUFLgKeyjuLdrE%3BW)nRAioIO;AKh_N?c4E5N|Ys zL4J)@_c|rccB?xm!)I06>Vfy=4;Z(&DS^0n&;tf@eIkDv+n-;^(SQph#W(WL#};eQ z-oMJf$-m2g=-Qk3DDhJgM@bjf!P7u-YHBkouIwzTXcMBef%4!ahs z#Rf-dgZJlTO1iOOmvoQ9WN|?q7HDr*fN4(6WLO?g95;5dQJvp%GJ^@mLJI^40B*Z{y>1~0qiB>XV>1SbI0y)M2Xi2lATQV$}mMkVC zJt#?_q$ef4DLGBoj9=}2#N^)jxyGKENf|j=DY=;`z?~Uz34>BvN=8x&#EPV4rKe;; zct}b#;Kss6D9a#9dbP(dmOKk=4`;+C7zaif5Dl}8>_|6SMp;J7t1V+G=}QTW=Aavs z4BRKM>Pjf-*KT!FEHm0sW|oZ3M8;$3AK{=S zY>8OvEcH?LOr|7-l2l64boR_<@m*OtI(u4R-+<8s1B~-5u3d=RnBbF;IS6Qy6WFRGHP%>znu@gIg_kLHAmAS#Go3ZrN?Q!*VAjd6eW+I8l@oQc^_8u zXJ%yQL=SwkJjS~3aZ1i?SD>D@K$Ks*jQN7))sBW2%WIa`#Z{I!DH%fvL^Q+j0tX*z z5loi1S#|GFGPd37KCr;Yx!MdbmQO98F>V=8$%GjB{mSxnY=3@d`9Ai+PnJKSgO3qF z3iA86<&fpD<)5hhPNZZKg+pG+6xP8rjN!$w%B`fO5m7$3nyq5{Kv}I;XGaojby?k( zHC8Vr(IE zdv2@o!rI@Oer%?_<=S=MZ84rBV+l$26(7KKx6Ni@E>6~DnZYm#yxiZv%AI}NTg z(&4*qu!B4)Gd&AFG?N1#00lcc8sBUk+_qi$)`AYO8*UxNn5>Jn7&ZfRWm^FV#5Kci z0JastI!5ej9mfo45@fpp$l3qHjK(_A3X$X6tdp#hA%dS&QUZa|Bez+nS*J5rn@dU6 z|CwSkI_oTJAQtutYcTe~Tx*E&=Fv9-SZl54Si{zcwT|_}JW8r5nNLZGl3IP-{_WzI zdP_^sWpbaBl?0NV3*oU@nJij1HH-BF$URJK;9EYq5Gk9R7M;^r*(hXPN=Z$7f@ocC zRXgaCmDY98CG8$X3Sq_3qevmFIE6(PqwHo|(7M5Tc}EJvy4ku#F0sNAT7;5%Hoqi` z3^}-l(RnQ;bwKB$g(DNoCnQdsY8-fPZLr?Zj>52Rx8BHlaRDU@TPqCfE!Lf}eQ=xg z_Sgq^TJQfa3d6e3`hfL8>;9<1SWL+hO3tNZ8S9jpOCgpPpa-#t&f~3*vQ|7s$+TB7F*D`TteB&sZR=tKpH%xIU^~?oPkyw4 zeSI+{>zN3UP0>!V^3f=)T|h+JE;EroT;21+)z z?i5>wEi}E3yr<4Y!S8opLE9V8~rg$rehk&^zVVnS7sn zuGgjoFhk8q$;wPgPszy5g_C1bVA7SIla!m8mY$xG1Eb70X8hZ&P+uFr;lkL(Du-#$>c zO*T-eZKk@mTWz}-wmT?+UBa!fy~B2AER=WK?umVHzwIHw_88My+rzd;Y>(O=vpvqR zy_J$(6pmjfw^OoP$F|jUHa9gXGdl&g)TCu+!bw1>S&VPfQj$`^?Ux0(=A?to5;ccy z&$cwy5cd~tFLeOuYqo=oS=)2C+TJ#XG?-Gv4rw;nqhbtcMjfBpK*zRU5`U5H8*!Bl z&Y=KZv`4e1?`?8`<=mmH)UtZw}Ss~+o4#r|Fy%GlvdWEo!Di@ z+DG4VB^w|BSquqW7i+I!i1+fTFivG=w2v!8D7Z%?!**^})l_EdYC zJzeT;&$MURv+X(dT>Aj~K>Hc^W&2?J5c^Pjo;}}QU@x>6*@xMO+eg@o?PuCY+DF+( z+sD|)+Q-?)+b2-+ASDMVd6<$%DS4d2aq{G8N}i?Uc}iZS1UzN0QUXE&bDD#c!2IPs zNPLMc^Bn9l=o3Sj`Al_zANQVp?o~$doU;_+9%m3+o#y4+Nas4+h^Ek z+Gp8k+e__d*#q`6d%3;B9<*25=h)}ktL$gn=h>_6^X)bEkiFJ^jy-IT*z4@|_67EZ z_C@x^_9gbE_H*sa?C05++f_TYudttQUuj=uUu|DwUrYI(6b=CA2UEV7@{=iFM)~;^ zj&$Z%Q2r7MM;G(kD1R&E@1=0sFaJE{4^sX!%Kt?9!&DHd;HE-66;7u@7KLK~g)vl^ zN`-PN%%{R)Dy*c!#Z$+=;yR;i5e{uQN)H?) z5aZA(foRdLJK}f=c5rNa(CD#)1R@(Q?F?wzQvo1!Mh`-#{pU{9LkkH6J*?;qN{{G7 zrWx7~4QbP#dSD@W<@gZB&c!f7o|-S(XEZ&?ki6DejMi2{*=GUZ^M-YiwhBv+FeGo3 zD(4-i?rR&b)~4(9z(VrY@lgy%1k$vjMh`C}Z+BLI>7QFWLNTz9H&nONUwV8YdAC%l z>Wu!sqHhb9!yBy?<7N@eJy#k5m%2TBp-GX1Gi65?6-s3N|hc=NIpI;A(zpS zEhdh*4HN6JgyhpwWnE|RO*;ch^S3V}$&-rV+s&bH%agW<=@Etm+(W_6pwHlIkoC58 z>tTfC%g#ODipi8FSRIY|diWrLg}37neBNfPY6FXd({0&rJAeOzW^5cq$Q^=C%J-e5 zb=om9Vgo&o6eowQ69nO3oijx{$|pEG7#SQ6our?S6Bkc_4-~g!xjH;L8NZe)7j=dp zx1(s7L2(qzwJl?J(MkNhlfs6hLq@Z_A7ij^oT8KSXQ^_$KBU;L1>Np=??}*z`@553 z(2vAwTsRofK6Tf&*ZSy`9PXrnz8xLVHbB3P9?*}LA^&!g&TilOI0{H<8b~}kE|zoi z?l=8=ac#RSTc?I}5;`4qS=4LPmYy?odW2Ht;^U;7j^!I^OJkl+qxm?f@s?v0+mbO% zCqwFF9cj$Hj-?|<>g2!**YZy3xucA?N0GL1I#ssgW0o-cv03EW*VdDCf*hS}vKf}_ z(M-1KIw{WMr>>hvHRGZ!SC{HUxsQ)e$YAcadzRabBNaMf-s7?(u8r;AJ~LJ6H2IIK z-=ib5vPLJS%keXkjE}%-lM~~neWW5faVM85b2~#j9ZNYb(yQ;*Npt7C+S)?+lIa{c zqN%M!Ez|2h^|-8?9Yg!A&}r#@9EMJ2+;=n)TceYa(7AHcGI+H7d37dX~K zD1hTa$3>2d9kAfqi}JlGe;VccG&wdnHgW?Tmr}kj+k zC&Sqxj$2vW1E137><}lJXXLuW0U;z!jyoN9Ircd2rhFRZ(+!H#t7gc91-}3@08BR8`Xp54m zESgK<6ai3Dkb)JWK*+|Klpjg?QIsFuq?i;l9DpNHehlTuQ+@*FA;kRz5=8~RRnnk1 zDG!16nkXs|g40CSa|0AVH-I81(;nkg_~3`qCt+w$ov9RJH2oB%y9SsN&j6bUfGG(Y zV3XPcMxHWq^-&TTV11Q-%IQjf%1@#ERLW1I{PZRziLsRefh9AdY*l(<;g!Si0$H1B z-~}6-nv_AxVD>}#S(Klx{|3YyN}AE+B4vaQ)NlsWSq!K%HJ}1*fkM-bTw@i8e{535 zDdUw1N(tr5DPKYPAmuBYlt~&;fZLoXP+C~~33E!6Qp$h=l|0t~svLmAKPy4@qkcj8 zD*e|ArQT@nJf%hlX+8sK9s{XX1F5<#NRIoBT=mKl2GRm$p|VI>O!*qhhbVlFoxZM_yxRFU^I85a+wa&r3|D6 z45ZB(NDJG7WZGfmx>|uPv`xx2%C*XM%Jq~7oR(02Ddo>?QW`XnnkWy$o@Om9Ke0f% zg@Lq_^5+>Ku}{V*gB(w=A5GX`_yfTMRc@r0ek0{KH7Va}K>a{@Fh4bJy8Off>URdzAC$k$0P1f53Ty)HpJoz(Rlxpl z<|Ze03K~dGo`JL(KysQjkhZi1345a;Ijv5%q04D=+MNz3#BE+l`Ku@oR_`@UPM6c| zc*5zW{I!$^X$1a-y{{*bS>WsnC^@@P{<B*-GMM??}LiEM~qj$J}1YF9$+ zTdTEJDWz0VrM9+|s#>b8F6iFxH!8G)Yyq)^U6ldxX{j$$E2Sv`rOTQ(9RZE9ZE)JrF5hc;#xR@O zTlTN)nHo3-oTn|c$5f!iv`2|)oGqrk&-anjZpW=AYI(gyg?5s5vev4VWzBwBb3oR- zEo%-|Xs6m@;=cBs%9swnTrnxH*3j~I{2@n7du?2PY`Jlvpj$1v{ z^5T*T?GM@?wLfWpmNlQrn$Km;HCc1LLi^Yj)UUFJwc0xB)=L$XP9P|qO4i({3`(aV zD4nR26td=~tohRZm7wal)~+0~uBOh_7L?9K3F<3?(&=nL-F`kOb*kf5W?fx^(phx1 zb#A&kvgVGg;SZsEvgUq;uAWw3ZG_HU*6?_0wel9an(tq(q`Z`*yk*S;M^ZjYQq6U~ z3R&~5tohFVm86WWeH~+Nt!raXDo9D{p^{WPTT(wfpOkdhajVWcUX@s(>!Rzb3)Xd$ zH9yH38taj)d0e3jRa#0HA#0vgw$yJgS5V4p8g((U<`+j$yctP_E>^WoA!~kB4lnYB zn0VE0HNjb^uIsNGWDjYe64LKVNJDHP{qcNA>I%oLhU+qvkWzIcbZI*7VgHgff6JmE zi>eCUNLxs}m_}_6NfckMkn)v~3S`mA5fX2n#hzSOq)_(ZqQ?G}n4%p6w(6$ZW12!t zqNKz$U5QDo@`9K)IBr#g!G1Pm+np7Te4`7MWZaTbaRDnk8Ur`yI&S9vRIey73;lRA-$`F#OuRq zJ3``R^cA|}y7v{b=q8JG>|cqgo~xTjSNq>Aj?)Rcv$~J%iJemttFI)+hs%>#gXa^| zL^%?>qPwOfc2)PO?laxzve-}-8_A-FEHn$fCb2wp3cV)k_tVUU?@=y^Ab5KGj&y+j()9$JPh# z?3BZEeBr}?yLvtIcd*_~U(c46zOIs0YqHWeuw@nad{(M;m09T<>v<2B3Vjp3r`}8N zEsJerv8^n&lg0KG`esT?>4~mGWlME_xw2}lWECij9V=T(&yn&9eLLN1g)DYrKV|<) zOSw7*+*Kc9kExpyQx_$sFk4JrpO48Y+i|NN`WPjqp88(;C_OJ6?Iw#MvKT6hVHNt` z`aUk->tkgxTo!vOe=v!*Pkw!Aj*IL2D>)62#Rx}EgO!|ysJ7{o^}}SbyRv_clttcW z$yMj-=_-13^?bIqGW41D%tk4hMUmNm{nOYHSgwAo5?G!-Utgdvl*JfX>@ACZWU+6B zew?kZCdguJWnaa=Tzxe~$!n@C#yRquVcS)?cGB*3?WF9altaJD*MI&l*3Z??wi2wCsXI7ATB29p_CUW>zf8Ye&s}bkEcTa0W@=!CewFyCsz|>^76@PZoJNseGlY208}(rhbn-rrk1#SyZYR-u2-)=S*w@?cc?V^4g!&PnO{ zboX-oSy|*`Wo-w^^&b|bf7SXakiBl^D$YFknUm6Ft0k}_y)NsW8Hoh&;m zlQL8@)FLT^v!S}7hM}e`7Re&}qGDN`SYdEc+R31kMNZ(^+DU$?f-=-5CYiMA5{A9I%C8%bO0XH#t+hg)lVw$4F)XWys)aPT8QXIExVQ8(yB*n=)~WW&L79$*?W6w1*QagqHi9pvX2aJC`W zp3oR2A?0+GA>Y=m7T3vQg)FX@#SImP3R^2}l*Nse zt+e^&%4mm@(N0<9?U!u#Z3d2&D~HCfD{PODINZzQq>KM%wBK;hp3&P%Mq89dI%I34 zt+{Cb7q1H&oyeWzvd4O!$cJ%2~O^>U?j zK}m@>k=f-)>9Ug2X!UIcXQJ4DDqobp=-i)q*lqa2@TEPhn@U)_m9W0Dg|+ATutdkF zoEh#Jcn`b^!+payh6e^V=Y6usag+nH_;!Wids|2SD2oRxJL=HOm6h@#<%Zv6@f}B2 zykYhW&H-2Ug;8UyVhhM9DFGcOAY(OKK<_>mkn1MLjcOV7~`4}7hkNGq;Hn->FqvZ1e`TW;Ml8$s* z8kO_n##YAG#z13`EPg19Y+Gk!@oa_Bc3#}rK^8eJWqWY+@ynHta$elXpXKKq=_u#L zT~6{WTkt4bISS5~fA&VkD5L$%xKTMXE}mEV$9861yzqSgTy!MV�UjHzpdBjQx%L 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 diff --git a/Santander-Test/Santander-Test/Assets.xcassets/download_arrow.imageset/Contents.json b/Santander-Test/Santander-Test/Assets.xcassets/download_arrow.imageset/Contents.json new file mode 100644 index 00000000..df7b739b --- /dev/null +++ b/Santander-Test/Santander-Test/Assets.xcassets/download_arrow.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "download_arrow.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Santander-Test/Santander-Test/Assets.xcassets/download_arrow.imageset/download_arrow.png b/Santander-Test/Santander-Test/Assets.xcassets/download_arrow.imageset/download_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..6d74ebdb9de4dd96356f841ad5a0a95556fd6ccd GIT binary patch literal 629 zcmV-*0*d{KP)Px%FG)l}R5%gURnJQsK@`rs4M{^ok%0D+gJ5fK{SUlJOM58P9|v;~Qc6L3s71W! zMZ}ZzAccYyiyn%-7d)81!&5d!g1356D2+AQ9ltm0i{tLbYz`ir!_Ir(``-6v-pnMa zRJWlxP*qARqBn-*77CBpApYpHvq_%KaFse0yE9iEr!0<1VKD)aQK@G#&&4;hn@+#H z0kBgg`V|E&DWe@`kX_8k@J_@K_NWdp<6}u}3B=AUX>UqMu?vu3cn&&2v>guEevN4P z&){I*kVk#LY)YfNURmi>;}$Zml{y$YIr(b~7#jpn5)U2cb%bC8wS0aEt=_S*uC`0G z#L97m&idklVeAgc^=$T;>p1ViCB;7)9)5rgud`2HyFI3T{|A7tLXeq>twy7n(t4h; z^i$8HDf%|R7{&#N*}x2a zvG(_JdN|4RP&n%1h-W}-Mk5Ik?B%mm#62%1NlSWwIZG^lzZQYbq{5-J-tIjW#{Joq z!@)s)>Alfw2H#-ZjD5+kInD=;npWWFrKFTvWk74aU`RxpusfHRWA?ZbtnjnIWqyHJ zi-;zkc;0vBMH2B`7V%unV>1M$ej>4oil#6Y@DT;yA~w!(j0^nlOyjBj4&2}y5tblY zG6%755RK&k{Ern*j(FalWP)y@v00001b5ch_0Itp) z=>Px%&PhZ;R5%f}R8L40Q5=46W*yfuEz6{+>>re*6iHB*3d9OJ)JY?Ppo?(e?O4V_5F>(QTl$+ku;j#v824<;7z`5f zY+!x`gx7+Qmyil(nkNerRI(|hkE4my4M{E*v5Go3oB0LqLtiLJj@5IMbMFDb5fnHV z6f$NUcC&nnQZg4!^lcNlRiPxZh;iQa_zOztN3POa#Pvoo{uE874oObg7>h)XIHoaL zmb8&1Mb-D5@S`m!T0EW32a`z{IoaxH9#{X^5*K-s|Q5Ok!N4YV-hOsn3!l;y*$G!Ub-8yBMQD1Ki=d z#s}+~PNnqPQgq)DEw$gvl0mf82(1X;g@ad0upV3(FV2$ztZQ-0)*YSQ-Q5czQNYdd zYY5GplV+05+`-8_+0%INdRJFhZaoH)ix=MM<}$+z^Q6VcI9W>1&Ys11C~r^EP`A+= z_mS{%{5?~&s;ellD2tVgam#94BFoPSC-NSp(K46OGB2er&rpJBpH7S);pF`tz-1g$ zwD2Vu&q+=&;{G*dxiI3p1dgMbQMlU9lF5l6&(9SC!MS6a7ddeUfK~Z8C6nPzYMW&x ze~7tl8>fg%o}$D2PYIl+H5zKOV(U!zwpK56&Fm`Qg(_-@|5`Mlq}zfbbspFE>tY;3d4 zU!nNjr7y9f;UTq+`DyHXH-Eo+ehSZGmM=+qU)ij@r&r&;;hvDfbZ+Ne<=1oi1RWR} zJGm;R+r`gynD@MW@Av89+dmpJ&DIOJR&?%6e%14mjspsedpB-yJf3ksVnN`)r+G47 zEKL6uFU+u=u5$A74C61>H^S~X`REvOC^R@cW!ZC+J5>4pZ`EbV<%jK~Y|Fk``$;o# zC!ZPvN5s# znleMbZ>H@V+hcYh8@(F?c4oT1S#4D58y3T1ZdJ?oz~$yKF`$t%xEOVfE0?Ki>@U4s zz4C4U${iYdOhEA$>Jw7S!jek@yL*1m^_ONk%w-^Ly++}=a>D@$7ODJgXU@*eH=F(5 z?PJQ?u-7NnFP-my<@?3JFaGl(9s&7A=)#k~O>MREqQXDU?Yehcck5Zc?!|W7s-M3T z{hWGq&dj^vxBC)*KdoUAa9{x12n>CW#%aaNO_%@wnQxdjf6IiIDMvE1olHW@0-ry3 zU6}Fm_O_cFO&Q;SLkdjv_&X?PM{n(W>1TOM%?S?cR< zD~)Mo2n#qlx6HL(x9IKR{fpjqckM7%6cw$y{iRi8dwAFWFB@;o684(B+!f*&po=<0 z11??*P%L+LjVoU|V{?Dxw7Fexn=KH=b#cB3UiVvjn$Sy-bCLyrFw2`{YgdQPd;m=F N44$rjF6*2UngDI2RL}qb literal 0 HcmV?d00001 diff --git a/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.swift b/Santander-Test/Santander-Test/GenericScenes/Form/Checkbox/CheckboxCell.swift similarity index 100% rename from Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.swift rename to Santander-Test/Santander-Test/GenericScenes/Form/Checkbox/CheckboxCell.swift diff --git a/Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.xib b/Santander-Test/Santander-Test/GenericScenes/Form/Checkbox/CheckboxCell.xib similarity index 100% rename from Santander-Test/Santander-Test/GenericScenes/Checkbox/CheckboxCell.xib rename to Santander-Test/Santander-Test/GenericScenes/Form/Checkbox/CheckboxCell.xib diff --git a/Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.swift b/Santander-Test/Santander-Test/GenericScenes/Form/Field/FieldCell.swift similarity index 100% rename from Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.swift rename to Santander-Test/Santander-Test/GenericScenes/Form/Field/FieldCell.swift diff --git a/Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.xib b/Santander-Test/Santander-Test/GenericScenes/Form/Field/FieldCell.xib similarity index 100% rename from Santander-Test/Santander-Test/GenericScenes/Field/FieldCell.xib rename to Santander-Test/Santander-Test/GenericScenes/Form/Field/FieldCell.xib diff --git a/Santander-Test/Santander-Test/GenericScenes/Send/SendButton.swift b/Santander-Test/Santander-Test/GenericScenes/Form/Send/SendButton.swift similarity index 100% rename from Santander-Test/Santander-Test/GenericScenes/Send/SendButton.swift rename to Santander-Test/Santander-Test/GenericScenes/Form/Send/SendButton.swift diff --git a/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.swift b/Santander-Test/Santander-Test/GenericScenes/Form/Send/SendCell.swift similarity index 100% rename from Santander-Test/Santander-Test/GenericScenes/Send/SendCell.swift rename to Santander-Test/Santander-Test/GenericScenes/Form/Send/SendCell.swift diff --git a/Santander-Test/Santander-Test/GenericScenes/Send/SendCell.xib b/Santander-Test/Santander-Test/GenericScenes/Form/Send/SendCell.xib similarity index 100% rename from Santander-Test/Santander-Test/GenericScenes/Send/SendCell.xib rename to Santander-Test/Santander-Test/GenericScenes/Form/Send/SendCell.xib diff --git a/Santander-Test/Santander-Test/GenericScenes/Text/TextCell.swift b/Santander-Test/Santander-Test/GenericScenes/Form/Text/TextCell.swift similarity index 100% rename from Santander-Test/Santander-Test/GenericScenes/Text/TextCell.swift rename to Santander-Test/Santander-Test/GenericScenes/Form/Text/TextCell.swift diff --git a/Santander-Test/Santander-Test/GenericScenes/Text/TextCell.xib b/Santander-Test/Santander-Test/GenericScenes/Form/Text/TextCell.xib similarity index 100% rename from Santander-Test/Santander-Test/GenericScenes/Text/TextCell.xib rename to Santander-Test/Santander-Test/GenericScenes/Form/Text/TextCell.xib diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/DownInfo/FundDownInfoCell.swift b/Santander-Test/Santander-Test/GenericScenes/Fund/DownInfo/FundDownInfoCell.swift new file mode 100644 index 00000000..7924da7c --- /dev/null +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/DownInfo/FundDownInfoCell.swift @@ -0,0 +1,55 @@ +// +// FundDownInfoCell.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 17/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import UIKit + +protocol FundDownInfoCellDelegate: class { + func buttonPressed() +} + +class FundDownInfoCell: UITableViewCell { + + @IBOutlet weak var downInfoNameLabel: UILabel! + @IBOutlet weak var button: UIButton! + + static let reuseIdentifier = "FundDownInfoCell" + + weak var delegate: FundDownInfoCellDelegate? + + var viewModel: FundDownInfoCell.ViewModel? { + didSet { + didSetViewModel() + } + } + + override func awakeFromNib() { + super.awakeFromNib() + + configureLayout() + } + + private func configureLayout() { + downInfoNameLabel.textColor = UIColor.darkGrayColor + button.tintColor = UIColor.darkRedColor + } + + private func didSetViewModel() { + guard let viewModel = viewModel else { return } + downInfoNameLabel.text = viewModel.downInfoName + } + + @IBAction func downloadButton(_ sender: Any) { + delegate?.buttonPressed() + } +} + +extension FundDownInfoCell { + struct ViewModel { + let downInfoName: String + } +} diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/DownInfo/FundDownInfoCell.xib b/Santander-Test/Santander-Test/GenericScenes/Fund/DownInfo/FundDownInfoCell.xib new file mode 100644 index 00000000..1516e51f --- /dev/null +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/DownInfo/FundDownInfoCell.xib @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + DINPro-Regular + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/Header/FundHeader.swift b/Santander-Test/Santander-Test/GenericScenes/Fund/Header/FundHeader.swift new file mode 100644 index 00000000..e1b517e2 --- /dev/null +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/Header/FundHeader.swift @@ -0,0 +1,44 @@ +// +// FundHeader.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 16/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import UIKit + +class FundHeader: UITableViewCell { + + @IBOutlet weak var title: UILabel! + @IBOutlet weak var fundName: UILabel! + @IBOutlet weak var whatIs: UILabel! + @IBOutlet weak var definition: UILabel! + + static let reuseIdentifier = "FundHeader" + + var viewModel: FundHeader.ViewModel? { + didSet { + didSetViewModel() + } + } + + private func didSetViewModel() { + guard let viewModel = viewModel else { return } + + title.text = viewModel.title + fundName.text = viewModel.fundName + whatIs.text = viewModel.whatIs + definition.text = viewModel.definition + } + +} + +extension FundHeader { + struct ViewModel { + var title: String + var fundName: String + var whatIs: String + var definition: String + } +} diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/Header/FundHeader.xib b/Santander-Test/Santander-Test/GenericScenes/Fund/Header/FundHeader.xib new file mode 100644 index 00000000..1c7c30a0 --- /dev/null +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/Header/FundHeader.xib @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + DINPro-Medium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/Info/FundInfoCell.swift b/Santander-Test/Santander-Test/GenericScenes/Fund/Info/FundInfoCell.swift new file mode 100644 index 00000000..04cba848 --- /dev/null +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/Info/FundInfoCell.swift @@ -0,0 +1,46 @@ +// +// InfoCel.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 17/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import UIKit + +class FundInfoCell: UITableViewCell { + + @IBOutlet weak var infoName: UILabel! + @IBOutlet weak var infoData: UILabel! + + static let reuseIdentifier = "FundInfoCell" + + var viewModel: FundInfoCell.ViewModel? { + didSet { + didSetViewModel() + } + } + + override func awakeFromNib() { + super.awakeFromNib() + + configureLayout() + } + + private func configureLayout() { + infoName.textColor = UIColor.darkGrayColor + } + + private func didSetViewModel() { + guard let viewModel = viewModel else { return } + infoName.text = viewModel.infoName + infoData.text = viewModel.infoData + } +} + +extension FundInfoCell { + struct ViewModel { + let infoName: String + let infoData: String + } +} diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/Info/FundInfoCell.xib b/Santander-Test/Santander-Test/GenericScenes/Fund/Info/FundInfoCell.xib new file mode 100644 index 00000000..2dc79daf --- /dev/null +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/Info/FundInfoCell.xib @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.swift b/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.swift new file mode 100644 index 00000000..1dd533d3 --- /dev/null +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.swift @@ -0,0 +1,61 @@ +// +// MoreInfo.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 17/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import UIKit + +class FundMoreInfoCell: UITableViewCell { + + @IBOutlet weak var moreInfoTitleLabel: UILabel! + @IBOutlet weak var monthLabel: UILabel! + @IBOutlet weak var yearLabel: UILabel! + @IBOutlet weak var twelveMonthsLabel: UILabel! + + @IBOutlet weak var FundLabel: UILabel! + @IBOutlet weak var cdLabel: UILabel! + + @IBOutlet weak var monthFundLabel: UILabel! + @IBOutlet weak var yearFundLabel: UILabel! + @IBOutlet weak var twelveMonthsFundLabel: UILabel! + @IBOutlet weak var monthCdLabel: UILabel! + @IBOutlet weak var yearCdLabel: UILabel! + @IBOutlet weak var twelveMonthsCdLabel: UILabel! + + static let reuseIdentifier = "FundMoreInfoCell" + + var viewModel: FundMoreInfoCell.ViewModel? { + didSet { + didSetViewModel() + } + } + + override func awakeFromNib() { + super.awakeFromNib() + + configureLayout() + } + + private func configureLayout() { + moreInfoTitleLabel.textColor = UIColor.darkGrayColor + monthLabel.textColor = UIColor.darkGrayColor + yearLabel.textColor = UIColor.darkGrayColor + twelveMonthsLabel.textColor = UIColor.darkGrayColor + FundLabel.textColor = UIColor.darkGrayColor + cdLabel.textColor = UIColor.darkGrayColor + } + + private func didSetViewModel() { + guard let viewModel = viewModel else { return } + + } +} + +extension FundMoreInfoCell { + struct ViewModel { + + } +} diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.xib b/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.xib new file mode 100644 index 00000000..ba171ea4 --- /dev/null +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.xib @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + DINPro-Medium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.swift b/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.swift new file mode 100644 index 00000000..95b211ec --- /dev/null +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.swift @@ -0,0 +1,47 @@ +// +// FundRisk.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 16/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import UIKit + +class FundRisk: UITableViewCell { + + @IBOutlet weak var lightGreenView: UIView! + @IBOutlet weak var darkGreenView: UIView! + @IBOutlet weak var yellowView: UIView! + @IBOutlet weak var orangeView: UIView! + @IBOutlet weak var darkRedView: UIView! + + static let reuseIdentifier = "FundRisk" + + var viewModel: FundRisk.ViewModel? { + didSet { + didSetViewModel() + } + } + + private func didSetViewModel() { + guard + let viewModel = viewModel, + 1...5 ~= viewModel.risk + else { return } + +// switch viewModel.risk { +// case 1: +// +// default: +// darkRedView +// } + } + +} + +extension FundRisk { + struct ViewModel { + let risk: Int + } +} diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.xib b/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.xib new file mode 100644 index 00000000..55d1b176 --- /dev/null +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.xib @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + DINPro-Medium + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetail.storyboard b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetail.storyboard new file mode 100644 index 00000000..7983ef79 --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetail.storyboard @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailInteractor.swift b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailInteractor.swift new file mode 100644 index 00000000..fcef78f9 --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailInteractor.swift @@ -0,0 +1,41 @@ +// +// FundDetailInteractor.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 16/05/19. +// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol FundDetailBusinessLogic +{ +// func doSomething(request: FundDetail.Something.Request) +} + +protocol FundDetailDataStore +{ + //var name: String { get set } +} + +class FundDetailInteractor: FundDetailBusinessLogic, FundDetailDataStore +{ + var presenter: FundDetailPresentationLogic? + var worker: FundDetailWorker? + //var name: String = "" + + // MARK: Do something + +// func doSomething(request: FundDetail.Something.Request) +// { +// worker = FundDetailWorker() +// worker?.doSomeWork() +// +// let response = FundDetail.Something.Response() +// presenter?.presentSomething(response: response) +// } +} diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailModels.swift b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailModels.swift new file mode 100644 index 00000000..f0f864f8 --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailModels.swift @@ -0,0 +1,30 @@ +// +// FundDetailModels.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 16/05/19. +// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +enum FundDetail +{ + // MARK: Use cases + +// enum Something { +// struct Request +// { +// } +// struct Response +// { +// } +// struct ViewModel +// { +// } +// } +} diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailPresenter.swift b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailPresenter.swift new file mode 100644 index 00000000..dbb59f85 --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailPresenter.swift @@ -0,0 +1,31 @@ +// +// FundDetailPresenter.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 16/05/19. +// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol FundDetailPresentationLogic +{ +// func presentSomething(response: FundDetail.Something.Response) +} + +class FundDetailPresenter: FundDetailPresentationLogic +{ + weak var viewController: FundDetailDisplayLogic? + + // MARK: Do something + +// func presentSomething(response: FundDetail.Something.Response) +// { +// let viewModel = FundDetail.Something.ViewModel() +// viewController?.displaySomething(viewModel: viewModel) +// } +} diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailRouter.swift b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailRouter.swift new file mode 100644 index 00000000..6720f673 --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailRouter.swift @@ -0,0 +1,60 @@ +// +// FundDetailRouter.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 16/05/19. +// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +@objc protocol FundDetailRoutingLogic +{ + //func routeToSomewhere(segue: UIStoryboardSegue?) +} + +protocol FundDetailDataPassing +{ + var dataStore: FundDetailDataStore? { get } +} + +class FundDetailRouter: NSObject, FundDetailRoutingLogic, FundDetailDataPassing +{ + weak var viewController: FundDetailViewController? + var dataStore: FundDetailDataStore? + + // MARK: Routing + + //func routeToSomewhere(segue: UIStoryboardSegue?) + //{ + // if let segue = segue { + // let destinationVC = segue.destination as! SomewhereViewController + // var destinationDS = destinationVC.router!.dataStore! + // passDataToSomewhere(source: dataStore!, destination: &destinationDS) + // } else { + // let storyboard = UIStoryboard(name: "Main", bundle: nil) + // let destinationVC = storyboard.instantiateViewController(withIdentifier: "SomewhereViewController") as! SomewhereViewController + // var destinationDS = destinationVC.router!.dataStore! + // passDataToSomewhere(source: dataStore!, destination: &destinationDS) + // navigateToSomewhere(source: viewController!, destination: destinationVC) + // } + //} + + // MARK: Navigation + + //func navigateToSomewhere(source: FundDetailViewController, destination: SomewhereViewController) + //{ + // source.show(destination, sender: nil) + //} + + // MARK: Passing data + + //func passDataToSomewhere(source: FundDetailDataStore, destination: inout SomewhereDataStore) + //{ + // destination.name = source.name + //} +} diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift new file mode 100644 index 00000000..fe7f9f52 --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift @@ -0,0 +1,110 @@ +// +// FundDetailViewController.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 16/05/19. +// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +protocol FundDetailDisplayLogic: class { +// func displaySomething(viewModel: FundDetail.Something.ViewModel) +} + +class FundDetailViewController: UIViewController, FundDetailDisplayLogic { + + @IBOutlet weak var tableView: UITableView! + + var interactor: FundDetailBusinessLogic? + var router: (NSObjectProtocol & FundDetailRoutingLogic & FundDetailDataPassing)? + + override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { + super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) + setup() + } + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + setup() + } + + private func setup() { + let viewController = self + let interactor = FundDetailInteractor() + let presenter = FundDetailPresenter() + let router = FundDetailRouter() + viewController.interactor = interactor + viewController.router = router + interactor.presenter = presenter + presenter.viewController = viewController + router.viewController = viewController + router.dataStore = interactor + } + + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + if let scene = segue.identifier { + let selector = NSSelectorFromString("routeTo\(scene)WithSegue:") + if let router = router, router.responds(to: selector) { + router.perform(selector, with: segue) + } + } + } + + override func viewDidLoad() { + super.viewDidLoad() + setupTableView() + } + + private func setupTableView() { + registerTableViewCells() + } + + private func registerTableViewCells() { + let fundHeader = UINib(nibName: "FundHeader", bundle: nil) + tableView.register( + fundHeader, + forCellReuseIdentifier: FundHeader.reuseIdentifier + ) + + let fundRisk = UINib(nibName: "FundRisk", bundle: nil) + tableView.register( + fundRisk, + forCellReuseIdentifier: FundRisk.reuseIdentifier + ) + + let fundMoreInfoCell = UINib(nibName: "FundMoreInfoCell", bundle: nil) + tableView.register( + fundMoreInfoCell, + forCellReuseIdentifier: FundMoreInfoCell.reuseIdentifier + ) + } +} + +extension FundDetailViewController: UITableViewDataSource { + + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return 3 + } + + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + switch indexPath.row { + case 0: + let cell = tableView.dequeueReusableCell(withIdentifier: FundHeader.reuseIdentifier) as! FundHeader + return cell + case 1: + let cell = tableView.dequeueReusableCell(withIdentifier: FundRisk.reuseIdentifier) as! FundRisk + return cell + case 2: + let cell = tableView.dequeueReusableCell(withIdentifier: FundMoreInfoCell.reuseIdentifier) as! FundMoreInfoCell + return cell + default: + return UITableViewCell() + } + } + +} diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailWorker.swift b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailWorker.swift new file mode 100644 index 00000000..fbef3032 --- /dev/null +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailWorker.swift @@ -0,0 +1,20 @@ +// +// FundDetailWorker.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 16/05/19. +// Copyright (c) 2019 Matheus Ribeiro. All rights reserved. +// +// This file was generated by the Clean Swift Xcode Templates so +// you can apply clean architecture to your iOS and Mac projects, +// see http://clean-swift.com +// + +import UIKit + +class FundDetailWorker +{ + func doSomeWork() + { + } +} diff --git a/Santander-Test/Santander-Test/Scenes/MainTabBar/MainTabBar.storyboard b/Santander-Test/Santander-Test/Scenes/MainTabBar/MainTabBar.storyboard index 7040fdb9..3da17139 100644 --- a/Santander-Test/Santander-Test/Scenes/MainTabBar/MainTabBar.storyboard +++ b/Santander-Test/Santander-Test/Scenes/MainTabBar/MainTabBar.storyboard @@ -19,6 +19,7 @@ + @@ -33,7 +34,17 @@ - + + + + + + + + + + + From 3ed6172eeb79878bf5ea2516b919cb6b1346fbb7 Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Fri, 17 May 2019 06:51:02 -0400 Subject: [PATCH 15/39] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20b=C3=A1sica=20d?= =?UTF-8?q?a=20tela=20de=20fundos=20de=20investimento?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 94575 -> 97628 bytes .../share.imageset/Contents.json | 21 ++++++ .../Assets.xcassets/share.imageset/share.png | Bin 0 -> 1166 bytes .../GenericScenes/Form/Send/SendCell.swift | 9 +++ .../GenericScenes/Form/Send/SendCell.xib | 1 + .../Fund/Header/FundHeader.swift | 11 +++ .../GenericScenes/Fund/Header/FundHeader.xib | 13 +++- .../Fund/MoreInfo/FundMoreInfoCell.swift | 65 ++++++++++++++++-- .../Fund/MoreInfo/FundMoreInfoCell.xib | 30 +++++--- .../GenericScenes/Fund/Risk/FundRisk.swift | 11 +++ .../GenericScenes/Fund/Risk/FundRisk.xib | 1 + .../Scenes/FundDetail/FundDetail.storyboard | 2 +- .../FundDetail/FundDetailViewController.swift | 49 ++++++++++++- 13 files changed, 192 insertions(+), 21 deletions(-) create mode 100644 Santander-Test/Santander-Test/Assets.xcassets/share.imageset/Contents.json create mode 100644 Santander-Test/Santander-Test/Assets.xcassets/share.imageset/share.png diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index 7d6a8843f06d6b97ca315c980ed0b253d56916d7..139b82756c3618140679d1f886e33abe52563629 100644 GIT binary patch literal 97628 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�^-l+9yt)FYxuHCG5*V;pBXVxyO{dnyc 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 literal 94575 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�UjHzpdBjQx%L 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 literal 0 HcmV?d00001 diff --git a/Santander-Test/Santander-Test/GenericScenes/Form/Send/SendCell.swift b/Santander-Test/Santander-Test/GenericScenes/Form/Send/SendCell.swift index d218ce4d..4a69a02e 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Form/Send/SendCell.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Form/Send/SendCell.swift @@ -17,6 +17,7 @@ class SendCell: UITableViewCell { @IBOutlet weak var button: SendButton! @IBOutlet weak var topConstraint: NSLayoutConstraint! + @IBOutlet weak var bottomConstraint: NSLayoutConstraint! static let reuseIdentifier = "SendCell" @@ -37,6 +38,7 @@ class SendCell: UITableViewCell { guard let viewModel = viewModel else { return } button.setTitle(viewModel.message ?? "-", for: .normal) topConstraint.constant = CGFloat(viewModel.topSpace ?? 8) + bottomConstraint.constant = CGFloat(viewModel.bottomSpace) } } @@ -50,5 +52,12 @@ extension SendCell { struct ViewModel { let message: String? let topSpace: Int? + let bottomSpace: Int + + init(message: String?, topSpace: Int?, bottomSpace: Int = 16) { + self.message = message + self.topSpace = topSpace + self.bottomSpace = bottomSpace + } } } diff --git a/Santander-Test/Santander-Test/GenericScenes/Form/Send/SendCell.xib b/Santander-Test/Santander-Test/GenericScenes/Form/Send/SendCell.xib index 7c5586bb..65933b68 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Form/Send/SendCell.xib +++ b/Santander-Test/Santander-Test/GenericScenes/Form/Send/SendCell.xib @@ -43,6 +43,7 @@ + diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/Header/FundHeader.swift b/Santander-Test/Santander-Test/GenericScenes/Fund/Header/FundHeader.swift index e1b517e2..4d23504a 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Fund/Header/FundHeader.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/Header/FundHeader.swift @@ -23,6 +23,17 @@ class FundHeader: UITableViewCell { } } + override func awakeFromNib() { + super.awakeFromNib() + configureLayout() + } + + private func configureLayout() { + title.textColor = UIColor.darkGrayColor + whatIs.textColor = UIColor.darkGrayColor + definition.textColor = UIColor.darkGrayColor + } + private func didSetViewModel() { guard let viewModel = viewModel else { return } diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/Header/FundHeader.xib b/Santander-Test/Santander-Test/GenericScenes/Fund/Header/FundHeader.xib index 1c7c30a0..433bdd54 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Fund/Header/FundHeader.xib +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/Header/FundHeader.xib @@ -60,14 +60,24 @@ + + + @@ -88,10 +98,11 @@ - + + diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.swift b/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.swift index 1dd533d3..ed0fcb86 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.swift @@ -16,14 +16,16 @@ class FundMoreInfoCell: UITableViewCell { @IBOutlet weak var twelveMonthsLabel: UILabel! @IBOutlet weak var FundLabel: UILabel! - @IBOutlet weak var cdLabel: UILabel! + @IBOutlet weak var cdiLabel: UILabel! @IBOutlet weak var monthFundLabel: UILabel! @IBOutlet weak var yearFundLabel: UILabel! @IBOutlet weak var twelveMonthsFundLabel: UILabel! - @IBOutlet weak var monthCdLabel: UILabel! - @IBOutlet weak var yearCdLabel: UILabel! - @IBOutlet weak var twelveMonthsCdLabel: UILabel! + @IBOutlet weak var monthCdiLabel: UILabel! + @IBOutlet weak var yearCdiLabel: UILabel! + @IBOutlet weak var twelveMonthsCdiLabel: UILabel! + + @IBOutlet weak var lineView: UIView! static let reuseIdentifier = "FundMoreInfoCell" @@ -45,17 +47,66 @@ class FundMoreInfoCell: UITableViewCell { yearLabel.textColor = UIColor.darkGrayColor twelveMonthsLabel.textColor = UIColor.darkGrayColor FundLabel.textColor = UIColor.darkGrayColor - cdLabel.textColor = UIColor.darkGrayColor + cdiLabel.textColor = UIColor.darkGrayColor + lineView.backgroundColor = UIColor.lightGrayColor } private func didSetViewModel() { - guard let viewModel = viewModel else { return } + guard let fundMoreInfo = viewModel?.fundMoreInfo else { return } + + let monthFund: String = { + guard let monthFund = fundMoreInfo.month?.fund else { + return "-" + } + return String(monthFund) + }() + + let yearFund: String = { + guard let yearFund = fundMoreInfo.year?.fund else { + return "-" + } + return String(yearFund) + }() + + let twelveMonthsFund: String = { + guard let twelveMonthsFund = fundMoreInfo.twelveMonths?.fund else { + return "-" + } + return String(twelveMonthsFund) + }() + let monthCdi: String = { + guard let monthCdi = fundMoreInfo.month?.CDI else { + return "-" + } + return String(monthCdi) + }() + + let yearCdi: String = { + guard let yearCdi = fundMoreInfo.year?.CDI else { + return "-" + } + return String(yearCdi) + }() + + let twelveMonthsCdi: String = { + guard let twelveMonthsCdi = fundMoreInfo.twelveMonths?.CDI else { + return "-" + } + return String(twelveMonthsCdi) + }() + + monthFundLabel.text = monthFund + yearFundLabel.text = yearFund + twelveMonthsFundLabel.text = twelveMonthsFund + monthCdiLabel.text = monthCdi + yearCdiLabel.text = yearCdi + twelveMonthsCdiLabel.text = twelveMonthsCdi } } extension FundMoreInfoCell { struct ViewModel { - + let fundMoreInfo: FundMoreInfo } } diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.xib b/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.xib index ba171ea4..331c61f4 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.xib +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.xib @@ -18,7 +18,7 @@ - + @@ -101,8 +101,8 @@ - - + + + - + + - - + + + - + - + + diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.swift b/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.swift index 95b211ec..aa0aabd7 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.swift @@ -10,6 +10,8 @@ import UIKit class FundRisk: UITableViewCell { + @IBOutlet weak var label: UILabel! + @IBOutlet weak var lightGreenView: UIView! @IBOutlet weak var darkGreenView: UIView! @IBOutlet weak var yellowView: UIView! @@ -24,6 +26,15 @@ class FundRisk: UITableViewCell { } } + override func awakeFromNib() { + super.awakeFromNib() + configureLayout() + } + + private func configureLayout() { + label.textColor = UIColor.darkGrayColor + } + private func didSetViewModel() { guard let viewModel = viewModel, diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.xib b/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.xib index 55d1b176..f5efd8c8 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.xib +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.xib @@ -70,6 +70,7 @@ + diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetail.storyboard b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetail.storyboard index 7983ef79..95f3302e 100644 --- a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetail.storyboard +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetail.storyboard @@ -18,7 +18,7 @@ - + diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift index fe7f9f52..79f1a03f 100644 --- a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift @@ -82,17 +82,50 @@ class FundDetailViewController: UIViewController, FundDetailDisplayLogic { fundMoreInfoCell, forCellReuseIdentifier: FundMoreInfoCell.reuseIdentifier ) + + let fundInfoCell = UINib(nibName: "FundInfoCell", bundle: nil) + tableView.register( + fundInfoCell, + forCellReuseIdentifier: FundInfoCell.reuseIdentifier + ) + + let fundDownInfoCell = UINib(nibName: "FundDownInfoCell", bundle: nil) + tableView.register( + fundDownInfoCell, + forCellReuseIdentifier: FundDownInfoCell.reuseIdentifier + ) + + let sendCell = UINib(nibName: "SendCell", bundle: nil) + tableView.register( + sendCell, + forCellReuseIdentifier: SendCell.reuseIdentifier + ) } } extension FundDetailViewController: UITableViewDataSource { + + func numberOfSections(in tableView: UITableView) -> Int { + return 6 + } func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return 3 + switch section { + case 0, 1, 2: + return 1 + case 3: + return 5 + case 4: + return 5 + case 5: + return 1 + default: + return 0 + } } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { - switch indexPath.row { + switch indexPath.section { case 0: let cell = tableView.dequeueReusableCell(withIdentifier: FundHeader.reuseIdentifier) as! FundHeader return cell @@ -102,9 +135,19 @@ extension FundDetailViewController: UITableViewDataSource { case 2: let cell = tableView.dequeueReusableCell(withIdentifier: FundMoreInfoCell.reuseIdentifier) as! FundMoreInfoCell return cell + case 3: + let cell = tableView.dequeueReusableCell(withIdentifier: FundInfoCell.reuseIdentifier) as! FundInfoCell + return cell + case 4: + let cell = tableView.dequeueReusableCell(withIdentifier: FundDownInfoCell.reuseIdentifier) as! FundDownInfoCell + return cell + case 5: + let cell = tableView.dequeueReusableCell(withIdentifier: SendCell.reuseIdentifier) as! SendCell + // TODO + cell.viewModel = SendCell.ViewModel(message: "Investir", topSpace: 45) + return cell default: return UITableViewCell() } } - } From 2250d7a35cf2a6d595c9bc652cac30baabd5885a Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Fri, 17 May 2019 08:57:31 -0400 Subject: [PATCH 16/39] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20da=20tela=20de?= =?UTF-8?q?=20fundos=20de=20investimento?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 97628 -> 97195 bytes .../Fund/DownInfo/FundDownInfoCell.swift | 4 +- .../Fund/Info/FundInfoCell.swift | 8 +- .../Fund/MoreInfo/FundMoreInfoCell.swift | 2 +- .../GenericScenes/Fund/Risk/FundRisk.swift | 6 +- .../Scenes/Form/FormWorker.swift | 10 +- .../FundDetail/FundDetailInteractor.swift | 44 ++++---- .../Scenes/FundDetail/FundDetailModels.swift | 51 ++++++--- .../FundDetail/FundDetailPresenter.swift | 50 ++++++--- .../FundDetail/FundDetailViewController.swift | 97 +++++++++++++++--- .../Scenes/FundDetail/FundDetailWorker.swift | 26 ++++- 11 files changed, 216 insertions(+), 82 deletions(-) diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index 139b82756c3618140679d1f886e33abe52563629..20a17e7c8bc67d08a6bedf0710eb2cec9829f310 100644 GIT binary patch literal 97195 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

=2V;)Ot8X%DyWW{XpE+y&bU@+iw>aP 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 UKYy{iBY*n&X8zxwZhcPwKf?>8JOBUy literal 97628 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�^-l+9yt)FYxuHCG5*V;pBXVxyO{dnyc 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 diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/DownInfo/FundDownInfoCell.swift b/Santander-Test/Santander-Test/GenericScenes/Fund/DownInfo/FundDownInfoCell.swift index 7924da7c..8d4b61d0 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Fund/DownInfo/FundDownInfoCell.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/DownInfo/FundDownInfoCell.swift @@ -40,7 +40,7 @@ class FundDownInfoCell: UITableViewCell { private func didSetViewModel() { guard let viewModel = viewModel else { return } - downInfoNameLabel.text = viewModel.downInfoName + downInfoNameLabel.text = viewModel.downInfoName ?? "-" } @IBAction func downloadButton(_ sender: Any) { @@ -50,6 +50,6 @@ class FundDownInfoCell: UITableViewCell { extension FundDownInfoCell { struct ViewModel { - let downInfoName: String + let downInfoName: String? } } diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/Info/FundInfoCell.swift b/Santander-Test/Santander-Test/GenericScenes/Fund/Info/FundInfoCell.swift index 04cba848..58f42a28 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Fund/Info/FundInfoCell.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/Info/FundInfoCell.swift @@ -33,14 +33,14 @@ class FundInfoCell: UITableViewCell { private func didSetViewModel() { guard let viewModel = viewModel else { return } - infoName.text = viewModel.infoName - infoData.text = viewModel.infoData + infoName.text = viewModel.infoName ?? "-" + infoData.text = viewModel.infoData ?? "-" } } extension FundInfoCell { struct ViewModel { - let infoName: String - let infoData: String + let infoName: String? + let infoData: String? } } diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.swift b/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.swift index ed0fcb86..26cb197d 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.swift @@ -107,6 +107,6 @@ class FundMoreInfoCell: UITableViewCell { extension FundMoreInfoCell { struct ViewModel { - let fundMoreInfo: FundMoreInfo + let fundMoreInfo: FundMoreInfo? } } diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.swift b/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.swift index aa0aabd7..8772e13f 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.swift @@ -37,8 +37,8 @@ class FundRisk: UITableViewCell { private func didSetViewModel() { guard - let viewModel = viewModel, - 1...5 ~= viewModel.risk + let viewModelRisk = viewModel?.risk, + 1...5 ~= viewModelRisk else { return } // switch viewModel.risk { @@ -53,6 +53,6 @@ class FundRisk: UITableViewCell { extension FundRisk { struct ViewModel { - let risk: Int + let risk: Int? } } diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormWorker.swift b/Santander-Test/Santander-Test/Scenes/Form/FormWorker.swift index dd659885..57b5917d 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormWorker.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormWorker.swift @@ -17,11 +17,19 @@ class FormWorker { func getFormCells(completion: @escaping ([FormCell]?, Error?) -> Void) { let apiManager = FundsServiceApiManager.shared apiManager.getFormCells { (formCells, error) in - guard let formCells = formCells else { + + guard error == nil else { completion(nil, error) return } + guard let formCells = formCells else { + let domain = "Ocorreu um erro inesperado!" + let responseError = NSError(domain: domain, code: 200, userInfo: nil) + completion(nil, responseError) + return + } + completion(formCells, nil) } } diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailInteractor.swift b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailInteractor.swift index fcef78f9..396c5275 100644 --- a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailInteractor.swift +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailInteractor.swift @@ -12,30 +12,28 @@ import UIKit -protocol FundDetailBusinessLogic -{ -// func doSomething(request: FundDetail.Something.Request) +protocol FundDetailBusinessLogic { + func getFundDetail(request: FundDetail.GetFundDetail.Request) } -protocol FundDetailDataStore -{ - //var name: String { get set } -} +protocol FundDetailDataStore {} -class FundDetailInteractor: FundDetailBusinessLogic, FundDetailDataStore -{ - var presenter: FundDetailPresentationLogic? - var worker: FundDetailWorker? - //var name: String = "" - - // MARK: Do something - -// func doSomething(request: FundDetail.Something.Request) -// { -// worker = FundDetailWorker() -// worker?.doSomeWork() -// -// let response = FundDetail.Something.Response() -// presenter?.presentSomething(response: response) -// } +class FundDetailInteractor: FundDetailBusinessLogic, FundDetailDataStore { + var presenter: FundDetailPresentationLogic? + var worker: FundDetailWorker? + + func getFundDetail(request: FundDetail.GetFundDetail.Request) { + worker = FundDetailWorker() + worker?.getFund(completion: { [unowned self] (fund, error) in + guard let fund = fund else { + let domain = "Não há fundo de investimento a ser exibido" + let responseError = NSError(domain: domain, code: 200, userInfo: nil) + let response = FundDetail.FundDetailError.Response(error: responseError, errorType: .getFundDetail) + self.presenter?.presentError(response: response) + return + } + let response = FundDetail.GetFundDetail.Response(fund: fund) + self.presenter?.presentFundDetail(response: response) + }) + } } diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailModels.swift b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailModels.swift index f0f864f8..dbc85bfb 100644 --- a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailModels.swift +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailModels.swift @@ -12,19 +12,42 @@ import UIKit -enum FundDetail -{ - // MARK: Use cases +enum FundDetail { -// enum Something { -// struct Request -// { -// } -// struct Response -// { -// } -// struct ViewModel -// { -// } -// } + enum ErrorType { + case getFundDetail + } + + enum GetFundDetail { + struct Request {} + struct Response { + let fund: Fund + } + struct ViewModel { + let title: String + let fundName: String + let whatIs: String + let definition: String + let riskTitle: String + let risk: Int? + let infoTitle: String + let moreInfo: FundMoreInfo? + let info: [FundInfo] + let downInfo: [FundInfo] + let buttonMessage: String + let buttonTopSpace: Int + } + } + + enum FundDetailError { + struct Request {} + struct Response { + let error: NSError + let errorType: ErrorType + } + struct ViewModel { + let message: String + let errorType: ErrorType + } + } } diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailPresenter.swift b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailPresenter.swift index dbb59f85..2b19951a 100644 --- a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailPresenter.swift +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailPresenter.swift @@ -12,20 +12,42 @@ import UIKit -protocol FundDetailPresentationLogic -{ -// func presentSomething(response: FundDetail.Something.Response) +protocol FundDetailPresentationLogic { + // func presentSomething(response: FundDetail.Something.Response) + func presentFundDetail(response: FundDetail.GetFundDetail.Response) + func presentError(response: FundDetail.FundDetailError.Response) } -class FundDetailPresenter: FundDetailPresentationLogic -{ - weak var viewController: FundDetailDisplayLogic? - - // MARK: Do something - -// func presentSomething(response: FundDetail.Something.Response) -// { -// let viewModel = FundDetail.Something.ViewModel() -// viewController?.displaySomething(viewModel: viewModel) -// } +class FundDetailPresenter: FundDetailPresentationLogic { + weak var viewController: FundDetailDisplayLogic? + + func presentFundDetail(response: FundDetail.GetFundDetail.Response) { + + let fund = response.fund + let viewModel = FundDetail.GetFundDetail.ViewModel( + title: fund.title ?? "-", + fundName: fund.fundName ?? "-", + whatIs: fund.whatIs ?? "-", + definition: fund.definition ?? "-", + riskTitle: fund.riskTitle ?? "-", + risk: fund.risk, + infoTitle: fund.infoTitle ?? "-", + moreInfo: fund.moreInfo, + info: fund.info ?? [], + downInfo: fund.downInfo ?? [], + buttonMessage: "Investir", + buttonTopSpace: 45 + ) + viewController?.displayFundDetail(viewModel: viewModel) + } + + func presentError(response: FundDetail.FundDetailError.Response) { + var message: String! + switch response.errorType { + case .getFundDetail: + message = response.error.domain + } + let viewModel = FundDetail.FundDetailError.ViewModel(message: message, errorType: response.errorType) + viewController?.displayError(viewModel: viewModel) + } } diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift index 79f1a03f..153c4335 100644 --- a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift @@ -13,13 +13,16 @@ import UIKit protocol FundDetailDisplayLogic: class { -// func displaySomething(viewModel: FundDetail.Something.ViewModel) + func displayFundDetail(viewModel: FundDetail.GetFundDetail.ViewModel) + func displayError(viewModel: FundDetail.FundDetailError.ViewModel) } -class FundDetailViewController: UIViewController, FundDetailDisplayLogic { +class FundDetailViewController: UIViewController { @IBOutlet weak var tableView: UITableView! + var displayedFund: FundDetail.GetFundDetail.ViewModel? + var interactor: FundDetailBusinessLogic? var router: (NSObjectProtocol & FundDetailRoutingLogic & FundDetailDataPassing)? @@ -58,12 +61,18 @@ class FundDetailViewController: UIViewController, FundDetailDisplayLogic { override func viewDidLoad() { super.viewDidLoad() setupTableView() + requestData() } private func setupTableView() { registerTableViewCells() } + private func requestData() { + let request = FundDetail.GetFundDetail.Request() + interactor?.getFundDetail(request: request) + } + private func registerTableViewCells() { let fundHeader = UINib(nibName: "FundHeader", bundle: nil) tableView.register( @@ -111,14 +120,14 @@ extension FundDetailViewController: UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { switch section { - case 0, 1, 2: + case 0, 1, 2, 5: return 1 case 3: - return 5 + guard let info = displayedFund?.info else { return 0 } + return info.count case 4: - return 5 - case 5: - return 1 + guard let downInfo = displayedFund?.downInfo else { return 0 } + return downInfo.count default: return 0 } @@ -127,27 +136,85 @@ extension FundDetailViewController: UITableViewDataSource { func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { switch indexPath.section { case 0: - let cell = tableView.dequeueReusableCell(withIdentifier: FundHeader.reuseIdentifier) as! FundHeader + let cell = tableView.dequeueReusableCell( + withIdentifier: FundHeader.reuseIdentifier + ) as! FundHeader + if let displayedFund = displayedFund { + cell.viewModel = FundHeader.ViewModel( + title: displayedFund.title, + fundName: displayedFund.fundName, + whatIs: displayedFund.whatIs, + definition: displayedFund.definition + ) + } return cell case 1: - let cell = tableView.dequeueReusableCell(withIdentifier: FundRisk.reuseIdentifier) as! FundRisk + let cell = tableView.dequeueReusableCell( + withIdentifier: FundRisk.reuseIdentifier + ) as! FundRisk + if let displayedFund = displayedFund { + cell.viewModel = FundRisk.ViewModel( + risk: displayedFund.risk + ) + } return cell case 2: - let cell = tableView.dequeueReusableCell(withIdentifier: FundMoreInfoCell.reuseIdentifier) as! FundMoreInfoCell + let cell = tableView.dequeueReusableCell( + withIdentifier: FundMoreInfoCell.reuseIdentifier + ) as! FundMoreInfoCell + if let displayedFund = displayedFund { + cell.viewModel = FundMoreInfoCell.ViewModel( + fundMoreInfo: displayedFund.moreInfo + ) + } return cell case 3: - let cell = tableView.dequeueReusableCell(withIdentifier: FundInfoCell.reuseIdentifier) as! FundInfoCell + let cell = tableView.dequeueReusableCell( + withIdentifier: FundInfoCell.reuseIdentifier + ) as! FundInfoCell + if let displayedFund = displayedFund { + cell.viewModel = FundInfoCell.ViewModel( + infoName: displayedFund.info[indexPath.row].name, + infoData: displayedFund.info[indexPath.row].data + ) + } return cell case 4: - let cell = tableView.dequeueReusableCell(withIdentifier: FundDownInfoCell.reuseIdentifier) as! FundDownInfoCell + let cell = tableView.dequeueReusableCell( + withIdentifier: FundDownInfoCell.reuseIdentifier + ) as! FundDownInfoCell + if let displayedFund = displayedFund { + cell.viewModel = FundDownInfoCell.ViewModel( + downInfoName: displayedFund.downInfo[indexPath.row].name + ) + } return cell case 5: - let cell = tableView.dequeueReusableCell(withIdentifier: SendCell.reuseIdentifier) as! SendCell - // TODO - cell.viewModel = SendCell.ViewModel(message: "Investir", topSpace: 45) + let cell = tableView.dequeueReusableCell( + withIdentifier: SendCell.reuseIdentifier + ) as! SendCell +// cell.viewModel = SendCell.ViewModel(message: "Investir", topSpace: 45) TODO + if let displayedFund = displayedFund { + cell.viewModel = SendCell.ViewModel( + message: displayedFund.buttonMessage, + topSpace: displayedFund.buttonTopSpace + ) + } return cell default: return UITableViewCell() } } } + +extension FundDetailViewController: FundDetailDisplayLogic { + + func displayFundDetail(viewModel: FundDetail.GetFundDetail.ViewModel) { + displayedFund = viewModel + tableView.reloadData() + } + + func displayError(viewModel: FundDetail.FundDetailError.ViewModel) { + print(viewModel.message) + } +} diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailWorker.swift b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailWorker.swift index fbef3032..0966158b 100644 --- a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailWorker.swift +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailWorker.swift @@ -12,9 +12,25 @@ import UIKit -class FundDetailWorker -{ - func doSomeWork() - { - } +class FundDetailWorker { + + func getFund(completion: @escaping (Fund?, Error?) -> Void) { + let apiManager = FundsServiceApiManager.shared + apiManager.getFundsList { (fundsList, error) in + + guard error == nil else { + completion(nil, error) + return + } + + guard let fund = fundsList?.screen else { + let domain = "Ocorreu um erro inesperado!" + let responseError = NSError(domain: domain, code: 200, userInfo: nil) + completion(nil, responseError) + return + } + + completion(fund, nil) + } + } } From 3b8aa582c4b2bb5e54cb5e88cb68539067de9636 Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Fri, 17 May 2019 09:14:16 -0400 Subject: [PATCH 17/39] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20do=20tratamento?= =?UTF-8?q?=20de=20erro=20(StatusAlert)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Santander-Test/Podfile | 1 + Santander-Test/Podfile.lock | 6 +- Santander-Test/Pods/Manifest.lock | 6 +- .../Pods/Pods.xcodeproj/project.pbxproj | 903 +++++++++++------- .../xcschemes/Alamofire.xcscheme | 60 ++ .../xcschemes/Moya.xcscheme | 60 ++ .../xcschemes/Pods-Santander-Test.xcscheme | 71 ++ .../Pods-Santander-TestTests.xcscheme | 71 ++ .../Pods-Santander-TestUITests.xcscheme | 71 ++ .../xcschemes/Result.xcscheme | 60 ++ .../xcschemes/StatusAlert.xcscheme | 60 ++ .../xcschemes/xcschememanagement.plist | 59 +- Santander-Test/Pods/StatusAlert/LICENSE | 19 + Santander-Test/Pods/StatusAlert/README.md | 204 ++++ .../Extensions/UIDevice+Blur.swift | 38 + .../Extensions/UIDevice+Platform.swift | 190 ++++ .../Sources/StatusAlert/StatusAlert.swift | 794 +++++++++++++++ .../StatusAlert/StatusAlertUtils.swift | 207 ++++ ...s-Santander-Test-acknowledgements.markdown | 23 + ...Pods-Santander-Test-acknowledgements.plist | 29 + .../Pods-Santander-Test-frameworks.sh | 2 + .../Pods-Santander-Test.debug.xcconfig | 6 +- .../Pods-Santander-Test.release.xcconfig | 6 +- .../Pods-Santander-TestTests.debug.xcconfig | 6 +- .../Pods-Santander-TestTests.release.xcconfig | 6 +- .../Pods-Santander-TestUITests.debug.xcconfig | 6 +- ...ods-Santander-TestUITests.release.xcconfig | 6 +- .../StatusAlert/StatusAlert-Info.plist | 26 + .../StatusAlert/StatusAlert-dummy.m | 5 + .../StatusAlert/StatusAlert-prefix.pch | 12 + .../StatusAlert/StatusAlert-umbrella.h | 16 + .../StatusAlert/StatusAlert.modulemap | 6 + .../StatusAlert/StatusAlert.xcconfig | 9 + .../Santander-Test.xcodeproj/project.pbxproj | 6 + .../xcschemes/xcschememanagement.plist | 2 +- .../UserInterfaceState.xcuserstate | Bin 97195 -> 99106 bytes .../Scenes/Form/FormViewController.swift | 3 +- .../FundDetail/FundDetailInteractor.swift | 8 +- .../Scenes/FundDetail/FundDetailModels.swift | 1 + .../FundDetail/FundDetailPresenter.swift | 2 + .../FundDetail/FundDetailViewController.swift | 3 +- .../UIViewControllerExtensions.swift | 25 + 42 files changed, 2696 insertions(+), 398 deletions(-) create mode 100644 Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Alamofire.xcscheme create mode 100644 Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Moya.xcscheme create mode 100644 Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Pods-Santander-Test.xcscheme create mode 100644 Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Pods-Santander-TestTests.xcscheme create mode 100644 Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Pods-Santander-TestUITests.xcscheme create mode 100644 Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Result.xcscheme create mode 100644 Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/StatusAlert.xcscheme create mode 100644 Santander-Test/Pods/StatusAlert/LICENSE create mode 100644 Santander-Test/Pods/StatusAlert/README.md create mode 100644 Santander-Test/Pods/StatusAlert/Sources/StatusAlert/Extensions/UIDevice+Blur.swift create mode 100644 Santander-Test/Pods/StatusAlert/Sources/StatusAlert/Extensions/UIDevice+Platform.swift create mode 100644 Santander-Test/Pods/StatusAlert/Sources/StatusAlert/StatusAlert.swift create mode 100644 Santander-Test/Pods/StatusAlert/Sources/StatusAlert/StatusAlertUtils.swift create mode 100644 Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert-Info.plist create mode 100644 Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert-dummy.m create mode 100644 Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert-prefix.pch create mode 100644 Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert-umbrella.h create mode 100644 Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert.modulemap create mode 100644 Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert.xcconfig create mode 100644 Santander-Test/Santander-Test/Supporting Files/Extensions/UIViewControllerExtensions.swift diff --git a/Santander-Test/Podfile b/Santander-Test/Podfile index 40dfb597..46bef7a7 100644 --- a/Santander-Test/Podfile +++ b/Santander-Test/Podfile @@ -8,6 +8,7 @@ target 'Santander-Test' do # Pods for Santander-Test pod 'Moya' + pod 'StatusAlert' target 'Santander-TestTests' do inherit! :search_paths diff --git a/Santander-Test/Podfile.lock b/Santander-Test/Podfile.lock index f4dcb540..c2ef1f97 100644 --- a/Santander-Test/Podfile.lock +++ b/Santander-Test/Podfile.lock @@ -6,21 +6,25 @@ PODS: - Alamofire (~> 4.1) - Result (~> 4.0) - Result (4.1.0) + - StatusAlert (1.1.0) DEPENDENCIES: - Moya + - StatusAlert SPEC REPOS: https://github.com/cocoapods/specs.git: - Alamofire - Moya - Result + - StatusAlert SPEC CHECKSUMS: Alamofire: 16ce2c353fb72865124ddae8a57c5942388f4f11 Moya: cf730b3cd9e005401ef37a85143aa141a12fd38f Result: bd966fac789cc6c1563440b348ab2598cc24d5c7 + StatusAlert: 4d6dadebf5f7abd5648fa774ef3062f2f95cc4aa -PODFILE CHECKSUM: 5aa60ad57cd32255f2a920092a32388ee9261b99 +PODFILE CHECKSUM: e871f6b26d19e6b91fffd808ac5e92e42bc03ffd COCOAPODS: 1.6.0 diff --git a/Santander-Test/Pods/Manifest.lock b/Santander-Test/Pods/Manifest.lock index f4dcb540..c2ef1f97 100644 --- a/Santander-Test/Pods/Manifest.lock +++ b/Santander-Test/Pods/Manifest.lock @@ -6,21 +6,25 @@ PODS: - Alamofire (~> 4.1) - Result (~> 4.0) - Result (4.1.0) + - StatusAlert (1.1.0) DEPENDENCIES: - Moya + - StatusAlert SPEC REPOS: https://github.com/cocoapods/specs.git: - Alamofire - Moya - Result + - StatusAlert SPEC CHECKSUMS: Alamofire: 16ce2c353fb72865124ddae8a57c5942388f4f11 Moya: cf730b3cd9e005401ef37a85143aa141a12fd38f Result: bd966fac789cc6c1563440b348ab2598cc24d5c7 + StatusAlert: 4d6dadebf5f7abd5648fa774ef3062f2f95cc4aa -PODFILE CHECKSUM: 5aa60ad57cd32255f2a920092a32388ee9261b99 +PODFILE CHECKSUM: e871f6b26d19e6b91fffd808ac5e92e42bc03ffd COCOAPODS: 1.6.0 diff --git a/Santander-Test/Pods/Pods.xcodeproj/project.pbxproj b/Santander-Test/Pods/Pods.xcodeproj/project.pbxproj index 05d99044..de4508f1 100644 --- a/Santander-Test/Pods/Pods.xcodeproj/project.pbxproj +++ b/Santander-Test/Pods/Pods.xcodeproj/project.pbxproj @@ -7,73 +7,88 @@ objects = { /* Begin PBXBuildFile section */ - 059D92B7BBFBEC53E9A3B6E11C5C3B3A /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 658F2480F5891FAA6FA5A66331A2946F /* Response.swift */; }; - 09067C2692931E434234858ADBC4C6D6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F070EA949AE56B80487099F22C5125E /* Foundation.framework */; }; - 09EB6E0388043CD7B2B1089D446310E3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F070EA949AE56B80487099F22C5125E /* Foundation.framework */; }; - 0A39AF55285A3A4F7CBABB6D822FA4A3 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4218171677FF5B70A4A3C9255B97334B /* Alamofire.swift */; }; - 11F309B46EE6B36CB281409A579996C0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F070EA949AE56B80487099F22C5125E /* Foundation.framework */; }; - 1B131595178FA51FC0B7C2FB12ED5ADB /* Endpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = F56A169BF4DF40A3C798570E61D0F96F /* Endpoint.swift */; }; - 1C496E2C46E94DECD60F0B1C7CA511E4 /* NetworkLoggerPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9D9C68F5756D1BE51CD956B435E241C /* NetworkLoggerPlugin.swift */; }; - 1D29D2ACADF961F69D32B06FA6A09E28 /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFDF740459C685482B23F47F31D382D6 /* Notifications.swift */; }; - 225E880F1459B17432E7DF840D03A3E7 /* Task.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0309512180EFC6494644C07CE11E5C35 /* Task.swift */; }; - 313895F247F6C04661152D6D4948C100 /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EF857F359FEA09F5997368B821B525A /* Image.swift */; }; - 31895E3CF848D69123E3A6DDEDBBF86F /* URL+Moya.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD31EB276D310E0FE4448A6B050E0BC9 /* URL+Moya.swift */; }; - 355C18EEC82624A06A6CC93965258E33 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EEE0610AE937C5E5EDDFDD2EEA9593C /* Request.swift */; }; - 3BD1DAFE1F3E6C9E4EB0F2099B6D6FA2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F070EA949AE56B80487099F22C5125E /* Foundation.framework */; }; - 3E0749AF6C51BCF0E4A41CF1D6A76FED /* DispatchQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38C8CC6AC0D8831E86EB702019DD876B /* DispatchQueue+Alamofire.swift */; }; - 4A42935426AB30760B47ADDE1BB1C39D /* NoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DFCCA5612D471096D3E6CB06E11A8A1 /* NoError.swift */; }; - 5D53EA65636A0B296726611E3C491CF7 /* Result-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 36F1F488961C8E5E299238A153EA2E47 /* Result-dummy.m */; }; - 5D97ACC58BF197F2426B2C6853142DF5 /* NetworkActivityPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94191699BE232A8DBDD811B0AD026417 /* NetworkActivityPlugin.swift */; }; - 60B6C2A003864AAD3A426448152F67BE /* Timeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAFCFE4A4FFBF3F2142074DB7031979D /* Timeline.swift */; }; - 6499810827FC895E23B2E30263617389 /* Plugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EF0C3E50605E3094E74A8DF1CD06F4D /* Plugin.swift */; }; - 64C35953B1CEDA2F929331C7626611CC /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC5DA261F34E2228A8D9AC5907C65A54 /* MultipartFormData.swift */; }; - 68BB9452F3012913BABE12BE69C74785 /* AnyEncodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2F81118105D79994D3F729A6C2C1018 /* AnyEncodable.swift */; }; - 6AAA002A59C5011CB71E9B83E6803C6D /* ResultProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0548D5C388EF37983AE0E364CA62733C /* ResultProtocol.swift */; }; + 059D92B7BBFBEC53E9A3B6E11C5C3B3A /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CFA6FD91CCF5980C630869D8F179163 /* Response.swift */; }; + 09067C2692931E434234858ADBC4C6D6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2FE98814E15F069042B678A3EE8685C /* Foundation.framework */; }; + 0A39AF55285A3A4F7CBABB6D822FA4A3 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6971CC9434804FA19AF339E8EAC67903 /* Alamofire.swift */; }; + 10C05319610A79A154A5E0B27D29FB52 /* StatusAlert-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = ED623F2AED96E8DF5C80D6AA1AB59A06 /* StatusAlert-dummy.m */; }; + 11F309B46EE6B36CB281409A579996C0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2FE98814E15F069042B678A3EE8685C /* Foundation.framework */; }; + 1B131595178FA51FC0B7C2FB12ED5ADB /* Endpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCE8C03CEDF209A430926EBD3C5308C1 /* Endpoint.swift */; }; + 1C496E2C46E94DECD60F0B1C7CA511E4 /* NetworkLoggerPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = F94C6D18B9F24B9EC996CDF2096FB755 /* NetworkLoggerPlugin.swift */; }; + 1D29D2ACADF961F69D32B06FA6A09E28 /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 711FCD416785CCE9E58692FF9D272D09 /* Notifications.swift */; }; + 225E880F1459B17432E7DF840D03A3E7 /* Task.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A705AAAF2813072CE980B9A231599B5 /* Task.swift */; }; + 27BD5F097E7B5BAAEF31769B2C201BA6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2FE98814E15F069042B678A3EE8685C /* Foundation.framework */; }; + 2E3B9CD1ECA93DF8CD00F582E747DFB1 /* UIDevice+Platform.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD91A68BD08B58E7058F7E33FAC03536 /* UIDevice+Platform.swift */; }; + 313895F247F6C04661152D6D4948C100 /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = E05209C726F688BF89F6CC4697B76B37 /* Image.swift */; }; + 31895E3CF848D69123E3A6DDEDBBF86F /* URL+Moya.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1A0C32E8AACAC7037EAD5CEE05FBAB9 /* URL+Moya.swift */; }; + 355C18EEC82624A06A6CC93965258E33 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E4E9B464796BCD50D5349CD626FB121 /* Request.swift */; }; + 38D635EF452D8D233B0CB7FD5ECD152D /* Pods-Santander-Test-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 064B8C62456DB7AEFF1AEFF7FC9E39F7 /* Pods-Santander-Test-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3B5F45D58C19A4A296857187DA92B264 /* UIDevice+Blur.swift in Sources */ = {isa = PBXBuildFile; fileRef = F55AF63A30960D087EF58DFA3EFF13D5 /* UIDevice+Blur.swift */; }; + 3BD1DAFE1F3E6C9E4EB0F2099B6D6FA2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2FE98814E15F069042B678A3EE8685C /* Foundation.framework */; }; + 3E0749AF6C51BCF0E4A41CF1D6A76FED /* DispatchQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9933F8F0C2327F373DB96CBD9CF5FE80 /* DispatchQueue+Alamofire.swift */; }; + 4A42935426AB30760B47ADDE1BB1C39D /* NoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3384A51D237BE9FFE5CC9FD8501267CA /* NoError.swift */; }; + 5D53EA65636A0B296726611E3C491CF7 /* Result-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E32D8039C364144FF831E6B396D67593 /* Result-dummy.m */; }; + 5D97ACC58BF197F2426B2C6853142DF5 /* NetworkActivityPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E44758592C3E3423268131941D91178 /* NetworkActivityPlugin.swift */; }; + 60B6C2A003864AAD3A426448152F67BE /* Timeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8444584E0708FE54CD421CB67274B2B /* Timeline.swift */; }; + 6499810827FC895E23B2E30263617389 /* Plugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = D42F1ADC85D9FE06E135C5A4A4712179 /* Plugin.swift */; }; + 64C35953B1CEDA2F929331C7626611CC /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E6D7D02F4BC3F8DAB4CEDDD1FF13A7C /* MultipartFormData.swift */; }; + 68BB9452F3012913BABE12BE69C74785 /* AnyEncodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E22C7F50B502391ECADE49470259B11 /* AnyEncodable.swift */; }; + 6AAA002A59C5011CB71E9B83E6803C6D /* ResultProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2ABF1291D81C64F7EEF0EFD5B780A8EF /* ResultProtocol.swift */; }; 6CA1BEBC175680F7D37A9C47917203B1 /* Pods-Santander-TestUITests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1410754A2D8AEF29CBAD3CF4DC4714BB /* Pods-Santander-TestUITests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6E04C92190FD45451E6690122ABF62E9 /* Moya-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 486423FBF4F6D69923EA68087B40145D /* Moya-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6E64C6F2AF1EBF3B28AD5CC90D8D3E2F /* AnyError.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9C09A7737BFFC871C754ECFF5CC30BC /* AnyError.swift */; }; - 6EFD003458AE7F689DEA720A2030C261 /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 892C053581140EDB2B3CC3F6572DA00E /* ResponseSerialization.swift */; }; - 700D3D95AF9520CB227846DFD943A2DA /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF919C3CFB95289B6176B202B768B1D9 /* ParameterEncoding.swift */; }; - 73AB05789A4982944AF68DBD013E3EB7 /* NetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD44B3D15CD8661524A3CEB8348DCC12 /* NetworkReachabilityManager.swift */; }; - 772911DA6E33D1CBBC30131B7C8BDBB3 /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 063A17B847BD9121B4BD72D2C51FD499 /* Alamofire-dummy.m */; }; - 778F9B551E5A346DA84BC46CBFFA1B22 /* CredentialsPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36ABAA6328733C1E19C00313744E886D /* CredentialsPlugin.swift */; }; - 77E8F0EB9FFBE2E3EB0C77095C644606 /* TaskDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 410C0B1C7DC9F546D2179AB1104602FA /* TaskDelegate.swift */; }; - 7A6FFEFDCF07683D5E2976077212FD27 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F070EA949AE56B80487099F22C5125E /* Foundation.framework */; }; - 7BEFFCD672FD28B3D77927E392412FB9 /* Result-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BB3C1B4EC8DE23ACC831EB8007542F9 /* Result-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7E3538A6992A38276764936A9733493D /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DAF1A64F92069C3B152877FD5A6AED4 /* AFError.swift */; }; - 80111F83B0BCA39D24985D0F122F0001 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96E9C4734FBA7EA2A9194AF8501C1F24 /* Result.swift */; }; - 88AE9E6392539A558E0F4417775EEA91 /* URLRequest+Encoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F452560381530925578BAAEF84C2DA /* URLRequest+Encoding.swift */; }; - 8D2A6A90A6DDAF75EA52D471258545CC /* ServerTrustPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2EA6444D261762B034016BA5A9C63E4 /* ServerTrustPolicy.swift */; }; + 6E04C92190FD45451E6690122ABF62E9 /* Moya-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2656EE812F18B6B610A2568FCC4561 /* Moya-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6E64C6F2AF1EBF3B28AD5CC90D8D3E2F /* AnyError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FF6AD9627E2BF77BCE034BAF1AF6245 /* AnyError.swift */; }; + 6EFD003458AE7F689DEA720A2030C261 /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 746201A0470CBCE1AB0A40EEB1F47944 /* ResponseSerialization.swift */; }; + 700D3D95AF9520CB227846DFD943A2DA /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEDFD686274F7A4D466DA6A0CE6A715A /* ParameterEncoding.swift */; }; + 73AB05789A4982944AF68DBD013E3EB7 /* NetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B083C244BDBF87F2A610FE414F85CE4D /* NetworkReachabilityManager.swift */; }; + 772911DA6E33D1CBBC30131B7C8BDBB3 /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 02E9CB3DFB8C8D5D17E731A31F2D423E /* Alamofire-dummy.m */; }; + 778F9B551E5A346DA84BC46CBFFA1B22 /* CredentialsPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 670D3F3E1C0779928EC137618EFDF484 /* CredentialsPlugin.swift */; }; + 77E8F0EB9FFBE2E3EB0C77095C644606 /* TaskDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 215E69460404285C2FEA0E9CD156C946 /* TaskDelegate.swift */; }; + 780E9C2B021FB29632D8D1933AECD020 /* StatusAlert-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 06684328EA211B5D771E7AB5A841C507 /* StatusAlert-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7A6FFEFDCF07683D5E2976077212FD27 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2FE98814E15F069042B678A3EE8685C /* Foundation.framework */; }; + 7BEFFCD672FD28B3D77927E392412FB9 /* Result-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 51857ED069DA11590B3AF6CA029787C2 /* Result-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7E3538A6992A38276764936A9733493D /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F4FC7A87827AE5D69595C8E96E333C4 /* AFError.swift */; }; + 80111F83B0BCA39D24985D0F122F0001 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 403650A016ACB4048C5790E80A71B849 /* Result.swift */; }; + 80F474B2FF5EE52C1CDC55E0D6C95263 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2FE98814E15F069042B678A3EE8685C /* Foundation.framework */; }; + 88AE9E6392539A558E0F4417775EEA91 /* URLRequest+Encoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98FD95FBAD88ACEBEAFF8FC99888D010 /* URLRequest+Encoding.swift */; }; + 8D2A6A90A6DDAF75EA52D471258545CC /* ServerTrustPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC0BF35535263907FE94B878D062B54B /* ServerTrustPolicy.swift */; }; 9774AB3F3E8B65D7F1A644CCA6254D03 /* Pods-Santander-TestTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 638AF6E4AD3D6CF6AED6C2F601C4A809 /* Pods-Santander-TestTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9EBD0113F23A6FBB0CDC07F66E77ED81 /* AccessTokenPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B573C06FE7D70CAA2DC1FBD76A3ACA4 /* AccessTokenPlugin.swift */; }; - A1EC41966B261DCE460BCDE5124A1DBE /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B08ADF1DB9793E50DCFCDA34BC8F9D0 /* SessionDelegate.swift */; }; - A266363126A240900FCC5CCFE1EDB8BE /* Moya+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84502154C8C2AF78A05E640DBD4C988B /* Moya+Alamofire.swift */; }; - AA56769D8733D3F3E7976742D5ABA998 /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C073AD4D406BFA08E88B02A6BE1BE7DE /* Validation.swift */; }; - AB037232146E78285C5B8F6394D1A658 /* MultiTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D018F4EEA54F3999302E6B4D7566BA0 /* MultiTarget.swift */; }; - AEA829AB1A8AF2AD077A808AED6B178A /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B761F3BA75FD375B4E49B62F1C7DCB42 /* MultipartFormData.swift */; }; - B1EB1CD6804A333102774EA1DE9F1B94 /* TargetType.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB5F1F3525DE8CA6DED495EAF37A77D3 /* TargetType.swift */; }; + 9EBD0113F23A6FBB0CDC07F66E77ED81 /* AccessTokenPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB251E41FD23ED1172249CE782C0E93E /* AccessTokenPlugin.swift */; }; + A1EC41966B261DCE460BCDE5124A1DBE /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9DBC305EDC388A7FCDCA4FD959649A7 /* SessionDelegate.swift */; }; + A266363126A240900FCC5CCFE1EDB8BE /* Moya+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF1E6DA75AC4524B84DD818556E56BA3 /* Moya+Alamofire.swift */; }; + AA56769D8733D3F3E7976742D5ABA998 /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041DFCA15BC44B6F4EEC21B37F591AED /* Validation.swift */; }; + AB037232146E78285C5B8F6394D1A658 /* MultiTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31387928AB135818364761E0A8732638 /* MultiTarget.swift */; }; + AEA829AB1A8AF2AD077A808AED6B178A /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 695972AC67A0A3A83751D985BAEA7877 /* MultipartFormData.swift */; }; + B1EB1CD6804A333102774EA1DE9F1B94 /* TargetType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0091D5AC8576E0F57446F173B73A7CE /* TargetType.swift */; }; B277AE2A50A7C5F6B1BB9EDA5E1A97B8 /* Pods-Santander-TestTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 05E349DAE1260294B909EE4EF74E1CEE /* Pods-Santander-TestTests-dummy.m */; }; - B642F75A16A71ED991DB8A9DA65AD439 /* ValidationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2CAEA4F210F21FE93EF45818A02F417 /* ValidationType.swift */; }; - B6F6E4CC26451E91B59FAE0F6841DC1F /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D177E600FF1C01CD066F40D6382D326 /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C5A49CAAB41E281C266C192EADBE4EB7 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C07BF22DCF851C6D706E00B0A42FB20 /* Alamofire.framework */; }; - CD321D15156EF51F506D6183152B0E1C /* MoyaProvider+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A2ED6F7B3CFA4F255298631A58C1F07 /* MoyaProvider+Internal.swift */; }; - CF2583A28226176FEB4641223263EA61 /* Pods-Santander-Test-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 064B8C62456DB7AEFF1AEFF7FC9E39F7 /* Pods-Santander-Test-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D0D3B6F6481841FB0B0DC61653217179 /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E3FF502E57806EA0CD9081AD93C5AA /* Response.swift */; }; - D348D88FE7939869DE08BC623976B321 /* Moya-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 77583ECA15C6CAB4141C36236B196E78 /* Moya-dummy.m */; }; - D3FA0AA634AAEA99AB3FABC36BB4958C /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35C50835FBA86353F949308EED6F612A /* SessionManager.swift */; }; - DD90258D5667ACC775417DE0E6EE6E77 /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 094C690491DDA461C923518CF2F7703A /* Result.framework */; }; - DE6AC2459484032563903F1BFCCD3756 /* MoyaProvider+Defaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26078909F2D94F4A9D407B76F68C22D7 /* MoyaProvider+Defaults.swift */; }; + B642F75A16A71ED991DB8A9DA65AD439 /* ValidationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E72243528290D9091E0F2782ACB54AA /* ValidationType.swift */; }; + B6F6E4CC26451E91B59FAE0F6841DC1F /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EF5700B4CA96AFF0E89179913827474F /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C5A49CAAB41E281C266C192EADBE4EB7 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F26884CBE8F502A41B24162275097927 /* Alamofire.framework */; }; + CD321D15156EF51F506D6183152B0E1C /* MoyaProvider+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2405127CFC10844C2214102CD81A71A /* MoyaProvider+Internal.swift */; }; + D0D3B6F6481841FB0B0DC61653217179 /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = C59D060A0AC9BFD85C57BEDE9E41535B /* Response.swift */; }; + D348D88FE7939869DE08BC623976B321 /* Moya-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E985D4200744BE935D54EA3E805D95B0 /* Moya-dummy.m */; }; + D3FA0AA634AAEA99AB3FABC36BB4958C /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66373CEDBE2C80C70261A44D51E2EE7C /* SessionManager.swift */; }; + DD90258D5667ACC775417DE0E6EE6E77 /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56EC88463798F381C1362F442A5F6344 /* Result.framework */; }; + DE6AC2459484032563903F1BFCCD3756 /* MoyaProvider+Defaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03798F0FA18F0BBEC61230CC457FAF49 /* MoyaProvider+Defaults.swift */; }; E15EA05765812FBDA4F4428F7B6BBF6D /* Pods-Santander-TestUITests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CD5133133E24C110EF3769A9D93DE159 /* Pods-Santander-TestUITests-dummy.m */; }; - E7E895502A83EDA1534DC002A0267D8D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F070EA949AE56B80487099F22C5125E /* Foundation.framework */; }; - EB0DD8CEA1A69867A30267439C970440 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EDA62D55E9A520A3E5A1A50FECF1DCC /* Result.swift */; }; - EB65CF8FE56C314DBAF088FE713C9F88 /* MoyaProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = A04B902333768EF9878D6EF41FD96FFA /* MoyaProvider.swift */; }; - EDE7F1185C286E7634602E7AF01CBE04 /* Pods-Santander-Test-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D9FAA9914E2184A41D32A3A311B1860 /* Pods-Santander-Test-dummy.m */; }; - F44AA7A6E15EFE1927FC41B447D6EFD1 /* Cancellable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6FA33B0130EF206B07F85FCD0CBE29D /* Cancellable.swift */; }; - FF38A3D897A7C4228CAA5CCA71401376 /* MoyaError.swift in Sources */ = {isa = PBXBuildFile; fileRef = A1FEB55905E4C9EC68E287055B7B6770 /* MoyaError.swift */; }; + E7E895502A83EDA1534DC002A0267D8D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2FE98814E15F069042B678A3EE8685C /* Foundation.framework */; }; + EB0DD8CEA1A69867A30267439C970440 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7565D4AE04C04525F3D6A862D0116425 /* Result.swift */; }; + EB65CF8FE56C314DBAF088FE713C9F88 /* MoyaProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A1917AE113EF5496A60FE2DA197E28D /* MoyaProvider.swift */; }; + EFFAD40E8E19B64A6701310100E72542 /* StatusAlertUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7189AED5D97D2B5DAADDD65365E424BC /* StatusAlertUtils.swift */; }; + F2F9E70CF14ECF15A479250991A518DC /* Pods-Santander-Test-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D9FAA9914E2184A41D32A3A311B1860 /* Pods-Santander-Test-dummy.m */; }; + F44AA7A6E15EFE1927FC41B447D6EFD1 /* Cancellable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5445F781C7B97D42CF31E6F5E776C1CB /* Cancellable.swift */; }; + F7F92ADDC5123E31219649726E8321F8 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 018A446AF7E1F701B12CBBEBA9469CDC /* UIKit.framework */; }; + FA03759417E17EE209F5153FB97A754E /* StatusAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AD0798D238BA2980CC2DE849B7C1CE9 /* StatusAlert.swift */; }; + FF38A3D897A7C4228CAA5CCA71401376 /* MoyaError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B63B38C4D1FA05B1CA2FF1D89A95AC5C /* MoyaError.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 163B53CD54DFAC2FB432B35D33A310C1 /* PBXContainerItemProxy */ = { + 15FF1ADD8B83D122003AE92A6C1BEFA5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3383968E74B5371B20BB519B170DC7FD; + remoteInfo = Alamofire; + }; + 3CE3AC40ED75ECFA3839320C0C1C8AB3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; @@ -87,13 +102,6 @@ remoteGlobalIDString = 4B0183450F95394DC0C49E326A20B42D; remoteInfo = Result; }; - 79691DEC924B1B4175DE0ABFDBD77664 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 3383968E74B5371B20BB519B170DC7FD; - remoteInfo = Alamofire; - }; 89B7C1F59BE279B9AC2C2AEA832F837B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; @@ -105,122 +113,141 @@ isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = EC79B224898B261BF083C0F8FD11ADD1; + remoteGlobalIDString = AF9E2E73F71D7D9C2DA38E0922DEFA17; remoteInfo = "Pods-Santander-Test"; }; BE2FE96C842D970D743B817C3C29C800 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = EC79B224898B261BF083C0F8FD11ADD1; + remoteGlobalIDString = AF9E2E73F71D7D9C2DA38E0922DEFA17; remoteInfo = "Pods-Santander-Test"; }; - C85CD4070663BDAECC082A8976AC210F /* PBXContainerItemProxy */ = { + D9479B65D45E6B1213C3ABED87FB5B34 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4B0183450F95394DC0C49E326A20B42D; remoteInfo = Result; }; + E8D8E0442913BC3BFF8DB6BDA25462DE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = E7825F7E90CAC8AA4AC3F185016B5350; + remoteInfo = StatusAlert; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 01B1EFA88DFF17128594F756F276848B /* Moya-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Moya-Info.plist"; sourceTree = ""; }; + 018A446AF7E1F701B12CBBEBA9469CDC /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; 01B4720D4F3A72FEF3A1525F6D268E7A /* Pods-Santander-Test-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Santander-Test-frameworks.sh"; sourceTree = ""; }; - 0309512180EFC6494644C07CE11E5C35 /* Task.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Task.swift; path = Sources/Moya/Task.swift; sourceTree = ""; }; - 0548D5C388EF37983AE0E364CA62733C /* ResultProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResultProtocol.swift; path = Result/ResultProtocol.swift; sourceTree = ""; }; + 02E9CB3DFB8C8D5D17E731A31F2D423E /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; + 03798F0FA18F0BBEC61230CC457FAF49 /* MoyaProvider+Defaults.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "MoyaProvider+Defaults.swift"; path = "Sources/Moya/MoyaProvider+Defaults.swift"; sourceTree = ""; }; + 041DFCA15BC44B6F4EEC21B37F591AED /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; 05E349DAE1260294B909EE4EF74E1CEE /* Pods-Santander-TestTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Santander-TestTests-dummy.m"; sourceTree = ""; }; - 063A17B847BD9121B4BD72D2C51FD499 /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; 064B8C62456DB7AEFF1AEFF7FC9E39F7 /* Pods-Santander-Test-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Santander-Test-umbrella.h"; sourceTree = ""; }; + 06684328EA211B5D771E7AB5A841C507 /* StatusAlert-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "StatusAlert-umbrella.h"; sourceTree = ""; }; 08A81152EC75BCA30190A6265734A2E9 /* Pods-Santander-Test-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Santander-Test-acknowledgements.markdown"; sourceTree = ""; }; - 094C690491DDA461C923518CF2F7703A /* Result.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Result.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0D065F57EE7B99663EBCAC6A38ED3CDB /* Moya.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Moya.xcconfig; sourceTree = ""; }; - 0EF0C3E50605E3094E74A8DF1CD06F4D /* Plugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Plugin.swift; path = Sources/Moya/Plugin.swift; sourceTree = ""; }; - 0EF857F359FEA09F5997368B821B525A /* Image.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Image.swift; path = Sources/Moya/Image.swift; sourceTree = ""; }; + 0A5DA517BB440420D8090BCF9736AB37 /* Result.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Result.framework; path = Result.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 0F2656EE812F18B6B610A2568FCC4561 /* Moya-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Moya-umbrella.h"; sourceTree = ""; }; 1112BA5594638444A8463D9E6BD25F8C /* Pods-Santander-Test.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-Test.debug.xcconfig"; sourceTree = ""; }; 1410754A2D8AEF29CBAD3CF4DC4714BB /* Pods-Santander-TestUITests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Santander-TestUITests-umbrella.h"; sourceTree = ""; }; + 1A1917AE113EF5496A60FE2DA197E28D /* MoyaProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MoyaProvider.swift; path = Sources/Moya/MoyaProvider.swift; sourceTree = ""; }; + 1E4E9B464796BCD50D5349CD626FB121 /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; 1FA9ACAB0572FE18DB0EFC4D0D489C7B /* Pods-Santander-TestTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Santander-TestTests-acknowledgements.markdown"; sourceTree = ""; }; - 26078909F2D94F4A9D407B76F68C22D7 /* MoyaProvider+Defaults.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "MoyaProvider+Defaults.swift"; path = "Sources/Moya/MoyaProvider+Defaults.swift"; sourceTree = ""; }; + 215E69460404285C2FEA0E9CD156C946 /* TaskDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskDelegate.swift; path = Source/TaskDelegate.swift; sourceTree = ""; }; 27E2BB89559B46B7D51C7E161F1DE20E /* Pods-Santander-TestUITests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-TestUITests-Info.plist"; sourceTree = ""; }; - 2D018F4EEA54F3999302E6B4D7566BA0 /* MultiTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultiTarget.swift; path = Sources/Moya/MultiTarget.swift; sourceTree = ""; }; - 2D177E600FF1C01CD066F40D6382D326 /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; - 2EDC3E1721E03EEA29977435C1047D55 /* Result.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Result.modulemap; sourceTree = ""; }; + 2ABF1291D81C64F7EEF0EFD5B780A8EF /* ResultProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResultProtocol.swift; path = Result/ResultProtocol.swift; sourceTree = ""; }; + 2B2BBA89A3A36F91AC268B77D109B9CB /* Pods_Santander_Test.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_Test.framework; path = "Pods-Santander-Test.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 2E22C7F50B502391ECADE49470259B11 /* AnyEncodable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyEncodable.swift; path = Sources/Moya/AnyEncodable.swift; sourceTree = ""; }; + 31387928AB135818364761E0A8732638 /* MultiTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultiTarget.swift; path = Sources/Moya/MultiTarget.swift; sourceTree = ""; }; 3177B689266F9D9900310F56859F5DB2 /* Pods-Santander-TestTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Santander-TestTests.modulemap"; sourceTree = ""; }; - 3183975AF49A75134AA84F96368196A0 /* Pods_Santander_TestUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_TestUITests.framework; path = "Pods-Santander-TestUITests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; 322053D9E9993C774F41A2AA6CB500A7 /* Pods-Santander-Test-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-Test-acknowledgements.plist"; sourceTree = ""; }; + 3384A51D237BE9FFE5CC9FD8501267CA /* NoError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoError.swift; path = Result/NoError.swift; sourceTree = ""; }; + 341BA3C9801D06C4825B9BF0766C03A6 /* Result-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Result-Info.plist"; sourceTree = ""; }; 34718F3B9548C70AF0984731DDCA7580 /* Pods-Santander-TestUITests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Santander-TestUITests-acknowledgements.markdown"; sourceTree = ""; }; - 35C50835FBA86353F949308EED6F612A /* SessionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionManager.swift; path = Source/SessionManager.swift; sourceTree = ""; }; - 36ABAA6328733C1E19C00313744E886D /* CredentialsPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CredentialsPlugin.swift; path = Sources/Moya/Plugins/CredentialsPlugin.swift; sourceTree = ""; }; - 36F1F488961C8E5E299238A153EA2E47 /* Result-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Result-dummy.m"; sourceTree = ""; }; - 38C8CC6AC0D8831E86EB702019DD876B /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = ""; }; - 39750B61804AC062742A24119EC2E975 /* Result.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Result.framework; path = Result.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 3DFCCA5612D471096D3E6CB06E11A8A1 /* NoError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoError.swift; path = Result/NoError.swift; sourceTree = ""; }; - 3F070EA949AE56B80487099F22C5125E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 410C0B1C7DC9F546D2179AB1104602FA /* TaskDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskDelegate.swift; path = Source/TaskDelegate.swift; sourceTree = ""; }; - 4218171677FF5B70A4A3C9255B97334B /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; - 486423FBF4F6D69923EA68087B40145D /* Moya-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Moya-umbrella.h"; sourceTree = ""; }; - 4B573C06FE7D70CAA2DC1FBD76A3ACA4 /* AccessTokenPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AccessTokenPlugin.swift; path = Sources/Moya/Plugins/AccessTokenPlugin.swift; sourceTree = ""; }; - 4EDA62D55E9A520A3E5A1A50FECF1DCC /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = ""; }; + 3AD0798D238BA2980CC2DE849B7C1CE9 /* StatusAlert.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StatusAlert.swift; path = Sources/StatusAlert/StatusAlert.swift; sourceTree = ""; }; + 403650A016ACB4048C5790E80A71B849 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Result/Result.swift; sourceTree = ""; }; + 41CE2641BA73ABFCE074E95753CA6853 /* Result.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Result.modulemap; sourceTree = ""; }; 500A039A12C1D4FC4DD1BA43A9523E91 /* Pods-Santander-Test.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-Test.release.xcconfig"; sourceTree = ""; }; - 5C07BF22DCF851C6D706E00B0A42FB20 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 51857ED069DA11590B3AF6CA029787C2 /* Result-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-umbrella.h"; sourceTree = ""; }; + 52F03B889291C2EBE1F0144FABCFFFB6 /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Alamofire.modulemap; sourceTree = ""; }; + 5445F781C7B97D42CF31E6F5E776C1CB /* Cancellable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cancellable.swift; path = Sources/Moya/Cancellable.swift; sourceTree = ""; }; + 56EC88463798F381C1362F442A5F6344 /* Result.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Result.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5AE465C48526532EF9AA380B5F26A718 /* Alamofire.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.xcconfig; sourceTree = ""; }; + 5D0566616612A2B84A146B0E94BE1CCD /* StatusAlert.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = StatusAlert.framework; path = StatusAlert.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 5D9FAA9914E2184A41D32A3A311B1860 /* Pods-Santander-Test-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Santander-Test-dummy.m"; sourceTree = ""; }; 5E1CF47F8BD0FE48ABCF46917BFDB639 /* Pods-Santander-Test-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-Test-Info.plist"; sourceTree = ""; }; + 5ECC735BCFE0C65F6F2FDB25B47CA298 /* StatusAlert-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "StatusAlert-Info.plist"; sourceTree = ""; }; 6009D670E92930F3D826B7B232BAE2DE /* Pods-Santander-TestTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-TestTests.debug.xcconfig"; sourceTree = ""; }; - 62EB5B7B963B8561D3E9D9EC8BBF5D04 /* Alamofire.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.xcconfig; sourceTree = ""; }; 638AF6E4AD3D6CF6AED6C2F601C4A809 /* Pods-Santander-TestTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Santander-TestTests-umbrella.h"; sourceTree = ""; }; - 658F2480F5891FAA6FA5A66331A2946F /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; - 6A2ED6F7B3CFA4F255298631A58C1F07 /* MoyaProvider+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "MoyaProvider+Internal.swift"; path = "Sources/Moya/MoyaProvider+Internal.swift"; sourceTree = ""; }; - 6DAF1A64F92069C3B152877FD5A6AED4 /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = ""; }; - 70690E04D4EB2687B1B7ED9F44E774DB /* Pods_Santander_TestTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_TestTests.framework; path = "Pods-Santander-TestTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 66373CEDBE2C80C70261A44D51E2EE7C /* SessionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionManager.swift; path = Source/SessionManager.swift; sourceTree = ""; }; + 670D3F3E1C0779928EC137618EFDF484 /* CredentialsPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CredentialsPlugin.swift; path = Sources/Moya/Plugins/CredentialsPlugin.swift; sourceTree = ""; }; + 695972AC67A0A3A83751D985BAEA7877 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; + 6971CC9434804FA19AF339E8EAC67903 /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; + 6A705AAAF2813072CE980B9A231599B5 /* Task.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Task.swift; path = Sources/Moya/Task.swift; sourceTree = ""; }; + 6CFA6FD91CCF5980C630869D8F179163 /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; + 6E72243528290D9091E0F2782ACB54AA /* ValidationType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ValidationType.swift; path = Sources/Moya/ValidationType.swift; sourceTree = ""; }; + 711FCD416785CCE9E58692FF9D272D09 /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = ""; }; + 7189AED5D97D2B5DAADDD65365E424BC /* StatusAlertUtils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StatusAlertUtils.swift; path = Sources/StatusAlert/StatusAlertUtils.swift; sourceTree = ""; }; 72E40C3B6E66E684514A3B0403D07BFE /* Pods-Santander-TestUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-TestUITests.debug.xcconfig"; sourceTree = ""; }; - 77583ECA15C6CAB4141C36236B196E78 /* Moya-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Moya-dummy.m"; sourceTree = ""; }; + 746201A0470CBCE1AB0A40EEB1F47944 /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; + 7565D4AE04C04525F3D6A862D0116425 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = ""; }; + 7567C0996E1A79C4872913A57E36DAEC /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Alamofire.framework; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 79C05AF5619EAF23242D588EC29C756E /* Result-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-prefix.pch"; sourceTree = ""; }; 7A8D526CFB9CE5AE19261B6D3A1AA350 /* Pods-Santander-TestUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-TestUITests.release.xcconfig"; sourceTree = ""; }; - 7B08ADF1DB9793E50DCFCDA34BC8F9D0 /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = ""; }; - 7BB3C1B4EC8DE23ACC831EB8007542F9 /* Result-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-umbrella.h"; sourceTree = ""; }; - 81F7E9A992BF8B6ABEE7FA99C9C7C6B9 /* Pods_Santander_Test.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_Test.framework; path = "Pods-Santander-Test.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 84502154C8C2AF78A05E640DBD4C988B /* Moya+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Moya+Alamofire.swift"; path = "Sources/Moya/Moya+Alamofire.swift"; sourceTree = ""; }; - 885894C091BBD2FEAF547C609ED1328E /* Result-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Result-Info.plist"; sourceTree = ""; }; - 89241B748558333716F95585985625E5 /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; - 892C053581140EDB2B3CC3F6572DA00E /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; - 8FB9751B9ED0EB30483A3B266FDB6D9B /* Result.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Result.xcconfig; sourceTree = ""; }; - 927E8C9E476EFC2CF905DE1750559D44 /* Moya.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Moya.modulemap; sourceTree = ""; }; - 94191699BE232A8DBDD811B0AD026417 /* NetworkActivityPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkActivityPlugin.swift; path = Sources/Moya/Plugins/NetworkActivityPlugin.swift; sourceTree = ""; }; - 96E9C4734FBA7EA2A9194AF8501C1F24 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Result/Result.swift; sourceTree = ""; }; - 9BF25C43C4334FB13BA73CE31CFA0217 /* Alamofire-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Alamofire-Info.plist"; sourceTree = ""; }; + 8A939ADC52D61F5D4233D49975569DC2 /* Moya.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Moya.framework; path = Moya.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8E44758592C3E3423268131941D91178 /* NetworkActivityPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkActivityPlugin.swift; path = Sources/Moya/Plugins/NetworkActivityPlugin.swift; sourceTree = ""; }; + 8F4FC7A87827AE5D69595C8E96E333C4 /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = ""; }; + 8F70CF046CF3D592CE89C10124AB457B /* StatusAlert.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = StatusAlert.xcconfig; sourceTree = ""; }; + 8FAFBAB47BD5449E03EFF699CF40EF41 /* Result.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Result.xcconfig; sourceTree = ""; }; + 98DD7122F5F8136968514F2B2147C2E6 /* StatusAlert-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "StatusAlert-prefix.pch"; sourceTree = ""; }; + 98FD95FBAD88ACEBEAFF8FC99888D010 /* URLRequest+Encoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URLRequest+Encoding.swift"; path = "Sources/Moya/URLRequest+Encoding.swift"; sourceTree = ""; }; + 9933F8F0C2327F373DB96CBD9CF5FE80 /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9EEE0610AE937C5E5EDDFDD2EEA9593C /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; - A04B902333768EF9878D6EF41FD96FFA /* MoyaProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MoyaProvider.swift; path = Sources/Moya/MoyaProvider.swift; sourceTree = ""; }; - A1FEB55905E4C9EC68E287055B7B6770 /* MoyaError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MoyaError.swift; path = Sources/Moya/MoyaError.swift; sourceTree = ""; }; - A8F452560381530925578BAAEF84C2DA /* URLRequest+Encoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URLRequest+Encoding.swift"; path = "Sources/Moya/URLRequest+Encoding.swift"; sourceTree = ""; }; + 9E6D7D02F4BC3F8DAB4CEDDD1FF13A7C /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Sources/Moya/MultipartFormData.swift; sourceTree = ""; }; + 9FF6AD9627E2BF77BCE034BAF1AF6245 /* AnyError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyError.swift; path = Result/AnyError.swift; sourceTree = ""; }; + A065E3B4BC77C42EEAC2B82F95FB5F65 /* Alamofire-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Alamofire-Info.plist"; sourceTree = ""; }; AA2C7453145C44C27B00E2138508290D /* Pods-Santander-Test.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Santander-Test.modulemap"; sourceTree = ""; }; - AC4D93CA417BB41439493900DF4F16CA /* Moya.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Moya.framework; path = Moya.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - AF919C3CFB95289B6176B202B768B1D9 /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; - B2CAEA4F210F21FE93EF45818A02F417 /* ValidationType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ValidationType.swift; path = Sources/Moya/ValidationType.swift; sourceTree = ""; }; + AAC2ADF83F2ECE52A20435D7E068C12A /* Moya.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Moya.xcconfig; sourceTree = ""; }; + B083C244BDBF87F2A610FE414F85CE4D /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = ""; }; + B2405127CFC10844C2214102CD81A71A /* MoyaProvider+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "MoyaProvider+Internal.swift"; path = "Sources/Moya/MoyaProvider+Internal.swift"; sourceTree = ""; }; B2D49289BFD83B3A1582148FE3B1FBCD /* Pods-Santander-TestUITests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-TestUITests-acknowledgements.plist"; sourceTree = ""; }; - B2EA6444D261762B034016BA5A9C63E4 /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = ""; }; - B3E3FF502E57806EA0CD9081AD93C5AA /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Sources/Moya/Response.swift; sourceTree = ""; }; - B761F3BA75FD375B4E49B62F1C7DCB42 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; - BB5F1F3525DE8CA6DED495EAF37A77D3 /* TargetType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TargetType.swift; path = Sources/Moya/TargetType.swift; sourceTree = ""; }; - C073AD4D406BFA08E88B02A6BE1BE7DE /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; - C967B7CF391F94547B5C4EB9498FA43F /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Alamofire.framework; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - CD31EB276D310E0FE4448A6B050E0BC9 /* URL+Moya.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URL+Moya.swift"; path = "Sources/Moya/URL+Moya.swift"; sourceTree = ""; }; + B360F7406023D90A2E620DD58D48EE8B /* StatusAlert.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = StatusAlert.modulemap; sourceTree = ""; }; + B63B38C4D1FA05B1CA2FF1D89A95AC5C /* MoyaError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MoyaError.swift; path = Sources/Moya/MoyaError.swift; sourceTree = ""; }; + BB33841FDDFC475D2CF9A2EE4CD248A4 /* Pods_Santander_TestTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_TestTests.framework; path = "Pods-Santander-TestTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + BC0BF35535263907FE94B878D062B54B /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = ""; }; + BD91A68BD08B58E7058F7E33FAC03536 /* UIDevice+Platform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIDevice+Platform.swift"; path = "Sources/StatusAlert/Extensions/UIDevice+Platform.swift"; sourceTree = ""; }; + C0091D5AC8576E0F57446F173B73A7CE /* TargetType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TargetType.swift; path = Sources/Moya/TargetType.swift; sourceTree = ""; }; + C1A0C32E8AACAC7037EAD5CEE05FBAB9 /* URL+Moya.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URL+Moya.swift"; path = "Sources/Moya/URL+Moya.swift"; sourceTree = ""; }; + C31A0AB95333E2A936CA490831980FDE /* Moya-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Moya-Info.plist"; sourceTree = ""; }; + C59D060A0AC9BFD85C57BEDE9E41535B /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Sources/Moya/Response.swift; sourceTree = ""; }; CD5133133E24C110EF3769A9D93DE159 /* Pods-Santander-TestUITests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Santander-TestUITests-dummy.m"; sourceTree = ""; }; CD7B595FE6596FB636EB30207B2F428A /* Pods-Santander-TestUITests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Santander-TestUITests.modulemap"; sourceTree = ""; }; + CEDFD686274F7A4D466DA6A0CE6A715A /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; D02D3D21156144D3F4B936265D29A56A /* Pods-Santander-TestTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-TestTests-acknowledgements.plist"; sourceTree = ""; }; + D42F1ADC85D9FE06E135C5A4A4712179 /* Plugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Plugin.swift; path = Sources/Moya/Plugin.swift; sourceTree = ""; }; + D5AB81AB335ADC06D8DC47D5C1D8FB95 /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; + D8444584E0708FE54CD421CB67274B2B /* Timeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeline.swift; path = Source/Timeline.swift; sourceTree = ""; }; D90FE54F5D11CC69794D8BED8AA7D675 /* Pods-Santander-TestTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-TestTests-Info.plist"; sourceTree = ""; }; - D9D9C68F5756D1BE51CD956B435E241C /* NetworkLoggerPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkLoggerPlugin.swift; path = Sources/Moya/Plugins/NetworkLoggerPlugin.swift; sourceTree = ""; }; - DAFCFE4A4FFBF3F2142074DB7031979D /* Timeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeline.swift; path = Source/Timeline.swift; sourceTree = ""; }; - DEDB2C035D2F595C2996B53AE5EF7C79 /* Moya-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Moya-prefix.pch"; sourceTree = ""; }; - DFDF740459C685482B23F47F31D382D6 /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = ""; }; - E2F81118105D79994D3F729A6C2C1018 /* AnyEncodable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyEncodable.swift; path = Sources/Moya/AnyEncodable.swift; sourceTree = ""; }; - E6FA33B0130EF206B07F85FCD0CBE29D /* Cancellable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cancellable.swift; path = Sources/Moya/Cancellable.swift; sourceTree = ""; }; - EBB7F004FF9379B3A266E2FC3B227F28 /* Result-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-prefix.pch"; sourceTree = ""; }; + DCE8C03CEDF209A430926EBD3C5308C1 /* Endpoint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Endpoint.swift; path = Sources/Moya/Endpoint.swift; sourceTree = ""; }; + DF1E6DA75AC4524B84DD818556E56BA3 /* Moya+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Moya+Alamofire.swift"; path = "Sources/Moya/Moya+Alamofire.swift"; sourceTree = ""; }; + DF992F392B5A485B5865530E09BFF17C /* Moya-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Moya-prefix.pch"; sourceTree = ""; }; + E05209C726F688BF89F6CC4697B76B37 /* Image.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Image.swift; path = Sources/Moya/Image.swift; sourceTree = ""; }; + E32D8039C364144FF831E6B396D67593 /* Result-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Result-dummy.m"; sourceTree = ""; }; + E3B560EBC2DC39E67D0C3F614224CB0C /* Pods_Santander_TestUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_TestUITests.framework; path = "Pods-Santander-TestUITests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + E985D4200744BE935D54EA3E805D95B0 /* Moya-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Moya-dummy.m"; sourceTree = ""; }; + ED623F2AED96E8DF5C80D6AA1AB59A06 /* StatusAlert-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "StatusAlert-dummy.m"; sourceTree = ""; }; + EF5700B4CA96AFF0E89179913827474F /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; + F26884CBE8F502A41B24162275097927 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F2FE98814E15F069042B678A3EE8685C /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; F3708A4B829835EBC49B784D84968130 /* Pods-Santander-TestTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-TestTests.release.xcconfig"; sourceTree = ""; }; - F56A169BF4DF40A3C798570E61D0F96F /* Endpoint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Endpoint.swift; path = Sources/Moya/Endpoint.swift; sourceTree = ""; }; - F9C09A7737BFFC871C754ECFF5CC30BC /* AnyError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyError.swift; path = Result/AnyError.swift; sourceTree = ""; }; - FB346279C0D72AD75464E0E6D71E93D5 /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Alamofire.modulemap; sourceTree = ""; }; - FC5DA261F34E2228A8D9AC5907C65A54 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Sources/Moya/MultipartFormData.swift; sourceTree = ""; }; - FD44B3D15CD8661524A3CEB8348DCC12 /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = ""; }; + F55AF63A30960D087EF58DFA3EFF13D5 /* UIDevice+Blur.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIDevice+Blur.swift"; path = "Sources/StatusAlert/Extensions/UIDevice+Blur.swift"; sourceTree = ""; }; + F94C6D18B9F24B9EC996CDF2096FB755 /* NetworkLoggerPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkLoggerPlugin.swift; path = Sources/Moya/Plugins/NetworkLoggerPlugin.swift; sourceTree = ""; }; + F9DBC305EDC388A7FCDCA4FD959649A7 /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = ""; }; + FB251E41FD23ED1172249CE782C0E93E /* AccessTokenPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AccessTokenPlugin.swift; path = Sources/Moya/Plugins/AccessTokenPlugin.swift; sourceTree = ""; }; + FE773D1CF9A3802AEB73F498A87F8B3A /* Moya.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Moya.modulemap; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -234,6 +261,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 53820A82DC9706703735416AB2D5D06E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 80F474B2FF5EE52C1CDC55E0D6C95263 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 6ABC78A038A90F8F48964B9677372CB6 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -242,11 +277,12 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 74A5C977730E6B86F13C3B8BFCBF7937 /* Frameworks */ = { + 8A64A1880992A56FEA7132DC7AD842FC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 09EB6E0388043CD7B2B1089D446310E3 /* Foundation.framework in Frameworks */, + 27BD5F097E7B5BAAEF31769B2C201BA6 /* Foundation.framework in Frameworks */, + F7F92ADDC5123E31219649726E8321F8 /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -277,54 +313,63 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0C037B434DE905FE89E13428E2790CBF /* Core */ = { + 01510B87CCB5B0D56ACDB986A1ECBFC2 /* StatusAlert */ = { isa = PBXGroup; children = ( - 4B573C06FE7D70CAA2DC1FBD76A3ACA4 /* AccessTokenPlugin.swift */, - E2F81118105D79994D3F729A6C2C1018 /* AnyEncodable.swift */, - E6FA33B0130EF206B07F85FCD0CBE29D /* Cancellable.swift */, - 36ABAA6328733C1E19C00313744E886D /* CredentialsPlugin.swift */, - F56A169BF4DF40A3C798570E61D0F96F /* Endpoint.swift */, - 0EF857F359FEA09F5997368B821B525A /* Image.swift */, - 84502154C8C2AF78A05E640DBD4C988B /* Moya+Alamofire.swift */, - A1FEB55905E4C9EC68E287055B7B6770 /* MoyaError.swift */, - A04B902333768EF9878D6EF41FD96FFA /* MoyaProvider.swift */, - 26078909F2D94F4A9D407B76F68C22D7 /* MoyaProvider+Defaults.swift */, - 6A2ED6F7B3CFA4F255298631A58C1F07 /* MoyaProvider+Internal.swift */, - FC5DA261F34E2228A8D9AC5907C65A54 /* MultipartFormData.swift */, - 2D018F4EEA54F3999302E6B4D7566BA0 /* MultiTarget.swift */, - 94191699BE232A8DBDD811B0AD026417 /* NetworkActivityPlugin.swift */, - D9D9C68F5756D1BE51CD956B435E241C /* NetworkLoggerPlugin.swift */, - 0EF0C3E50605E3094E74A8DF1CD06F4D /* Plugin.swift */, - B3E3FF502E57806EA0CD9081AD93C5AA /* Response.swift */, - BB5F1F3525DE8CA6DED495EAF37A77D3 /* TargetType.swift */, - 0309512180EFC6494644C07CE11E5C35 /* Task.swift */, - CD31EB276D310E0FE4448A6B050E0BC9 /* URL+Moya.swift */, - A8F452560381530925578BAAEF84C2DA /* URLRequest+Encoding.swift */, - B2CAEA4F210F21FE93EF45818A02F417 /* ValidationType.swift */, + 3AD0798D238BA2980CC2DE849B7C1CE9 /* StatusAlert.swift */, + 7189AED5D97D2B5DAADDD65365E424BC /* StatusAlertUtils.swift */, + F55AF63A30960D087EF58DFA3EFF13D5 /* UIDevice+Blur.swift */, + BD91A68BD08B58E7058F7E33FAC03536 /* UIDevice+Platform.swift */, + C9C58EA62B221B85C7F627AFD460EFFA /* Support Files */, + ); + name = StatusAlert; + path = StatusAlert; + sourceTree = ""; + }; + 0B5C7C9DEC29CA20DCD3C273CD70A79B /* Alamofire */ = { + isa = PBXGroup; + children = ( + 8F4FC7A87827AE5D69595C8E96E333C4 /* AFError.swift */, + 6971CC9434804FA19AF339E8EAC67903 /* Alamofire.swift */, + 9933F8F0C2327F373DB96CBD9CF5FE80 /* DispatchQueue+Alamofire.swift */, + 695972AC67A0A3A83751D985BAEA7877 /* MultipartFormData.swift */, + B083C244BDBF87F2A610FE414F85CE4D /* NetworkReachabilityManager.swift */, + 711FCD416785CCE9E58692FF9D272D09 /* Notifications.swift */, + CEDFD686274F7A4D466DA6A0CE6A715A /* ParameterEncoding.swift */, + 1E4E9B464796BCD50D5349CD626FB121 /* Request.swift */, + 6CFA6FD91CCF5980C630869D8F179163 /* Response.swift */, + 746201A0470CBCE1AB0A40EEB1F47944 /* ResponseSerialization.swift */, + 7565D4AE04C04525F3D6A862D0116425 /* Result.swift */, + BC0BF35535263907FE94B878D062B54B /* ServerTrustPolicy.swift */, + F9DBC305EDC388A7FCDCA4FD959649A7 /* SessionDelegate.swift */, + 66373CEDBE2C80C70261A44D51E2EE7C /* SessionManager.swift */, + 215E69460404285C2FEA0E9CD156C946 /* TaskDelegate.swift */, + D8444584E0708FE54CD421CB67274B2B /* Timeline.swift */, + 041DFCA15BC44B6F4EEC21B37F591AED /* Validation.swift */, + 56F72EDA4A8DB9A2B9B203355921F70D /* Support Files */, ); - name = Core; + name = Alamofire; + path = Alamofire; sourceTree = ""; }; - 25F5F2148F4D226A2AD168A2856B6755 /* Frameworks */ = { + 124E529BFB7D1FF679F91DB8C8450E19 /* iOS */ = { isa = PBXGroup; children = ( - 5C07BF22DCF851C6D706E00B0A42FB20 /* Alamofire.framework */, - 094C690491DDA461C923518CF2F7703A /* Result.framework */, - AA3291B21ACE70ACB64FA7F190686A7D /* iOS */, + F2FE98814E15F069042B678A3EE8685C /* Foundation.framework */, + 018A446AF7E1F701B12CBBEBA9469CDC /* UIKit.framework */, ); - name = Frameworks; + name = iOS; sourceTree = ""; }; - 388B1446708CD51FD4B33C245380B246 /* Support Files */ = { + 4A0B7F05E5BD30E372292D9DF0C5D936 /* Support Files */ = { isa = PBXGroup; children = ( - 2EDC3E1721E03EEA29977435C1047D55 /* Result.modulemap */, - 8FB9751B9ED0EB30483A3B266FDB6D9B /* Result.xcconfig */, - 36F1F488961C8E5E299238A153EA2E47 /* Result-dummy.m */, - 885894C091BBD2FEAF547C609ED1328E /* Result-Info.plist */, - EBB7F004FF9379B3A266E2FC3B227F28 /* Result-prefix.pch */, - 7BB3C1B4EC8DE23ACC831EB8007542F9 /* Result-umbrella.h */, + 41CE2641BA73ABFCE074E95753CA6853 /* Result.modulemap */, + 8FAFBAB47BD5449E03EFF699CF40EF41 /* Result.xcconfig */, + E32D8039C364144FF831E6B396D67593 /* Result-dummy.m */, + 341BA3C9801D06C4825B9BF0766C03A6 /* Result-Info.plist */, + 79C05AF5619EAF23242D588EC29C756E /* Result-prefix.pch */, + 51857ED069DA11590B3AF6CA029787C2 /* Result-umbrella.h */, ); name = "Support Files"; path = "../Target Support Files/Result"; @@ -340,41 +385,56 @@ name = "Targets Support Files"; sourceTree = ""; }; - 6D1EB7BB79B11A7DC73A91082D034FE8 /* Pods */ = { + 56F72EDA4A8DB9A2B9B203355921F70D /* Support Files */ = { isa = PBXGroup; children = ( - C519E7B81C11DCC090CDF694CD4996A3 /* Alamofire */, - CE0FAE689FD54B1A39441C09DFB830DB /* Moya */, - 6FAC8A4841B0CB68EC3F528013743783 /* Result */, + 52F03B889291C2EBE1F0144FABCFFFB6 /* Alamofire.modulemap */, + 5AE465C48526532EF9AA380B5F26A718 /* Alamofire.xcconfig */, + 02E9CB3DFB8C8D5D17E731A31F2D423E /* Alamofire-dummy.m */, + A065E3B4BC77C42EEAC2B82F95FB5F65 /* Alamofire-Info.plist */, + D5AB81AB335ADC06D8DC47D5C1D8FB95 /* Alamofire-prefix.pch */, + EF5700B4CA96AFF0E89179913827474F /* Alamofire-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/Alamofire"; + sourceTree = ""; + }; + 5F68DE9E0BFF1037A1E98E88B1183757 /* Pods */ = { + isa = PBXGroup; + children = ( + 0B5C7C9DEC29CA20DCD3C273CD70A79B /* Alamofire */, + D0ADBAC21D269E0CB2919216209CFA26 /* Moya */, + 79C18D0F643DBBFCF46B73AE675E720E /* Result */, + 01510B87CCB5B0D56ACDB986A1ECBFC2 /* StatusAlert */, ); name = Pods; sourceTree = ""; }; - 6FAC8A4841B0CB68EC3F528013743783 /* Result */ = { + 61F9E19C85B51BDACAFD176979B8D9E8 /* Products */ = { isa = PBXGroup; children = ( - F9C09A7737BFFC871C754ECFF5CC30BC /* AnyError.swift */, - 3DFCCA5612D471096D3E6CB06E11A8A1 /* NoError.swift */, - 96E9C4734FBA7EA2A9194AF8501C1F24 /* Result.swift */, - 0548D5C388EF37983AE0E364CA62733C /* ResultProtocol.swift */, - 388B1446708CD51FD4B33C245380B246 /* Support Files */, + 7567C0996E1A79C4872913A57E36DAEC /* Alamofire.framework */, + 8A939ADC52D61F5D4233D49975569DC2 /* Moya.framework */, + 2B2BBA89A3A36F91AC268B77D109B9CB /* Pods_Santander_Test.framework */, + BB33841FDDFC475D2CF9A2EE4CD248A4 /* Pods_Santander_TestTests.framework */, + E3B560EBC2DC39E67D0C3F614224CB0C /* Pods_Santander_TestUITests.framework */, + 0A5DA517BB440420D8090BCF9736AB37 /* Result.framework */, + 5D0566616612A2B84A146B0E94BE1CCD /* StatusAlert.framework */, ); - name = Result; - path = Result; + name = Products; sourceTree = ""; }; - 834B34AB950E8E82423DC068B445BF2E /* Support Files */ = { + 79C18D0F643DBBFCF46B73AE675E720E /* Result */ = { isa = PBXGroup; children = ( - FB346279C0D72AD75464E0E6D71E93D5 /* Alamofire.modulemap */, - 62EB5B7B963B8561D3E9D9EC8BBF5D04 /* Alamofire.xcconfig */, - 063A17B847BD9121B4BD72D2C51FD499 /* Alamofire-dummy.m */, - 9BF25C43C4334FB13BA73CE31CFA0217 /* Alamofire-Info.plist */, - 89241B748558333716F95585985625E5 /* Alamofire-prefix.pch */, - 2D177E600FF1C01CD066F40D6382D326 /* Alamofire-umbrella.h */, + 9FF6AD9627E2BF77BCE034BAF1AF6245 /* AnyError.swift */, + 3384A51D237BE9FFE5CC9FD8501267CA /* NoError.swift */, + 403650A016ACB4048C5790E80A71B849 /* Result.swift */, + 2ABF1291D81C64F7EEF0EFD5B780A8EF /* ResultProtocol.swift */, + 4A0B7F05E5BD30E372292D9DF0C5D936 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/Alamofire"; + name = Result; + path = Result; sourceTree = ""; }; 863C6216E2FC106570AB6ECF1BDDC850 /* Pods-Santander-TestTests */ = { @@ -409,12 +469,14 @@ path = "Target Support Files/Pods-Santander-TestUITests"; sourceTree = ""; }; - AA3291B21ACE70ACB64FA7F190686A7D /* iOS */ = { + B0701A481DADE74D90494DCA1C43CDD2 /* Frameworks */ = { isa = PBXGroup; children = ( - 3F070EA949AE56B80487099F22C5125E /* Foundation.framework */, + F26884CBE8F502A41B24162275097927 /* Alamofire.framework */, + 56EC88463798F381C1362F442A5F6344 /* Result.framework */, + 124E529BFB7D1FF679F91DB8C8450E19 /* iOS */, ); - name = iOS; + name = Frameworks; sourceTree = ""; }; BA0EF3892F9082EED2C4A464C1FF099B /* Pods-Santander-Test */ = { @@ -434,78 +496,82 @@ path = "Target Support Files/Pods-Santander-Test"; sourceTree = ""; }; - C519E7B81C11DCC090CDF694CD4996A3 /* Alamofire */ = { + BFD10AD1BCF76520222E06C289A743F4 /* Support Files */ = { isa = PBXGroup; children = ( - 6DAF1A64F92069C3B152877FD5A6AED4 /* AFError.swift */, - 4218171677FF5B70A4A3C9255B97334B /* Alamofire.swift */, - 38C8CC6AC0D8831E86EB702019DD876B /* DispatchQueue+Alamofire.swift */, - B761F3BA75FD375B4E49B62F1C7DCB42 /* MultipartFormData.swift */, - FD44B3D15CD8661524A3CEB8348DCC12 /* NetworkReachabilityManager.swift */, - DFDF740459C685482B23F47F31D382D6 /* Notifications.swift */, - AF919C3CFB95289B6176B202B768B1D9 /* ParameterEncoding.swift */, - 9EEE0610AE937C5E5EDDFDD2EEA9593C /* Request.swift */, - 658F2480F5891FAA6FA5A66331A2946F /* Response.swift */, - 892C053581140EDB2B3CC3F6572DA00E /* ResponseSerialization.swift */, - 4EDA62D55E9A520A3E5A1A50FECF1DCC /* Result.swift */, - B2EA6444D261762B034016BA5A9C63E4 /* ServerTrustPolicy.swift */, - 7B08ADF1DB9793E50DCFCDA34BC8F9D0 /* SessionDelegate.swift */, - 35C50835FBA86353F949308EED6F612A /* SessionManager.swift */, - 410C0B1C7DC9F546D2179AB1104602FA /* TaskDelegate.swift */, - DAFCFE4A4FFBF3F2142074DB7031979D /* Timeline.swift */, - C073AD4D406BFA08E88B02A6BE1BE7DE /* Validation.swift */, - 834B34AB950E8E82423DC068B445BF2E /* Support Files */, + FE773D1CF9A3802AEB73F498A87F8B3A /* Moya.modulemap */, + AAC2ADF83F2ECE52A20435D7E068C12A /* Moya.xcconfig */, + E985D4200744BE935D54EA3E805D95B0 /* Moya-dummy.m */, + C31A0AB95333E2A936CA490831980FDE /* Moya-Info.plist */, + DF992F392B5A485B5865530E09BFF17C /* Moya-prefix.pch */, + 0F2656EE812F18B6B610A2568FCC4561 /* Moya-umbrella.h */, ); - name = Alamofire; - path = Alamofire; + name = "Support Files"; + path = "../Target Support Files/Moya"; sourceTree = ""; }; - C9474AC414BAF104D5CFD7357B467C05 /* Products */ = { + C36EA2E169A361B98F151E6B9D24FB35 /* Core */ = { isa = PBXGroup; children = ( - C967B7CF391F94547B5C4EB9498FA43F /* Alamofire.framework */, - AC4D93CA417BB41439493900DF4F16CA /* Moya.framework */, - 81F7E9A992BF8B6ABEE7FA99C9C7C6B9 /* Pods_Santander_Test.framework */, - 70690E04D4EB2687B1B7ED9F44E774DB /* Pods_Santander_TestTests.framework */, - 3183975AF49A75134AA84F96368196A0 /* Pods_Santander_TestUITests.framework */, - 39750B61804AC062742A24119EC2E975 /* Result.framework */, + FB251E41FD23ED1172249CE782C0E93E /* AccessTokenPlugin.swift */, + 2E22C7F50B502391ECADE49470259B11 /* AnyEncodable.swift */, + 5445F781C7B97D42CF31E6F5E776C1CB /* Cancellable.swift */, + 670D3F3E1C0779928EC137618EFDF484 /* CredentialsPlugin.swift */, + DCE8C03CEDF209A430926EBD3C5308C1 /* Endpoint.swift */, + E05209C726F688BF89F6CC4697B76B37 /* Image.swift */, + DF1E6DA75AC4524B84DD818556E56BA3 /* Moya+Alamofire.swift */, + B63B38C4D1FA05B1CA2FF1D89A95AC5C /* MoyaError.swift */, + 1A1917AE113EF5496A60FE2DA197E28D /* MoyaProvider.swift */, + 03798F0FA18F0BBEC61230CC457FAF49 /* MoyaProvider+Defaults.swift */, + B2405127CFC10844C2214102CD81A71A /* MoyaProvider+Internal.swift */, + 9E6D7D02F4BC3F8DAB4CEDDD1FF13A7C /* MultipartFormData.swift */, + 31387928AB135818364761E0A8732638 /* MultiTarget.swift */, + 8E44758592C3E3423268131941D91178 /* NetworkActivityPlugin.swift */, + F94C6D18B9F24B9EC996CDF2096FB755 /* NetworkLoggerPlugin.swift */, + D42F1ADC85D9FE06E135C5A4A4712179 /* Plugin.swift */, + C59D060A0AC9BFD85C57BEDE9E41535B /* Response.swift */, + C0091D5AC8576E0F57446F173B73A7CE /* TargetType.swift */, + 6A705AAAF2813072CE980B9A231599B5 /* Task.swift */, + C1A0C32E8AACAC7037EAD5CEE05FBAB9 /* URL+Moya.swift */, + 98FD95FBAD88ACEBEAFF8FC99888D010 /* URLRequest+Encoding.swift */, + 6E72243528290D9091E0F2782ACB54AA /* ValidationType.swift */, ); - name = Products; + name = Core; sourceTree = ""; }; - CE0FAE689FD54B1A39441C09DFB830DB /* Moya */ = { + C9C58EA62B221B85C7F627AFD460EFFA /* Support Files */ = { isa = PBXGroup; children = ( - 0C037B434DE905FE89E13428E2790CBF /* Core */, - D31B79837310DF134ACF84D3B297AB4A /* Support Files */, + B360F7406023D90A2E620DD58D48EE8B /* StatusAlert.modulemap */, + 8F70CF046CF3D592CE89C10124AB457B /* StatusAlert.xcconfig */, + ED623F2AED96E8DF5C80D6AA1AB59A06 /* StatusAlert-dummy.m */, + 5ECC735BCFE0C65F6F2FDB25B47CA298 /* StatusAlert-Info.plist */, + 98DD7122F5F8136968514F2B2147C2E6 /* StatusAlert-prefix.pch */, + 06684328EA211B5D771E7AB5A841C507 /* StatusAlert-umbrella.h */, ); - name = Moya; - path = Moya; + name = "Support Files"; + path = "../Target Support Files/StatusAlert"; sourceTree = ""; }; CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, - 25F5F2148F4D226A2AD168A2856B6755 /* Frameworks */, - 6D1EB7BB79B11A7DC73A91082D034FE8 /* Pods */, - C9474AC414BAF104D5CFD7357B467C05 /* Products */, + B0701A481DADE74D90494DCA1C43CDD2 /* Frameworks */, + 5F68DE9E0BFF1037A1E98E88B1183757 /* Pods */, + 61F9E19C85B51BDACAFD176979B8D9E8 /* Products */, 4E62EEA8F485FE09ADA73F5E5D814811 /* Targets Support Files */, ); sourceTree = ""; }; - D31B79837310DF134ACF84D3B297AB4A /* Support Files */ = { + D0ADBAC21D269E0CB2919216209CFA26 /* Moya */ = { isa = PBXGroup; children = ( - 927E8C9E476EFC2CF905DE1750559D44 /* Moya.modulemap */, - 0D065F57EE7B99663EBCAC6A38ED3CDB /* Moya.xcconfig */, - 77583ECA15C6CAB4141C36236B196E78 /* Moya-dummy.m */, - 01B1EFA88DFF17128594F756F276848B /* Moya-Info.plist */, - DEDB2C035D2F595C2996B53AE5EF7C79 /* Moya-prefix.pch */, - 486423FBF4F6D69923EA68087B40145D /* Moya-umbrella.h */, + C36EA2E169A361B98F151E6B9D24FB35 /* Core */, + BFD10AD1BCF76520222E06C289A743F4 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/Moya"; + name = Moya; + path = Moya; sourceTree = ""; }; /* End PBXGroup section */ @@ -527,27 +593,35 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 803D1C8389DC36A273C1596A2371062C /* Headers */ = { + 544E5D6D8E975718CA8C7CD740741BED /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 7BEFFCD672FD28B3D77927E392412FB9 /* Result-umbrella.h in Headers */, + 38D635EF452D8D233B0CB7FD5ECD152D /* Pods-Santander-Test-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 838FDCE6748E1A68E1C0C4C39D6C400A /* Headers */ = { + 77A1ABB989AAC2ABE969E96C663E70B9 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 6CA1BEBC175680F7D37A9C47917203B1 /* Pods-Santander-TestUITests-umbrella.h in Headers */, + 780E9C2B021FB29632D8D1933AECD020 /* StatusAlert-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 803D1C8389DC36A273C1596A2371062C /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 7BEFFCD672FD28B3D77927E392412FB9 /* Result-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - B5622D92125660D78569596541EAF63C /* Headers */ = { + 838FDCE6748E1A68E1C0C4C39D6C400A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - CF2583A28226176FEB4641223263EA61 /* Pods-Santander-Test-umbrella.h in Headers */, + 6CA1BEBC175680F7D37A9C47917203B1 /* Pods-Santander-TestUITests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -577,7 +651,7 @@ ); name = Alamofire; productName = Alamofire; - productReference = C967B7CF391F94547B5C4EB9498FA43F /* Alamofire.framework */; + productReference = 7567C0996E1A79C4872913A57E36DAEC /* Alamofire.framework */; productType = "com.apple.product-type.framework"; }; 4B0183450F95394DC0C49E326A20B42D /* Result */ = { @@ -595,7 +669,29 @@ ); name = Result; productName = Result; - productReference = 39750B61804AC062742A24119EC2E975 /* Result.framework */; + productReference = 0A5DA517BB440420D8090BCF9736AB37 /* Result.framework */; + productType = "com.apple.product-type.framework"; + }; + AF9E2E73F71D7D9C2DA38E0922DEFA17 /* Pods-Santander-Test */ = { + isa = PBXNativeTarget; + buildConfigurationList = 2D94F490FCFD4DD015FAAE1EFCB84967 /* Build configuration list for PBXNativeTarget "Pods-Santander-Test" */; + buildPhases = ( + 544E5D6D8E975718CA8C7CD740741BED /* Headers */, + F34B5DAE00F45D7A4D916F0DA646C93D /* Sources */, + 53820A82DC9706703735416AB2D5D06E /* Frameworks */, + 9C981D1265EB3E480936C8E48836A4C6 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 2467FC5A2BC9C7055B5D99734C16C903 /* PBXTargetDependency */, + 96E9789CB5D1EB88B8FA165B060F6BEC /* PBXTargetDependency */, + B2161C4E04044ECF29911B49AE3D80F0 /* PBXTargetDependency */, + 5240CE7C46D7044D491CA5A7DF8E1F66 /* PBXTargetDependency */, + ); + name = "Pods-Santander-Test"; + productName = "Pods-Santander-Test"; + productReference = 2B2BBA89A3A36F91AC268B77D109B9CB /* Pods_Santander_Test.framework */; productType = "com.apple.product-type.framework"; }; BAAB01D1BA82ABAE2B535579B77ED0CB /* Moya */ = { @@ -615,7 +711,7 @@ ); name = Moya; productName = Moya; - productReference = AC4D93CA417BB41439493900DF4F16CA /* Moya.framework */; + productReference = 8A939ADC52D61F5D4233D49975569DC2 /* Moya.framework */; productType = "com.apple.product-type.framework"; }; C0E89653A2AC6FA0A38278FEF9AF42FC /* Pods-Santander-TestUITests */ = { @@ -634,7 +730,7 @@ ); name = "Pods-Santander-TestUITests"; productName = "Pods-Santander-TestUITests"; - productReference = 3183975AF49A75134AA84F96368196A0 /* Pods_Santander_TestUITests.framework */; + productReference = E3B560EBC2DC39E67D0C3F614224CB0C /* Pods_Santander_TestUITests.framework */; productType = "com.apple.product-type.framework"; }; C27DC25A308B276373505823128CD197 /* Pods-Santander-TestTests */ = { @@ -653,28 +749,25 @@ ); name = "Pods-Santander-TestTests"; productName = "Pods-Santander-TestTests"; - productReference = 70690E04D4EB2687B1B7ED9F44E774DB /* Pods_Santander_TestTests.framework */; + productReference = BB33841FDDFC475D2CF9A2EE4CD248A4 /* Pods_Santander_TestTests.framework */; productType = "com.apple.product-type.framework"; }; - EC79B224898B261BF083C0F8FD11ADD1 /* Pods-Santander-Test */ = { + E7825F7E90CAC8AA4AC3F185016B5350 /* StatusAlert */ = { isa = PBXNativeTarget; - buildConfigurationList = BD2788D90C3347BEEDDD2FAAA3FFD8CC /* Build configuration list for PBXNativeTarget "Pods-Santander-Test" */; + buildConfigurationList = 0D92CF3BE4114B059E40B7B1E2683F81 /* Build configuration list for PBXNativeTarget "StatusAlert" */; buildPhases = ( - B5622D92125660D78569596541EAF63C /* Headers */, - FA84ED07CB3D71297E049DBAE2811EB5 /* Sources */, - 74A5C977730E6B86F13C3B8BFCBF7937 /* Frameworks */, - CC9C92EA25181C5FE53016E16FE09CE5 /* Resources */, + 77A1ABB989AAC2ABE969E96C663E70B9 /* Headers */, + 971DC12F69A7D8560E9A9E00EEF58C01 /* Sources */, + 8A64A1880992A56FEA7132DC7AD842FC /* Frameworks */, + 46E5D1D5E991B449435674972C860E9F /* Resources */, ); buildRules = ( ); dependencies = ( - C0F2CF2B64DB55F1756AB1025B6BEC73 /* PBXTargetDependency */, - 196A00474A67B95B827B45CB6F0EDFDA /* PBXTargetDependency */, - 6746A2B77FA4F23E4DE0AEA00B8B90FA /* PBXTargetDependency */, ); - name = "Pods-Santander-Test"; - productName = "Pods-Santander-Test"; - productReference = 81F7E9A992BF8B6ABEE7FA99C9C7C6B9 /* Pods_Santander_Test.framework */; + name = StatusAlert; + productName = StatusAlert; + productReference = 5D0566616612A2B84A146B0E94BE1CCD /* StatusAlert.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -694,16 +787,17 @@ en, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = C9474AC414BAF104D5CFD7357B467C05 /* Products */; + productRefGroup = 61F9E19C85B51BDACAFD176979B8D9E8 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 3383968E74B5371B20BB519B170DC7FD /* Alamofire */, BAAB01D1BA82ABAE2B535579B77ED0CB /* Moya */, - EC79B224898B261BF083C0F8FD11ADD1 /* Pods-Santander-Test */, + AF9E2E73F71D7D9C2DA38E0922DEFA17 /* Pods-Santander-Test */, C27DC25A308B276373505823128CD197 /* Pods-Santander-TestTests */, C0E89653A2AC6FA0A38278FEF9AF42FC /* Pods-Santander-TestUITests */, 4B0183450F95394DC0C49E326A20B42D /* Result */, + E7825F7E90CAC8AA4AC3F185016B5350 /* StatusAlert */, ); }; /* End PBXProject section */ @@ -723,6 +817,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 46E5D1D5E991B449435674972C860E9F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8A69BC4AB82D9DB217AD832599112A02 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -730,7 +831,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - CC9C92EA25181C5FE53016E16FE09CE5 /* Resources */ = { + 9C981D1265EB3E480936C8E48836A4C6 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -804,6 +905,18 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 971DC12F69A7D8560E9A9E00EEF58C01 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 10C05319610A79A154A5E0B27D29FB52 /* StatusAlert-dummy.m in Sources */, + FA03759417E17EE209F5153FB97A754E /* StatusAlert.swift in Sources */, + EFFAD40E8E19B64A6701310100E72542 /* StatusAlertUtils.swift in Sources */, + 3B5F45D58C19A4A296857187DA92B264 /* UIDevice+Blur.swift in Sources */, + 2E3B9CD1ECA93DF8CD00F582E747DFB1 /* UIDevice+Platform.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; A1C8B029F600160149A2404C342F6E50 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -837,11 +950,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - FA84ED07CB3D71297E049DBAE2811EB5 /* Sources */ = { + F34B5DAE00F45D7A4D916F0DA646C93D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - EDE7F1185C286E7634602E7AF01CBE04 /* Pods-Santander-Test-dummy.m in Sources */, + F2F9E70CF14ECF15A479250991A518DC /* Pods-Santander-Test-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -854,36 +967,42 @@ target = 3383968E74B5371B20BB519B170DC7FD /* Alamofire */; targetProxy = 89B7C1F59BE279B9AC2C2AEA832F837B /* PBXContainerItemProxy */; }; - 196A00474A67B95B827B45CB6F0EDFDA /* PBXTargetDependency */ = { + 2467FC5A2BC9C7055B5D99734C16C903 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Moya; - target = BAAB01D1BA82ABAE2B535579B77ED0CB /* Moya */; - targetProxy = 163B53CD54DFAC2FB432B35D33A310C1 /* PBXContainerItemProxy */; + name = Alamofire; + target = 3383968E74B5371B20BB519B170DC7FD /* Alamofire */; + targetProxy = 15FF1ADD8B83D122003AE92A6C1BEFA5 /* PBXContainerItemProxy */; }; 42DD3FD355AAB38C566F0BC087083F3F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "Pods-Santander-Test"; - target = EC79B224898B261BF083C0F8FD11ADD1 /* Pods-Santander-Test */; + target = AF9E2E73F71D7D9C2DA38E0922DEFA17 /* Pods-Santander-Test */; targetProxy = 969DCCA076A9B9D70065EA7CB5DB6A86 /* PBXContainerItemProxy */; }; - 6746A2B77FA4F23E4DE0AEA00B8B90FA /* PBXTargetDependency */ = { + 5240CE7C46D7044D491CA5A7DF8E1F66 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = StatusAlert; + target = E7825F7E90CAC8AA4AC3F185016B5350 /* StatusAlert */; + targetProxy = E8D8E0442913BC3BFF8DB6BDA25462DE /* PBXContainerItemProxy */; + }; + 96E9789CB5D1EB88B8FA165B060F6BEC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Moya; + target = BAAB01D1BA82ABAE2B535579B77ED0CB /* Moya */; + targetProxy = 3CE3AC40ED75ECFA3839320C0C1C8AB3 /* PBXContainerItemProxy */; + }; + B2161C4E04044ECF29911B49AE3D80F0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Result; target = 4B0183450F95394DC0C49E326A20B42D /* Result */; - targetProxy = C85CD4070663BDAECC082A8976AC210F /* PBXContainerItemProxy */; + targetProxy = D9479B65D45E6B1213C3ABED87FB5B34 /* PBXContainerItemProxy */; }; BF10BB821AEF1A2F5B1486B70CCE5CDD /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "Pods-Santander-Test"; - target = EC79B224898B261BF083C0F8FD11ADD1 /* Pods-Santander-Test */; + target = AF9E2E73F71D7D9C2DA38E0922DEFA17 /* Pods-Santander-Test */; targetProxy = BE2FE96C842D970D743B817C3C29C800 /* PBXContainerItemProxy */; }; - C0F2CF2B64DB55F1756AB1025B6BEC73 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Alamofire; - target = 3383968E74B5371B20BB519B170DC7FD /* Alamofire */; - targetProxy = 79691DEC924B1B4175DE0ABFDBD77664 /* PBXContainerItemProxy */; - }; E88EF6EBC52E2364458D88C21074D8D1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Result; @@ -895,7 +1014,7 @@ /* Begin XCBuildConfiguration section */ 0FB9D4D9E1E618B6D43E20521441EB25 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 62EB5B7B963B8561D3E9D9EC8BBF5D04 /* Alamofire.xcconfig */; + baseConfigurationReference = 5AE465C48526532EF9AA380B5F26A718 /* Alamofire.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -929,9 +1048,44 @@ }; name = Release; }; + 10B596E58618494E0D100BF6C82CD2BD /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8F70CF046CF3D592CE89C10124AB457B /* StatusAlert.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/StatusAlert/StatusAlert-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/StatusAlert/StatusAlert-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/StatusAlert/StatusAlert.modulemap"; + PRODUCT_MODULE_NAME = StatusAlert; + PRODUCT_NAME = StatusAlert; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; 16419DA1024545FD12B5A373477D6581 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 62EB5B7B963B8561D3E9D9EC8BBF5D04 /* Alamofire.xcconfig */; + baseConfigurationReference = 5AE465C48526532EF9AA380B5F26A718 /* Alamofire.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1003,9 +1157,9 @@ }; name = Release; }; - 3E7E7BED862F6CC840946052B78589E4 /* Debug */ = { + 38BF82D3D7AE0F83C675497CC69FEA8B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 72E40C3B6E66E684514A3B0403D07BFE /* Pods-Santander-TestUITests.debug.xcconfig */; + baseConfigurationReference = 500A039A12C1D4FC4DD1BA43A9523E91 /* Pods-Santander-Test.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; @@ -1018,7 +1172,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 12.1; LD_RUNPATH_SEARCH_PATHS = ( @@ -1027,7 +1181,7 @@ "@loader_path/Frameworks", ); MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -1036,14 +1190,15 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 5766B93710ABECA7EA3861D2C3F8B253 /* Debug */ = { + 3E7E7BED862F6CC840946052B78589E4 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1112BA5594638444A8463D9E6BD25F8C /* Pods-Santander-Test.debug.xcconfig */; + baseConfigurationReference = 72E40C3B6E66E684514A3B0403D07BFE /* Pods-Santander-TestUITests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; @@ -1056,7 +1211,7 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 12.1; LD_RUNPATH_SEARCH_PATHS = ( @@ -1065,7 +1220,7 @@ "@loader_path/Frameworks", ); MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.modulemap"; + MODULEMAP_FILE = "Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; @@ -1081,7 +1236,7 @@ }; 6C1A5B8955D03EDCFC5F5853168E6D3B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8FB9751B9ED0EB30483A3B266FDB6D9B /* Result.xcconfig */; + baseConfigurationReference = 8FAFBAB47BD5449E03EFF699CF40EF41 /* Result.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1153,12 +1308,10 @@ }; name = Release; }; - 7FA1AE79A76BE2186F4AC4D3410315BB /* Debug */ = { + 795910E5C8437F0AEF5613895692E4E6 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6009D670E92930F3D826B7B232BAE2DE /* Pods-Santander-TestTests.debug.xcconfig */; + baseConfigurationReference = 8F70CF046CF3D592CE89C10124AB457B /* StatusAlert.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1168,33 +1321,35 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/StatusAlert/StatusAlert-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/StatusAlert/StatusAlert-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.1; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/StatusAlert/StatusAlert.modulemap"; + PRODUCT_MODULE_NAME = StatusAlert; + PRODUCT_NAME = StatusAlert; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - 83573944FBFCC88348188CE22B707DAC /* Debug */ = { + 7FA1AE79A76BE2186F4AC4D3410315BB /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0D065F57EE7B99663EBCAC6A38ED3CDB /* Moya.xcconfig */; + baseConfigurationReference = 6009D670E92930F3D826B7B232BAE2DE /* Pods-Santander-TestTests.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1204,34 +1359,33 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Moya/Moya-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Moya/Moya-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/Moya/Moya.modulemap"; - PRODUCT_MODULE_NAME = Moya; - PRODUCT_NAME = Moya; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; name = Debug; }; - 8F53FFB0E0219B5CD9F961E85581D99E /* Release */ = { + 83573944FBFCC88348188CE22B707DAC /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 500A039A12C1D4FC4DD1BA43A9523E91 /* Pods-Santander-Test.release.xcconfig */; + baseConfigurationReference = AAC2ADF83F2ECE52A20435D7E068C12A /* Moya.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1241,29 +1395,27 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Moya/Moya-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Moya/Moya-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.1; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/Moya/Moya.modulemap"; + PRODUCT_MODULE_NAME = Moya; + PRODUCT_NAME = Moya; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; A105C1752A0A49B30ED621B71E226CDB /* Release */ = { isa = XCBuildConfiguration; @@ -1325,6 +1477,44 @@ }; name = Release; }; + B6A60C63D8A7F25286CDDF8CF79B1410 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1112BA5594638444A8463D9E6BD25F8C /* Pods-Santander-Test.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; C1391485F05B41BD35738A433056B7FA /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1391,7 +1581,7 @@ }; D383535440703B0108BB82C0AD47665A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8FB9751B9ED0EB30483A3B266FDB6D9B /* Result.xcconfig */; + baseConfigurationReference = 8FAFBAB47BD5449E03EFF699CF40EF41 /* Result.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1427,7 +1617,7 @@ }; DBC53AACE64A36F9A22795C6E178A55E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0D065F57EE7B99663EBCAC6A38ED3CDB /* Moya.xcconfig */; + baseConfigurationReference = AAC2ADF83F2ECE52A20435D7E068C12A /* Moya.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1464,6 +1654,24 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 0D92CF3BE4114B059E40B7B1E2683F81 /* Build configuration list for PBXNativeTarget "StatusAlert" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 10B596E58618494E0D100BF6C82CD2BD /* Debug */, + 795910E5C8437F0AEF5613895692E4E6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 2D94F490FCFD4DD015FAAE1EFCB84967 /* Build configuration list for PBXNativeTarget "Pods-Santander-Test" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B6A60C63D8A7F25286CDDF8CF79B1410 /* Debug */, + 38BF82D3D7AE0F83C675497CC69FEA8B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1509,15 +1717,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - BD2788D90C3347BEEDDD2FAAA3FFD8CC /* Build configuration list for PBXNativeTarget "Pods-Santander-Test" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 5766B93710ABECA7EA3861D2C3F8B253 /* Debug */, - 8F53FFB0E0219B5CD9F961E85581D99E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; E87124444A44B7DB55208E7FEC21D331 /* Build configuration list for PBXNativeTarget "Alamofire" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Alamofire.xcscheme b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Alamofire.xcscheme new file mode 100644 index 00000000..543652a2 --- /dev/null +++ b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Alamofire.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Moya.xcscheme b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Moya.xcscheme new file mode 100644 index 00000000..6b7112b5 --- /dev/null +++ b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Moya.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Pods-Santander-Test.xcscheme b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Pods-Santander-Test.xcscheme new file mode 100644 index 00000000..8eebfa4b --- /dev/null +++ b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Pods-Santander-Test.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Pods-Santander-TestTests.xcscheme b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Pods-Santander-TestTests.xcscheme new file mode 100644 index 00000000..d98644f8 --- /dev/null +++ b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Pods-Santander-TestTests.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Pods-Santander-TestUITests.xcscheme b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Pods-Santander-TestUITests.xcscheme new file mode 100644 index 00000000..76516b34 --- /dev/null +++ b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Pods-Santander-TestUITests.xcscheme @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Result.xcscheme b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Result.xcscheme new file mode 100644 index 00000000..dee10173 --- /dev/null +++ b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Result.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/StatusAlert.xcscheme b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/StatusAlert.xcscheme new file mode 100644 index 00000000..dad30e3e --- /dev/null +++ b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/StatusAlert.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist index 76050175..d98abbe5 100644 --- a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist @@ -3,39 +3,58 @@ SchemeUserState - - SuppressBuildableAutocreation - 3383968E74B5371B20BB519B170DC7FD + Alamofire.xcscheme + + isShown + + orderHint + 0 + + Moya.xcscheme - primary - + isShown + + orderHint + 1 - 4B0183450F95394DC0C49E326A20B42D + Pods-Santander-Test.xcscheme - primary - + isShown + + orderHint + 2 - BAAB01D1BA82ABAE2B535579B77ED0CB + Pods-Santander-TestTests.xcscheme - primary - + isShown + + orderHint + 3 - C0E89653A2AC6FA0A38278FEF9AF42FC + Pods-Santander-TestUITests.xcscheme - primary - + isShown + + orderHint + 4 - C27DC25A308B276373505823128CD197 + Result.xcscheme - primary - + isShown + + orderHint + 5 - EC79B224898B261BF083C0F8FD11ADD1 + StatusAlert.xcscheme - primary - + isShown + + orderHint + 6 + SuppressBuildableAutocreation + diff --git a/Santander-Test/Pods/StatusAlert/LICENSE b/Santander-Test/Pods/StatusAlert/LICENSE new file mode 100644 index 00000000..8d75e171 --- /dev/null +++ b/Santander-Test/Pods/StatusAlert/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2017-2018 LowKostKustomz + +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. diff --git a/Santander-Test/Pods/StatusAlert/README.md b/Santander-Test/Pods/StatusAlert/README.md new file mode 100644 index 00000000..bda7d230 --- /dev/null +++ b/Santander-Test/Pods/StatusAlert/README.md @@ -0,0 +1,204 @@ +![Author StatusAlert](https://assets.gitlab-static.net/ZEBSTER/FrameworksAssets/raw/master/StatusAlert/StatusAlertHeader.png) + +

+Swift +Objective-C +Wiki +License +Platform +

+

+Dependency managers +

+ +

+CocoaPods +Carthage +SwiftPackageManager +
+

+ + +

+ Features | + Installation | + Usage | + Customization +

+ +StatusAlert is an iOS framework that displays status alerts similar to Apple's system self-hiding alerts. It is well suited for notifying user without interrupting user flow in iOS-like way. + +It looks very similar to the alerts displayed in Podcasts, Apple Music and News apps. +![System StatusAlert](https://raw.githubusercontent.com/LowKostKustomz/StatusAlert/master/Assets/iPhonesWithSystemAlerts.png) + + +## Features + +* System-like look and feel +* Reduce transparency mode support +* VoiceOver support +* Safe Areas support +* Universal (iPhone & iPad) +* Objective-C support + +## Requirements + +* Xcode 9.0 or later +* iOS 9.0 or later +* Swift 3.2 or later + +## Installation + +### CocoaPods + +To install StatusAlert using [CocoaPods](http://cocoapods.org), add the following line to your `Podfile`: + +```ruby +pod 'StatusAlert', '~> 1.1.0' +``` + +### Carthage + +To install StatusAlert using [Carthage](https://github.com/Carthage/Carthage), add the following line to your `Cartfile`: + +```ruby +github "LowKostKustomz/StatusAlert" ~> 1.1.0 +``` + +### Swift Package Manager + +To install StatusAlert using [Swift Package Manager](https://github.com/apple/swift-package-manager) add this to your dependencies in a `Package.swift` file: + +```swift +dependencies: [ + .package(url: "https://github.com/LowKostKustomz/StatusAlert.git", .exact("1.1.0")) +] +``` + +### Manual installation + +You can also add this project: + * as git submodule + * simply download and copy source files to your project + +### Objective-C integration + +StatusAlert is fully compatible with Objective-C. To import it to your project just add the following line: + +```objectiveс +@import StatusAlert; +``` + +## Demo + +Demo application is included in the `StatusAlert` workspace. To run it clone the repo. + +![Demo StatusAlert](https://raw.githubusercontent.com/LowKostKustomz/StatusAlert/master/Assets/iPhonesWithStatusAlert.png) + +## Usage + +```swift +// Importing framework +import StatusAlert + +// Creating StatusAlert instance +let statusAlert = StatusAlert() +statusAlert.image = UIImage(named: "Some image name") +statusAlert.title = "StatusAlert title" +statusAlert.message = "Message to show beyond title" +statusAlert.canBePickedOrDismissed = isUserInteractionAllowed + +// Presenting created instance +statusAlert.showInKeyWindow() +``` +> All the alert components (`image`, `title`, `message`) are optional, but at least one should be present. Otherwise `show()` method will be ignored. +> +> **IMPORTANT** +> > The alert must be presented only from the main thread, otherwise application will crash with an appropriate error. + +## Customization + +> [Wiki](https://github.com/LowKostKustomz/StatusAlert/wiki) with more content and examples available + +### Different configurations + +Present alert with any set of image, title and message + +### Vertical position + +Display alert anywhere you want, either on the top, in the center or at the bottom of the view, and with any offset. + +### Appearance + +You can customize a single alert's appearance via the `StatusAlert`'s `appearance` property or for all alerts at once with `StatusAlert.Appearance`'s `common` property + +```swift +var titleFont: UIFont +var messageFont: UIFont +var tintColor: UIColor +var backgroundColor: UIColor +var blurStyle: UIBlurEffect.Style +``` + +### Dismissal + +Alert will hide itself after 2 seconds timeout. + +You can change alert showing duration by setting `alertShowingDuration` property. You also can set `canBePickedOrDismissed` property to `true`. After that you will be able to dismiss the alert manually by tapping it and delay dismissal by long tapping the alert. + +## Apps Using _StatusAlert_ + +[BitxfyAppStoreLink]: https://bitxfy.com + +

+ + + +
+ +Bitxfy + +

+ +[![BitxfyScreenShot](https://raw.githubusercontent.com/LowKostKustomz/StatusAlert/master/Assets/BitxfyStatusAlert.png)][BitxfyAppstoreLink] + +> Feel free to submit pull request if you are using this framework in your apps. + +## Author + +[FrameworksRepo]: https://github.com/LowKostKustomz/Frameworks + +[![Author ActionsList](https://assets.gitlab-static.net/ZEBSTER/FrameworksAssets/raw/master/StatusAlert/StatusAlertAuthor.png)][FrameworksRepo] + +

+https://twitter.com/LowKostKustomz +https://www.instagram.com/lowkostkustomz/ +https://stackoverflow.com/users/9076809/lowkostkustomz +https://www.linkedin.com/in/yehor-miroshnychenko +mierosh@gmail.com +https://github.com/LowKostKustomz/Frameworks +

+ +## License + +> The MIT License (MIT) +> +> Copyright (c) 2017-2018 LowKostKustomz +> +> 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. diff --git a/Santander-Test/Pods/StatusAlert/Sources/StatusAlert/Extensions/UIDevice+Blur.swift b/Santander-Test/Pods/StatusAlert/Sources/StatusAlert/Extensions/UIDevice+Blur.swift new file mode 100644 index 00000000..a770b569 --- /dev/null +++ b/Santander-Test/Pods/StatusAlert/Sources/StatusAlert/Extensions/UIDevice+Blur.swift @@ -0,0 +1,38 @@ +import UIKit + +extension UIDevice { + + /// If the device is able to display blur: + /// + /// - if operation system supports blur; + /// - if "Reduce transparency" mode is disabled; + /// - if device supports blur. + var isBlurAvailable: Bool { + guard operationSystemSupportsBlur, + !reduceTransparencyEnabled, + deviceSupportsBlur + else { + return false + } + + return true + } + + private var operationSystemSupportsBlur: Bool { + if #available(iOS 8.0, *) { + return true + } else { + return false + } + } + + private var reduceTransparencyEnabled: Bool { + return UIAccessibility.isReduceTransparencyEnabled + } + + private var deviceSupportsBlur: Bool { + return platform.isNewerThan(UIDevice.DevicePlatform.iPadModel.iPad3) + || platform.isNewerThan(UIDevice.DevicePlatform.iPodTouchModel.iPodTouch4) + || platform.isNewerThan(UIDevice.DevicePlatform.iPhoneModel.iPhone4) + } +} diff --git a/Santander-Test/Pods/StatusAlert/Sources/StatusAlert/Extensions/UIDevice+Platform.swift b/Santander-Test/Pods/StatusAlert/Sources/StatusAlert/Extensions/UIDevice+Platform.swift new file mode 100644 index 00000000..a8c80666 --- /dev/null +++ b/Santander-Test/Pods/StatusAlert/Sources/StatusAlert/Extensions/UIDevice+Platform.swift @@ -0,0 +1,190 @@ +import UIKit + +protocol ComparableDevice { + func isNewerThan(_ another: Self) -> Bool +} + +extension UIDevice { + enum DevicePlatform { + + case iPhone(model: iPhoneModel) + case iPad(model: iPadModel) + case iPodTouch(model: iPodTouchModel) + + /// Unknown devices + case other + /// Simulators + case simulator + + enum iPhoneModel: Decimal, ComparableDevice { + case iPhone2G = 1 + case iPhone3G = 10 + case iPhone3GS = 100 + case iPhone4 = 1000 + case iPhone4S = 10000 + + case iPhone5 = 100000 + case iPhone5c = 100000.1 + + case iPhone5S = 1000000 + + case iPhone6 = 10000000 + case iPhone6Plus = 10000000.1 + + case iPhone6S = 100000000 + case iPhone6SPlus = 100000000.1 + case iPhoneSE = 100000000.2 + + /// Newer iPhone + case anotherPhone = 1000000000 + + func isNewerThan(_ another: iPhoneModel) -> Bool { + return rawValue > another.rawValue + } + } + + enum iPodTouchModel: Decimal, ComparableDevice { + // iPod Touch + + case iPodTouch = 2 + case iPodTouch2 = 20 + case iPodTouch3 = 200 + case iPodTouch4 = 2000 + case iPodTouch5 = 20000 + case iPodTouch6 = 200000 + + /// Newer iPod + case anotherPod = 1000000001 + + func isNewerThan(_ another: iPodTouchModel) -> Bool { + return rawValue > another.rawValue + } + } + + enum iPadModel: Decimal, ComparableDevice { + // iPad + + case iPad = 30 + + case iPad2 = 300 + case iPadMini = 300.1 + + case iPad3 = 3000 + + /// Newer iPad + case anotherPad = 1000000002 + + func isNewerThan(_ another: iPadModel) -> Bool { + return rawValue > another.rawValue + } + } + + func isNewerThan(_ another: Device) -> Bool { + switch (self, another) { + + case (.iPhone(let model), let anotherPhone as iPhoneModel): + return model.isNewerThan(anotherPhone) + + case (.iPodTouch(let model), let anotherPod as iPodTouchModel): + return model.isNewerThan(anotherPod) + + case (.iPad(let model), let anotherPad as iPadModel): + return model.isNewerThan(anotherPad) + + default: + return false + + } + } + } + + private var platformString: String { + var sysinfo = utsname() + uname(&sysinfo) + let platform = String(bytes: Data(bytes: &sysinfo.machine, count: Int(_SYS_NAMELEN)), encoding: .ascii)!.trimmingCharacters(in: .controlCharacters) + return platform + } + + var platform: DevicePlatform { + switch platformString { + // iPhone + case "iPhone1,1": + return .iPhone(model: .iPhone2G) + case "iPhone1,2": + return .iPhone(model: .iPhone3G) + case "iPhone2,1": + return .iPhone(model: .iPhone3GS) + case "iPhone3,1", + "iPhone3,2", + "iPhone3,3": + return .iPhone(model: .iPhone4) + case "iPhone4,1": + return .iPhone(model: .iPhone4S) + case "iPhone5,1", + "iPhone5,2": + return .iPhone(model: .iPhone5) + case "iPhone5,3", + "iPhone5,4": + return .iPhone(model: .iPhone5c) + case "iPhone6,1", + "iPhone6,2": + return .iPhone(model: .iPhone5S) + case "iPhone7,1": + return .iPhone(model: .iPhone6Plus) + case "iPhone7,2": + return .iPhone(model: .iPhone6) + case "iPhone8,1": + return .iPhone(model: .iPhone6S) + case "iPhone8,2": + return .iPhone(model: .iPhone6SPlus) + case "iPhone8,4": + return .iPhone(model: .iPhoneSE) + // iPod + case "iPod1,1": + return .iPodTouch(model: .iPodTouch) + case "iPod2,1": + return .iPodTouch(model: .iPodTouch2) + case "iPod3,1": + return .iPodTouch(model: .iPodTouch3) + case "iPod4,1": + return .iPodTouch(model: .iPodTouch4) + case "iPod5,1": + return .iPodTouch(model: .iPodTouch5) + case "iPod7,1": + return .iPodTouch(model: .iPodTouch6) + // iPad + case "iPad1,1", + "iPad1,2": + return .iPad(model: .iPad) + case "iPad2,1", + "iPad2,2", + "iPad2,3", + "iPad2,4": + return .iPad(model: .iPad2) + case "iPad2,5", + "iPad2,6", + "iPad2,7": + return .iPad(model: .iPadMini) + case "iPad3,1", + "iPad3,2", + "iPad3,3": + return .iPad(model: .iPad3) + // Simulator + case "x86_64", + "i386": + return .simulator + // iAnother + default: + if platformString.contains("iPhone") { + return .iPhone(model: .anotherPhone) + } + if platformString.contains("iPad") { + return .iPad(model: .anotherPad) + } + if platformString.contains("iPod") { + return .iPodTouch(model: .anotherPod) + } + return .other + } + } +} diff --git a/Santander-Test/Pods/StatusAlert/Sources/StatusAlert/StatusAlert.swift b/Santander-Test/Pods/StatusAlert/Sources/StatusAlert/StatusAlert.swift new file mode 100644 index 00000000..091ac2fb --- /dev/null +++ b/Santander-Test/Pods/StatusAlert/Sources/StatusAlert/StatusAlert.swift @@ -0,0 +1,794 @@ +// +// StatusAlert +// Copyright © 2017-2018 Yegor Miroshnichenko. Licensed under the MIT license. +// + +import UIKit + +@objc public final class StatusAlert: UIView { + + // MARK: - Public fields - + + /// - Note: Do not change to save system look + /// - Note: Changes while showing will have no effect + @objc public var appearance: Appearance = Appearance.copyCommon() + + /// - Note: Do not change to save system look + /// - Note: Changes while showing will have no effect + @objc public var sizesAndDistances: SizesAndDistances = SizesAndDistances.copyCommon() + + /// Announced to VoiceOver when the alert gets presented + @objc public var accessibilityAnnouncement: String? = nil + + /// How long StatusAlert should be on screen. + /// + /// - Note: This time should include fade animation duration (which is `NavigationControllerHideShowBarDuration`) + /// - Note: Changes while showing will have no effect + @objc public var alertShowingDuration: TimeInterval = 2 + + /// Multiple presentation requests behavior + @objc public static var multiplePresentationsBehavior: MultiplePresentationsBehavior = .ignoreIfAlreadyPresenting + + /// @1x should be 90*90 by default + @objc public var image: UIImage? + + @objc public var title: String? + + @objc public var message: String? + + /// Determines whether `StatusAlert` can be picked or dismissed by tap + @objc public var canBePickedOrDismissed: Bool { + get { return self.contentView.isUserInteractionEnabled } + set { self.contentView.isUserInteractionEnabled = newValue } + } + + // MARK: - Private fields - + + /// Used to present only one `StatusAlert` at once if `multiplePresentationsBehavior` is `ignoreIfAlreadyPresenting` + /// or to dismiss currently presented alerts if `multiplePresentationsBehavior` is `dismissCurrentlyPresented` + private static var currentlyPresentedStatusAlerts: [StatusAlert] = [] + + private static var alertToPresent: StatusAlert? = nil + private static var dismissing: Bool { + return alertToPresent != nil + } + + private let defaultFadeAnimationDuration: TimeInterval = TimeInterval(NavigationControllerHideShowBarDuration) + private lazy var blurEffect: UIBlurEffect = { + return UIBlurEffect(style: self.appearance.blurStyle) + }() + + private let contentView: UIVisualEffectView = UIVisualEffectView() + private let contentStackView: UIStackView = UIStackView() + + private var imageView: UIImageView? = nil + private var titleLabel: UILabel? = nil + private var messageLabel: UILabel? = nil + + private var contentStackViewConstraints: [NSLayoutConstraint] = [] + private var reusableObjectsConstraints: [NSLayoutConstraint] = [] + + private var timer: Timer? + + /// Determines whether `StatusAlert` has at least one item to show + private var isContentEmpty: Bool { + return self.image == nil + && self.title == nil + && self.message == nil + } + + /// Determines whether blur is available + private var isBlurAvailable: Bool { + return UIDevice.current.isBlurAvailable + } + + private var pickGesture: UILongPressGestureRecognizer? + + // MARK: - Interaction methods + + @objc private func pick() { + guard self.canBePickedOrDismissed else { + return + } + if self.pickGesture?.state == .cancelled + || self.pickGesture?.state == .ended + || self.pickGesture?.state == .failed { + + self.dismiss(completion: nil) + } + } + + // MARK: - Initialization - + + @objc public override init(frame: CGRect) { + super.init(frame: frame) + + self.commonInit() + } + + required public init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + deinit { + self.enqueueReusableObjects() + } + + // MARK: - Show methods - + + /// Shows `StatusAlert` in the center of the `keyWindow` + /// - Note: must be called from the main thread only + @objc public func showInKeyWindow() { + + self.show() + } + + /// Shows `StatusAlert` in the center of `presenter` + /// + /// - Parameters: + /// - presenter: view present `StatusAlert` in + /// - Note: must be called from the main thread only + @objc(showInView:) + public func show(in presenter: UIView) { + + self.show(inPresenter: presenter) + } + + /// Shows `StatusAlert` in `keyWindow` + /// + /// - Parameters: + /// - verticalPosition: `StatusAlert` position in `keyWindow` + /// - Note: must be called from the main thread only + @objc(showWithVerticalPosition:) + public func show(withVerticalPosition verticalPosition: VerticalPosition) { + + self.show(with: verticalPosition, offset: 0) + } + + /// Shows `StatusAlert` in the center of `keyWindow` with `offset` + /// + /// - Parameters: + /// - offset: offset from center of `keyWindow` + /// - Note: must be called from the main thread only + @objc(showWithOffset:) + public func show(withOffset offset: CGFloat) { + + self.show(offset: offset) + } + + /// Shows `StatusAlert` in `presenter` + /// + /// - Parameters: + /// - presenter: view present `StatusAlert` in + /// - verticalPosition: `StatusAlert` position in `presenter` + /// - Note: must be called from the main thread only + @objc(showInView:withVerticalPosition:) + public func show( + in presenter: UIView, + withVerticalPosition verticalPosition: VerticalPosition + ) { + + self.show(inPresenter: presenter, with: verticalPosition) + } + + /// Shows `StatusAlert` in the center of `presenter` + /// + /// - Parameters: + /// - presenter: view present `StatusAlert` in + /// - offset: offset from center in `presenter` + /// - Note: must be called from the main thread only + @objc(showInView:withOffset:) + public func show( + in presenter: UIView, + withOffset offset: CGFloat + ) { + + self.show(inPresenter: presenter, offset: offset) + } + + /// Shows `StatusAlert` in `keyWindow` + /// + /// - Parameters: + /// - verticalPosition: `StatusAlert` position in `keyWindow` + /// - offset: offset for `verticalPosition` in `keyWindow` + /// - Note: must be called from the main thread only + @objc(showWithVerticalPosition:offset:) + public func show( + withVerticalPosition verticalPosition: VerticalPosition, + offset: CGFloat + ) { + + self.show(with: verticalPosition, offset: offset) + } + + /// Shows `StatusAlert` in `presenter` + /// + /// - Parameters: + /// - presenter: view present `StatusAlert` in + /// - verticalPosition: `StatusAlert` position in `presenter` + /// - offset: offset for `verticalPosition` in `presenter`. To use default offset see the same method but without offset parameter. + /// - Note: must be called from the main thread only + @objc(showInView:withVerticalPosition:offset:) + public func show( + in presenter: UIView, + withVerticalPosition verticalPosition: VerticalPosition, + offset: CGFloat + ) { + + self.show( + inPresenter: presenter, + with: verticalPosition, + offset: offset + ) + } + + // MARK: - Private methods - + + private func show( + inPresenter presenter: UIView = UIApplication.shared.keyWindow ?? UIView(), + with verticalPosition: VerticalPosition = .center, + offset: CGFloat? = nil + ) { + + self.assertIsMainThread() + guard !self.isContentEmpty else { return } + + self.prepareForPresentation { [weak self] in + self?.prepareContent() + self?.positionAlert( + inPresenter: presenter, + withVerticalPosition: verticalPosition, + offset: offset + ) + self?.setupContentViewBackground() + self?.observeReduceTransparencyStatus() + self?.performPresentation() + } + } + + private func commonInit() { + self.setupView() + self.setupContentView() + self.setupContentStackView() + + self.layoutViews() + + self.setupPickGestureRecognizer() + self.setupAccessibilityProperties() + } + + private func setupView() { + self.translatesAutoresizingMaskIntoConstraints = false + } + + private func setupContentView() { + if self.isBlurAvailable { + if #available(iOS 11, *) { + self.alpha = 0 + } else { + self.contentView.contentView.alpha = 0 + } + } else { + self.alpha = 0 + } + + self.contentView.clipsToBounds = true + self.contentView.layer.cornerRadius = self.sizesAndDistances.cornerRadius + } + + private func setupContentStackView() { + self.contentStackView.axis = .vertical + self.contentStackView.distribution = .fill + self.contentStackView.alignment = .center + self.contentStackView.spacing = 0 + } + + private func layoutViews() { + self.addSubview(self.contentView) + self.contentView.contentView.addSubview(self.contentStackView) + + self.contentView.translatesAutoresizingMaskIntoConstraints = false + self.contentView.leadingAnchor.constraint(equalTo: self.leadingAnchor).isActive = true + self.contentView.trailingAnchor.constraint(equalTo: self.trailingAnchor).isActive = true + self.contentView.topAnchor.constraint(equalTo: self.topAnchor).isActive = true + self.contentView.bottomAnchor.constraint(equalTo: self.bottomAnchor).isActive = true + + self.contentStackView.translatesAutoresizingMaskIntoConstraints = false + self.contentStackView.leftAnchor.constraint( + equalTo: self.contentView.leftAnchor, + constant: self.sizesAndDistances.stackViewSideSpace + ).isActive = true + self.contentStackView.rightAnchor.constraint( + equalTo: self.contentView.rightAnchor, + constant: -self.sizesAndDistances.stackViewSideSpace + ).isActive = true + self.contentStackView.bottomAnchor.constraint( + greaterThanOrEqualTo: self.contentView.bottomAnchor, + constant: -self.sizesAndDistances.minimumStackViewBottomSpace + ).isActive = true + self.contentStackView.bottomAnchor.constraint( + lessThanOrEqualTo: self.contentView.bottomAnchor + ).isActive = true + self.contentStackView.centerXAnchor.constraint( + equalTo: self.contentView.centerXAnchor + ).isActive = true + } + + private func setupPickGestureRecognizer() { + self.pickGesture = UILongPressGestureRecognizer(target: self, action: #selector(self.pick)) + if let gesture = self.pickGesture { + gesture.allowableMovement = CGFloat.greatestFiniteMagnitude + gesture.minimumPressDuration = 0 + gesture.cancelsTouchesInView = true + self.contentView.addGestureRecognizer(gesture) + } + } + + private func observeReduceTransparencyStatus() { + NotificationCenter.default.addObserver( + self, + selector: #selector(self.reduceTransparencyStatusDidChange), + name: AccessibilityReduceTransparencyStatusDidChangeNotificationName, + object: nil + ) + } + + private func setupAccessibilityProperties() { + self.isAccessibilityElement = false + self.accessibilityElementsHidden = true + self.accessibilityTraits = AccessibilityTraitNone + } + + private func resetView() { + self.deactivateConstraints(&self.contentStackViewConstraints) + + self.enqueueReusableObjects() + } + + private func enqueueReusableObjects() { + self.deactivateConstraints(&self.reusableObjectsConstraints) + if let imageView = self.imageView { + imageView.removeFromSuperview() + StatusAlert.reusableImageViewsManager.enqueueReusable(imageView) + self.imageView = nil + } + if let titleLabel = self.titleLabel { + titleLabel.removeFromSuperview() + StatusAlert.reusableLabelsManager.enqueueReusable(titleLabel) + self.titleLabel = nil + } + if let messageLabel = self.messageLabel { + messageLabel.removeFromSuperview() + StatusAlert.reusableLabelsManager.enqueueReusable(messageLabel) + self.messageLabel = nil + } + } + + private func deactivateConstraints(_ array: inout [NSLayoutConstraint]) { + NSLayoutConstraint.deactivate(array) + array = [] + } + + // MARK: Creation methods + + /// Must be called before the `StatusAlert` presenting + private func prepareContent() { + self.completeContentStackViewConstraints() + + self.imageView = self.createImageViewIfNeeded() + if let imageView = self.imageView { + let customSpace: CGFloat + + if self.title != nil && self.message != nil { + customSpace = self.sizesAndDistances.imageBottomSpace + } else if self.title == nil { + customSpace = self.sizesAndDistances.imageToMessageSpace + } else { + customSpace = self.sizesAndDistances.titleBottomSpace + } + + self.contentStackView.addArrangedSubview(imageView) + if #available(iOS 11.0, *) { + self.contentStackView.setCustomSpacing(customSpace, after: imageView) + } else if self.title != nil || self.message != nil { + let spaceView = self.createSpaceView(withHeight: customSpace) + self.contentStackView.addArrangedSubview(spaceView) + } + } + + self.titleLabel = self.createTitleLabelIfNeeded() + if let titleLabel = self.titleLabel { + self.contentStackView.addArrangedSubview(titleLabel) + if #available(iOS 11.0, *) { + self.contentStackView.setCustomSpacing(self.sizesAndDistances.titleBottomSpace, after: titleLabel) + } else if self.message != nil { + let spaceView = self.createSpaceView(withHeight: self.sizesAndDistances.titleBottomSpace) + self.contentStackView.addArrangedSubview(spaceView) + } + } + + self.messageLabel = self.createMessageLabelIfNeeded() + if let messageLabel = self.messageLabel { + self.contentStackView.addArrangedSubview(messageLabel) + } + + NSLayoutConstraint.activate(self.reusableObjectsConstraints) + } + + private func positionAlert( + inPresenter presenter: UIView, + withVerticalPosition verticalPosition: VerticalPosition, + offset: CGFloat? + ) { + + presenter.addSubview(self) + + self.centerXAnchor.constraint(equalTo: presenter.centerXAnchor).isActive = true + + switch verticalPosition { + case .center: + self.centerYAnchor.constraint( + equalTo: presenter.centerYAnchor, + constant: offset ?? 0 + ).isActive = true + case .top: + if #available(iOS 11, *) { + self.topAnchor.constraint( + equalTo: presenter.safeAreaLayoutGuide.topAnchor, + constant: offset ?? self.sizesAndDistances.topOffset + ).isActive = true + } else { + self.topAnchor.constraint( + equalTo: presenter.topAnchor, + constant: offset ?? self.sizesAndDistances.topOffset + ).isActive = true + } + case .bottom: + if #available(iOS 11, *) { + self.bottomAnchor.constraint( + equalTo: presenter.safeAreaLayoutGuide.bottomAnchor, + constant: offset ?? -self.sizesAndDistances.bottomOffset + ).isActive = true + } else { + self.bottomAnchor.constraint( + equalTo: presenter.bottomAnchor, + constant: offset ?? -self.sizesAndDistances.bottomOffset + ).isActive = true + } + } + } + + private func completeContentStackViewConstraints() { + var constraints: [NSLayoutConstraint] = [] + if self.image != nil + && (self.title != nil || self.message != nil) { + + constraints.append(self.contentView.heightAnchor.constraint( + greaterThanOrEqualToConstant: self.sizesAndDistances.minimumAlertHeight + )) + constraints.append(self.contentView.widthAnchor.constraint( + equalToConstant: self.sizesAndDistances.alertWidth + )) + constraints.append(self.contentStackView.topAnchor.constraint( + greaterThanOrEqualTo: self.contentView.topAnchor, + constant: self.sizesAndDistances.minimumStackViewTopSpace + )) + constraints.append(self.contentStackView.centerYAnchor.constraint( + equalTo: self.contentView.centerYAnchor, + constant: (self.sizesAndDistances.minimumStackViewTopSpace - self.sizesAndDistances.minimumStackViewBottomSpace) / 2 + )) + } else { + if self.image == nil { + constraints.append(self.contentView.widthAnchor.constraint( + equalToConstant: self.sizesAndDistances.alertWidth + )) + } + constraints.append(self.contentStackView.topAnchor.constraint( + greaterThanOrEqualTo: self.contentView.topAnchor, + constant: self.sizesAndDistances.minimumStackViewBottomSpace + )) + constraints.append(self.contentStackView.centerYAnchor.constraint( + equalTo: self.contentView.centerYAnchor + )) + } + + self.contentStackViewConstraints.append(contentsOf: constraints) + NSLayoutConstraint.activate(self.contentStackViewConstraints) + } + + @objc private func reduceTransparencyStatusDidChange() { + self.setupContentViewBackground() + } + + private func setupContentViewBackground() { + if self.isBlurAvailable { + self.contentView.backgroundColor = nil + if #available(iOS 11, *) { + self.contentView.effect = self.blurEffect + } else if StatusAlert.currentlyPresentedStatusAlerts.contains(self) { + self.contentView.effect = self.blurEffect + } + } else { + self.contentView.effect = nil + self.contentView.backgroundColor = self.appearance.backgroundColor + } + } + + private func createSpaceView( + withHeight height: CGFloat + ) -> UIView { + + let spaceView = StatusAlert.reusableSpaceViewsManager.dequeueReusable() + let constraint = spaceView.heightAnchor.constraint(equalToConstant: height) + self.reusableObjectsConstraints.append(constraint) + return spaceView + } + + private func createImageViewIfNeeded() -> UIImageView? { + guard let image = self.image else { return nil } + + let imageView = StatusAlert.reusableImageViewsManager.dequeueReusable() + imageView.image = image + imageView.tintColor = self.appearance.tintColor + let widthConstraint = imageView.widthAnchor.constraint(equalToConstant: sizesAndDistances.imageWidth) + self.reusableObjectsConstraints.append(widthConstraint) + let heightConstraint = imageView.heightAnchor.constraint(equalToConstant: sizesAndDistances.imageWidth) + self.reusableObjectsConstraints.append(heightConstraint) + + return imageView + } + + private func createTitleLabelIfNeeded() -> UILabel? { + guard let title = self.title else { return nil } + + let titleLabel = self.createBaseLabel() + titleLabel.font = self.appearance.titleFont + + let attributedText = NSAttributedString( + string: title, + attributes: [KernAttributeName: 0.01] + ) + titleLabel.attributedText = attributedText + + return titleLabel + } + + private func createMessageLabelIfNeeded() -> UILabel? { + guard let message = self.message else { return nil } + + let messageLabel = self.createBaseLabel() + messageLabel.font = self.appearance.messageFont + + let paragraphStyle = NSMutableParagraphStyle() + paragraphStyle.lineSpacing = 3 + paragraphStyle.alignment = .center + let attributedText = NSAttributedString( + string: message, + attributes: [ + KernAttributeName: 0.01, + ParagraphStyleAttributeName: paragraphStyle + ] + ) + messageLabel.attributedText = attributedText + + return messageLabel + } + + private func createBaseLabel() -> UILabel { + let label = StatusAlert.reusableLabelsManager.dequeueReusable() + label.textColor = self.appearance.tintColor + return label + } + + // MARK: Presentation methods + + private func prepareForPresentation( + onPrepared: @escaping () -> Void + ) { + + switch StatusAlert.multiplePresentationsBehavior { + case .ignoreIfAlreadyPresenting: + guard StatusAlert.currentlyPresentedStatusAlerts.isEmpty else { return } + onPrepared() + case .showMultiple: + guard !StatusAlert.currentlyPresentedStatusAlerts.contains(self) else { return } + onPrepared() + case .dismissCurrentlyPresented: + guard !StatusAlert.dismissing else { return } + if !StatusAlert.currentlyPresentedStatusAlerts.isEmpty { + StatusAlert.alertToPresent = self + let group = DispatchGroup() + for alert in StatusAlert.currentlyPresentedStatusAlerts { + group.enter() + alert.dismiss { + group.leave() + } + } + group.notify(queue: DispatchQueue.main) { + onPrepared() + StatusAlert.alertToPresent = nil + } + } else { + onPrepared() + } + } + } + + private func performPresentation() { + StatusAlert.currentlyPresentedStatusAlerts.append(self) + + let scale: CGFloat = self.sizesAndDistances.initialScale + let timer = Timer.scheduledTimer( + timeInterval: self.alertShowingDuration - self.defaultFadeAnimationDuration, + target: self, + selector: #selector(self.dismissByTimer), + userInfo: nil, + repeats: false) + RunLoop.main.add( + timer, + forMode: RunLoopCommonMode + ) + self.timer = timer + self.contentView.transform = CGAffineTransform.identity.scaledBy(x: scale, y: scale) + + UIView.animate( + withDuration: self.defaultFadeAnimationDuration, + delay: 0, + options: .curveEaseOut, + animations: { + if self.isBlurAvailable { + if #available(iOS 11, *) { + self.alpha = 1 + } else { + self.contentView.contentView.alpha = 1 + self.contentView.effect = self.blurEffect + } + } else { + self.alpha = 1 + } + self.contentView.transform = CGAffineTransform.identity + }, + completion: { [weak self] (_) in + self?.postAccessibilityAnnouncement() + }) + } + + private func postAccessibilityAnnouncement() { + let announcement = self.accessibilityAnnouncement + #if swift(>=4.2) + UIAccessibility.post(notification: UIAccessibility.Notification.announcement, argument: announcement) + #else + UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, announcement) + #endif + } + + @objc private func dismissByTimer() { + self.dismiss(completion: nil) + } + + private func dismiss(completion: (() -> Void)?) { + let scale: CGFloat = self.sizesAndDistances.initialScale + self.timer?.invalidate() + + if self.pickGesture?.state != .changed + && self.pickGesture?.state != .began { + + self.isUserInteractionEnabled = false + UIView.animate( + withDuration: self.defaultFadeAnimationDuration, + delay: 0, + options: [.curveEaseOut, .beginFromCurrentState], + animations: { + if self.isBlurAvailable { + if #available(iOS 11, *) { + self.alpha = 0 + } else { + self.alpha = 0 + self.contentView.contentView.alpha = 0 + } + } else { + self.alpha = 0 + } + self.contentView.transform = CGAffineTransform.identity.scaledBy(x: scale, y: scale) + }, + completion: { [weak self] (_) in + if let strongSelf = self, + let index = StatusAlert.currentlyPresentedStatusAlerts.index(of: strongSelf) { + StatusAlert.currentlyPresentedStatusAlerts.remove(at: index) + } + self?.removeFromSuperview() + self?.resetView() + completion?() + }) + } + } + + // MARK: Utils + + private func assertIsMainThread() { + precondition(Thread.isMainThread, "`StatusAlert` must only be used from the main thread.") + } + + // MARK: - Reusable elements - + + // MARK: UIImageView + + private static let reusableImageViewsManager: ReusablesManager = ReusablesManager( + createReusableClosure: { () -> UIImageView in + return StatusAlert.reusableImageView() + }, + prepareForReuseClosure: nil, + maximumReusablesNumber: 5 + ) + + private static func reusableImageView() -> UIImageView { + let imageView = UIImageView() + imageView.contentMode = .scaleAspectFit + imageView.isAccessibilityElement = false + imageView.accessibilityTraits = AccessibilityTraitNone + + imageView.translatesAutoresizingMaskIntoConstraints = false + return imageView + } + + // MARK: UILabel + + private static let reusableLabelsManager: ReusablesManager = ReusablesManager( + createReusableClosure: { () -> UILabel in + return StatusAlert.reusableLabel() + }, + prepareForReuseClosure: nil, + maximumReusablesNumber: 5 + ) + + private static func reusableLabel() -> UILabel { + let label = UILabel() + label.textAlignment = .center + label.numberOfLines = 0 + label.isAccessibilityElement = false + label.accessibilityTraits = AccessibilityTraitNone + return label + } + + // MARK: - SpaceView + + private static let reusableSpaceViewsManager: ReusablesManager = ReusablesManager( + createReusableClosure: { () -> UIView in + return StatusAlert.reusableSpaceView() + }, + prepareForReuseClosure: nil, + maximumReusablesNumber: 10 + ) + + private static func reusableSpaceView() -> UIView { + let spaceView = UIView() + spaceView.backgroundColor = UIColor.clear + spaceView.translatesAutoresizingMaskIntoConstraints = false + return spaceView + } +} + +// Compatibility + +#if swift(>=4.2) +private let KernAttributeName = NSAttributedString.Key.kern +private let ParagraphStyleAttributeName = NSAttributedString.Key.paragraphStyle +#elseif swift(>=4.0) +private let KernAttributeName = NSAttributedStringKey.kern +private let ParagraphStyleAttributeName = NSAttributedStringKey.paragraphStyle +#else +private let KernAttributeName = NSKernAttributeName +private let ParagraphStyleAttributeName = NSParagraphStyleAttributeName +#endif + +#if swift(>=4.2) +private let NavigationControllerHideShowBarDuration = UINavigationController.hideShowBarDuration +private let AccessibilityReduceTransparencyStatusDidChangeNotificationName = UIAccessibility.reduceTransparencyStatusDidChangeNotification +private let AccessibilityTraitNone = UIAccessibilityTraits.none +private let RunLoopCommonMode = RunLoop.Mode.common +#else +private let NavigationControllerHideShowBarDuration = UINavigationControllerHideShowBarDuration +private let AccessibilityReduceTransparencyStatusDidChangeNotificationName = NSNotification.Name.UIAccessibilityReduceTransparencyStatusDidChange +private let AccessibilityTraitNone = UIAccessibilityTraitNone +private let RunLoopCommonMode = RunLoopMode.commonModes +#endif diff --git a/Santander-Test/Pods/StatusAlert/Sources/StatusAlert/StatusAlertUtils.swift b/Santander-Test/Pods/StatusAlert/Sources/StatusAlert/StatusAlertUtils.swift new file mode 100644 index 00000000..d250a1d1 --- /dev/null +++ b/Santander-Test/Pods/StatusAlert/Sources/StatusAlert/StatusAlertUtils.swift @@ -0,0 +1,207 @@ +// +// StatusAlert +// Copyright © 2017-2018 Yegor Miroshnichenko. Licensed under the MIT license. +// + +import UIKit + +@objc extension StatusAlert { + + @objc(StatusAlertMultiplePresentationsBehavior) + public enum MultiplePresentationsBehavior: Int { + + /// Not more than one StatusAlert will be shown at once + case ignoreIfAlreadyPresenting + + /// Currently presented StatusAlerts will be dismissed before presenting another one + case dismissCurrentlyPresented + + /// All requested StatusAlerts will be shown + case showMultiple + } + + @objc(StatusAlertAppearance) + public final class Appearance: NSObject { + + @objc public static let common: Appearance = Appearance() + + /// - Note: Do not change to save system look + @objc public var titleFont: UIFont = UIFont.systemFont(ofSize: 23, weight: FontWeightSemibold) + + /// - Note: Do not change to save system look + @objc public var messageFont: UIFont = UIFont.systemFont(ofSize: 16, weight: FontWeightRegular) + + /// - Note: Do not change to save system look + @objc public var tintColor: UIColor = UIColor.darkGray + + /// Used if device does not support blur or if `Reduce Transparency` toggle + /// in `General->Accessibility->Increase Contrast` is on + /// + /// - Note: Do not change to save system look + @objc public var backgroundColor: UIColor = UIColor.groupTableViewBackground + + /// - Note: Do not change to save system look + @objc public var blurStyle: UIBlurEffect.Style = .light + + @objc public static func copyCommon() -> Appearance { + let common = Appearance.common + let copy = Appearance() + copy.titleFont = common.titleFont + copy.messageFont = common.messageFont + copy.tintColor = common.tintColor + copy.backgroundColor = common.backgroundColor + copy.blurStyle = common.blurStyle + return copy + } + } + + @objc(StatusAlertVerticalPosition) + public enum VerticalPosition: Int { + + /// Position in the center of the view + case center + + /// Position on the top of the view + case top + + /// Position at the bottom of the view + case bottom + } + + @objc (StatusAlertSizesAndDistances) + public final class SizesAndDistances: NSObject { + + @objc public static let common: SizesAndDistances = SizesAndDistances() + + @available(*, deprecated, renamed: "initialScale") + @objc public var defaultInitialScale: CGFloat { + get { return self.initialScale } + set { self.initialScale = newValue } + } + @available(*, deprecated, renamed: "cornerRadius") + @objc public var defaultCornerRadius: CGFloat { + get { return self.cornerRadius } + set { self.cornerRadius = newValue } + } + @available(*, deprecated, renamed: "topOffset") + @objc public var defaultTopOffset: CGFloat { + get { return self.topOffset } + set { self.topOffset = newValue } + } + @available(*, deprecated, renamed: "bottomOffset") + @objc public var defaultBottomOffset: CGFloat { + get { return self.bottomOffset } + set { self.bottomOffset = newValue } + } + @available(*, deprecated, renamed: "imageWidth") + @objc public var defaultImageWidth: CGFloat { + get { return self.imageWidth } + set { self.imageWidth = newValue } + } + @available(*, deprecated, renamed: "alertWidth") + @objc public var defaultAlertWidth: CGFloat { + get { return self.alertWidth } + set { self.alertWidth = newValue } + } + @available(*, deprecated, renamed: "imageBottomSpace") + @objc public var defaultImageBottomSpace: CGFloat { + get { return self.imageBottomSpace } + set { self.imageBottomSpace = newValue } + } + @available(*, deprecated, renamed: "titleBottomSpace") + @objc public var defaultTitleBottomSpace: CGFloat { + get { return self.titleBottomSpace } + set { self.titleBottomSpace = newValue } + } + @available(*, deprecated, renamed: "imageToMessageSpace") + @objc public var defaultImageToMessageSpace: CGFloat { + get { return self.imageToMessageSpace } + set { self.imageToMessageSpace = newValue } + } + + @objc public var initialScale: CGFloat = 0.9 + @objc public var cornerRadius: CGFloat = 10 + + @objc public var topOffset: CGFloat = 32 + @objc public var bottomOffset: CGFloat = 32 + + @objc public var imageWidth: CGFloat = 90 + @objc public var alertWidth: CGFloat = 258 + @objc public var minimumAlertHeight: CGFloat = 240 + + @objc public var minimumStackViewTopSpace: CGFloat = 44 + @objc public var minimumStackViewBottomSpace: CGFloat = 24 + @objc public var stackViewSideSpace: CGFloat = 24 + + @objc public var imageBottomSpace: CGFloat = 30 + @objc public var titleBottomSpace: CGFloat = 5 + @objc public var imageToMessageSpace: CGFloat = 24 + + @objc public static func copyCommon() -> SizesAndDistances { + let common = SizesAndDistances.common + let copy = SizesAndDistances() + + copy.initialScale = common.initialScale + copy.cornerRadius = common.cornerRadius + copy.topOffset = common.topOffset + copy.bottomOffset = common.bottomOffset + copy.imageWidth = common.imageWidth + copy.alertWidth = common.alertWidth + copy.minimumAlertHeight = common.minimumAlertHeight + copy.minimumStackViewTopSpace = common.minimumStackViewTopSpace + copy.minimumStackViewBottomSpace = common.minimumStackViewBottomSpace + copy.stackViewSideSpace = common.stackViewSideSpace + copy.imageBottomSpace = common.imageBottomSpace + copy.titleBottomSpace = common.titleBottomSpace + copy.imageToMessageSpace = common.imageToMessageSpace + return copy + } + } +} + +internal class ReusablesManager { + typealias PrepareForReuse = (Reusable) -> Void + typealias CreateReusableClosure = () -> Reusable + + private var reusables: [Reusable] = [] + private let maximumReusablesNumber: Int + private let createReusableClosure: CreateReusableClosure + private let prepareForReuseClosure: PrepareForReuse? + + init( + createReusableClosure: @escaping CreateReusableClosure, + prepareForReuseClosure: PrepareForReuse?, + maximumReusablesNumber: Int + ) { + + self.createReusableClosure = createReusableClosure + self.prepareForReuseClosure = prepareForReuseClosure + self.maximumReusablesNumber = maximumReusablesNumber + } + + func dequeueReusable() -> Reusable { + if let reusable = self.reusables.first { + self.reusables.removeFirst() + self.prepareForReuseClosure?(reusable) + return reusable + } + let reusable = self.createReusableClosure() + self.enqueueReusable(reusable) + return self.dequeueReusable() + } + + func enqueueReusable(_ object: Reusable) { + guard self.reusables.count < self.maximumReusablesNumber else { return } + self.reusables.append(object) + } +} + +// Compatibility + +#if swift(>=4.0) +private let FontWeightSemibold = UIFont.Weight.semibold +private let FontWeightRegular = UIFont.Weight.regular +#else +private let FontWeightSemibold = UIFontWeightSemibold +private let FontWeightRegular = UIFontWeightRegular +#endif diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.markdown b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.markdown index 34d8d4e3..35c6fbc9 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.markdown +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.markdown @@ -72,4 +72,27 @@ 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. + +## StatusAlert + +Copyright (c) 2017-2018 LowKostKustomz + +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. + Generated by CocoaPods - https://cocoapods.org diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.plist b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.plist index c3605d51..da5610e0 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.plist +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.plist @@ -102,6 +102,35 @@ SOFTWARE.
Type PSGroupSpecifier + + FooterText + Copyright (c) 2017-2018 LowKostKustomz <mierosh@gmail.com> + +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. + + License + MIT + Title + StatusAlert + Type + PSGroupSpecifier + FooterText Generated by CocoaPods - https://cocoapods.org diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-frameworks.sh b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-frameworks.sh index 0582fe33..0d3b9e6f 100755 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-frameworks.sh +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-frameworks.sh @@ -156,11 +156,13 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework" install_framework "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework" install_framework "${BUILT_PRODUCTS_DIR}/Result/Result.framework" + install_framework "${BUILT_PRODUCTS_DIR}/StatusAlert/StatusAlert.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework" install_framework "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework" install_framework "${BUILT_PRODUCTS_DIR}/Result/Result.framework" + install_framework "${BUILT_PRODUCTS_DIR}/StatusAlert/StatusAlert.framework" fi if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then wait diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig index 254c4636..a450c602 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig @@ -1,9 +1,9 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" +OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" -framework "StatusAlert" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.release.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.release.xcconfig index 254c4636..a450c602 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.release.xcconfig +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.release.xcconfig @@ -1,9 +1,9 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" +OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" -framework "StatusAlert" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.debug.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.debug.xcconfig index 7781708e..18feaeae 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.debug.xcconfig +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.debug.xcconfig @@ -1,8 +1,8 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" +OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" -framework "StatusAlert" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.release.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.release.xcconfig index 7781708e..18feaeae 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.release.xcconfig +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.release.xcconfig @@ -1,8 +1,8 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" +OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" -framework "StatusAlert" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.debug.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.debug.xcconfig index 7781708e..18feaeae 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.debug.xcconfig +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.debug.xcconfig @@ -1,8 +1,8 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" +OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" -framework "StatusAlert" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.release.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.release.xcconfig index 7781708e..18feaeae 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.release.xcconfig +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.release.xcconfig @@ -1,8 +1,8 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" +OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" -framework "StatusAlert" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert-Info.plist b/Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert-Info.plist new file mode 100644 index 00000000..21a30b4a --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.1.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert-dummy.m b/Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert-dummy.m new file mode 100644 index 00000000..173ee2bd --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_StatusAlert : NSObject +@end +@implementation PodsDummy_StatusAlert +@end diff --git a/Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert-prefix.pch b/Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert-prefix.pch new file mode 100644 index 00000000..beb2a244 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert-umbrella.h b/Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert-umbrella.h new file mode 100644 index 00000000..8b389b5d --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double StatusAlertVersionNumber; +FOUNDATION_EXPORT const unsigned char StatusAlertVersionString[]; + diff --git a/Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert.modulemap b/Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert.modulemap new file mode 100644 index 00000000..f2c3867b --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert.modulemap @@ -0,0 +1,6 @@ +framework module StatusAlert { + umbrella header "StatusAlert-umbrella.h" + + export * + module * { export * } +} diff --git a/Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert.xcconfig b/Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert.xcconfig new file mode 100644 index 00000000..38bc402c --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/StatusAlert/StatusAlert.xcconfig @@ -0,0 +1,9 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/StatusAlert +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj index 8cb14f18..4dfaac47 100644 --- a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj +++ b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj @@ -67,6 +67,7 @@ 965C2FE0228EA9CB00015140 /* FundInfoCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FDF228EA9CB00015140 /* FundInfoCell.swift */; }; 965C2FE3228EACC300015140 /* FundDownInfoCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 965C2FE2228EACC300015140 /* FundDownInfoCell.xib */; }; 965C2FE5228EACD400015140 /* FundDownInfoCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FE4228EACD400015140 /* FundDownInfoCell.swift */; }; + 965C2FE7228EE8CC00015140 /* UIViewControllerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FE6228EE8CC00015140 /* UIViewControllerExtensions.swift */; }; 973161DFBDDB30BB534A86DA /* Pods_Santander_TestUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 878E0A16E793237D34137EC7 /* Pods_Santander_TestUITests.framework */; }; C4FCFE13C06111F180515DFA /* Pods_Santander_Test.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F563E135B794CADBF7401F8 /* Pods_Santander_Test.framework */; }; /* End PBXBuildFile section */ @@ -162,6 +163,7 @@ 965C2FDF228EA9CB00015140 /* FundInfoCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FundInfoCell.swift; sourceTree = ""; }; 965C2FE2228EACC300015140 /* FundDownInfoCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FundDownInfoCell.xib; sourceTree = ""; }; 965C2FE4228EACD400015140 /* FundDownInfoCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FundDownInfoCell.swift; sourceTree = ""; }; + 965C2FE6228EE8CC00015140 /* UIViewControllerExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIViewControllerExtensions.swift; sourceTree = ""; }; A512F1F10FEC63C067350139 /* Pods-Santander-Test.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Santander-Test.debug.xcconfig"; path = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -354,6 +356,7 @@ isa = PBXGroup; children = ( 965C2F77228BBDB300015140 /* UIColorExtensions.swift */, + 965C2FE6228EE8CC00015140 /* UIViewControllerExtensions.swift */, ); path = Extensions; sourceTree = ""; @@ -735,6 +738,7 @@ "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework", "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework", "${BUILT_PRODUCTS_DIR}/Result/Result.framework", + "${BUILT_PRODUCTS_DIR}/StatusAlert/StatusAlert.framework", ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( @@ -743,6 +747,7 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Moya.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Result.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/StatusAlert.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -774,6 +779,7 @@ 965C2F0722895E2500015140 /* AppDelegate.swift in Sources */, 965C2F36228966AF00015140 /* Constants.swift in Sources */, 965C2F59228A891900015140 /* FormViewController.swift in Sources */, + 965C2FE7228EE8CC00015140 /* UIViewControllerExtensions.swift in Sources */, 965C2FD0228E4C5A00015140 /* FundRisk.swift in Sources */, 965C2FAB228DF72A00015140 /* SendButton.swift in Sources */, 965C2F78228BBDB300015140 /* UIColorExtensions.swift in Sources */, diff --git a/Santander-Test/Santander-Test.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist b/Santander-Test/Santander-Test.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist index c675a222..35d7e141 100644 --- a/Santander-Test/Santander-Test.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Santander-Test/Santander-Test.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ Santander-Test.xcscheme_^#shared#^_ orderHint - 0 + 7 diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index 20a17e7c8bc67d08a6bedf0710eb2cec9829f310..cd07ec30a17af163c1033fec4b6d6fe0a1b8bc18 100644 GIT binary patch literal 99106 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

=2V;)Ot8X%DyWW{XpE+y&bU@+iw>aP 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 UKYy{iBY*n&X8zxwZhcPwKf?>8JOBUy diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift index acd94972..e53c01a6 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift @@ -111,8 +111,7 @@ extension FormViewController: FormDisplayLogic { } func displayError(viewModel: Form.FormError.ViewModel) { - // TODO - print(viewModel.message) + showErrorFeedback(viewModel.message) } func displayFieldValidation(viewModel: Form.FieldValidation.ViewModel) { diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailInteractor.swift b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailInteractor.swift index 396c5275..525851ae 100644 --- a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailInteractor.swift +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailInteractor.swift @@ -25,10 +25,16 @@ class FundDetailInteractor: FundDetailBusinessLogic, FundDetailDataStore { func getFundDetail(request: FundDetail.GetFundDetail.Request) { worker = FundDetailWorker() worker?.getFund(completion: { [unowned self] (fund, error) in + guard error == nil else { + let response = FundDetail.FundDetailError.Response(error: error! as NSError, errorType: .getFundDetail) + self.presenter?.presentError(response: response) + return + } + guard let fund = fund else { let domain = "Não há fundo de investimento a ser exibido" let responseError = NSError(domain: domain, code: 200, userInfo: nil) - let response = FundDetail.FundDetailError.Response(error: responseError, errorType: .getFundDetail) + let response = FundDetail.FundDetailError.Response(error: responseError, errorType: .missingFund) self.presenter?.presentError(response: response) return } diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailModels.swift b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailModels.swift index dbc85bfb..8e1e0430 100644 --- a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailModels.swift +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailModels.swift @@ -16,6 +16,7 @@ enum FundDetail { enum ErrorType { case getFundDetail + case missingFund } enum GetFundDetail { diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailPresenter.swift b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailPresenter.swift index 2b19951a..61a4e6b1 100644 --- a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailPresenter.swift +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailPresenter.swift @@ -45,6 +45,8 @@ class FundDetailPresenter: FundDetailPresentationLogic { var message: String! switch response.errorType { case .getFundDetail: + message = response.error.localizedDescription + case .missingFund: message = response.error.domain } let viewModel = FundDetail.FundDetailError.ViewModel(message: message, errorType: response.errorType) diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift index 153c4335..450b3d6b 100644 --- a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift @@ -193,7 +193,6 @@ extension FundDetailViewController: UITableViewDataSource { let cell = tableView.dequeueReusableCell( withIdentifier: SendCell.reuseIdentifier ) as! SendCell -// cell.viewModel = SendCell.ViewModel(message: "Investir", topSpace: 45) TODO if let displayedFund = displayedFund { cell.viewModel = SendCell.ViewModel( message: displayedFund.buttonMessage, @@ -215,6 +214,6 @@ extension FundDetailViewController: FundDetailDisplayLogic { } func displayError(viewModel: FundDetail.FundDetailError.ViewModel) { - print(viewModel.message) + showErrorFeedback(viewModel.message) } } diff --git a/Santander-Test/Santander-Test/Supporting Files/Extensions/UIViewControllerExtensions.swift b/Santander-Test/Santander-Test/Supporting Files/Extensions/UIViewControllerExtensions.swift new file mode 100644 index 00000000..22ff3673 --- /dev/null +++ b/Santander-Test/Santander-Test/Supporting Files/Extensions/UIViewControllerExtensions.swift @@ -0,0 +1,25 @@ +// +// UIViewControllerExtensions.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 17/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import UIKit +import StatusAlert + +extension UIViewController { + + func showErrorFeedback(_ errorDescription: String) { + let statusAlert = StatusAlert() + statusAlert.image = UIImage(named: "alertIcon") + statusAlert.title = "Erro!" + statusAlert.message = errorDescription + statusAlert.canBePickedOrDismissed = true + statusAlert.alertShowingDuration = TimeInterval(exactly: 4)! + + statusAlert.showInKeyWindow() + } + +} From 0168b1a91452466ceeafc64bf659373149de1726 Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Fri, 17 May 2019 09:20:38 -0400 Subject: [PATCH 18/39] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20do=20pod=20IQKe?= =?UTF-8?q?yboardManagerSwift=20para=20gerenciamento=20do=20teclado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Santander-Test/Podfile | 1 + Santander-Test/Podfile.lock | 6 +- .../Categories/IQNSArray+Sort.swift | 73 + .../Categories/IQUIScrollView+Additions.swift | 65 + .../IQUITextFieldView+Additions.swift | 110 + .../Categories/IQUIView+Hierarchy.swift | 340 +++ .../IQUIViewController+Additions.swift | 48 + .../IQKeyboardManagerConstants.swift | 152 ++ .../IQKeyboardManagerConstantsInternal.swift | 27 + .../IQKeyboardManager.swift | 2076 +++++++++++++++++ .../IQKeyboardReturnKeyHandler.swift | 628 +++++ .../IQTextView/IQTextView.swift | 209 ++ .../IQToolbar/IQBarButtonItem.swift | 136 ++ .../IQToolbar/IQInvocation.swift | 45 + .../IQToolbar/IQPreviousNextView.swift | 28 + .../IQToolbar/IQTitleBarButtonItem.swift | 178 ++ .../IQToolbar/IQToolbar.swift | 369 +++ .../IQUIView+IQKeyboardToolbar.swift | 612 +++++ .../IQButtonBarArrowDown@2x.png | Bin 0 -> 1764 bytes .../IQButtonBarArrowDown@3x.png | Bin 0 -> 2177 bytes .../IQButtonBarArrowLeft@2x.png | Bin 0 -> 1793 bytes .../IQButtonBarArrowLeft@3x.png | Bin 0 -> 1815 bytes .../IQButtonBarArrowRight@2x.png | Bin 0 -> 1786 bytes .../IQButtonBarArrowRight@3x.png | Bin 0 -> 1844 bytes .../IQButtonBarArrowUp@2x.png | Bin 0 -> 1769 bytes .../IQButtonBarArrowUp@3x.png | Bin 0 -> 2164 bytes .../Pods/IQKeyboardManagerSwift/LICENSE.md | 21 + .../Pods/IQKeyboardManagerSwift/README.md | 210 ++ Santander-Test/Pods/Manifest.lock | 6 +- .../Pods/Pods.xcodeproj/project.pbxproj | 1197 ++++++---- .../xcschemes/IQKeyboardManagerSwift.xcscheme | 60 + .../xcschemes/Pods-Santander-Test.xcscheme | 4 +- .../xcschemes/StatusAlert.xcscheme | 2 +- .../xcschemes/xcschememanagement.plist | 19 +- .../IQKeyboardManagerSwift-Info.plist | 26 + .../IQKeyboardManagerSwift-dummy.m | 5 + .../IQKeyboardManagerSwift-prefix.pch | 12 + .../IQKeyboardManagerSwift-umbrella.h | 16 + .../IQKeyboardManagerSwift.modulemap | 6 + .../IQKeyboardManagerSwift.xcconfig | 9 + ...s-Santander-Test-acknowledgements.markdown | 25 + ...Pods-Santander-Test-acknowledgements.plist | 31 + .../Pods-Santander-Test-frameworks.sh | 2 + .../Pods-Santander-Test.debug.xcconfig | 6 +- .../Pods-Santander-Test.release.xcconfig | 6 +- .../Pods-Santander-TestTests.debug.xcconfig | 6 +- .../Pods-Santander-TestTests.release.xcconfig | 6 +- .../Pods-Santander-TestUITests.debug.xcconfig | 6 +- ...ods-Santander-TestUITests.release.xcconfig | 6 +- .../Santander-Test.xcodeproj/project.pbxproj | 2 + .../xcschemes/xcschememanagement.plist | 2 +- .../UserInterfaceState.xcuserstate | Bin 99106 -> 100180 bytes .../Santander-Test/AppDelegate.swift | 5 +- Santander-Test/Santander-Test/Info.plist | 26 +- 54 files changed, 6314 insertions(+), 511 deletions(-) create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Categories/IQNSArray+Sort.swift create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Categories/IQUIScrollView+Additions.swift create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Categories/IQUITextFieldView+Additions.swift create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Categories/IQUIView+Hierarchy.swift create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Categories/IQUIViewController+Additions.swift create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstantsInternal.swift create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager.swift create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardReturnKeyHandler.swift create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQTextView.swift create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle/IQButtonBarArrowDown@2x.png create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle/IQButtonBarArrowDown@3x.png create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle/IQButtonBarArrowLeft@2x.png create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle/IQButtonBarArrowLeft@3x.png create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle/IQButtonBarArrowRight@2x.png create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle/IQButtonBarArrowRight@3x.png create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle/IQButtonBarArrowUp@2x.png create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle/IQButtonBarArrowUp@3x.png create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/LICENSE.md create mode 100644 Santander-Test/Pods/IQKeyboardManagerSwift/README.md create mode 100644 Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/IQKeyboardManagerSwift.xcscheme create mode 100644 Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist create mode 100644 Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-dummy.m create mode 100644 Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch create mode 100644 Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-umbrella.h create mode 100644 Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap create mode 100644 Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.xcconfig diff --git a/Santander-Test/Podfile b/Santander-Test/Podfile index 46bef7a7..a425e70a 100644 --- a/Santander-Test/Podfile +++ b/Santander-Test/Podfile @@ -9,6 +9,7 @@ target 'Santander-Test' do pod 'Moya' pod 'StatusAlert' + pod 'IQKeyboardManagerSwift' target 'Santander-TestTests' do inherit! :search_paths diff --git a/Santander-Test/Podfile.lock b/Santander-Test/Podfile.lock index c2ef1f97..cbbac15a 100644 --- a/Santander-Test/Podfile.lock +++ b/Santander-Test/Podfile.lock @@ -1,5 +1,6 @@ PODS: - Alamofire (4.8.1) + - IQKeyboardManagerSwift (6.2.0) - Moya (12.0.1): - Moya/Core (= 12.0.1) - Moya/Core (12.0.1): @@ -9,22 +10,25 @@ PODS: - StatusAlert (1.1.0) DEPENDENCIES: + - IQKeyboardManagerSwift - Moya - StatusAlert SPEC REPOS: https://github.com/cocoapods/specs.git: - Alamofire + - IQKeyboardManagerSwift - Moya - Result - StatusAlert SPEC CHECKSUMS: Alamofire: 16ce2c353fb72865124ddae8a57c5942388f4f11 + IQKeyboardManagerSwift: b07ccf9d8cafe993dcd6cb794eb4ba34611a0c4e Moya: cf730b3cd9e005401ef37a85143aa141a12fd38f Result: bd966fac789cc6c1563440b348ab2598cc24d5c7 StatusAlert: 4d6dadebf5f7abd5648fa774ef3062f2f95cc4aa -PODFILE CHECKSUM: e871f6b26d19e6b91fffd808ac5e92e42bc03ffd +PODFILE CHECKSUM: 43c1992cf2813f4080ced8f5452e251bd09e7c41 COCOAPODS: 1.6.0 diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Categories/IQNSArray+Sort.swift b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Categories/IQNSArray+Sort.swift new file mode 100644 index 00000000..8f7e8ab3 --- /dev/null +++ b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Categories/IQNSArray+Sort.swift @@ -0,0 +1,73 @@ +// +// IQNSArray+Sort.swift +// https://github.com/hackiftekhar/IQKeyboardManager +// Copyright (c) 2013-16 Iftekhar Qurashi. +// +// 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 Foundation +import UIKit + +/** +UIView.subviews sorting category. +*/ +internal extension Array { + + ///-------------- + /// MARK: Sorting + ///-------------- + + /** + Returns the array by sorting the UIView's by their tag property. + */ + internal func sortedArrayByTag() -> [Element] { + + return sorted(by: { (obj1 : Element, obj2 : Element) -> Bool in + + let view1 = obj1 as! UIView + let view2 = obj2 as! UIView + + return (view1.tag < view2.tag) + }) + } + + /** + Returns the array by sorting the UIView's by their tag property. + */ + internal func sortedArrayByPosition() -> [Element] { + + return sorted(by: { (obj1 : Element, obj2 : Element) -> Bool in + + let view1 = obj1 as! UIView + let view2 = obj2 as! UIView + + let x1 = view1.frame.minX + let y1 = view1.frame.minY + let x2 = view2.frame.minX + let y2 = view2.frame.minY + + if y1 != y2 { + return y1 < y2 + } else { + return x1 < x2 + } + }) + } +} + diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Categories/IQUIScrollView+Additions.swift b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Categories/IQUIScrollView+Additions.swift new file mode 100644 index 00000000..236221b4 --- /dev/null +++ b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Categories/IQUIScrollView+Additions.swift @@ -0,0 +1,65 @@ +// +// IQUIScrollView+Additions.swift +// https://github.com/hackiftekhar/IQKeyboardManager +// Copyright (c) 2013-16 Iftekhar Qurashi. +// +// 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 Foundation +import UIKit + +private var kIQShouldIgnoreScrollingAdjustment = "kIQShouldIgnoreScrollingAdjustment" +private var kIQShouldRestoreScrollViewContentOffset = "kIQShouldRestoreScrollViewContentOffset" + +public extension UIScrollView { + + /** + If YES, then scrollview will ignore scrolling (simply not scroll it) for adjusting textfield position. Default is NO. + */ + @objc public var shouldIgnoreScrollingAdjustment: Bool { + get { + + if let aValue = objc_getAssociatedObject(self, &kIQShouldIgnoreScrollingAdjustment) as? Bool { + return aValue + } else { + return false + } + } + set(newValue) { + objc_setAssociatedObject(self, &kIQShouldIgnoreScrollingAdjustment, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) + } + } + + /** + To set customized distance from keyboard for textField/textView. Can't be less than zero + */ + @objc public var shouldRestoreScrollViewContentOffset: Bool { + get { + + if let aValue = objc_getAssociatedObject(self, &kIQShouldRestoreScrollViewContentOffset) as? Bool { + return aValue + } else { + return false + } + } + set(newValue) { + objc_setAssociatedObject(self, &kIQShouldRestoreScrollViewContentOffset, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) + } + } +} diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Categories/IQUITextFieldView+Additions.swift b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Categories/IQUITextFieldView+Additions.swift new file mode 100644 index 00000000..91352711 --- /dev/null +++ b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Categories/IQUITextFieldView+Additions.swift @@ -0,0 +1,110 @@ +// +// IQUITextFieldView+Additions.swift +// https://github.com/hackiftekhar/IQKeyboardManager +// Copyright (c) 2013-16 Iftekhar Qurashi. +// +// 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 Foundation +import UIKit + +/** +Uses default keyboard distance for textField. +*/ +public let kIQUseDefaultKeyboardDistance = CGFloat.greatestFiniteMagnitude + +private var kIQKeyboardDistanceFromTextField = "kIQKeyboardDistanceFromTextField" +//private var kIQKeyboardEnableMode = "kIQKeyboardEnableMode" +private var kIQKeyboardShouldResignOnTouchOutsideMode = "kIQKeyboardShouldResignOnTouchOutsideMode" +private var kIQIgnoreSwitchingByNextPrevious = "kIQIgnoreSwitchingByNextPrevious" + +/** +UIView category for managing UITextField/UITextView +*/ +public extension UIView { + + /** + To set customized distance from keyboard for textField/textView. Can't be less than zero + */ + @objc public var keyboardDistanceFromTextField: CGFloat { + get { + + if let aValue = objc_getAssociatedObject(self, &kIQKeyboardDistanceFromTextField) as? CGFloat { + return aValue + } else { + return kIQUseDefaultKeyboardDistance + } + } + set(newValue) { + objc_setAssociatedObject(self, &kIQKeyboardDistanceFromTextField, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) + } + } + + /** + If shouldIgnoreSwitchingByNextPrevious is true then library will ignore this textField/textView while moving to other textField/textView using keyboard toolbar next previous buttons. Default is false + */ + @objc public var ignoreSwitchingByNextPrevious: Bool { + get { + + if let aValue = objc_getAssociatedObject(self, &kIQIgnoreSwitchingByNextPrevious) as? Bool { + return aValue + } else { + return false + } + } + set(newValue) { + objc_setAssociatedObject(self, &kIQIgnoreSwitchingByNextPrevious, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) + } + } + +// /** +// Override Enable/disable managing distance between keyboard and textField behaviour for this particular textField. +// */ +// @objc public var enableMode: IQEnableMode { +// get { +// +// if let savedMode = objc_getAssociatedObject(self, &kIQKeyboardEnableMode) as? IQEnableMode { +// return savedMode +// } else { +// return .Default +// } +// } +// set(newValue) { +// objc_setAssociatedObject(self, &kIQKeyboardEnableMode, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) +// } +// } + + /** + Override resigns Keyboard on touching outside of UITextField/View behaviour for this particular textField. + */ + @objc public var shouldResignOnTouchOutsideMode: IQEnableMode { + get { + + if let savedMode = objc_getAssociatedObject(self, &kIQKeyboardShouldResignOnTouchOutsideMode) as? IQEnableMode { + return savedMode + } else { + return .Default + } + } + set(newValue) { + objc_setAssociatedObject(self, &kIQKeyboardShouldResignOnTouchOutsideMode, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) + } + } +} + diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Categories/IQUIView+Hierarchy.swift b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Categories/IQUIView+Hierarchy.swift new file mode 100644 index 00000000..fa79685d --- /dev/null +++ b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Categories/IQUIView+Hierarchy.swift @@ -0,0 +1,340 @@ +// +// IQUIView+Hierarchy.swift +// https://github.com/hackiftekhar/IQKeyboardManager +// Copyright (c) 2013-16 Iftekhar Qurashi. +// +// 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 + +/** +UIView hierarchy category. +*/ +public extension UIView { + + ///---------------------- + /// MARK: viewControllers + ///---------------------- + + /** + Returns the UIViewController object that manages the receiver. + */ + @objc public func viewContainingController()->UIViewController? { + + var nextResponder: UIResponder? = self + + repeat { + nextResponder = nextResponder?.next + + if let viewController = nextResponder as? UIViewController { + return viewController + } + + } while nextResponder != nil + + return nil + } + + /** + Returns the topMost UIViewController object in hierarchy. + */ + @objc public func topMostController()->UIViewController? { + + var controllersHierarchy = [UIViewController]() + + if var topController = window?.rootViewController { + controllersHierarchy.append(topController) + + while let presented = topController.presentedViewController { + + topController = presented + + controllersHierarchy.append(presented) + } + + var matchController :UIResponder? = viewContainingController() + + while matchController != nil && controllersHierarchy.contains(matchController as! UIViewController) == false { + + repeat { + matchController = matchController?.next + + } while matchController != nil && matchController is UIViewController == false + } + + return matchController as? UIViewController + + } else { + return viewContainingController() + } + } + + /** + Returns the UIViewController object that is actually the parent of this object. Most of the time it's the viewController object which actually contains it, but result may be different if it's viewController is added as childViewController of another viewController. + */ + @objc public func parentContainerViewController()->UIViewController? { + + var matchController = viewContainingController() + var parentContainerViewController : UIViewController? + + if var navController = matchController?.navigationController { + + while let parentNav = navController.navigationController { + navController = parentNav + } + + var parentController : UIViewController = navController + + while let parent = parentController.parent, + (parent.isKind(of: UINavigationController.self) == false && + parent.isKind(of: UITabBarController.self) == false && + parent.isKind(of: UISplitViewController.self) == false) { + + parentController = parent + } + + if navController == parentController { + parentContainerViewController = navController.topViewController + } else { + parentContainerViewController = parentController + } + } + else if let tabController = matchController?.tabBarController { + + if let navController = tabController.selectedViewController as? UINavigationController { + parentContainerViewController = navController.topViewController + } else { + parentContainerViewController = tabController.selectedViewController + } + } else { + while let parentController = matchController?.parent, + (parentController.isKind(of: UINavigationController.self) == false && + parentController.isKind(of: UITabBarController.self) == false && + parentController.isKind(of: UISplitViewController.self) == false) { + + matchController = parentController + } + + parentContainerViewController = matchController + } + + let finalController = parentContainerViewController?.parentIQContainerViewController() ?? parentContainerViewController + + return finalController + + } + + ///----------------------------------- + /// MARK: Superviews/Subviews/Siglings + ///----------------------------------- + + /** + Returns the superView of provided class type. + */ + @objc public func superviewOfClassType(_ classType:UIView.Type)->UIView? { + + var superView = superview + + while let unwrappedSuperView = superView { + + if unwrappedSuperView.isKind(of: classType) { + + //If it's UIScrollView, then validating for special cases + if unwrappedSuperView.isKind(of: UIScrollView.self) { + + let classNameString = NSStringFromClass(type(of:unwrappedSuperView.self)) + + // If it's not UITableViewWrapperView class, this is internal class which is actually manage in UITableview. The speciality of this class is that it's superview is UITableView. + // If it's not UITableViewCellScrollView class, this is internal class which is actually manage in UITableviewCell. The speciality of this class is that it's superview is UITableViewCell. + //If it's not _UIQueuingScrollView class, actually we validate for _ prefix which usually used by Apple internal classes + if unwrappedSuperView.superview?.isKind(of: UITableView.self) == false && + unwrappedSuperView.superview?.isKind(of: UITableViewCell.self) == false && + classNameString.hasPrefix("_") == false { + return superView + } + } + else { + return superView + } + } + + superView = unwrappedSuperView.superview + } + + return nil + } + + /** + Returns all siblings of the receiver which canBecomeFirstResponder. + */ + internal func responderSiblings()->[UIView] { + + //Array of (UITextField/UITextView's). + var tempTextFields = [UIView]() + + // Getting all siblings + if let siblings = superview?.subviews { + + for textField in siblings { + + if (textField == self || textField.ignoreSwitchingByNextPrevious == false) && textField._IQcanBecomeFirstResponder() == true { + tempTextFields.append(textField) + } + } + } + + return tempTextFields + } + + /** + Returns all deep subViews of the receiver which canBecomeFirstResponder. + */ + internal func deepResponderViews()->[UIView] { + + //Array of (UITextField/UITextView's). + var textfields = [UIView]() + + for textField in subviews { + + if (textField == self || textField.ignoreSwitchingByNextPrevious == false) && textField._IQcanBecomeFirstResponder() == true { + textfields.append(textField) + } + + //Sometimes there are hidden or disabled views and textField inside them still recorded, so we added some more validations here (Bug ID: #458) + //Uncommented else (Bug ID: #625) + if textField.subviews.count != 0 && isUserInteractionEnabled == true && isHidden == false && alpha != 0.0 { + for deepView in textField.deepResponderViews() { + textfields.append(deepView) + } + } + } + + //subviews are returning in opposite order. Sorting according the frames 'y'. + return textfields.sorted(by: { (view1 : UIView, view2 : UIView) -> Bool in + + let frame1 = view1.convert(view1.bounds, to: self) + let frame2 = view2.convert(view2.bounds, to: self) + + let x1 = frame1.minX + let y1 = frame1.minY + let x2 = frame2.minX + let y2 = frame2.minY + + if y1 != y2 { + return y1 < y2 + } else { + return x1 < x2 + } + }) + } + + private func _IQcanBecomeFirstResponder() -> Bool { + + var _IQcanBecomeFirstResponder = false + + // Setting toolbar to keyboard. + if let textField = self as? UITextField { + _IQcanBecomeFirstResponder = textField.isEnabled + } else if let textView = self as? UITextView { + _IQcanBecomeFirstResponder = textView.isEditable + } + + if _IQcanBecomeFirstResponder == true { + _IQcanBecomeFirstResponder = isUserInteractionEnabled == true && isHidden == false && alpha != 0.0 && isAlertViewTextField() == false && textFieldSearchBar() == nil + } + + return _IQcanBecomeFirstResponder + } + + ///------------------------- + /// MARK: Special TextFields + ///------------------------- + + /** + Returns searchBar if receiver object is UISearchBarTextField, otherwise return nil. + */ + internal func textFieldSearchBar()-> UISearchBar? { + + var responder : UIResponder? = self.next + + while let bar = responder { + + if let searchBar = bar as? UISearchBar { + return searchBar + } else if bar is UIViewController { + break + } + + responder = bar.next + } + + return nil + } + + /** + Returns YES if the receiver object is UIAlertSheetTextField, otherwise return NO. + */ + internal func isAlertViewTextField()->Bool { + + var alertViewController : UIResponder? = viewContainingController() + + var isAlertViewTextField = false + + while let controller = alertViewController, isAlertViewTextField == false { + + if controller.isKind(of: UIAlertController.self) { + isAlertViewTextField = true + break + } + + alertViewController = controller.next + } + + return isAlertViewTextField + } + + private func depth()->Int { + var depth : Int = 0 + + if let superView = superview { + depth = superView.depth()+1 + } + + return depth + } + +} + +public extension UIViewController { + + func parentIQContainerViewController() -> UIViewController? { + return self + } +} + +extension NSObject { + + internal func _IQDescription() -> String { + return "<\(self) \(Unmanaged.passUnretained(self).toOpaque())>" + } +} + + + diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Categories/IQUIViewController+Additions.swift b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Categories/IQUIViewController+Additions.swift new file mode 100644 index 00000000..ab30451f --- /dev/null +++ b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Categories/IQUIViewController+Additions.swift @@ -0,0 +1,48 @@ +// +// IQUIViewController+Additions.swift +// https://github.com/hackiftekhar/IQKeyboardManager +// Copyright (c) 2013-16 Iftekhar Qurashi. +// +// 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 + + +private var kIQLayoutGuideConstraint = "kIQLayoutGuideConstraint" + + +public extension UIViewController { + + /** + To set customized distance from keyboard for textField/textView. Can't be less than zero + + @deprecated Due to change in core-logic of handling distance between textField and keyboard distance, this layout contraint tweak is no longer needed and things will just work out of the box regardless of constraint pinned with safeArea/layoutGuide/superview + */ + @available(*,deprecated, message: "Due to change in core-logic of handling distance between textField and keyboard distance, this layout contraint tweak is no longer needed and things will just work out of the box regardless of constraint pinned with safeArea/layoutGuide/superview.") + @IBOutlet @objc public var IQLayoutGuideConstraint: NSLayoutConstraint? { + get { + + return objc_getAssociatedObject(self, &kIQLayoutGuideConstraint) as? NSLayoutConstraint + } + + set(newValue) { + objc_setAssociatedObject(self, &kIQLayoutGuideConstraint, newValue,objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) + } + } +} diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift new file mode 100644 index 00000000..0cc146a5 --- /dev/null +++ b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift @@ -0,0 +1,152 @@ +// +// IQKeyboardManagerConstants.swift +// https://github.com/hackiftekhar/IQKeyboardManager +// Copyright (c) 2013-16 Iftekhar Qurashi. +// +// 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 Foundation + +///----------------------------------- +/// MARK: IQAutoToolbarManageBehaviour +///----------------------------------- + +/** +`IQAutoToolbarBySubviews` +Creates Toolbar according to subview's hirarchy of Textfield's in view. + +`IQAutoToolbarByTag` +Creates Toolbar according to tag property of TextField's. + +`IQAutoToolbarByPosition` +Creates Toolbar according to the y,x position of textField in it's superview coordinate. +*/ +@objc public enum IQAutoToolbarManageBehaviour : Int { + case bySubviews + case byTag + case byPosition +} + +/** + `IQPreviousNextDisplayModeDefault` + Show NextPrevious when there are more than 1 textField otherwise hide. + + `IQPreviousNextDisplayModeAlwaysHide` + Do not show NextPrevious buttons in any case. + + `IQPreviousNextDisplayModeAlwaysShow` + Always show nextPrevious buttons, if there are more than 1 textField then both buttons will be visible but will be shown as disabled. + */ +@objc public enum IQPreviousNextDisplayMode : Int { + case Default + case alwaysHide + case alwaysShow +} + +/** + `IQEnableModeDefault` + Pick default settings. + + `IQEnableModeEnabled` + setting is enabled. + + `IQEnableModeDisabled` + setting is disabled. + */ +@objc public enum IQEnableMode : Int { + case Default + case enabled + case disabled +} + +/* + + /---------------------------------------------------------------------------------------------------\ + \---------------------------------------------------------------------------------------------------/ + | iOS Notification Mechanism | + /---------------------------------------------------------------------------------------------------\ + \---------------------------------------------------------------------------------------------------/ + + + ------------------------------------------------------------ + When UITextField become first responder + ------------------------------------------------------------ + - UITextFieldTextDidBeginEditingNotification (UITextField) + - UIKeyboardWillShowNotification + - UIKeyboardDidShowNotification + + ------------------------------------------------------------ + When UITextView become first responder + ------------------------------------------------------------ + - UIKeyboardWillShowNotification + - UITextViewTextDidBeginEditingNotification (UITextView) + - UIKeyboardDidShowNotification + + ------------------------------------------------------------ + When switching focus from UITextField to another UITextField + ------------------------------------------------------------ + - UITextFieldTextDidEndEditingNotification (UITextField1) + - UITextFieldTextDidBeginEditingNotification (UITextField2) + - UIKeyboardWillShowNotification + - UIKeyboardDidShowNotification + + ------------------------------------------------------------ + When switching focus from UITextView to another UITextView + ------------------------------------------------------------ + - UITextViewTextDidEndEditingNotification : (UITextView1) + - UIKeyboardWillShowNotification + - UITextViewTextDidBeginEditingNotification : (UITextView2) + - UIKeyboardDidShowNotification + + ------------------------------------------------------------ + When switching focus from UITextField to UITextView + ------------------------------------------------------------ + - UITextFieldTextDidEndEditingNotification (UITextField) + - UIKeyboardWillShowNotification + - UITextViewTextDidBeginEditingNotification (UITextView) + - UIKeyboardDidShowNotification + + ------------------------------------------------------------ + When switching focus from UITextView to UITextField + ------------------------------------------------------------ + - UITextViewTextDidEndEditingNotification (UITextView) + - UITextFieldTextDidBeginEditingNotification (UITextField) + - UIKeyboardWillShowNotification + - UIKeyboardDidShowNotification + + ------------------------------------------------------------ + When opening/closing UIKeyboard Predictive bar + ------------------------------------------------------------ + - UIKeyboardWillShowNotification + - UIKeyboardDidShowNotification + + ------------------------------------------------------------ + On orientation change + ------------------------------------------------------------ + - UIApplicationWillChangeStatusBarOrientationNotification + - UIKeyboardWillHideNotification + - UIKeyboardDidHideNotification + - UIApplicationDidChangeStatusBarOrientationNotification + - UIKeyboardWillShowNotification + - UIKeyboardDidShowNotification + - UIKeyboardWillShowNotification + - UIKeyboardDidShowNotification + + */ diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstantsInternal.swift b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstantsInternal.swift new file mode 100644 index 00000000..41b69c17 --- /dev/null +++ b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstantsInternal.swift @@ -0,0 +1,27 @@ +// +// IQKeyboardManagerConstantsInternal.swift +// https://github.com/hackiftekhar/IQKeyboardManager +// Copyright (c) 2013-16 Iftekhar Qurashi. +// +// 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 Foundation + + diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager.swift b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager.swift new file mode 100644 index 00000000..6475e75b --- /dev/null +++ b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardManager.swift @@ -0,0 +1,2076 @@ +// +// IQKeyboardManager.swift +// https://github.com/hackiftekhar/IQKeyboardManager +// Copyright (c) 2013-16 Iftekhar Qurashi. +// +// 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 Foundation +import CoreGraphics +import UIKit +import QuartzCore + +///--------------------- +/// MARK: IQToolbar tags +///--------------------- + +/** +Codeless drop-in universal library allows to prevent issues of keyboard sliding up and cover UITextField/UITextView. Neither need to write any code nor any setup required and much more. A generic version of KeyboardManagement. https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html +*/ + +public class IQKeyboardManager: NSObject, UIGestureRecognizerDelegate { + + /** + Default tag for toolbar with Done button -1002. + */ + private static let kIQDoneButtonToolbarTag = -1002 + + /** + Default tag for toolbar with Previous/Next buttons -1005. + */ + private static let kIQPreviousNextButtonToolbarTag = -1005 + + /** + Invalid point value. + */ + private static let kIQCGPointInvalid = CGPoint.init(x: CGFloat.greatestFiniteMagnitude, y: CGFloat.greatestFiniteMagnitude) + + ///--------------------------- + /// MARK: UIKeyboard handling + ///--------------------------- + + /** + Registered classes list with library. + */ + private var registeredClasses = [UIView.Type]() + + /** + Enable/disable managing distance between keyboard and textField. Default is YES(Enabled when class loads in `+(void)load` method). + */ + @objc public var enable = false { + + didSet { + //If not enable, enable it. + if enable == true && + oldValue == false { + //If keyboard is currently showing. Sending a fake notification for keyboardWillHide to retain view's original position. + if let notification = _kbShowNotification { + keyboardWillShow(notification) + } + showLog("Enabled") + } else if enable == false && + oldValue == true { //If not disable, desable it. + keyboardWillHide(nil) + showLog("Disabled") + } + } + } + + private func privateIsEnabled()-> Bool { + + var isEnabled = enable + +// let enableMode = _textFieldView?.enableMode +// +// if enableMode == .enabled { +// isEnabled = true +// } else if enableMode == .disabled { +// isEnabled = false +// } else { + + if let textFieldViewController = _textFieldView?.viewContainingController() { + + if isEnabled == false { + + //If viewController is kind of enable viewController class, then assuming it's enabled. + for enabledClass in enabledDistanceHandlingClasses { + + if textFieldViewController.isKind(of: enabledClass) { + isEnabled = true + break + } + } + } + + if isEnabled == true { + + //If viewController is kind of disabled viewController class, then assuming it's disabled. + for disabledClass in disabledDistanceHandlingClasses { + + if textFieldViewController.isKind(of: disabledClass) { + isEnabled = false + break + } + } + + //Special Controllers + if isEnabled == true { + + let classNameString = NSStringFromClass(type(of:textFieldViewController.self)) + + //_UIAlertControllerTextFieldViewController + if (classNameString.contains("UIAlertController") && classNameString.hasSuffix("TextFieldViewController")) { + isEnabled = false + } + } + } + } +// } + + return isEnabled + } + + /** + To set keyboard distance from textField. can't be less than zero. Default is 10.0. + */ + @objc public var keyboardDistanceFromTextField: CGFloat { + + set { + _privateKeyboardDistanceFromTextField = max(0, newValue) + showLog("keyboardDistanceFromTextField: \(_privateKeyboardDistanceFromTextField)") + } + get { + return _privateKeyboardDistanceFromTextField + } + } + + /** + Boolean to know if keyboard is showing. + */ + @objc public var keyboardShowing: Bool { + + return _privateIsKeyboardShowing + } + + /** + moved distance to the top used to maintain distance between keyboard and textField. Most of the time this will be a positive value. + */ + @objc public var movedDistance: CGFloat { + + return _privateMovedDistance + } + + /** + Returns the default singleton instance. + */ + @objc public class var shared: IQKeyboardManager { + struct Static { + //Singleton instance. Initializing keyboard manger. + static let kbManager = IQKeyboardManager() + } + + /** @return Returns the default singleton instance. */ + return Static.kbManager + } + + ///------------------------- + /// MARK: IQToolbar handling + ///------------------------- + + /** + Automatic add the IQToolbar functionality. Default is YES. + */ + @objc public var enableAutoToolbar = true { + + didSet { + + privateIsEnableAutoToolbar() ? addToolbarIfRequired() : removeToolbarIfRequired() + + let enableToolbar = enableAutoToolbar ? "Yes" : "NO" + + showLog("enableAutoToolbar: \(enableToolbar)") + } + } + + private func privateIsEnableAutoToolbar() -> Bool { + + var enableToolbar = enableAutoToolbar + + if let textFieldViewController = _textFieldView?.viewContainingController() { + + if enableToolbar == false { + + //If found any toolbar enabled classes then return. + for enabledClass in enabledToolbarClasses { + + if textFieldViewController.isKind(of: enabledClass) { + enableToolbar = true + break + } + } + } + + if enableToolbar == true { + + //If found any toolbar disabled classes then return. + for disabledClass in disabledToolbarClasses { + + if textFieldViewController.isKind(of: disabledClass) { + enableToolbar = false + break + } + } + + //Special Controllers + if enableToolbar == true { + + let classNameString = NSStringFromClass(type(of:textFieldViewController.self)) + + //_UIAlertControllerTextFieldViewController + if (classNameString.contains("UIAlertController") && classNameString.hasSuffix("TextFieldViewController")) { + enableToolbar = false + } + } + } + } + + return enableToolbar + } + + /** + /** + IQAutoToolbarBySubviews: Creates Toolbar according to subview's hirarchy of Textfield's in view. + IQAutoToolbarByTag: Creates Toolbar according to tag property of TextField's. + IQAutoToolbarByPosition: Creates Toolbar according to the y,x position of textField in it's superview coordinate. + + Default is IQAutoToolbarBySubviews. + */ + AutoToolbar managing behaviour. Default is IQAutoToolbarBySubviews. + */ + @objc public var toolbarManageBehaviour = IQAutoToolbarManageBehaviour.bySubviews + + /** + If YES, then uses textField's tintColor property for IQToolbar, otherwise tint color is black. Default is NO. + */ + @objc public var shouldToolbarUsesTextFieldTintColor = false + + /** + This is used for toolbar.tintColor when textfield.keyboardAppearance is UIKeyboardAppearanceDefault. If shouldToolbarUsesTextFieldTintColor is YES then this property is ignored. Default is nil and uses black color. + */ + @objc public var toolbarTintColor : UIColor? + + /** + This is used for toolbar.barTintColor. Default is nil and uses white color. + */ + @objc public var toolbarBarTintColor : UIColor? + + /** + IQPreviousNextDisplayModeDefault: Show NextPrevious when there are more than 1 textField otherwise hide. + IQPreviousNextDisplayModeAlwaysHide: Do not show NextPrevious buttons in any case. + IQPreviousNextDisplayModeAlwaysShow: Always show nextPrevious buttons, if there are more than 1 textField then both buttons will be visible but will be shown as disabled. + */ + @objc public var previousNextDisplayMode = IQPreviousNextDisplayMode.Default + + /** + Toolbar previous/next/done button icon, If nothing is provided then check toolbarDoneBarButtonItemText to draw done button. + */ + @objc public var toolbarPreviousBarButtonItemImage : UIImage? + @objc public var toolbarNextBarButtonItemImage : UIImage? + @objc public var toolbarDoneBarButtonItemImage : UIImage? + + /** + Toolbar previous/next/done button text, If nothing is provided then system default 'UIBarButtonSystemItemDone' will be used. + */ + @objc public var toolbarPreviousBarButtonItemText : String? + @objc public var toolbarNextBarButtonItemText : String? + @objc public var toolbarDoneBarButtonItemText : String? + + /** + If YES, then it add the textField's placeholder text on IQToolbar. Default is YES. + */ + @objc public var shouldShowToolbarPlaceholder = true + + /** + Placeholder Font. Default is nil. + */ + @objc public var placeholderFont: UIFont? + + /** + Placeholder Color. Default is nil. Which means lightGray + */ + @objc public var placeholderColor: UIColor? + + /** + Placeholder Button Color when it's treated as button. Default is nil. Which means iOS Blue for light toolbar and Yellow for dark toolbar + */ + @objc public var placeholderButtonColor: UIColor? + + + ///-------------------------- + /// MARK: UITextView handling + ///-------------------------- + + /** used to adjust contentInset of UITextView. */ + private var startingTextViewContentInsets = UIEdgeInsets() + + /** used to adjust scrollIndicatorInsets of UITextView. */ + private var startingTextViewScrollIndicatorInsets = UIEdgeInsets() + + /** used with textView to detect a textFieldView contentInset is changed or not. (Bug ID: #92)*/ + private var isTextViewContentInsetChanged = false + + + ///--------------------------------------- + /// MARK: UIKeyboard appearance overriding + ///--------------------------------------- + + /** + Override the keyboardAppearance for all textField/textView. Default is NO. + */ + @objc public var overrideKeyboardAppearance = false + + /** + If overrideKeyboardAppearance is YES, then all the textField keyboardAppearance is set using this property. + */ + @objc public var keyboardAppearance = UIKeyboardAppearance.default + + + ///----------------------------------------------------------- + /// MARK: UITextField/UITextView Next/Previous/Resign handling + ///----------------------------------------------------------- + + + /** + Resigns Keyboard on touching outside of UITextField/View. Default is NO. + */ + @objc public var shouldResignOnTouchOutside = false { + + didSet { + resignFirstResponderGesture.isEnabled = privateShouldResignOnTouchOutside() + + let shouldResign = shouldResignOnTouchOutside ? "Yes" : "NO" + + showLog("shouldResignOnTouchOutside: \(shouldResign)") + } + } + + /** TapGesture to resign keyboard on view's touch. It's a readonly property and exposed only for adding/removing dependencies if your added gesture does have collision with this one */ + @objc lazy public var resignFirstResponderGesture: UITapGestureRecognizer = { + + let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.tapRecognized(_:))) + tapGesture.cancelsTouchesInView = false + tapGesture.delegate = self + + return tapGesture + }() + + /*******************************************/ + + private func privateShouldResignOnTouchOutside() -> Bool { + + var shouldResign = shouldResignOnTouchOutside + + let enableMode = _textFieldView?.shouldResignOnTouchOutsideMode + + if enableMode == .enabled { + shouldResign = true + } else if enableMode == .disabled { + shouldResign = false + } else { + if let textFieldViewController = _textFieldView?.viewContainingController() { + + if shouldResign == false { + + //If viewController is kind of enable viewController class, then assuming shouldResignOnTouchOutside is enabled. + for enabledClass in enabledTouchResignedClasses { + + if textFieldViewController.isKind(of: enabledClass) { + shouldResign = true + break + } + } + } + + if shouldResign == true { + + //If viewController is kind of disable viewController class, then assuming shouldResignOnTouchOutside is disable. + for disabledClass in disabledTouchResignedClasses { + + if textFieldViewController.isKind(of: disabledClass) { + shouldResign = false + break + } + } + + //Special Controllers + if shouldResign == true { + + let classNameString = NSStringFromClass(type(of:textFieldViewController.self)) + + //_UIAlertControllerTextFieldViewController + if (classNameString.contains("UIAlertController") && classNameString.hasSuffix("TextFieldViewController")) { + shouldResign = false + } + } + } + } + } + + return shouldResign + } + + /** + Resigns currently first responder field. + */ + @objc @discardableResult public func resignFirstResponder()-> Bool { + + if let textFieldRetain = _textFieldView { + + //Resigning first responder + let isResignFirstResponder = textFieldRetain.resignFirstResponder() + + // If it refuses then becoming it as first responder again. (Bug ID: #96) + if isResignFirstResponder == false { + //If it refuses to resign then becoming it first responder again for getting notifications callback. + textFieldRetain.becomeFirstResponder() + + showLog("Refuses to resign first responder: \(String(describing: textFieldRetain._IQDescription()))") + } + + return isResignFirstResponder + } + + return false + } + + /** + Returns YES if can navigate to previous responder textField/textView, otherwise NO. + */ + @objc public var canGoPrevious: Bool { + //Getting all responder view's. + if let textFields = responderViews() { + if let textFieldRetain = _textFieldView { + + //Getting index of current textField. + if let index = textFields.index(of: textFieldRetain) { + + //If it is not first textField. then it's previous object canBecomeFirstResponder. + if index > 0 { + return true + } + } + } + } + return false + } + + /** + Returns YES if can navigate to next responder textField/textView, otherwise NO. + */ + @objc public var canGoNext: Bool { + //Getting all responder view's. + if let textFields = responderViews() { + if let textFieldRetain = _textFieldView { + //Getting index of current textField. + if let index = textFields.index(of: textFieldRetain) { + + //If it is not first textField. then it's previous object canBecomeFirstResponder. + if index < textFields.count-1 { + return true + } + } + } + } + return false + } + + /** + Navigate to previous responder textField/textView. + */ + @objc @discardableResult public func goPrevious()-> Bool { + + //Getting all responder view's. + if let textFieldRetain = _textFieldView { + if let textFields = responderViews() { + //Getting index of current textField. + if let index = textFields.index(of: textFieldRetain) { + + //If it is not first textField. then it's previous object becomeFirstResponder. + if index > 0 { + + let nextTextField = textFields[index-1] + + let isAcceptAsFirstResponder = nextTextField.becomeFirstResponder() + + // If it refuses then becoming previous textFieldView as first responder again. (Bug ID: #96) + if isAcceptAsFirstResponder == false { + //If next field refuses to become first responder then restoring old textField as first responder. + textFieldRetain.becomeFirstResponder() + + showLog("Refuses to become first responder: \(nextTextField._IQDescription())") + } + + return isAcceptAsFirstResponder + } + } + } + } + + return false + } + + /** + Navigate to next responder textField/textView. + */ + @objc @discardableResult public func goNext()-> Bool { + + //Getting all responder view's. + if let textFieldRetain = _textFieldView { + if let textFields = responderViews() { + //Getting index of current textField. + if let index = textFields.index(of: textFieldRetain) { + //If it is not last textField. then it's next object becomeFirstResponder. + if index < textFields.count-1 { + + let nextTextField = textFields[index+1] + + let isAcceptAsFirstResponder = nextTextField.becomeFirstResponder() + + // If it refuses then becoming previous textFieldView as first responder again. (Bug ID: #96) + if isAcceptAsFirstResponder == false { + //If next field refuses to become first responder then restoring old textField as first responder. + textFieldRetain.becomeFirstResponder() + + showLog("Refuses to become first responder: \(nextTextField._IQDescription())") + } + + return isAcceptAsFirstResponder + } + } + } + } + + return false + } + + /** previousAction. */ + @objc internal func previousAction (_ barButton : IQBarButtonItem) { + + //If user wants to play input Click sound. + if shouldPlayInputClicks == true { + //Play Input Click Sound. + UIDevice.current.playInputClick() + } + + if canGoPrevious == true { + + if let textFieldRetain = _textFieldView { + let isAcceptAsFirstResponder = goPrevious() + + var invocation = barButton.invocation + //Handling search bar special case + do { + if let searchBar = textFieldRetain.textFieldSearchBar() { + invocation = searchBar.keyboardToolbar.previousBarButton.invocation + } + } + + if isAcceptAsFirstResponder { + invocation?.invoke(from: textFieldRetain) + } + } + } + } + + /** nextAction. */ + @objc internal func nextAction (_ barButton : IQBarButtonItem) { + + //If user wants to play input Click sound. + if shouldPlayInputClicks == true { + //Play Input Click Sound. + UIDevice.current.playInputClick() + } + + if canGoNext == true { + + if let textFieldRetain = _textFieldView { + let isAcceptAsFirstResponder = goNext() + + var invocation = barButton.invocation + //Handling search bar special case + do { + if let searchBar = textFieldRetain.textFieldSearchBar() { + invocation = searchBar.keyboardToolbar.nextBarButton.invocation + } + } + + if isAcceptAsFirstResponder { + invocation?.invoke(from: textFieldRetain) + } + } + } + } + + /** doneAction. Resigning current textField. */ + @objc internal func doneAction (_ barButton : IQBarButtonItem) { + + //If user wants to play input Click sound. + if shouldPlayInputClicks == true { + //Play Input Click Sound. + UIDevice.current.playInputClick() + } + + if let textFieldRetain = _textFieldView { + //Resign textFieldView. + let isResignedFirstResponder = resignFirstResponder() + + var invocation = barButton.invocation + //Handling search bar special case + do { + if let searchBar = textFieldRetain.textFieldSearchBar() { + invocation = searchBar.keyboardToolbar.doneBarButton.invocation + } + } + + if isResignedFirstResponder { + invocation?.invoke(from: textFieldRetain) + } + } + } + + /** Resigning on tap gesture. (Enhancement ID: #14)*/ + @objc internal func tapRecognized(_ gesture: UITapGestureRecognizer) { + + if gesture.state == .ended { + + //Resigning currently responder textField. + _ = resignFirstResponder() + } + } + + /** Note: returning YES is guaranteed to allow simultaneous recognition. returning NO is not guaranteed to prevent simultaneous recognition, as the other gesture's delegate may return YES. */ + @objc public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool { + return false + } + + /** To not detect touch events in a subclass of UIControl, these may have added their own selector for specific work */ + @objc public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool { + // Should not recognize gesture if the clicked view is either UIControl or UINavigationBar(=4.2) + private var _animationCurve : UIView.AnimationOptions = .curveEaseOut + #else + private var _animationCurve : UIViewAnimationOptions = .curveEaseOut + #endif + + /*******************************************/ + + /** Boolean to maintain keyboard is showing or it is hide. To solve rootViewController.view.frame calculations. */ + private var _privateIsKeyboardShowing = false + + private var _privateMovedDistance : CGFloat = 0.0 + + /** To use with keyboardDistanceFromTextField. */ + private var _privateKeyboardDistanceFromTextField: CGFloat = 10.0 + + /** To know if we have any pending request to adjust view position. */ + private var _privateHasPendingAdjustRequest = false + + /**************************************************************************************/ + + ///-------------------------------------- + /// MARK: Initialization/Deinitialization + ///-------------------------------------- + + /* Singleton Object Initialization. */ + override init() { + + super.init() + + self.registerAllNotifications() + + //Creating gesture for @shouldResignOnTouchOutside. (Enhancement ID: #14) + resignFirstResponderGesture.isEnabled = shouldResignOnTouchOutside + + //Loading IQToolbar, IQTitleBarButtonItem, IQBarButtonItem to fix first time keyboard appearance delay (Bug ID: #550) + //If you experience exception breakpoint issue at below line then try these solutions https://stackoverflow.com/questions/27375640/all-exception-break-point-is-stopping-for-no-reason-on-simulator + let textField = UITextField() + textField.addDoneOnKeyboardWithTarget(nil, action: #selector(self.doneAction(_:))) + textField.addPreviousNextDoneOnKeyboardWithTarget(nil, previousAction: #selector(self.previousAction(_:)), nextAction: #selector(self.nextAction(_:)), doneAction: #selector(self.doneAction(_:))) + + disabledDistanceHandlingClasses.append(UITableViewController.self) + disabledDistanceHandlingClasses.append(UIAlertController.self) + disabledToolbarClasses.append(UIAlertController.self) + disabledTouchResignedClasses.append(UIAlertController.self) + toolbarPreviousNextAllowedClasses.append(UITableView.self) + toolbarPreviousNextAllowedClasses.append(UICollectionView.self) + toolbarPreviousNextAllowedClasses.append(IQPreviousNextView.self) + touchResignedGestureIgnoreClasses.append(UIControl.self) + touchResignedGestureIgnoreClasses.append(UINavigationBar.self) + } + + /** Override +load method to enable KeyboardManager when class loader load IQKeyboardManager. Enabling when app starts (No need to write any code) */ + /** It doesn't work from Swift 1.2 */ +// override public class func load() { +// super.load() +// +// //Enabling IQKeyboardManager. +// IQKeyboardManager.shared.enable = true +// } + + deinit { + // Disable the keyboard manager. + enable = false + + //Removing notification observers on dealloc. + NotificationCenter.default.removeObserver(self) + } + + /** Getting keyWindow. */ + private func keyWindow() -> UIWindow? { + + if let keyWindow = _textFieldView?.window { + return keyWindow + } else { + + struct Static { + /** @abstract Save keyWindow object for reuse. + @discussion Sometimes [[UIApplication sharedApplication] keyWindow] is returning nil between the app. */ + static weak var keyWindow : UIWindow? + } + + //If original key window is not nil and the cached keywindow is also not original keywindow then changing keywindow. + if let originalKeyWindow = UIApplication.shared.keyWindow, + (Static.keyWindow == nil || Static.keyWindow != originalKeyWindow) { + Static.keyWindow = originalKeyWindow + } + + //Return KeyWindow + return Static.keyWindow + } + } + + ///----------------------- + /// MARK: Helper Functions + ///----------------------- + + private func optimizedAdjustPosition() { + if _privateHasPendingAdjustRequest == false { + _privateHasPendingAdjustRequest = true + OperationQueue.main.addOperation { + self.adjustPosition() + self._privateHasPendingAdjustRequest = false + } + } + } + + /* Adjusting RootViewController's frame according to interface orientation. */ + private func adjustPosition() { + + // We are unable to get textField object while keyboard showing on UIWebView's textField. (Bug ID: #11) + if _privateHasPendingAdjustRequest == true, + let textFieldView = _textFieldView, + let rootController = textFieldView.parentContainerViewController(), + let window = keyWindow(), + let textFieldViewRectInWindow = textFieldView.superview?.convert(textFieldView.frame, to: window), + let textFieldViewRectInRootSuperview = textFieldView.superview?.convert(textFieldView.frame, to: rootController.view?.superview) + { + let startTime = CACurrentMediaTime() + showLog("****** \(#function) started ******") + + // Getting RootViewOrigin. + var rootViewOrigin = rootController.view.frame.origin + + //Maintain keyboardDistanceFromTextField + var specialKeyboardDistanceFromTextField = textFieldView.keyboardDistanceFromTextField + + if let searchBar = textFieldView.textFieldSearchBar() { + + specialKeyboardDistanceFromTextField = searchBar.keyboardDistanceFromTextField + } + + let newKeyboardDistanceFromTextField = (specialKeyboardDistanceFromTextField == kIQUseDefaultKeyboardDistance) ? keyboardDistanceFromTextField : specialKeyboardDistanceFromTextField + var kbSize = _kbSize + kbSize.height += newKeyboardDistanceFromTextField + + let navigationBarAreaHeight : CGFloat = UIApplication.shared.statusBarFrame.height + ( rootController.navigationController?.navigationBar.frame.height ?? 0) + let layoutAreaHeight : CGFloat = rootController.view.layoutMargins.bottom + + let topLayoutGuide : CGFloat = max(navigationBarAreaHeight, layoutAreaHeight) + 5 + let bottomLayoutGuide : CGFloat = (textFieldView is UITextView) ? 0 : rootController.view.layoutMargins.bottom //Validation of textView for case where there is a tab bar at the bottom or running on iPhone X and textView is at the bottom. + + // Move positive = textField is hidden. + // Move negative = textField is showing. + // Calculating move position. + var move : CGFloat = min(textFieldViewRectInRootSuperview.minY-(topLayoutGuide), textFieldViewRectInWindow.maxY-(window.frame.height-kbSize.height)+bottomLayoutGuide) + + showLog("Need to move: \(move)") + + var superScrollView : UIScrollView? = nil + var superView = textFieldView.superviewOfClassType(UIScrollView.self) as? UIScrollView + + //Getting UIScrollView whose scrolling is enabled. // (Bug ID: #285) + while let view = superView { + + if (view.isScrollEnabled && view.shouldIgnoreScrollingAdjustment == false) { + superScrollView = view + break + } + else { + // Getting it's superScrollView. // (Enhancement ID: #21, #24) + superView = view.superviewOfClassType(UIScrollView.self) as? UIScrollView + } + } + + //If there was a lastScrollView. // (Bug ID: #34) + if let lastScrollView = _lastScrollView { + //If we can't find current superScrollView, then setting lastScrollView to it's original form. + if superScrollView == nil { + + showLog("Restoring \(lastScrollView._IQDescription()) contentInset to : \(_startingContentInsets) and contentOffset to : \(_startingContentOffset)") + + UIView.animate(withDuration: _animationDuration, delay: 0, options: _animationCurve.union(.beginFromCurrentState), animations: { () -> Void in + + lastScrollView.contentInset = self._startingContentInsets + lastScrollView.scrollIndicatorInsets = self._startingScrollIndicatorInsets + }) { (animated:Bool) -> Void in } + + if lastScrollView.shouldRestoreScrollViewContentOffset == true { + lastScrollView.setContentOffset(_startingContentOffset, animated: UIView.areAnimationsEnabled) + } + + _startingContentInsets = UIEdgeInsets() + _startingScrollIndicatorInsets = UIEdgeInsets() + _startingContentOffset = CGPoint.zero + _lastScrollView = nil + } else if superScrollView != lastScrollView { //If both scrollView's are different, then reset lastScrollView to it's original frame and setting current scrollView as last scrollView. + + showLog("Restoring \(lastScrollView._IQDescription()) contentInset to : \(_startingContentInsets) and contentOffset to : \(_startingContentOffset)") + + UIView.animate(withDuration: _animationDuration, delay: 0, options: _animationCurve.union(.beginFromCurrentState), animations: { () -> Void in + + lastScrollView.contentInset = self._startingContentInsets + lastScrollView.scrollIndicatorInsets = self._startingScrollIndicatorInsets + }) { (animated:Bool) -> Void in } + + if lastScrollView.shouldRestoreScrollViewContentOffset == true { + lastScrollView.setContentOffset(_startingContentOffset, animated: UIView.areAnimationsEnabled) + } + + _lastScrollView = superScrollView + if let scrollView = superScrollView { + _startingContentInsets = scrollView.contentInset + _startingScrollIndicatorInsets = scrollView.scrollIndicatorInsets + _startingContentOffset = scrollView.contentOffset + } + + showLog("Saving New \(lastScrollView._IQDescription()) contentInset : \(_startingContentInsets) and contentOffset : \(_startingContentOffset)") + } + //Else the case where superScrollView == lastScrollView means we are on same scrollView after switching to different textField. So doing nothing, going ahead + } else if let unwrappedSuperScrollView = superScrollView { //If there was no lastScrollView and we found a current scrollView. then setting it as lastScrollView. + _lastScrollView = unwrappedSuperScrollView + _startingContentInsets = unwrappedSuperScrollView.contentInset + _startingScrollIndicatorInsets = unwrappedSuperScrollView.scrollIndicatorInsets + _startingContentOffset = unwrappedSuperScrollView.contentOffset + + showLog("Saving \(unwrappedSuperScrollView._IQDescription()) contentInset : \(_startingContentInsets) and contentOffset : \(_startingContentOffset)") + } + + // Special case for ScrollView. + // If we found lastScrollView then setting it's contentOffset to show textField. + if let lastScrollView = _lastScrollView { + //Saving + var lastView = textFieldView + var superScrollView = _lastScrollView + + while let scrollView = superScrollView { + + //Looping in upper hierarchy until we don't found any scrollView in it's upper hirarchy till UIWindow object. + if move > 0 ? (move > (-scrollView.contentOffset.y - scrollView.contentInset.top)) : scrollView.contentOffset.y>0 { + + var tempScrollView = scrollView.superviewOfClassType(UIScrollView.self) as? UIScrollView + var nextScrollView : UIScrollView? = nil + while let view = tempScrollView { + + if (view.isScrollEnabled && view.shouldIgnoreScrollingAdjustment == false) { + nextScrollView = view + break + } else { + tempScrollView = view.superviewOfClassType(UIScrollView.self) as? UIScrollView + } + } + + //Getting lastViewRect. + if let lastViewRect = lastView.superview?.convert(lastView.frame, to: scrollView) { + + //Calculating the expected Y offset from move and scrollView's contentOffset. + var shouldOffsetY = scrollView.contentOffset.y - min(scrollView.contentOffset.y,-move) + + //Rearranging the expected Y offset according to the view. + shouldOffsetY = min(shouldOffsetY, lastViewRect.origin.y) + + //[_textFieldView isKindOfClass:[UITextView class]] If is a UITextView type + //nextScrollView == nil If processing scrollView is last scrollView in upper hierarchy (there is no other scrollView upper hierrchy.) + //[_textFieldView isKindOfClass:[UITextView class]] If is a UITextView type + //shouldOffsetY >= 0 shouldOffsetY must be greater than in order to keep distance from navigationBar (Bug ID: #92) + if textFieldView is UITextView == true && + nextScrollView == nil && + shouldOffsetY >= 0 { + + // Converting Rectangle according to window bounds. + if let currentTextFieldViewRect = textFieldView.superview?.convert(textFieldView.frame, to: window) { + + //Calculating expected fix distance which needs to be managed from navigation bar + let expectedFixDistance = currentTextFieldViewRect.minY - topLayoutGuide + + //Now if expectedOffsetY (superScrollView.contentOffset.y + expectedFixDistance) is lower than current shouldOffsetY, which means we're in a position where navigationBar up and hide, then reducing shouldOffsetY with expectedOffsetY (superScrollView.contentOffset.y + expectedFixDistance) + shouldOffsetY = min(shouldOffsetY, scrollView.contentOffset.y + expectedFixDistance) + + //Setting move to 0 because now we don't want to move any view anymore (All will be managed by our contentInset logic. + move = 0 + } + else { + //Subtracting the Y offset from the move variable, because we are going to change scrollView's contentOffset.y to shouldOffsetY. + move -= (shouldOffsetY-scrollView.contentOffset.y) + } + } + else + { + //Subtracting the Y offset from the move variable, because we are going to change scrollView's contentOffset.y to shouldOffsetY. + move -= (shouldOffsetY-scrollView.contentOffset.y) + } + + //Getting problem while using `setContentOffset:animated:`, So I used animation API. + UIView.animate(withDuration: _animationDuration, delay: 0, options: _animationCurve.union(.beginFromCurrentState), animations: { () -> Void in + + self.showLog("Adjusting \(scrollView.contentOffset.y-shouldOffsetY) to \(scrollView._IQDescription()) ContentOffset") + + self.showLog("Remaining Move: \(move)") + + scrollView.contentOffset = CGPoint(x: scrollView.contentOffset.x, y: shouldOffsetY) + }) { (animated:Bool) -> Void in } + } + + // Getting next lastView & superScrollView. + lastView = scrollView + superScrollView = nextScrollView + } else { + break + } + } + + //Updating contentInset + if let lastScrollViewRect = lastScrollView.superview?.convert(lastScrollView.frame, to: window) { + + let bottom : CGFloat = (kbSize.height-newKeyboardDistanceFromTextField)-(window.frame.height-lastScrollViewRect.maxY) + + // Update the insets so that the scroll vew doesn't shift incorrectly when the offset is near the bottom of the scroll view. + var movedInsets = lastScrollView.contentInset + + movedInsets.bottom = max(_startingContentInsets.bottom, bottom) + + showLog("\(lastScrollView._IQDescription()) old ContentInset : \(lastScrollView.contentInset)") + + //Getting problem while using `setContentOffset:animated:`, So I used animation API. + UIView.animate(withDuration: _animationDuration, delay: 0, options: _animationCurve.union(.beginFromCurrentState), animations: { () -> Void in + lastScrollView.contentInset = movedInsets + + var newInset = lastScrollView.scrollIndicatorInsets + newInset.bottom = movedInsets.bottom + lastScrollView.scrollIndicatorInsets = newInset + + }) { (animated:Bool) -> Void in } + + showLog("\(lastScrollView._IQDescription()) new ContentInset : \(lastScrollView.contentInset)") + } + } + //Going ahead. No else if. + + //Special case for UITextView(Readjusting textView.contentInset when textView hight is too big to fit on screen) + //_lastScrollView If not having inside any scrollView, (now contentInset manages the full screen textView. + //[_textFieldView isKindOfClass:[UITextView class]] If is a UITextView type + if let textView = textFieldView as? UITextView { + +// CGRect rootSuperViewFrameInWindow = [_rootViewController.view.superview convertRect:_rootViewController.view.superview.bounds toView:keyWindow]; +// +// CGFloat keyboardOverlapping = CGRectGetMaxY(rootSuperViewFrameInWindow) - keyboardYPosition; +// +// CGFloat textViewHeight = MIN(CGRectGetHeight(_textFieldView.frame), (CGRectGetHeight(rootSuperViewFrameInWindow)-topLayoutGuide-keyboardOverlapping)); + + let keyboardYPosition = window.frame.height - (kbSize.height-newKeyboardDistanceFromTextField) + var rootSuperViewFrameInWindow = window.frame + if let rootSuperview = rootController.view.superview { + rootSuperViewFrameInWindow = rootSuperview.convert(rootSuperview.bounds, to: window) + } + + let keyboardOverlapping = rootSuperViewFrameInWindow.maxY - keyboardYPosition + + let textViewHeight = min(textView.frame.height, rootSuperViewFrameInWindow.height-topLayoutGuide-keyboardOverlapping) + + if (textView.frame.size.height-textView.contentInset.bottom>textViewHeight) + { + UIView.animate(withDuration: _animationDuration, delay: 0, options: _animationCurve.union(.beginFromCurrentState), animations: { () -> Void in + + self.showLog("\(textFieldView._IQDescription()) Old UITextView.contentInset : \(textView.contentInset)") + + //_isTextViewContentInsetChanged, If frame is not change by library in past, then saving user textView properties (Bug ID: #92) + if (self.isTextViewContentInsetChanged == false) + { + self.startingTextViewContentInsets = textView.contentInset + self.startingTextViewScrollIndicatorInsets = textView.scrollIndicatorInsets + } + + var newContentInset = textView.contentInset + newContentInset.bottom = textView.frame.size.height-textViewHeight + textView.contentInset = newContentInset + textView.scrollIndicatorInsets = newContentInset + self.isTextViewContentInsetChanged = true + + self.showLog("\(textFieldView._IQDescription()) Old UITextView.contentInset : \(textView.contentInset)") + + + }, completion: { (finished) -> Void in }) + } + } + + // +Positive or zero. + if move >= 0 { + + rootViewOrigin.y -= move + + rootViewOrigin.y = max(rootViewOrigin.y, min(0, -(kbSize.height-newKeyboardDistanceFromTextField))) + + showLog("Moving Upward") + // Setting adjusted rootViewRect + + UIView.animate(withDuration: _animationDuration, delay: 0, options: _animationCurve.union(.beginFromCurrentState), animations: { () -> Void in + + var rect = rootController.view.frame + rect.origin = rootViewOrigin + rootController.view.frame = rect + + //Animating content if needed (Bug ID: #204) + if self.layoutIfNeededOnUpdate == true { + //Animating content (Bug ID: #160) + rootController.view.setNeedsLayout() + rootController.view.layoutIfNeeded() + } + + self.showLog("Set \(String(describing: rootController._IQDescription())) origin to : \(rootViewOrigin)") + + }) { (finished) -> Void in } + + _privateMovedDistance = (_topViewBeginOrigin.y-rootViewOrigin.y) + } else { // -Negative + let disturbDistance : CGFloat = rootViewOrigin.y-_topViewBeginOrigin.y + + // disturbDistance Negative = frame disturbed. + // disturbDistance positive = frame not disturbed. + if disturbDistance <= 0 { + + rootViewOrigin.y -= max(move, disturbDistance) + + showLog("Moving Downward") + // Setting adjusted rootViewRect + // Setting adjusted rootViewRect + + UIView.animate(withDuration: _animationDuration, delay: 0, options: _animationCurve.union(.beginFromCurrentState), animations: { () -> Void in + + var rect = rootController.view.frame + rect.origin = rootViewOrigin + rootController.view.frame = rect + + //Animating content if needed (Bug ID: #204) + if self.layoutIfNeededOnUpdate == true { + //Animating content (Bug ID: #160) + rootController.view.setNeedsLayout() + rootController.view.layoutIfNeeded() + } + + self.showLog("Set \(String(describing: rootController._IQDescription())) origin to : \(rootViewOrigin)") + + }) { (finished) -> Void in } + + _privateMovedDistance = (_topViewBeginOrigin.y-rootViewOrigin.y) + } + } + + let elapsedTime = CACurrentMediaTime() - startTime + showLog("****** \(#function) ended: \(elapsedTime) seconds ******\n") + } + } + + private func restorePosition() { + + _privateHasPendingAdjustRequest = false + + // Setting rootViewController frame to it's original position. // (Bug ID: #18) + if _topViewBeginOrigin.equalTo(IQKeyboardManager.kIQCGPointInvalid) == false { + + if let rootViewController = _rootViewController { + + //Used UIViewAnimationOptionBeginFromCurrentState to minimize strange animations. + UIView.animate(withDuration: _animationDuration, delay: 0, options: _animationCurve.union(.beginFromCurrentState), animations: { () -> Void in + + self.showLog("Restoring \(rootViewController._IQDescription()) origin to : \(self._topViewBeginOrigin)") + + // Setting it's new frame + var rect = rootViewController.view.frame + rect.origin = self._topViewBeginOrigin + rootViewController.view.frame = rect + + self._privateMovedDistance = 0 + + if rootViewController.navigationController?.interactivePopGestureRecognizer?.state == .began { + self._rootViewControllerWhilePopGestureRecognizerActive = rootViewController + self._topViewBeginOriginWhilePopGestureRecognizerActive = self._topViewBeginOrigin + } + + //Animating content if needed (Bug ID: #204) + if self.layoutIfNeededOnUpdate == true { + //Animating content (Bug ID: #160) + rootViewController.view.setNeedsLayout() + rootViewController.view.layoutIfNeeded() + } + }) { (finished) -> Void in } + + _rootViewController = nil + } + } + } + + ///--------------------- + /// MARK: Public Methods + ///--------------------- + + /* Refreshes textField/textView position if any external changes is explicitly made by user. */ + @objc public func reloadLayoutIfNeeded() -> Void { + + if privateIsEnabled() == true { + if _privateIsKeyboardShowing == true, + _topViewBeginOrigin.equalTo(IQKeyboardManager.kIQCGPointInvalid) == false, + let textFieldView = _textFieldView, + textFieldView.isAlertViewTextField() == false { + optimizedAdjustPosition() + } + } + } + + ///------------------------------- + /// MARK: UIKeyboard Notifications + ///------------------------------- + + /* UIKeyboardWillShowNotification. */ + @objc internal func keyboardWillShow(_ notification : Notification?) -> Void { + + _kbShowNotification = notification + + // Boolean to know keyboard is showing/hiding + _privateIsKeyboardShowing = true + + let oldKBSize = _kbSize + + if let info = notification?.userInfo { + + #if swift(>=4.2) + let curveUserInfoKey = UIResponder.keyboardAnimationCurveUserInfoKey + let durationUserInfoKey = UIResponder.keyboardAnimationDurationUserInfoKey + let frameEndUserInfoKey = UIResponder.keyboardFrameEndUserInfoKey + #else + let curveUserInfoKey = UIKeyboardAnimationCurveUserInfoKey + let durationUserInfoKey = UIKeyboardAnimationDurationUserInfoKey + let frameEndUserInfoKey = UIKeyboardFrameEndUserInfoKey + #endif + + // Getting keyboard animation. + if let curve = info[curveUserInfoKey] as? UInt { + _animationCurve = .init(rawValue: curve) + } else { + _animationCurve = .curveEaseOut + } + + // Getting keyboard animation duration + if let duration = info[durationUserInfoKey] as? TimeInterval { + + //Saving animation duration + if duration != 0.0 { + _animationDuration = duration + } + } else { + _animationDuration = 0.25 + } + + // Getting UIKeyboardSize. + if let kbFrame = info[frameEndUserInfoKey] as? CGRect { + + let screenSize = UIScreen.main.bounds + + //Calculating actual keyboard displayed size, keyboard frame may be different when hardware keyboard is attached (Bug ID: #469) (Bug ID: #381) + let intersectRect = kbFrame.intersection(screenSize) + + if intersectRect.isNull { + _kbSize = CGSize(width: screenSize.size.width, height: 0) + } else { + _kbSize = intersectRect.size + } + + showLog("UIKeyboard Size : \(_kbSize)") + } + } + + if privateIsEnabled() == false { + return + } + + let startTime = CACurrentMediaTime() + showLog("****** \(#function) started ******") + + // (Bug ID: #5) + if let textFieldView = _textFieldView, _topViewBeginOrigin.equalTo(IQKeyboardManager.kIQCGPointInvalid) == true { + + // keyboard is not showing(At the beginning only). We should save rootViewRect. + _rootViewController = textFieldView.parentContainerViewController() + if let controller = _rootViewController { + + if _rootViewControllerWhilePopGestureRecognizerActive == controller { + _topViewBeginOrigin = _topViewBeginOriginWhilePopGestureRecognizerActive + } else { + _topViewBeginOrigin = controller.view.frame.origin + } + + _rootViewControllerWhilePopGestureRecognizerActive = nil + _topViewBeginOriginWhilePopGestureRecognizerActive = IQKeyboardManager.kIQCGPointInvalid + + self.showLog("Saving \(controller._IQDescription()) beginning origin : \(self._topViewBeginOrigin)") + } + } + + //If last restored keyboard size is different(any orientation accure), then refresh. otherwise not. + if _kbSize.equalTo(oldKBSize) == false { + + //If _textFieldView is inside UITableViewController then let UITableViewController to handle it (Bug ID: #37) (Bug ID: #76) See note:- https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html If it is UIAlertView textField then do not affect anything (Bug ID: #70). + + if _privateIsKeyboardShowing == true, + let textFieldView = _textFieldView, + textFieldView.isAlertViewTextField() == false { + + // keyboard is already showing. adjust position. + optimizedAdjustPosition() + } + } + + let elapsedTime = CACurrentMediaTime() - startTime + showLog("****** \(#function) ended: \(elapsedTime) seconds ******\n") + } + + /* UIKeyboardDidShowNotification. */ + @objc internal func keyboardDidShow(_ notification : Notification?) -> Void { + + if privateIsEnabled() == false { + return + } + + let startTime = CACurrentMediaTime() + showLog("****** \(#function) started ******") + + if let textFieldView = _textFieldView, + let parentController = textFieldView.parentContainerViewController(), (parentController.modalPresentationStyle == UIModalPresentationStyle.formSheet || parentController.modalPresentationStyle == UIModalPresentationStyle.pageSheet), + textFieldView.isAlertViewTextField() == false { + + self.optimizedAdjustPosition() + } + + let elapsedTime = CACurrentMediaTime() - startTime + showLog("****** \(#function) ended: \(elapsedTime) seconds ******\n") + } + + /* UIKeyboardWillHideNotification. So setting rootViewController to it's default frame. */ + @objc internal func keyboardWillHide(_ notification : Notification?) -> Void { + + //If it's not a fake notification generated by [self setEnable:NO]. + if notification != nil { + _kbShowNotification = nil + } + + // Boolean to know keyboard is showing/hiding + _privateIsKeyboardShowing = false + + if let info = notification?.userInfo { + + #if swift(>=4.2) + let durationUserInfoKey = UIResponder.keyboardAnimationDurationUserInfoKey + #else + let durationUserInfoKey = UIKeyboardAnimationDurationUserInfoKey + #endif + + // Getting keyboard animation duration + if let duration = info[durationUserInfoKey] as? TimeInterval { + if duration != 0 { + // Setitng keyboard animation duration + _animationDuration = duration + } + } + } + + //If not enabled then do nothing. + if privateIsEnabled() == false { + return + } + + let startTime = CACurrentMediaTime() + showLog("****** \(#function) started ******") + + //Commented due to #56. Added all the conditions below to handle UIWebView's textFields. (Bug ID: #56) + // We are unable to get textField object while keyboard showing on UIWebView's textField. (Bug ID: #11) + // if (_textFieldView == nil) return + + //Restoring the contentOffset of the lastScrollView + if let lastScrollView = _lastScrollView { + + UIView.animate(withDuration: _animationDuration, delay: 0, options: _animationCurve.union(.beginFromCurrentState), animations: { () -> Void in + + lastScrollView.contentInset = self._startingContentInsets + lastScrollView.scrollIndicatorInsets = self._startingScrollIndicatorInsets + + if lastScrollView.shouldRestoreScrollViewContentOffset == true { + lastScrollView.contentOffset = self._startingContentOffset + } + + self.showLog("Restoring \(lastScrollView._IQDescription()) contentInset to : \(self._startingContentInsets) and contentOffset to : \(self._startingContentOffset)") + + // TODO: restore scrollView state + // This is temporary solution. Have to implement the save and restore scrollView state + var superScrollView : UIScrollView? = lastScrollView + + while let scrollView = superScrollView { + + let contentSize = CGSize(width: max(scrollView.contentSize.width, scrollView.frame.width), height: max(scrollView.contentSize.height, scrollView.frame.height)) + + let minimumY = contentSize.height - scrollView.frame.height + + if minimumY < scrollView.contentOffset.y { + scrollView.contentOffset = CGPoint(x: scrollView.contentOffset.x, y: minimumY) + + self.showLog("Restoring \(scrollView._IQDescription()) contentOffset to : \(self._startingContentOffset)") + } + + superScrollView = scrollView.superviewOfClassType(UIScrollView.self) as? UIScrollView + } + }) { (finished) -> Void in } + } + + restorePosition() + + //Reset all values + _lastScrollView = nil + _kbSize = CGSize.zero + _startingContentInsets = UIEdgeInsets() + _startingScrollIndicatorInsets = UIEdgeInsets() + _startingContentOffset = CGPoint.zero + // topViewBeginRect = CGRectZero //Commented due to #82 + + let elapsedTime = CACurrentMediaTime() - startTime + showLog("****** \(#function) ended: \(elapsedTime) seconds ******\n") + } + + @objc internal func keyboardDidHide(_ notification:Notification) { + + let startTime = CACurrentMediaTime() + showLog("****** \(#function) started ******") + + _topViewBeginOrigin = IQKeyboardManager.kIQCGPointInvalid + + _kbSize = CGSize.zero + + let elapsedTime = CACurrentMediaTime() - startTime + showLog("****** \(#function) ended: \(elapsedTime) seconds ******\n") + } + + ///------------------------------------------- + /// MARK: UITextField/UITextView Notifications + ///------------------------------------------- + + /** UITextFieldTextDidBeginEditingNotification, UITextViewTextDidBeginEditingNotification. Fetching UITextFieldView object. */ + @objc internal func textFieldViewDidBeginEditing(_ notification:Notification) { + + let startTime = CACurrentMediaTime() + showLog("****** \(#function) started ******") + + // Getting object + _textFieldView = notification.object as? UIView + + if overrideKeyboardAppearance == true { + + if let textFieldView = _textFieldView as? UITextField { + //If keyboard appearance is not like the provided appearance + if textFieldView.keyboardAppearance != keyboardAppearance { + //Setting textField keyboard appearance and reloading inputViews. + textFieldView.keyboardAppearance = keyboardAppearance + textFieldView.reloadInputViews() + } + } else if let textFieldView = _textFieldView as? UITextView { + //If keyboard appearance is not like the provided appearance + if textFieldView.keyboardAppearance != keyboardAppearance { + //Setting textField keyboard appearance and reloading inputViews. + textFieldView.keyboardAppearance = keyboardAppearance + textFieldView.reloadInputViews() + } + } + } + + //If autoToolbar enable, then add toolbar on all the UITextField/UITextView's if required. + if privateIsEnableAutoToolbar() == true { + + //UITextView special case. Keyboard Notification is firing before textView notification so we need to resign it first and then again set it as first responder to add toolbar on it. + if let textView = _textFieldView as? UITextView, + textView.inputAccessoryView == nil { + + UIView.animate(withDuration: 0.00001, delay: 0, options: _animationCurve.union(.beginFromCurrentState), animations: { () -> Void in + + self.addToolbarIfRequired() + + }, completion: { (finished) -> Void in + + //On textView toolbar didn't appear on first time, so forcing textView to reload it's inputViews. + textView.reloadInputViews() + }) + } else { + //Adding toolbar + addToolbarIfRequired() + } + } else { + removeToolbarIfRequired() + } + + resignFirstResponderGesture.isEnabled = privateShouldResignOnTouchOutside() + _textFieldView?.window?.addGestureRecognizer(resignFirstResponderGesture) // (Enhancement ID: #14) + + if privateIsEnabled() == true { + if _topViewBeginOrigin.equalTo(IQKeyboardManager.kIQCGPointInvalid) == true { // (Bug ID: #5) + + _rootViewController = _textFieldView?.parentContainerViewController() + + if let controller = _rootViewController { + + if _rootViewControllerWhilePopGestureRecognizerActive == controller { + _topViewBeginOrigin = _topViewBeginOriginWhilePopGestureRecognizerActive + } else { + _topViewBeginOrigin = controller.view.frame.origin + } + + _rootViewControllerWhilePopGestureRecognizerActive = nil + _topViewBeginOriginWhilePopGestureRecognizerActive = IQKeyboardManager.kIQCGPointInvalid + + self.showLog("Saving \(controller._IQDescription()) beginning origin : \(self._topViewBeginOrigin)") + } + } + + //If _textFieldView is inside ignored responder then do nothing. (Bug ID: #37, #74, #76) + //See notes:- https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html If it is UIAlertView textField then do not affect anything (Bug ID: #70). + if _privateIsKeyboardShowing == true, + let textFieldView = _textFieldView, + textFieldView.isAlertViewTextField() == false { + + // keyboard is already showing. adjust position. + optimizedAdjustPosition() + } + } + + let elapsedTime = CACurrentMediaTime() - startTime + showLog("****** \(#function) ended: \(elapsedTime) seconds ******\n") + } + + /** UITextFieldTextDidEndEditingNotification, UITextViewTextDidEndEditingNotification. Removing fetched object. */ + @objc internal func textFieldViewDidEndEditing(_ notification:Notification) { + + let startTime = CACurrentMediaTime() + showLog("****** \(#function) started ******") + + //Removing gesture recognizer (Enhancement ID: #14) + _textFieldView?.window?.removeGestureRecognizer(resignFirstResponderGesture) + + // We check if there's a change in original frame or not. + + if let textView = _textFieldView as? UITextView { + + if isTextViewContentInsetChanged == true { + + UIView.animate(withDuration: _animationDuration, delay: 0, options: _animationCurve.union(.beginFromCurrentState), animations: { () -> Void in + + self.isTextViewContentInsetChanged = false + + self.showLog("Restoring \(textView._IQDescription()) textView.contentInset to : \(self.startingTextViewContentInsets)") + + //Setting textField to it's initial contentInset + textView.contentInset = self.startingTextViewContentInsets + textView.scrollIndicatorInsets = self.startingTextViewScrollIndicatorInsets + + }, completion: { (finished) -> Void in }) + } + } + + //Setting object to nil + _textFieldView = nil + + let elapsedTime = CACurrentMediaTime() - startTime + showLog("****** \(#function) ended: \(elapsedTime) seconds ******\n") + } + + ///--------------------------------------- + /// MARK: UIStatusBar Notification methods + ///--------------------------------------- + + /** UIApplicationWillChangeStatusBarOrientationNotification. Need to set the textView to it's original position. If any frame changes made. (Bug ID: #92)*/ + @objc internal func willChangeStatusBarOrientation(_ notification:Notification) { + + let startTime = CACurrentMediaTime() + showLog("****** \(#function) started ******") + + //If textViewContentInsetChanged is saved then restore it. + if let textView = _textFieldView as? UITextView { + + if isTextViewContentInsetChanged == true { + + UIView.animate(withDuration: _animationDuration, delay: 0, options: _animationCurve.union(.beginFromCurrentState), animations: { () -> Void in + + self.isTextViewContentInsetChanged = false + + self.showLog("Restoring \(textView._IQDescription()) textView.contentInset to : \(self.startingTextViewContentInsets)") + + //Setting textField to it's initial contentInset + textView.contentInset = self.startingTextViewContentInsets + textView.scrollIndicatorInsets = self.startingTextViewScrollIndicatorInsets + + }, completion: { (finished) -> Void in }) + } + } + + restorePosition() + + let elapsedTime = CACurrentMediaTime() - startTime + showLog("****** \(#function) ended: \(elapsedTime) seconds ******\n") + } + + ///------------------ + /// MARK: AutoToolbar + ///------------------ + + /** Get all UITextField/UITextView siblings of textFieldView. */ + private func responderViews()-> [UIView]? { + + var superConsideredView : UIView? + + //If find any consider responderView in it's upper hierarchy then will get deepResponderView. + for disabledClass in toolbarPreviousNextAllowedClasses { + + superConsideredView = _textFieldView?.superviewOfClassType(disabledClass) + + if superConsideredView != nil { + break + } + } + + //If there is a superConsideredView in view's hierarchy, then fetching all it's subview that responds. No sorting for superConsideredView, it's by subView position. (Enhancement ID: #22) + if let view = superConsideredView { + return view.deepResponderViews() + } else { //Otherwise fetching all the siblings + + if let textFields = _textFieldView?.responderSiblings() { + + //Sorting textFields according to behaviour + switch toolbarManageBehaviour { + //If autoToolbar behaviour is bySubviews, then returning it. + case IQAutoToolbarManageBehaviour.bySubviews: return textFields + + //If autoToolbar behaviour is by tag, then sorting it according to tag property. + case IQAutoToolbarManageBehaviour.byTag: return textFields.sortedArrayByTag() + + //If autoToolbar behaviour is by tag, then sorting it according to tag property. + case IQAutoToolbarManageBehaviour.byPosition: return textFields.sortedArrayByPosition() + } + } else { + return nil + } + } + } + + /** Add toolbar if it is required to add on textFields and it's siblings. */ + private func addToolbarIfRequired() { + + let startTime = CACurrentMediaTime() + showLog("****** \(#function) started ******") + + // Getting all the sibling textFields. + if let siblings = responderViews(), !siblings.isEmpty { + + showLog("Found \(siblings.count) responder sibling(s)") + + if let textField = _textFieldView { + //Either there is no inputAccessoryView or if accessoryView is not appropriate for current situation(There is Previous/Next/Done toolbar). + //setInputAccessoryView: check (Bug ID: #307) + if textField.responds(to: #selector(setter: UITextField.inputAccessoryView)) { + + if textField.inputAccessoryView == nil || + textField.inputAccessoryView?.tag == IQKeyboardManager.kIQPreviousNextButtonToolbarTag || + textField.inputAccessoryView?.tag == IQKeyboardManager.kIQDoneButtonToolbarTag { + + let rightConfiguration : IQBarButtonItemConfiguration + + if let doneBarButtonItemImage = toolbarDoneBarButtonItemImage { + rightConfiguration = IQBarButtonItemConfiguration(image: doneBarButtonItemImage, action: #selector(self.doneAction(_:))) + } else if let doneBarButtonItemText = toolbarDoneBarButtonItemText { + rightConfiguration = IQBarButtonItemConfiguration(title: doneBarButtonItemText, action: #selector(self.doneAction(_:))) + } else { + rightConfiguration = IQBarButtonItemConfiguration(barButtonSystemItem: .done, action: #selector(self.doneAction(_:))) + } + + // If only one object is found, then adding only Done button. + if (siblings.count == 1 && previousNextDisplayMode == .Default) || previousNextDisplayMode == .alwaysHide { + + textField.addKeyboardToolbarWithTarget(target: self, titleText: (shouldShowToolbarPlaceholder ? textField.drawingToolbarPlaceholder : nil), rightBarButtonConfiguration: rightConfiguration, previousBarButtonConfiguration: nil, nextBarButtonConfiguration: nil) + + textField.inputAccessoryView?.tag = IQKeyboardManager.kIQDoneButtonToolbarTag // (Bug ID: #78) + + } else if (siblings.count > 1 && previousNextDisplayMode == .Default) || previousNextDisplayMode == .alwaysShow { + + let prevConfiguration : IQBarButtonItemConfiguration + + if let doneBarButtonItemImage = toolbarPreviousBarButtonItemImage { + prevConfiguration = IQBarButtonItemConfiguration(image: doneBarButtonItemImage, action: #selector(self.previousAction(_:))) + } else if let doneBarButtonItemText = toolbarPreviousBarButtonItemText { + prevConfiguration = IQBarButtonItemConfiguration(title: doneBarButtonItemText, action: #selector(self.previousAction(_:))) + } else { + prevConfiguration = IQBarButtonItemConfiguration(image: (UIImage.keyboardPreviousImage() ?? UIImage()), action: #selector(self.previousAction(_:))) + } + + let nextConfiguration : IQBarButtonItemConfiguration + + if let doneBarButtonItemImage = toolbarNextBarButtonItemImage { + nextConfiguration = IQBarButtonItemConfiguration(image: doneBarButtonItemImage, action: #selector(self.nextAction(_:))) + } else if let doneBarButtonItemText = toolbarNextBarButtonItemText { + nextConfiguration = IQBarButtonItemConfiguration(title: doneBarButtonItemText, action: #selector(self.nextAction(_:))) + } else { + nextConfiguration = IQBarButtonItemConfiguration(image: (UIImage.keyboardNextImage() ?? UIImage()), action: #selector(self.nextAction(_:))) + } + + textField.addKeyboardToolbarWithTarget(target: self, titleText: (shouldShowToolbarPlaceholder ? textField.drawingToolbarPlaceholder : nil), rightBarButtonConfiguration: rightConfiguration, previousBarButtonConfiguration: prevConfiguration, nextBarButtonConfiguration: nextConfiguration) + + textField.inputAccessoryView?.tag = IQKeyboardManager.kIQPreviousNextButtonToolbarTag // (Bug ID: #78) + } + + let toolbar = textField.keyboardToolbar + + // Setting toolbar to keyboard. + if let _textField = textField as? UITextField { + + //Bar style according to keyboard appearance + switch _textField.keyboardAppearance { + + case .dark: + toolbar.barStyle = UIBarStyle.black + toolbar.tintColor = UIColor.white + toolbar.barTintColor = nil + default: + toolbar.barStyle = UIBarStyle.default + toolbar.barTintColor = toolbarBarTintColor + + //Setting toolbar tintColor // (Enhancement ID: #30) + if shouldToolbarUsesTextFieldTintColor { + toolbar.tintColor = _textField.tintColor + } else if let tintColor = toolbarTintColor { + toolbar.tintColor = tintColor + } else { + toolbar.tintColor = UIColor.black + } + } + } else if let _textView = textField as? UITextView { + + //Bar style according to keyboard appearance + switch _textView.keyboardAppearance { + + case .dark: + toolbar.barStyle = UIBarStyle.black + toolbar.tintColor = UIColor.white + toolbar.barTintColor = nil + default: + toolbar.barStyle = UIBarStyle.default + toolbar.barTintColor = toolbarBarTintColor + + if shouldToolbarUsesTextFieldTintColor { + toolbar.tintColor = _textView.tintColor + } else if let tintColor = toolbarTintColor { + toolbar.tintColor = tintColor + } else { + toolbar.tintColor = UIColor.black + } + } + } + + //Setting toolbar title font. // (Enhancement ID: #30) + if shouldShowToolbarPlaceholder == true && + textField.shouldHideToolbarPlaceholder == false { + + //Updating placeholder font to toolbar. //(Bug ID: #148, #272) + if toolbar.titleBarButton.title == nil || + toolbar.titleBarButton.title != textField.drawingToolbarPlaceholder { + toolbar.titleBarButton.title = textField.drawingToolbarPlaceholder + } + + //Setting toolbar title font. // (Enhancement ID: #30) + if let font = placeholderFont { + toolbar.titleBarButton.titleFont = font + } + + //Setting toolbar title color. // (Enhancement ID: #880) + if let color = placeholderColor { + toolbar.titleBarButton.titleColor = color + } + + //Setting toolbar button title color. // (Enhancement ID: #880) + if let color = placeholderButtonColor { + toolbar.titleBarButton.selectableTitleColor = color + } + + } else { + + toolbar.titleBarButton.title = nil + } + + //In case of UITableView (Special), the next/previous buttons has to be refreshed everytime. (Bug ID: #56) + // If firstTextField, then previous should not be enabled. + if siblings.first == textField { + if (siblings.count == 1) { + textField.keyboardToolbar.previousBarButton.isEnabled = false + textField.keyboardToolbar.nextBarButton.isEnabled = false + } else { + textField.keyboardToolbar.previousBarButton.isEnabled = false + textField.keyboardToolbar.nextBarButton.isEnabled = true + } + } else if siblings.last == textField { // If lastTextField then next should not be enaled. + textField.keyboardToolbar.previousBarButton.isEnabled = true + textField.keyboardToolbar.nextBarButton.isEnabled = false + } else { + textField.keyboardToolbar.previousBarButton.isEnabled = true + textField.keyboardToolbar.nextBarButton.isEnabled = true + } + } + } + } + } + + let elapsedTime = CACurrentMediaTime() - startTime + showLog("****** \(#function) ended: \(elapsedTime) seconds ******\n") + } + + /** Remove any toolbar if it is IQToolbar. */ + private func removeToolbarIfRequired() { // (Bug ID: #18) + + let startTime = CACurrentMediaTime() + showLog("****** \(#function) started ******") + + // Getting all the sibling textFields. + if let siblings = responderViews() { + + showLog("Found \(siblings.count) responder sibling(s)") + + for view in siblings { + + if let toolbar = view.inputAccessoryView as? IQToolbar { + + //setInputAccessoryView: check (Bug ID: #307) + if view.responds(to: #selector(setter: UITextField.inputAccessoryView)) && + (toolbar.tag == IQKeyboardManager.kIQDoneButtonToolbarTag || toolbar.tag == IQKeyboardManager.kIQPreviousNextButtonToolbarTag) { + + if let textField = view as? UITextField { + textField.inputAccessoryView = nil + textField.reloadInputViews() + } else if let textView = view as? UITextView { + textView.inputAccessoryView = nil + textView.reloadInputViews() + } + } + } + } + } + + let elapsedTime = CACurrentMediaTime() - startTime + showLog("****** \(#function) ended: \(elapsedTime) seconds ******\n") + } + + /** reloadInputViews to reload toolbar buttons enable/disable state on the fly Enhancement ID #434. */ + @objc public func reloadInputViews() { + + //If enabled then adding toolbar. + if privateIsEnableAutoToolbar() == true { + self.addToolbarIfRequired() + } else { + self.removeToolbarIfRequired() + } + } + + ///------------------------------------ + /// MARK: Debugging & Developer options + ///------------------------------------ + + @objc public var enableDebugging = false + + /** + @warning Use below methods to completely enable/disable notifications registered by library internally. Please keep in mind that library is totally dependent on NSNotification of UITextField, UITextField, Keyboard etc. If you do unregisterAllNotifications then library will not work at all. You should only use below methods if you want to completedly disable all library functions. You should use below methods at your own risk. + */ + @objc public func registerAllNotifications() { + + #if swift(>=4.2) + let UIKeyboardWillShow = UIResponder.keyboardWillShowNotification + let UIKeyboardDidShow = UIResponder.keyboardDidShowNotification + let UIKeyboardWillHide = UIResponder.keyboardWillHideNotification + let UIKeyboardDidHide = UIResponder.keyboardDidHideNotification + + let UITextFieldTextDidBeginEditing = UITextField.textDidBeginEditingNotification + let UITextFieldTextDidEndEditing = UITextField.textDidEndEditingNotification + + let UITextViewTextDidBeginEditing = UITextView.textDidBeginEditingNotification + let UITextViewTextDidEndEditing = UITextView.textDidEndEditingNotification + + let UIApplicationWillChangeStatusBarOrientation = UIApplication.willChangeStatusBarOrientationNotification + #else + let UIKeyboardWillShow = Notification.Name.UIKeyboardWillShow + let UIKeyboardDidShow = Notification.Name.UIKeyboardDidShow + let UIKeyboardWillHide = Notification.Name.UIKeyboardWillHide + let UIKeyboardDidHide = Notification.Name.UIKeyboardDidHide + + let UITextFieldTextDidBeginEditing = Notification.Name.UITextFieldTextDidBeginEditing + let UITextFieldTextDidEndEditing = Notification.Name.UITextFieldTextDidEndEditing + + let UITextViewTextDidBeginEditing = Notification.Name.UITextViewTextDidBeginEditing + let UITextViewTextDidEndEditing = Notification.Name.UITextViewTextDidEndEditing + + let UIApplicationWillChangeStatusBarOrientation = Notification.Name.UIApplicationWillChangeStatusBarOrientation + #endif + + // Registering for keyboard notification. + NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow(_:)), name: UIKeyboardWillShow, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardDidShow(_:)), name: UIKeyboardDidShow, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide(_:)), name: UIKeyboardWillHide, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardDidHide(_:)), name: UIKeyboardDidHide, object: nil) + + // Registering for UITextField notification. + registerTextFieldViewClass(UITextField.self, didBeginEditingNotificationName: UITextFieldTextDidBeginEditing.rawValue, didEndEditingNotificationName: UITextFieldTextDidEndEditing.rawValue) + + // Registering for UITextView notification. + registerTextFieldViewClass(UITextView.self, didBeginEditingNotificationName: UITextViewTextDidBeginEditing.rawValue, didEndEditingNotificationName: UITextViewTextDidEndEditing.rawValue) + + // Registering for orientation changes notification + NotificationCenter.default.addObserver(self, selector: #selector(self.willChangeStatusBarOrientation(_:)), name: UIApplicationWillChangeStatusBarOrientation, object: UIApplication.shared) + } + + @objc public func unregisterAllNotifications() { + + #if swift(>=4.2) + let UIKeyboardWillShow = UIResponder.keyboardWillShowNotification + let UIKeyboardDidShow = UIResponder.keyboardDidShowNotification + let UIKeyboardWillHide = UIResponder.keyboardWillHideNotification + let UIKeyboardDidHide = UIResponder.keyboardDidHideNotification + + let UITextFieldTextDidBeginEditing = UITextField.textDidBeginEditingNotification + let UITextFieldTextDidEndEditing = UITextField.textDidEndEditingNotification + + let UITextViewTextDidBeginEditing = UITextView.textDidBeginEditingNotification + let UITextViewTextDidEndEditing = UITextView.textDidEndEditingNotification + + let UIApplicationWillChangeStatusBarOrientation = UIApplication.willChangeStatusBarOrientationNotification + #else + let UIKeyboardWillShow = Notification.Name.UIKeyboardWillShow + let UIKeyboardDidShow = Notification.Name.UIKeyboardDidShow + let UIKeyboardWillHide = Notification.Name.UIKeyboardWillHide + let UIKeyboardDidHide = Notification.Name.UIKeyboardDidHide + + let UITextFieldTextDidBeginEditing = Notification.Name.UITextFieldTextDidBeginEditing + let UITextFieldTextDidEndEditing = Notification.Name.UITextFieldTextDidEndEditing + + let UITextViewTextDidBeginEditing = Notification.Name.UITextViewTextDidBeginEditing + let UITextViewTextDidEndEditing = Notification.Name.UITextViewTextDidEndEditing + + let UIApplicationWillChangeStatusBarOrientation = Notification.Name.UIApplicationWillChangeStatusBarOrientation + #endif + + // Unregistering for keyboard notification. + NotificationCenter.default.removeObserver(self, name: UIKeyboardWillShow, object: nil) + NotificationCenter.default.removeObserver(self, name: UIKeyboardDidShow, object: nil) + NotificationCenter.default.removeObserver(self, name: UIKeyboardWillHide, object: nil) + NotificationCenter.default.removeObserver(self, name: UIKeyboardDidHide, object: nil) + + // Unregistering for UITextField notification. + unregisterTextFieldViewClass(UITextField.self, didBeginEditingNotificationName: UITextFieldTextDidBeginEditing.rawValue, didEndEditingNotificationName: UITextFieldTextDidEndEditing.rawValue) + + // Unregistering for UITextView notification. + unregisterTextFieldViewClass(UITextView.self, didBeginEditingNotificationName: UITextViewTextDidBeginEditing.rawValue, didEndEditingNotificationName: UITextViewTextDidEndEditing.rawValue) + + // Unregistering for orientation changes notification + NotificationCenter.default.removeObserver(self, name: UIApplicationWillChangeStatusBarOrientation, object: UIApplication.shared) + } + + private func showLog(_ logString: String) { + + if enableDebugging { + print("IQKeyboardManager: " + logString) + } + } +} + diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardReturnKeyHandler.swift b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardReturnKeyHandler.swift new file mode 100644 index 00000000..cd85eccb --- /dev/null +++ b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQKeyboardReturnKeyHandler.swift @@ -0,0 +1,628 @@ +// +// IQKeyboardReturnKeyHandler.swift +// https://github.com/hackiftekhar/IQKeyboardManager +// Copyright (c) 2013-16 Iftekhar Qurashi. +// +// 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 Foundation +import UIKit + +fileprivate class IQTextFieldViewInfoModal : NSObject { + + fileprivate weak var textFieldDelegate: UITextFieldDelegate? + fileprivate weak var textViewDelegate: UITextViewDelegate? + fileprivate weak var textFieldView: UIView? + fileprivate var originalReturnKeyType = UIReturnKeyType.default + + init(textFieldView : UIView?, textFieldDelegate : UITextFieldDelegate?, textViewDelegate : UITextViewDelegate?, originalReturnKeyType : UIReturnKeyType = .default) { + self.textFieldView = textFieldView + self.textFieldDelegate = textFieldDelegate + self.textViewDelegate = textViewDelegate + self.originalReturnKeyType = originalReturnKeyType + } +} + +/** +Manages the return key to work like next/done in a view hierarchy. +*/ +public class IQKeyboardReturnKeyHandler: NSObject , UITextFieldDelegate, UITextViewDelegate { + + + ///--------------- + /// MARK: Settings + ///--------------- + + /** + Delegate of textField/textView. + */ + @objc public weak var delegate: (UITextFieldDelegate & UITextViewDelegate)? + + /** + Set the last textfield return key type. Default is UIReturnKeyDefault. + */ + @objc public var lastTextFieldReturnKeyType : UIReturnKeyType = UIReturnKeyType.default { + + didSet { + + for modal in textFieldInfoCache { + + if let view = modal.textFieldView { + updateReturnKeyTypeOnTextField(view) + } + } + } + } + + ///-------------------------------------- + /// MARK: Initialization/Deinitialization + ///-------------------------------------- + + @objc public override init() { + super.init() + } + + /** + Add all the textFields available in UIViewController's view. + */ + @objc public init(controller : UIViewController) { + super.init() + + addResponderFromView(controller.view) + } + + deinit { + + for modal in textFieldInfoCache { + + if let textField = modal.textFieldView as? UITextField { + textField.returnKeyType = modal.originalReturnKeyType + + textField.delegate = modal.textFieldDelegate + + } else if let textView = modal.textFieldView as? UITextView { + + textView.returnKeyType = modal.originalReturnKeyType + + textView.delegate = modal.textViewDelegate + } + } + + textFieldInfoCache.removeAll() + } + + + ///------------------------ + /// MARK: Private variables + ///------------------------ + private var textFieldInfoCache = [IQTextFieldViewInfoModal]() + + ///------------------------ + /// MARK: Private Functions + ///------------------------ + private func textFieldViewCachedInfo(_ textField : UIView) -> IQTextFieldViewInfoModal? { + + for modal in textFieldInfoCache { + + if let view = modal.textFieldView { + + if view == textField { + return modal + } + } + } + + return nil + } + + private func updateReturnKeyTypeOnTextField(_ view : UIView) + { + var superConsideredView : UIView? + + //If find any consider responderView in it's upper hierarchy then will get deepResponderView. (Bug ID: #347) + for disabledClass in IQKeyboardManager.shared.toolbarPreviousNextAllowedClasses { + + superConsideredView = view.superviewOfClassType(disabledClass) + + if superConsideredView != nil { + break + } + } + + var textFields = [UIView]() + + //If there is a tableView in view's hierarchy, then fetching all it's subview that responds. + if let unwrappedTableView = superConsideredView { // (Enhancement ID: #22) + textFields = unwrappedTableView.deepResponderViews() + } else { //Otherwise fetching all the siblings + + textFields = view.responderSiblings() + + //Sorting textFields according to behaviour + switch IQKeyboardManager.shared.toolbarManageBehaviour { + //If needs to sort it by tag + case .byTag: textFields = textFields.sortedArrayByTag() + //If needs to sort it by Position + case .byPosition: textFields = textFields.sortedArrayByPosition() + default: break + } + } + + if let lastView = textFields.last { + + if let textField = view as? UITextField { + + //If it's the last textField in responder view, else next + textField.returnKeyType = (view == lastView) ? lastTextFieldReturnKeyType : UIReturnKeyType.next + } else if let textView = view as? UITextView { + + //If it's the last textField in responder view, else next + textView.returnKeyType = (view == lastView) ? lastTextFieldReturnKeyType : UIReturnKeyType.next + } + } + } + + + ///---------------------------------------------- + /// MARK: Registering/Unregistering textFieldView + ///---------------------------------------------- + + /** + Should pass UITextField/UITextView intance. Assign textFieldView delegate to self, change it's returnKeyType. + + @param view UITextField/UITextView object to register. + */ + @objc public func addTextFieldView(_ view : UIView) { + + let modal = IQTextFieldViewInfoModal(textFieldView: view, textFieldDelegate: nil, textViewDelegate: nil) + + if let textField = view as? UITextField { + + modal.originalReturnKeyType = textField.returnKeyType + modal.textFieldDelegate = textField.delegate + textField.delegate = self + + } else if let textView = view as? UITextView { + + modal.originalReturnKeyType = textView.returnKeyType + modal.textViewDelegate = textView.delegate + textView.delegate = self + } + + textFieldInfoCache.append(modal) + } + + /** + Should pass UITextField/UITextView intance. Restore it's textFieldView delegate and it's returnKeyType. + + @param view UITextField/UITextView object to unregister. + */ + @objc public func removeTextFieldView(_ view : UIView) { + + if let modal = textFieldViewCachedInfo(view) { + + if let textField = view as? UITextField { + + textField.returnKeyType = modal.originalReturnKeyType + textField.delegate = modal.textFieldDelegate + } else if let textView = view as? UITextView { + + textView.returnKeyType = modal.originalReturnKeyType + textView.delegate = modal.textViewDelegate + } + + if let index = textFieldInfoCache.index(where: { $0.textFieldView == view}) { + + textFieldInfoCache.remove(at: index) + } + } + } + + /** + Add all the UITextField/UITextView responderView's. + + @param view UIView object to register all it's responder subviews. + */ + @objc public func addResponderFromView(_ view : UIView) { + + let textFields = view.deepResponderViews() + + for textField in textFields { + + addTextFieldView(textField) + } + } + + /** + Remove all the UITextField/UITextView responderView's. + + @param view UIView object to unregister all it's responder subviews. + */ + @objc public func removeResponderFromView(_ view : UIView) { + + let textFields = view.deepResponderViews() + + for textField in textFields { + + removeTextFieldView(textField) + } + } + + @discardableResult private func goToNextResponderOrResign(_ view : UIView) -> Bool { + + var superConsideredView : UIView? + + //If find any consider responderView in it's upper hierarchy then will get deepResponderView. (Bug ID: #347) + for disabledClass in IQKeyboardManager.shared.toolbarPreviousNextAllowedClasses { + + superConsideredView = view.superviewOfClassType(disabledClass) + + if superConsideredView != nil { + break + } + } + + var textFields = [UIView]() + + //If there is a tableView in view's hierarchy, then fetching all it's subview that responds. + if let unwrappedTableView = superConsideredView { // (Enhancement ID: #22) + textFields = unwrappedTableView.deepResponderViews() + } else { //Otherwise fetching all the siblings + + textFields = view.responderSiblings() + + //Sorting textFields according to behaviour + switch IQKeyboardManager.shared.toolbarManageBehaviour { + //If needs to sort it by tag + case .byTag: textFields = textFields.sortedArrayByTag() + //If needs to sort it by Position + case .byPosition: textFields = textFields.sortedArrayByPosition() + default: + break + } + } + + //Getting index of current textField. + if let index = textFields.index(of: view) { + //If it is not last textField. then it's next object becomeFirstResponder. + if index < (textFields.count - 1) { + + let nextTextField = textFields[index+1] + nextTextField.becomeFirstResponder() + return false + } else { + + view.resignFirstResponder() + return true + } + } else { + return true + } + } + + + ///--------------------------------------- + /// MARK: UITextField/UITextView delegates + ///--------------------------------------- + + @objc public func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { + + if delegate == nil { + + if let unwrapDelegate = textFieldViewCachedInfo(textField)?.textFieldDelegate { + if unwrapDelegate.responds(to: #selector(UITextFieldDelegate.textFieldShouldBeginEditing(_:))) { + return unwrapDelegate.textFieldShouldBeginEditing?(textField) == true + } + } + } + + return true + } + + @objc public func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { + + if delegate == nil { + + if let unwrapDelegate = textFieldViewCachedInfo(textField)?.textFieldDelegate { + if unwrapDelegate.responds(to: #selector(UITextFieldDelegate.textFieldShouldEndEditing(_:))) { + return unwrapDelegate.textFieldShouldEndEditing?(textField) == true + } + } + } + + return true + } + + @objc public func textFieldDidBeginEditing(_ textField: UITextField) { + updateReturnKeyTypeOnTextField(textField) + + var aDelegate : UITextFieldDelegate? = delegate + + if aDelegate == nil { + + if let modal = textFieldViewCachedInfo(textField) { + aDelegate = modal.textFieldDelegate + } + } + + aDelegate?.textFieldDidBeginEditing?(textField) + } + + @objc public func textFieldDidEndEditing(_ textField: UITextField) { + + var aDelegate : UITextFieldDelegate? = delegate + + if aDelegate == nil { + + if let modal = textFieldViewCachedInfo(textField) { + aDelegate = modal.textFieldDelegate + } + } + + aDelegate?.textFieldDidEndEditing?(textField) + } + + #if swift(>=4.2) + @available(iOS 10.0, *) + @objc public func textFieldDidEndEditing(_ textField: UITextField, reason: UITextField.DidEndEditingReason) { + + var aDelegate : UITextFieldDelegate? = delegate + + if aDelegate == nil { + + if let modal = textFieldViewCachedInfo(textField) { + aDelegate = modal.textFieldDelegate + } + } + + aDelegate?.textFieldDidEndEditing?(textField, reason: reason) + } + #else + @available(iOS 10.0, *) + @objc public func textFieldDidEndEditing(_ textField: UITextField, reason: UITextFieldDidEndEditingReason) { + + var aDelegate : UITextFieldDelegate? = delegate + + if aDelegate == nil { + + if let modal = textFieldViewCachedInfo(textField) { + aDelegate = modal.textFieldDelegate + } + } + + aDelegate?.textFieldDidEndEditing?(textField, reason: reason) + } + #endif + + @objc public func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { + + if delegate == nil { + + if let unwrapDelegate = textFieldViewCachedInfo(textField)?.textFieldDelegate { + if unwrapDelegate.responds(to: #selector(UITextFieldDelegate.textField(_:shouldChangeCharactersIn:replacementString:))) { + return unwrapDelegate.textField?(textField, shouldChangeCharactersIn: range, replacementString: string) == true + } + } + } + return true + } + + @objc public func textFieldShouldClear(_ textField: UITextField) -> Bool { + + if delegate == nil { + + if let unwrapDelegate = textFieldViewCachedInfo(textField)?.textFieldDelegate { + if unwrapDelegate.responds(to: #selector(UITextFieldDelegate.textFieldShouldClear(_:))) { + return unwrapDelegate.textFieldShouldClear?(textField) == true + } + } + } + + return true + } + + + @objc public func textFieldShouldReturn(_ textField: UITextField) -> Bool { + + var shouldReturn = true + + if delegate == nil { + + if let unwrapDelegate = textFieldViewCachedInfo(textField)?.textFieldDelegate { + if unwrapDelegate.responds(to: #selector(UITextFieldDelegate.textFieldShouldReturn(_:))) { + shouldReturn = unwrapDelegate.textFieldShouldReturn?(textField) == true + } + } + } + + if shouldReturn == true { + goToNextResponderOrResign(textField) + return true + } else { + return goToNextResponderOrResign(textField) + } + } + + + @objc public func textViewShouldBeginEditing(_ textView: UITextView) -> Bool { + + if delegate == nil { + + if let unwrapDelegate = textFieldViewCachedInfo(textView)?.textViewDelegate { + if unwrapDelegate.responds(to: #selector(UITextViewDelegate.textViewShouldBeginEditing(_:))) { + return unwrapDelegate.textViewShouldBeginEditing?(textView) == true + } + } + } + + return true + } + + @objc public func textViewShouldEndEditing(_ textView: UITextView) -> Bool { + + if delegate == nil { + + if let unwrapDelegate = textFieldViewCachedInfo(textView)?.textViewDelegate { + if unwrapDelegate.responds(to: #selector(UITextViewDelegate.textViewShouldEndEditing(_:))) { + return unwrapDelegate.textViewShouldEndEditing?(textView) == true + } + } + } + + return true + } + + @objc public func textViewDidBeginEditing(_ textView: UITextView) { + updateReturnKeyTypeOnTextField(textView) + + var aDelegate : UITextViewDelegate? = delegate + + if aDelegate == nil { + + if let modal = textFieldViewCachedInfo(textView) { + aDelegate = modal.textViewDelegate + } + } + + aDelegate?.textViewDidBeginEditing?(textView) + } + + @objc public func textViewDidEndEditing(_ textView: UITextView) { + + var aDelegate : UITextViewDelegate? = delegate + + if aDelegate == nil { + + if let modal = textFieldViewCachedInfo(textView) { + aDelegate = modal.textViewDelegate + } + } + + aDelegate?.textViewDidEndEditing?(textView) + } + + @objc public func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { + + var shouldReturn = true + + if delegate == nil { + + if let unwrapDelegate = textFieldViewCachedInfo(textView)?.textViewDelegate { + if unwrapDelegate.responds(to: #selector(UITextViewDelegate.textView(_:shouldChangeTextIn:replacementText:))) { + shouldReturn = (unwrapDelegate.textView?(textView, shouldChangeTextIn: range, replacementText: text)) == true + } + } + } + + if shouldReturn == true && text == "\n" { + shouldReturn = goToNextResponderOrResign(textView) + } + + return shouldReturn + } + + @objc public func textViewDidChange(_ textView: UITextView) { + + var aDelegate : UITextViewDelegate? = delegate + + if aDelegate == nil { + + if let modal = textFieldViewCachedInfo(textView) { + aDelegate = modal.textViewDelegate + } + } + + aDelegate?.textViewDidChange?(textView) + } + + @objc public func textViewDidChangeSelection(_ textView: UITextView) { + + var aDelegate : UITextViewDelegate? = delegate + + if aDelegate == nil { + + if let modal = textFieldViewCachedInfo(textView) { + aDelegate = modal.textViewDelegate + } + } + + aDelegate?.textViewDidChangeSelection?(textView) + } + + @available(iOS 10.0, *) + @objc public func textView(_ aTextView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { + + if delegate == nil { + + if let unwrapDelegate = textFieldViewCachedInfo(aTextView)?.textViewDelegate { + if unwrapDelegate.responds(to: #selector(textView as (UITextView, URL, NSRange, UITextItemInteraction) -> Bool)) { + return unwrapDelegate.textView?(aTextView, shouldInteractWith: URL, in: characterRange, interaction: interaction) == true + } + } + } + + return true + } + + @available(iOS 10.0, *) + @objc public func textView(_ aTextView: UITextView, shouldInteractWith textAttachment: NSTextAttachment, in characterRange: NSRange, interaction: UITextItemInteraction) -> Bool { + + if delegate == nil { + + if let unwrapDelegate = textFieldViewCachedInfo(aTextView)?.textViewDelegate { + if unwrapDelegate.responds(to: #selector(textView as (UITextView, NSTextAttachment, NSRange, UITextItemInteraction) -> Bool)) { + return unwrapDelegate.textView?(aTextView, shouldInteractWith: textAttachment, in: characterRange, interaction: interaction) == true + } + } + } + + return true + } + + @available(iOS, deprecated: 10.0) + @objc public func textView(_ aTextView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool { + + if delegate == nil { + + if let unwrapDelegate = textFieldViewCachedInfo(aTextView)?.textViewDelegate { + if unwrapDelegate.responds(to: #selector(textView as (UITextView, URL, NSRange) -> Bool)) { + return unwrapDelegate.textView?(aTextView, shouldInteractWith: URL, in: characterRange) == true + } + } + } + + return true + } + + @available(iOS, deprecated: 10.0) + @objc public func textView(_ aTextView: UITextView, shouldInteractWith textAttachment: NSTextAttachment, in characterRange: NSRange) -> Bool { + + if delegate == nil { + + if let unwrapDelegate = textFieldViewCachedInfo(aTextView)?.textViewDelegate { + if unwrapDelegate.responds(to: #selector(textView as (UITextView, NSTextAttachment, NSRange) -> Bool)) { + return unwrapDelegate.textView?(aTextView, shouldInteractWith: textAttachment, in: characterRange) == true + } + } + } + + return true + } +} diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQTextView.swift b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQTextView.swift new file mode 100644 index 00000000..3f7ec316 --- /dev/null +++ b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQTextView/IQTextView.swift @@ -0,0 +1,209 @@ +// +// IQTextView.swift +// https://github.com/hackiftekhar/IQKeyboardManager +// Copyright (c) 2013-16 Iftekhar Qurashi. +// +// 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 + +/** @abstract UITextView with placeholder support */ +open class IQTextView : UITextView { + + @objc required public init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + + #if swift(>=4.2) + let UITextViewTextDidChange = UITextView.textDidChangeNotification + #else + let UITextViewTextDidChange = Notification.Name.UITextViewTextDidChange + #endif + + NotificationCenter.default.addObserver(self, selector: #selector(self.refreshPlaceholder), name:UITextViewTextDidChange, object: self) + } + + @objc override public init(frame: CGRect, textContainer: NSTextContainer?) { + super.init(frame: frame, textContainer: textContainer) + + #if swift(>=4.2) + let notificationName = UITextView.textDidChangeNotification + #else + let notificationName = Notification.Name.UITextViewTextDidChange + #endif + + NotificationCenter.default.addObserver(self, selector: #selector(self.refreshPlaceholder), name: notificationName, object: self) + } + + @objc override open func awakeFromNib() { + super.awakeFromNib() + + #if swift(>=4.2) + let UITextViewTextDidChange = UITextView.textDidChangeNotification + #else + let UITextViewTextDidChange = Notification.Name.UITextViewTextDidChange + #endif + + NotificationCenter.default.addObserver(self, selector: #selector(self.refreshPlaceholder), name: UITextViewTextDidChange, object: self) + } + + deinit { + placeholderLabel.removeFromSuperview() + NotificationCenter.default.removeObserver(self) + } + + private var placeholderInsets : UIEdgeInsets { + return UIEdgeInsets(top: self.textContainerInset.top, left: self.textContainerInset.left + self.textContainer.lineFragmentPadding, bottom: self.textContainerInset.bottom, right: self.textContainerInset.right + self.textContainer.lineFragmentPadding) + } + + private var placeholderExpectedFrame : CGRect { + let placeholderInsets = self.placeholderInsets + let maxWidth = self.frame.width-placeholderInsets.left-placeholderInsets.right + let expectedSize = placeholderLabel.sizeThatFits(CGSize(width: maxWidth, height: self.frame.height-placeholderInsets.top-placeholderInsets.bottom)) + + return CGRect(x: placeholderInsets.left, y: placeholderInsets.top, width: maxWidth, height: expectedSize.height) + } + + lazy var placeholderLabel: UILabel = { + let label = UILabel() + + label.autoresizingMask = [.flexibleWidth, .flexibleHeight] + label.lineBreakMode = .byWordWrapping + label.numberOfLines = 0 + label.font = self.font + label.textAlignment = self.textAlignment + label.backgroundColor = UIColor.clear + label.textColor = UIColor(white: 0.7, alpha: 1.0) + label.alpha = 0 + self.addSubview(label) + + return label + }() + + /** @abstract To set textView's placeholder text color. */ + @IBInspectable open var placeholderTextColor : UIColor? { + + get { + return placeholderLabel.textColor + } + + set { + placeholderLabel.textColor = newValue + } + } + + /** @abstract To set textView's placeholder text. Default is nil. */ + @IBInspectable open var placeholder : String? { + + get { + return placeholderLabel.text + } + + set { + placeholderLabel.text = newValue + refreshPlaceholder() + } + } + + /** @abstract To set textView's placeholder attributed text. Default is nil. */ + open var attributedPlaceholder: NSAttributedString? { + get { + return placeholderLabel.attributedText + } + + set { + placeholderLabel.attributedText = newValue + refreshPlaceholder() + } + } + + @objc override open func layoutSubviews() { + super.layoutSubviews() + + placeholderLabel.frame = placeholderExpectedFrame + } + + @objc internal func refreshPlaceholder() { + + if !text.isEmpty || !attributedText.string.isEmpty { + placeholderLabel.alpha = 0 + } else { + placeholderLabel.alpha = 1 + } + } + + @objc override open var text: String! { + + didSet { + refreshPlaceholder() + } + } + + open override var attributedText: NSAttributedString! { + + didSet { + refreshPlaceholder() + } + } + + @objc override open var font : UIFont? { + + didSet { + + if let unwrappedFont = font { + placeholderLabel.font = unwrappedFont + } else { + placeholderLabel.font = UIFont.systemFont(ofSize: 12) + } + } + } + + @objc override open var textAlignment: NSTextAlignment + { + didSet { + placeholderLabel.textAlignment = textAlignment + } + } + + @objc override open var delegate : UITextViewDelegate? { + + get { + refreshPlaceholder() + return super.delegate + } + + set { + super.delegate = newValue + } + } + + @objc override open var intrinsicContentSize: CGSize { + guard !hasText else { + return super.intrinsicContentSize + } + + var newSize = super.intrinsicContentSize + let placeholderInsets = self.placeholderInsets + newSize.height = placeholderExpectedFrame.height + placeholderInsets.top + placeholderInsets.bottom + + return newSize + } +} + + diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift new file mode 100644 index 00000000..77bd00a9 --- /dev/null +++ b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift @@ -0,0 +1,136 @@ +// +// IQBarButtonItem.swift +// https://github.com/hackiftekhar/IQKeyboardManager +// Copyright (c) 2013-16 Iftekhar Qurashi. +// +// 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 Foundation + +open class IQBarButtonItem: UIBarButtonItem { + + private static var _classInitialize: Void = classInitialize() + + @objc public override init() { + _ = IQBarButtonItem._classInitialize + super.init() + } + + @objc public required init?(coder aDecoder: NSCoder) { + _ = IQBarButtonItem._classInitialize + super.init(coder: aDecoder) + } + + + private class func classInitialize() { + + let appearanceProxy = self.appearance() + + #if swift(>=4.2) + let states : [UIControl.State] + #else + let states : [UIControlState] + #endif + + states = [.normal,.highlighted,.disabled,.selected,.application,.reserved] + + for state in states { + + appearanceProxy.setBackgroundImage(nil, for: state, barMetrics: .default) + appearanceProxy.setBackgroundImage(nil, for: state, style: .done, barMetrics: .default) + appearanceProxy.setBackgroundImage(nil, for: state, style: .plain, barMetrics: .default) + appearanceProxy.setBackButtonBackgroundImage(nil, for: state, barMetrics: .default) + } + + appearanceProxy.setTitlePositionAdjustment(UIOffset(), for: .default) + appearanceProxy.setBackgroundVerticalPositionAdjustment(0, for: .default) + appearanceProxy.setBackButtonBackgroundVerticalPositionAdjustment(0, for: .default) + } + + @objc override open var tintColor: UIColor? { + didSet { + + #if swift(>=4.2) + var textAttributes = [NSAttributedString.Key : Any]() + let foregroundColorKey = NSAttributedString.Key.foregroundColor + #elseif swift(>=4) + var textAttributes = [NSAttributedStringKey : Any]() + let foregroundColorKey = NSAttributedStringKey.foregroundColor + #else + var textAttributes = [String:Any]() + let foregroundColorKey = NSForegroundColorAttributeName + #endif + + textAttributes[foregroundColorKey] = tintColor + + #if swift(>=4) + + if let attributes = titleTextAttributes(for: .normal) { + + for (key, value) in attributes { + #if swift(>=4.2) + textAttributes[key] = value + #else + textAttributes[NSAttributedStringKey.init(key)] = value + #endif + } + } + + #else + + if let attributes = titleTextAttributes(for: .normal) { + textAttributes = attributes + } + #endif + + setTitleTextAttributes(textAttributes, for: .normal) + } + } + + /** + Boolean to know if it's a system item or custom item, we are having a limitation that we cannot override a designated initializer, so we are manually setting this property once in initialization + */ + @objc internal var isSystemItem = false + + /** + Additional target & action to do get callback action. Note that setting custom target & selector doesn't affect native functionality, this is just an additional target to get a callback. + + @param target Target object. + @param action Target Selector. + */ + @objc open func setTarget(_ target: AnyObject?, action: Selector?) { + if let target = target, let action = action { + invocation = IQInvocation(target, action) + } else { + invocation = nil + } + } + + /** + Customized Invocation to be called when button is pressed. invocation is internally created using setTarget:action: method. + */ + @objc open var invocation : IQInvocation? + + deinit { + target = nil + invocation = nil + } +} diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift new file mode 100644 index 00000000..cb28e131 --- /dev/null +++ b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift @@ -0,0 +1,45 @@ +// +// IQInvocation.swift +// https://github.com/hackiftekhar/IQKeyboardManager +// Copyright (c) 2013-16 Iftekhar Qurashi. +// +// 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 + +public class IQInvocation : NSObject { + public weak var target: AnyObject? + public var action: Selector + + @objc public init(_ target: AnyObject, _ action: Selector) { + self.target = target + self.action = action + } + + @objc public func invoke(from: Any) { + if let target = target { + UIApplication.shared.sendAction(action, to: target, from: from, for: UIEvent()) + } + } + + deinit { + target = nil + } +} diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift new file mode 100644 index 00000000..fb6a879e --- /dev/null +++ b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift @@ -0,0 +1,28 @@ +// +// IQPreviousNextView.swift +// https://github.com/hackiftekhar/IQKeyboardManager +// Copyright (c) 2013-16 Iftekhar Qurashi. +// +// 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 + +public class IQPreviousNextView: UIView { + +} diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift new file mode 100644 index 00000000..984f80ff --- /dev/null +++ b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift @@ -0,0 +1,178 @@ +// +// IQTitleBarButtonItem.swift +// https://github.com/hackiftekhar/IQKeyboardManager +// Copyright (c) 2013-16 Iftekhar Qurashi. +// +// 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 Foundation +import UIKit + +open class IQTitleBarButtonItem: IQBarButtonItem { + + @objc open var titleFont : UIFont? { + + didSet { + if let unwrappedFont = titleFont { + titleButton?.titleLabel?.font = unwrappedFont + } else { + titleButton?.titleLabel?.font = UIFont.systemFont(ofSize: 13) + } + } + } + + @objc override open var title: String? { + didSet { + titleButton?.setTitle(title, for: .normal) + } + } + + /** + titleColor to be used for displaying button text when displaying title (disabled state). + */ + @objc open var titleColor : UIColor? { + + didSet { + + if let color = titleColor { + titleButton?.setTitleColor(color, for:.disabled) + } else { + titleButton?.setTitleColor(UIColor.lightGray, for:.disabled) + } + } + } + + /** + selectableTitleColor to be used for displaying button text when button is enabled. + */ + @objc open var selectableTitleColor : UIColor? { + + didSet { + + if let color = selectableTitleColor { + titleButton?.setTitleColor(color, for:.normal) + } else { + titleButton?.setTitleColor(UIColor.init(red: 0.0, green: 0.5, blue: 1.0, alpha: 1), for:.normal) + } + } + } + + /** + Customized Invocation to be called on title button action. titleInvocation is internally created using setTitleTarget:action: method. + */ + @objc override open var invocation : IQInvocation? { + + didSet { + + if let target = invocation?.target, let action = invocation?.action { + self.isEnabled = true + titleButton?.isEnabled = true + titleButton?.addTarget(target, action: action, for: .touchUpInside) + } else { + self.isEnabled = false + titleButton?.isEnabled = false + titleButton?.removeTarget(nil, action: nil, for: .touchUpInside) + } + } + } + + internal var titleButton : UIButton? + private var _titleView : UIView? + + override init() { + super.init() + } + + @objc public convenience init(title : String?) { + + self.init(title: nil, style: .plain, target: nil, action: nil) + + _titleView = UIView() + _titleView?.backgroundColor = UIColor.clear + + titleButton = UIButton(type: .system) + titleButton?.isEnabled = false + titleButton?.titleLabel?.numberOfLines = 3 + titleButton?.setTitleColor(UIColor.lightGray, for:.disabled) + titleButton?.setTitleColor(UIColor.init(red: 0.0, green: 0.5, blue: 1.0, alpha: 1), for:.normal) + titleButton?.backgroundColor = UIColor.clear + titleButton?.titleLabel?.textAlignment = .center + titleButton?.setTitle(title, for: .normal) + titleFont = UIFont.systemFont(ofSize: 13.0) + titleButton?.titleLabel?.font = self.titleFont + _titleView?.addSubview(titleButton!) + +#if swift(>=3.2) + if #available(iOS 11, *) { + + var layoutDefaultLowPriority : UILayoutPriority + var layoutDefaultHighPriority : UILayoutPriority + + #if swift(>=4.0) + let layoutPriorityLowValue = UILayoutPriority.defaultLow.rawValue-1 + let layoutPriorityHighValue = UILayoutPriority.defaultHigh.rawValue-1 + layoutDefaultLowPriority = UILayoutPriority(rawValue: layoutPriorityLowValue) + layoutDefaultHighPriority = UILayoutPriority(rawValue: layoutPriorityHighValue) + #else + layoutDefaultLowPriority = UILayoutPriorityDefaultLow-1 + layoutDefaultHighPriority = UILayoutPriorityDefaultHigh-1 + #endif + + _titleView?.translatesAutoresizingMaskIntoConstraints = false + _titleView?.setContentHuggingPriority(layoutDefaultLowPriority, for: .vertical) + _titleView?.setContentHuggingPriority(layoutDefaultLowPriority, for: .horizontal) + _titleView?.setContentCompressionResistancePriority(layoutDefaultHighPriority, for: .vertical) + _titleView?.setContentCompressionResistancePriority(layoutDefaultHighPriority, for: .horizontal) + + titleButton?.translatesAutoresizingMaskIntoConstraints = false + titleButton?.setContentHuggingPriority(layoutDefaultLowPriority, for: .vertical) + titleButton?.setContentHuggingPriority(layoutDefaultLowPriority, for: .horizontal) + titleButton?.setContentCompressionResistancePriority(layoutDefaultHighPriority, for: .vertical) + titleButton?.setContentCompressionResistancePriority(layoutDefaultHighPriority, for: .horizontal) + + let top = NSLayoutConstraint.init(item: titleButton!, attribute: .top, relatedBy: .equal, toItem: _titleView, attribute: .top, multiplier: 1, constant: 0) + let bottom = NSLayoutConstraint.init(item: titleButton!, attribute: .bottom, relatedBy: .equal, toItem: _titleView, attribute: .bottom, multiplier: 1, constant: 0) + let leading = NSLayoutConstraint.init(item: titleButton!, attribute: .leading, relatedBy: .equal, toItem: _titleView, attribute: .leading, multiplier: 1, constant: 0) + let trailing = NSLayoutConstraint.init(item: titleButton!, attribute: .trailing, relatedBy: .equal, toItem: _titleView, attribute: .trailing, multiplier: 1, constant: 0) + + _titleView?.addConstraints([top,bottom,leading,trailing]) + } else { + _titleView?.autoresizingMask = [.flexibleWidth,.flexibleHeight] + titleButton?.autoresizingMask = [.flexibleWidth,.flexibleHeight] + } +#else + _titleView?.autoresizingMask = [.flexibleWidth,.flexibleHeight] + titleButton?.autoresizingMask = [.flexibleWidth,.flexibleHeight] +#endif + + customView = _titleView + } + + @objc required public init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + } + + deinit { + customView = nil + titleButton?.removeTarget(nil, action: nil, for: .touchUpInside) + _titleView = nil + titleButton = nil + } +} diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift new file mode 100644 index 00000000..808bb8e9 --- /dev/null +++ b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift @@ -0,0 +1,369 @@ +// +// IQToolbar.swift +// https://github.com/hackiftekhar/IQKeyboardManager +// Copyright (c) 2013-16 Iftekhar Qurashi. +// +// 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 + +/** @abstract IQToolbar for IQKeyboardManager. */ +open class IQToolbar: UIToolbar , UIInputViewAudioFeedback { + + private static var _classInitialize: Void = classInitialize() + + private class func classInitialize() { + + let appearanceProxy = self.appearance() + + appearanceProxy.barTintColor = nil + + let positions : [UIBarPosition] = [.any,.bottom,.top,.topAttached] + + for position in positions { + + appearanceProxy.setBackgroundImage(nil, forToolbarPosition: position, barMetrics: .default) + appearanceProxy.setShadowImage(nil, forToolbarPosition: .any) + } + + //Background color + appearanceProxy.backgroundColor = nil + } + + /** + Previous bar button of toolbar. + */ + private var privatePreviousBarButton: IQBarButtonItem? + @objc open var previousBarButton : IQBarButtonItem { + get { + if privatePreviousBarButton == nil { + privatePreviousBarButton = IQBarButtonItem(image: nil, style: .plain, target: nil, action: nil) + privatePreviousBarButton?.accessibilityLabel = "Toolbar Previous Button" + } + return privatePreviousBarButton! + } + + set (newValue) { + privatePreviousBarButton = newValue + } + } + + /** + Next bar button of toolbar. + */ + private var privateNextBarButton: IQBarButtonItem? + @objc open var nextBarButton : IQBarButtonItem { + get { + if privateNextBarButton == nil { + privateNextBarButton = IQBarButtonItem(image: nil, style: .plain, target: nil, action: nil) + privateNextBarButton?.accessibilityLabel = "Toolbar Next Button" + } + return privateNextBarButton! + } + + set (newValue) { + privateNextBarButton = newValue + } + } + + /** + Title bar button of toolbar. + */ + private var privateTitleBarButton: IQTitleBarButtonItem? + @objc open var titleBarButton : IQTitleBarButtonItem { + get { + if privateTitleBarButton == nil { + privateTitleBarButton = IQTitleBarButtonItem(title: nil) + privateTitleBarButton?.accessibilityLabel = "Toolbar Title Button" + } + return privateTitleBarButton! + } + + set (newValue) { + privateTitleBarButton = newValue + } + } + + /** + Done bar button of toolbar. + */ + private var privateDoneBarButton: IQBarButtonItem? + @objc open var doneBarButton : IQBarButtonItem { + get { + if privateDoneBarButton == nil { + privateDoneBarButton = IQBarButtonItem(title: nil, style: .done, target: nil, action: nil) + privateDoneBarButton?.accessibilityLabel = "Toolbar Done Button" + } + return privateDoneBarButton! + } + + set (newValue) { + privateDoneBarButton = newValue + } + } + + /** + Fixed space bar button of toolbar. + */ + private var privateFixedSpaceBarButton: IQBarButtonItem? + @objc open var fixedSpaceBarButton : IQBarButtonItem { + get { + if privateFixedSpaceBarButton == nil { + privateFixedSpaceBarButton = IQBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil) + } + privateFixedSpaceBarButton!.isSystemItem = true + + if #available(iOS 10, *) { + privateFixedSpaceBarButton!.width = 6 + } else { + privateFixedSpaceBarButton!.width = 20 + } + + return privateFixedSpaceBarButton! + } + + set (newValue) { + privateFixedSpaceBarButton = newValue + } + } + + override init(frame: CGRect) { + _ = IQToolbar._classInitialize + super.init(frame: frame) + + sizeToFit() + + autoresizingMask = .flexibleWidth + self.isTranslucent = true + } + + @objc required public init?(coder aDecoder: NSCoder) { + _ = IQToolbar._classInitialize + super.init(coder: aDecoder) + + sizeToFit() + + autoresizingMask = .flexibleWidth + self.isTranslucent = true + } + + @objc override open func sizeThatFits(_ size: CGSize) -> CGSize { + var sizeThatFit = super.sizeThatFits(size) + sizeThatFit.height = 44 + return sizeThatFit + } + + @objc override open var tintColor: UIColor! { + + didSet { + if let unwrappedItems = items { + for item in unwrappedItems { + item.tintColor = tintColor + } + } + } + } + + @objc override open var barStyle: UIBarStyle { + didSet { + + if titleBarButton.selectableTitleColor == nil { + if barStyle == .default { + titleBarButton.titleButton?.setTitleColor(UIColor.init(red: 0.0, green: 0.5, blue: 1.0, alpha: 1), for: .normal) + } else { + titleBarButton.titleButton?.setTitleColor(UIColor.yellow, for: .normal) + } + } + } + } + + @objc override open func layoutSubviews() { + + super.layoutSubviews() + + //If running on Xcode9 (iOS11) only then we'll validate for iOS version, otherwise for older versions of Xcode (iOS10 and below) we'll just execute the tweak +#if swift(>=3.2) + + if #available(iOS 11, *) { + return + } else if let customTitleView = titleBarButton.customView { + var leftRect = CGRect.null + var rightRect = CGRect.null + var isTitleBarButtonFound = false + + let sortedSubviews = self.subviews.sorted(by: { (view1 : UIView, view2 : UIView) -> Bool in + + let x1 = view1.frame.minX + let y1 = view1.frame.minY + let x2 = view2.frame.minX + let y2 = view2.frame.minY + + if x1 != x2 { + return x1 < x2 + } else { + return y1 < y2 + } + }) + + for barButtonItemView in sortedSubviews { + + if isTitleBarButtonFound == true { + rightRect = barButtonItemView.frame + break + } else if barButtonItemView === customTitleView { + isTitleBarButtonFound = true + //If it's UIToolbarButton or UIToolbarTextButton (which actually UIBarButtonItem) + } else if barButtonItemView.isKind(of: UIControl.self) == true { + leftRect = barButtonItemView.frame + } + } + + let titleMargin : CGFloat = 16 + + let maxWidth : CGFloat = self.frame.width - titleMargin*2 - (leftRect.isNull ? 0 : leftRect.maxX) - (rightRect.isNull ? 0 : self.frame.width - rightRect.minX) + let maxHeight = self.frame.height + + let sizeThatFits = customTitleView.sizeThatFits(CGSize(width: maxWidth, height: maxHeight)) + + var titleRect : CGRect + + if sizeThatFits.width > 0 && sizeThatFits.height > 0 { + let width = min(sizeThatFits.width, maxWidth) + let height = min(sizeThatFits.height, maxHeight) + + var x : CGFloat + + if (leftRect.isNull == false) { + x = titleMargin + leftRect.maxX + ((maxWidth - width)/2) + } else { + x = titleMargin + } + + let y = (maxHeight - height)/2 + + titleRect = CGRect(x: x, y: y, width: width, height: height) + } else { + + var x : CGFloat + + if (leftRect.isNull == false) { + x = titleMargin + leftRect.maxX + } else { + x = titleMargin + } + + let width : CGFloat = self.frame.width - titleMargin*2 - (leftRect.isNull ? 0 : leftRect.maxX) - (rightRect.isNull ? 0 : self.frame.width - rightRect.minX) + + titleRect = CGRect(x: x, y: 0, width: width, height: maxHeight) + } + + customTitleView.frame = titleRect + } + +#else + if let customTitleView = titleBarButton.customView { + var leftRect = CGRect.null + var rightRect = CGRect.null + var isTitleBarButtonFound = false + + let sortedSubviews = self.subviews.sorted(by: { (view1 : UIView, view2 : UIView) -> Bool in + + let x1 = view1.frame.minX + let y1 = view1.frame.minY + let x2 = view2.frame.minX + let y2 = view2.frame.minY + + if x1 != x2 { + return x1 < x2 + } else { + return y1 < y2 + } + }) + + for barButtonItemView in sortedSubviews { + + if isTitleBarButtonFound == true { + rightRect = barButtonItemView.frame + break + } else if barButtonItemView === titleBarButton.customView { + isTitleBarButtonFound = true + //If it's UIToolbarButton or UIToolbarTextButton (which actually UIBarButtonItem) + } else if barButtonItemView.isKind(of: UIControl.self) == true { + leftRect = barButtonItemView.frame + } + } + + let titleMargin : CGFloat = 16 + let maxWidth : CGFloat = self.frame.width - titleMargin*2 - (leftRect.isNull ? 0 : leftRect.maxX) - (rightRect.isNull ? 0 : self.frame.width - rightRect.minX) + let maxHeight = self.frame.height + + let sizeThatFits = customTitleView.sizeThatFits(CGSize(width: maxWidth, height: maxHeight)) + + var titleRect : CGRect + + if sizeThatFits.width > 0 && sizeThatFits.height > 0 { + let width = min(sizeThatFits.width, maxWidth) + let height = min(sizeThatFits.height, maxHeight) + + var x : CGFloat + + if (leftRect.isNull == false) { + x = titleMargin + leftRect.maxX + ((maxWidth - width)/2) + } else { + x = titleMargin + } + + let y = (maxHeight - height)/2 + + titleRect = CGRect(x: x, y: y, width: width, height: height) + } else { + + var x : CGFloat + + if (leftRect.isNull == false) { + x = titleMargin + leftRect.maxX + } else { + x = titleMargin + } + + let width : CGFloat = self.frame.width - titleMargin*2 - (leftRect.isNull ? 0 : leftRect.maxX) - (rightRect.isNull ? 0 : self.frame.width - rightRect.minX) + + titleRect = CGRect(x: x, y: 0, width: width, height: maxHeight) + } + + customTitleView.frame = titleRect + } +#endif + } + + @objc open var enableInputClicksWhenVisible: Bool { + return true + } + + deinit { + + items = nil + privatePreviousBarButton = nil + privateNextBarButton = nil + privateTitleBarButton = nil + privateDoneBarButton = nil + privateFixedSpaceBarButton = nil + } +} diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift new file mode 100644 index 00000000..a59c7fb5 --- /dev/null +++ b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift @@ -0,0 +1,612 @@ +// +// IQUIView+IQKeyboardToolbar.swift +// https://github.com/hackiftekhar/IQKeyboardManager +// Copyright (c) 2013-16 Iftekhar Qurashi. +// +// 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 + +private var kIQShouldHideToolbarPlaceholder = "kIQShouldHideToolbarPlaceholder" +private var kIQToolbarPlaceholder = "kIQToolbarPlaceholder" + +private var kIQKeyboardToolbar = "kIQKeyboardToolbar" + +/** + IQBarButtonItemConfiguration for creating toolbar with bar button items + */ +public class IQBarButtonItemConfiguration : NSObject { + + #if swift(>=4.2) + public init(barButtonSystemItem : UIBarButtonItem.SystemItem, action: Selector) { + self.barButtonSystemItem = barButtonSystemItem + self.image = nil + self.title = nil + self.action = action + super.init() + } + #else + public init(barButtonSystemItem : UIBarButtonSystemItem, action: Selector) { + self.barButtonSystemItem = barButtonSystemItem + self.image = nil + self.title = nil + self.action = action + super.init() + } + #endif + + public init(image : UIImage, action: Selector) { + self.barButtonSystemItem = nil + self.image = image + self.title = nil + self.action = action + super.init() + } + + public init(title : String, action: Selector) { + self.barButtonSystemItem = nil + self.image = nil + self.title = title + self.action = action + super.init() + } + + #if swift(>=4.2) + public let barButtonSystemItem : UIBarButtonItem.SystemItem? //System Item to be used to instantiate bar button. + #else + public let barButtonSystemItem : UIBarButtonSystemItem? //System Item to be used to instantiate bar button. + #endif + + public let image : UIImage? //Image to show on bar button item if it's not a system item. + + public let title : String? //Title to show on bar button item if it's not a system item. + + public let action : Selector? //action for bar button item. Usually 'doneAction:(IQBarButtonItem*)item'. +} + +/** + UIImage category methods to get next/prev images + */ +extension UIImage { + + public static func keyboardPreviousiOS9Image() -> UIImage? { + + struct Static { + static var keyboardPreviousiOS9Image : UIImage? + } + + if Static.keyboardPreviousiOS9Image == nil { + // Get the top level "bundle" which may actually be the framework + var bundle = Bundle(for: IQKeyboardManager.self) + + if let resourcePath = bundle.path(forResource: "IQKeyboardManager", ofType: "bundle") { + if let resourcesBundle = Bundle(path: resourcePath) { + bundle = resourcesBundle + } + } + + Static.keyboardPreviousiOS9Image = UIImage(named: "IQButtonBarArrowLeft", in: bundle, compatibleWith: nil) + + //Support for RTL languages like Arabic, Persia etc... (Bug ID: #448) + if #available(iOS 9, *) { + Static.keyboardPreviousiOS9Image = Static.keyboardPreviousiOS9Image?.imageFlippedForRightToLeftLayoutDirection() + } + } + + return Static.keyboardPreviousiOS9Image + } + + public static func keyboardNextiOS9Image() -> UIImage? { + + struct Static { + static var keyboardNextiOS9Image : UIImage? + } + + if Static.keyboardNextiOS9Image == nil { + // Get the top level "bundle" which may actually be the framework + var bundle = Bundle(for: IQKeyboardManager.self) + + if let resourcePath = bundle.path(forResource: "IQKeyboardManager", ofType: "bundle") { + if let resourcesBundle = Bundle(path: resourcePath) { + bundle = resourcesBundle + } + } + + Static.keyboardNextiOS9Image = UIImage(named: "IQButtonBarArrowRight", in: bundle, compatibleWith: nil) + + //Support for RTL languages like Arabic, Persia etc... (Bug ID: #448) + if #available(iOS 9, *) { + Static.keyboardNextiOS9Image = Static.keyboardNextiOS9Image?.imageFlippedForRightToLeftLayoutDirection() + } + } + + return Static.keyboardNextiOS9Image + } + + public static func keyboardPreviousiOS10Image() -> UIImage? { + + struct Static { + static var keyboardPreviousiOS10Image : UIImage? + } + + if Static.keyboardPreviousiOS10Image == nil { + // Get the top level "bundle" which may actually be the framework + var bundle = Bundle(for: IQKeyboardManager.self) + + if let resourcePath = bundle.path(forResource: "IQKeyboardManager", ofType: "bundle") { + if let resourcesBundle = Bundle(path: resourcePath) { + bundle = resourcesBundle + } + } + + Static.keyboardPreviousiOS10Image = UIImage(named: "IQButtonBarArrowUp", in: bundle, compatibleWith: nil) + + //Support for RTL languages like Arabic, Persia etc... (Bug ID: #448) + if #available(iOS 9, *) { + Static.keyboardPreviousiOS10Image = Static.keyboardPreviousiOS10Image?.imageFlippedForRightToLeftLayoutDirection() + } + } + + return Static.keyboardPreviousiOS10Image + } + + public static func keyboardNextiOS10Image() -> UIImage? { + + struct Static { + static var keyboardNextiOS10Image : UIImage? + } + + if Static.keyboardNextiOS10Image == nil { + // Get the top level "bundle" which may actually be the framework + var bundle = Bundle(for: IQKeyboardManager.self) + + if let resourcePath = bundle.path(forResource: "IQKeyboardManager", ofType: "bundle") { + if let resourcesBundle = Bundle(path: resourcePath) { + bundle = resourcesBundle + } + } + + Static.keyboardNextiOS10Image = UIImage(named: "IQButtonBarArrowDown", in: bundle, compatibleWith: nil) + + //Support for RTL languages like Arabic, Persia etc... (Bug ID: #448) + if #available(iOS 9, *) { + Static.keyboardNextiOS10Image = Static.keyboardNextiOS10Image?.imageFlippedForRightToLeftLayoutDirection() + } + } + + return Static.keyboardNextiOS10Image + } + + public static func keyboardPreviousImage() -> UIImage? { + + if #available(iOS 10, *) { + return keyboardPreviousiOS10Image() + } else { + return keyboardPreviousiOS9Image() + } + } + + public static func keyboardNextImage() -> UIImage? { + + if #available(iOS 10, *) { + return keyboardNextiOS10Image() + } else { + return keyboardNextiOS9Image() + } + } +} + +/** +UIView category methods to add IQToolbar on UIKeyboard. +*/ +public extension UIView { + + ///-------------- + /// MARK: Toolbar + ///-------------- + + /** + IQToolbar references for better customization control. + */ + public var keyboardToolbar: IQToolbar { + var toolbar = inputAccessoryView as? IQToolbar + + if (toolbar == nil) + { + toolbar = objc_getAssociatedObject(self, &kIQKeyboardToolbar) as? IQToolbar + } + + if let unwrappedToolbar = toolbar { + + return unwrappedToolbar + + } else { + + let newToolbar = IQToolbar() + + objc_setAssociatedObject(self, &kIQKeyboardToolbar, newToolbar, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) + + return newToolbar + } + } + + ///-------------------- + /// MARK: Toolbar title + ///-------------------- + + /** + If `shouldHideToolbarPlaceholder` is YES, then title will not be added to the toolbar. Default to NO. + */ + @objc public var shouldHideToolbarPlaceholder: Bool { + get { + let aValue = objc_getAssociatedObject(self, &kIQShouldHideToolbarPlaceholder) as Any? + + if let unwrapedValue = aValue as? Bool { + return unwrapedValue + } else { + return false + } + } + set(newValue) { + objc_setAssociatedObject(self, &kIQShouldHideToolbarPlaceholder, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) + + self.keyboardToolbar.titleBarButton.title = self.drawingToolbarPlaceholder + } + } + + /** + `toolbarPlaceholder` to override default `placeholder` text when drawing text on toolbar. + */ + @objc public var toolbarPlaceholder: String? { + get { + let aValue = objc_getAssociatedObject(self, &kIQToolbarPlaceholder) as? String + + return aValue + } + set(newValue) { + objc_setAssociatedObject(self, &kIQToolbarPlaceholder, newValue, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN_NONATOMIC) + + self.keyboardToolbar.titleBarButton.title = self.drawingToolbarPlaceholder + } + } + + /** + `drawingToolbarPlaceholder` will be actual text used to draw on toolbar. This would either `placeholder` or `toolbarPlaceholder`. + */ + @objc public var drawingToolbarPlaceholder: String? { + + if (self.shouldHideToolbarPlaceholder) + { + return nil + } + else if (self.toolbarPlaceholder?.isEmpty == false) { + return self.toolbarPlaceholder + } + else if self.responds(to: #selector(getter: UITextField.placeholder)) { + + if let textField = self as? UITextField { + return textField.placeholder + } else if let textView = self as? IQTextView { + return textView.placeholder + } else { + return nil + } + } + else { + return nil + } + } + + ///--------------------- + /// MARK: Private helper + ///--------------------- + + private static func flexibleBarButtonItem () -> IQBarButtonItem { + + struct Static { + + static let nilButton = IQBarButtonItem(barButtonSystemItem:.flexibleSpace, target: nil, action: nil) + } + + Static.nilButton.isSystemItem = true + return Static.nilButton + } + + ///------------- + /// MARK: Common + ///------------- + + @objc public func addKeyboardToolbarWithTarget(target : AnyObject?, titleText : String?, rightBarButtonConfiguration:IQBarButtonItemConfiguration?, previousBarButtonConfiguration:IQBarButtonItemConfiguration? = nil, nextBarButtonConfiguration:IQBarButtonItemConfiguration? = nil) { + + //If can't set InputAccessoryView. Then return + if self.responds(to: #selector(setter: UITextField.inputAccessoryView)) { + + // Creating a toolBar for phoneNumber keyboard + let toolbar = self.keyboardToolbar + + var items : [IQBarButtonItem] = [] + + if let prevConfig = previousBarButtonConfiguration { + + var prev = toolbar.previousBarButton + + if prevConfig.barButtonSystemItem == nil && prev.isSystemItem == false { + prev.title = prevConfig.title + prev.image = prevConfig.image + prev.target = target + prev.action = prevConfig.action + } else { + if let systemItem = prevConfig.barButtonSystemItem { + prev = IQBarButtonItem(barButtonSystemItem: systemItem, target: target, action: prevConfig.action) + prev.isSystemItem = true + } else if let image = prevConfig.image { + prev = IQBarButtonItem(image: image, style: .plain, target: target, action: prevConfig.action) + } else { + prev = IQBarButtonItem(title: prevConfig.title, style: .plain, target: target, action: prevConfig.action) + } + + prev.invocation = toolbar.previousBarButton.invocation + prev.accessibilityLabel = toolbar.previousBarButton.accessibilityLabel + toolbar.previousBarButton = prev + } + + items.append(prev) + } + + if previousBarButtonConfiguration != nil && nextBarButtonConfiguration != nil { + + items.append(toolbar.fixedSpaceBarButton) + } + + if let nextConfig = nextBarButtonConfiguration { + + var next = toolbar.nextBarButton + + if nextConfig.barButtonSystemItem == nil && next.isSystemItem == false { + next.title = nextConfig.title + next.image = nextConfig.image + next.target = target + next.action = nextConfig.action + } else { + if let systemItem = nextConfig.barButtonSystemItem { + next = IQBarButtonItem(barButtonSystemItem: systemItem, target: target, action: nextConfig.action) + next.isSystemItem = true + } else if let image = nextConfig.image { + next = IQBarButtonItem(image: image, style: .plain, target: target, action: nextConfig.action) + } else { + next = IQBarButtonItem(title: nextConfig.title, style: .plain, target: target, action: nextConfig.action) + } + + next.invocation = toolbar.nextBarButton.invocation + next.accessibilityLabel = toolbar.nextBarButton.accessibilityLabel + toolbar.nextBarButton = next + } + + items.append(next) + } + + //Title bar button item + do { + //Flexible space + items.append(UIView.flexibleBarButtonItem()) + + //Title button + toolbar.titleBarButton.title = titleText + + #if swift(>=3.2) + if #available(iOS 11, *) {} + else { + toolbar.titleBarButton.customView?.frame = CGRect.zero + } + #else + toolbar.titleBarButton.customView?.frame = CGRect.zero + #endif + + items.append(toolbar.titleBarButton) + + //Flexible space + items.append(UIView.flexibleBarButtonItem()) + } + + if let rightConfig = rightBarButtonConfiguration { + + var done = toolbar.doneBarButton + + if rightConfig.barButtonSystemItem == nil && done.isSystemItem == false { + done.title = rightConfig.title + done.image = rightConfig.image + done.target = target + done.action = rightConfig.action + } else { + if let systemItem = rightConfig.barButtonSystemItem { + done = IQBarButtonItem(barButtonSystemItem: systemItem, target: target, action: rightConfig.action) + done.isSystemItem = true + } else if let image = rightConfig.image { + done = IQBarButtonItem(image: image, style: .plain, target: target, action: rightConfig.action) + } else { + done = IQBarButtonItem(title: rightConfig.title, style: .plain, target: target, action: rightConfig.action) + } + + done.invocation = toolbar.doneBarButton.invocation + done.accessibilityLabel = toolbar.doneBarButton.accessibilityLabel + toolbar.doneBarButton = done + } + + items.append(done) + } + + // Adding button to toolBar. + toolbar.items = items + + // Setting toolbar to keyboard. + if let textField = self as? UITextField { + textField.inputAccessoryView = toolbar + + switch textField.keyboardAppearance { + case .dark: + toolbar.barStyle = UIBarStyle.black + default: + toolbar.barStyle = UIBarStyle.default + } + } else if let textView = self as? UITextView { + textView.inputAccessoryView = toolbar + + switch textView.keyboardAppearance { + case .dark: + toolbar.barStyle = UIBarStyle.black + default: + toolbar.barStyle = UIBarStyle.default + } + } + } + } + + ///------------ + /// MARK: Right + ///------------ + + @objc public func addDoneOnKeyboardWithTarget(_ target : AnyObject?, action : Selector, shouldShowPlaceholder: Bool = false) { + + addDoneOnKeyboardWithTarget(target, action: action, titleText: (shouldShowPlaceholder ? self.drawingToolbarPlaceholder : nil)) + } + + @objc public func addDoneOnKeyboardWithTarget(_ target : AnyObject?, action : Selector, titleText: String?) { + + let rightConfiguration = IQBarButtonItemConfiguration(barButtonSystemItem: .done, action: action) + + addKeyboardToolbarWithTarget(target: target, titleText: titleText, rightBarButtonConfiguration: rightConfiguration) + } + + + @objc public func addRightButtonOnKeyboardWithImage(_ image : UIImage, target : AnyObject?, action : Selector, shouldShowPlaceholder: Bool = false) { + + addRightButtonOnKeyboardWithImage(image, target: target, action: action, titleText: (shouldShowPlaceholder ? self.drawingToolbarPlaceholder : nil)) + } + + @objc public func addRightButtonOnKeyboardWithImage(_ image : UIImage, target : AnyObject?, action : Selector, titleText: String?) { + + let rightConfiguration = IQBarButtonItemConfiguration(image: image, action: action) + + addKeyboardToolbarWithTarget(target: target, titleText: titleText, rightBarButtonConfiguration: rightConfiguration) + } + + + @objc public func addRightButtonOnKeyboardWithText(_ text : String, target : AnyObject?, action : Selector, shouldShowPlaceholder: Bool = false) { + + addRightButtonOnKeyboardWithText(text, target: target, action: action, titleText: (shouldShowPlaceholder ? self.drawingToolbarPlaceholder : nil)) + } + + @objc public func addRightButtonOnKeyboardWithText(_ text : String, target : AnyObject?, action : Selector, titleText: String?) { + + let rightConfiguration = IQBarButtonItemConfiguration(title: text, action: action) + + addKeyboardToolbarWithTarget(target: target, titleText: titleText, rightBarButtonConfiguration: rightConfiguration) + } + + ///----------------- + /// MARK: Right/Left + ///----------------- + + @objc public func addCancelDoneOnKeyboardWithTarget(_ target : AnyObject?, cancelAction : Selector, doneAction : Selector, shouldShowPlaceholder: Bool = false) { + + addCancelDoneOnKeyboardWithTarget(target, cancelAction: cancelAction, doneAction: doneAction, titleText: (shouldShowPlaceholder ? self.drawingToolbarPlaceholder : nil)) + } + + @objc public func addRightLeftOnKeyboardWithTarget(_ target : AnyObject?, leftButtonTitle : String, rightButtonTitle : String, leftButtonAction : Selector, rightButtonAction : Selector, shouldShowPlaceholder: Bool = false) { + + addRightLeftOnKeyboardWithTarget(target, leftButtonTitle: leftButtonTitle, rightButtonTitle: rightButtonTitle, leftButtonAction: leftButtonAction, rightButtonAction: rightButtonAction, titleText: (shouldShowPlaceholder ? self.drawingToolbarPlaceholder : nil)) + } + + @objc public func addRightLeftOnKeyboardWithTarget(_ target : AnyObject?, leftButtonImage : UIImage, rightButtonImage : UIImage, leftButtonAction : Selector, rightButtonAction : Selector, shouldShowPlaceholder: Bool = false) { + + addRightLeftOnKeyboardWithTarget(target, leftButtonImage: leftButtonImage, rightButtonImage: rightButtonImage, leftButtonAction: leftButtonAction, rightButtonAction: rightButtonAction, titleText: (shouldShowPlaceholder ? self.drawingToolbarPlaceholder : nil)) + } + + @objc public func addCancelDoneOnKeyboardWithTarget(_ target : AnyObject?, cancelAction : Selector, doneAction : Selector, titleText: String?) { + + let leftConfiguration = IQBarButtonItemConfiguration(barButtonSystemItem: .cancel, action: cancelAction) + let rightConfiguration = IQBarButtonItemConfiguration(barButtonSystemItem: .done , action: doneAction) + + addKeyboardToolbarWithTarget(target: target, titleText: titleText, rightBarButtonConfiguration: rightConfiguration, previousBarButtonConfiguration: leftConfiguration) + } + + @objc public func addRightLeftOnKeyboardWithTarget(_ target : AnyObject?, leftButtonTitle : String, rightButtonTitle : String, leftButtonAction : Selector, rightButtonAction : Selector, titleText: String?) { + + let leftConfiguration = IQBarButtonItemConfiguration(title: leftButtonTitle, action: leftButtonAction) + let rightConfiguration = IQBarButtonItemConfiguration(title: rightButtonTitle, action: rightButtonAction) + + addKeyboardToolbarWithTarget(target: target, titleText: titleText, rightBarButtonConfiguration: rightConfiguration, previousBarButtonConfiguration: leftConfiguration) + } + + @objc public func addRightLeftOnKeyboardWithTarget(_ target : AnyObject?, leftButtonImage : UIImage, rightButtonImage : UIImage, leftButtonAction : Selector, rightButtonAction : Selector, titleText: String?) { + + let leftConfiguration = IQBarButtonItemConfiguration(image: leftButtonImage, action: leftButtonAction) + let rightConfiguration = IQBarButtonItemConfiguration(image: rightButtonImage, action: rightButtonAction) + + addKeyboardToolbarWithTarget(target: target, titleText: titleText, rightBarButtonConfiguration: rightConfiguration, previousBarButtonConfiguration: leftConfiguration) + } + + ///-------------------------- + /// MARK: Previous/Next/Right + ///-------------------------- + + @objc public func addPreviousNextDoneOnKeyboardWithTarget (_ target : AnyObject?, previousAction : Selector, nextAction : Selector, doneAction : Selector, shouldShowPlaceholder: Bool = false) { + + addPreviousNextDoneOnKeyboardWithTarget(target, previousAction: previousAction, nextAction: nextAction, doneAction: doneAction, titleText: (shouldShowPlaceholder ? self.drawingToolbarPlaceholder : nil)) + } + + @objc public func addPreviousNextRightOnKeyboardWithTarget(_ target : AnyObject?, rightButtonImage : UIImage, previousAction : Selector, nextAction : Selector, rightButtonAction : Selector, shouldShowPlaceholder : Bool = false) { + + addPreviousNextRightOnKeyboardWithTarget(target, rightButtonImage: rightButtonImage, previousAction: previousAction, nextAction: nextAction, rightButtonAction: rightButtonAction, titleText: (shouldShowPlaceholder ? self.drawingToolbarPlaceholder : nil)) + } + + @objc public func addPreviousNextRightOnKeyboardWithTarget(_ target : AnyObject?, rightButtonTitle : String, previousAction : Selector, nextAction : Selector, rightButtonAction : Selector, shouldShowPlaceholder : Bool = false) { + + addPreviousNextRightOnKeyboardWithTarget(target, rightButtonTitle: rightButtonTitle, previousAction: previousAction, nextAction: nextAction, rightButtonAction: rightButtonAction, titleText: (shouldShowPlaceholder ? self.drawingToolbarPlaceholder : nil)) + } + + @objc public func addPreviousNextDoneOnKeyboardWithTarget (_ target : AnyObject?, previousAction : Selector, nextAction : Selector, doneAction : Selector, titleText: String?) { + + let rightConfiguration = IQBarButtonItemConfiguration(barButtonSystemItem: .done, action: doneAction) + let nextConfiguration = IQBarButtonItemConfiguration(image: UIImage.keyboardNextImage() ?? UIImage(), action: nextAction) + let prevConfiguration = IQBarButtonItemConfiguration(image: UIImage.keyboardPreviousImage() ?? UIImage(), action: previousAction) + + addKeyboardToolbarWithTarget(target: target, titleText: titleText, rightBarButtonConfiguration: rightConfiguration, previousBarButtonConfiguration: prevConfiguration, nextBarButtonConfiguration: nextConfiguration) + } + + @objc public func addPreviousNextRightOnKeyboardWithTarget(_ target : AnyObject?, rightButtonImage : UIImage, previousAction : Selector, nextAction : Selector, rightButtonAction : Selector, titleText : String?) { + + let rightConfiguration = IQBarButtonItemConfiguration(image: rightButtonImage, action: rightButtonAction) + let nextConfiguration = IQBarButtonItemConfiguration(image: UIImage.keyboardNextImage() ?? UIImage(), action: nextAction) + let prevConfiguration = IQBarButtonItemConfiguration(image: UIImage.keyboardPreviousImage() ?? UIImage(), action: previousAction) + + addKeyboardToolbarWithTarget(target: target, titleText: titleText, rightBarButtonConfiguration: rightConfiguration, previousBarButtonConfiguration: prevConfiguration, nextBarButtonConfiguration: nextConfiguration) + } + + @objc public func addPreviousNextRightOnKeyboardWithTarget(_ target : AnyObject?, rightButtonTitle : String, previousAction : Selector, nextAction : Selector, rightButtonAction : Selector, titleText : String?) { + + let rightConfiguration = IQBarButtonItemConfiguration(title: rightButtonTitle, action: rightButtonAction) + let nextConfiguration = IQBarButtonItemConfiguration(image: UIImage.keyboardNextImage() ?? UIImage(), action: nextAction) + let prevConfiguration = IQBarButtonItemConfiguration(image: UIImage.keyboardPreviousImage() ?? UIImage(), action: previousAction) + + addKeyboardToolbarWithTarget(target: target, titleText: titleText, rightBarButtonConfiguration: rightConfiguration, previousBarButtonConfiguration: prevConfiguration, nextBarButtonConfiguration: nextConfiguration) + } +} + diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle/IQButtonBarArrowDown@2x.png b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle/IQButtonBarArrowDown@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..81db2ed2407db352e0d31a45fe4521ea21b6efdd GIT binary patch literal 1764 zcmY*aX;_oT8vQC_LLfx}NyJb;BKsB~s1TAMCX|Fq#7JZb3Slt>Nx~8Y%BEC%*%K*+ zltsXcWr?6(d7x~)qEs#GRYU<%%Nl8svZ+8o`bDkx-g%yxcjnBQbKZC6$7Fai+>i)8 z1ONa?I*rPNqB+#j@NLkT9VOg=!d9+}hYJAQ5Ua0qRG~E(Ok;Wgz}LnAaP~X^tU=J( zmjDoJ0|37V0suh@0I0~4mZL;yLoJf#8v_99+RFYJP*j2jfX{q+UOplpkHdsuA>W!4 zA`A+(j^{^0Yycp}6QC(SRKx+}`4NH`LOcokoNCG#6*<=;(;EvBTNfSwRe| zm;`}{6K^Gm+517{ZyjoAOmH+WQp6JqK&37xNEj<3VX;c1PwhjVBHpS0ItgMvmIW1v zQ|{nwt!;3hw4tL!B}zCF%?pK`mHK2`;(O-*VIO^nIHmdjB=e!t_b5~<89~H-x;8T6 z@NE-c=+R!&sV-hLE#b$`^^wcWrcGO96 zLsNiNK{wuRM;58>{Q7p1)&}Lf;n~8-Ag<<&$IF9n)Oe=yEV4!ZQRoF%oG+B-In12ENTna7O=0}U|*WazQ- z^=scF!Pe5wV)tJQlW9h~7TI-^)=y%y?stci-#GN?R?bJ&Jks|px|z_o)cNKx86S}p z86Z>#D<(NLlPTCmP%!Mk{c#^xZ*0Xbsj>ZbkRagAm=y!IOSe!bj z@)po4UX@kPQPO2Q0(f;tx{D929mC@bw+nym8Z-}|o!_jte)pO6?R|dyV7!7 z{d1#RZRg})O&q?i-MwskNjOpBI^LSO+?Ww@hNw0)HWl-@(`0fo%i&ntHwzjWIn=VH z{LzAQ6?_(L`3WmOc}RzGoa=Pk;N8?!OEUQI@gZ`AFf$3i-@C2EzcvC;Gb*FBw`E1K zXqT5-E`Mv+oV~iZkbARski9n2fhc=qi-8Sn4}t5`_6@7?9gqwVS#OBqsL)JTEx{M^ zgX-=KN#oi8>f!Wn$546q_HXHWcXd{H#=$OUaL+9#bcl(7{q#`9wf_8W@5IDJc2!kX zb4!hh-V61gG?SbesJekeiDJg|vzRbh>*%~%&-!9{MW2dd>58w}B!(iL!nkoXegiH} zqu)7t*NRtmUDuc~ciFfeWnUE-WrEt>wBXy6R)=&KkH>mQF#mwn53buw ztqK{#XIAv`6SuMnxvK9{)teOVS|>Wk-exrXvB-_Le_K2Ufn5_ zZJ{OU&e(wo&8dD;c>wDG>_lIY>XbBP4S3_`q@z_3N}~Gt@5nndk)5cu;bGQ{5#jkA pV?R25;VelvZp3Y6YZ|P3rm7^@nEhw6mCjTCC3IH?wf<0G+Fvc__+kJ6 literal 0 HcmV?d00001 diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle/IQButtonBarArrowDown@3x.png b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle/IQButtonBarArrowDown@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..dd3412290d4e1ad8f7d5c0be8a598792922f1964 GIT binary patch literal 2177 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 U0v_c9{YL=cL-nUf$x-}&16+6esQ>@~ literal 0 HcmV?d00001 diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle/IQButtonBarArrowLeft@3x.png b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle/IQButtonBarArrowLeft@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..849b991336c0c2e85017ce29be00eb8a8e50f3dc GIT binary patch literal 1815 zcmV+y2k7{TP)Px*(Md!>RA>donO$fcRTRhXo!umxkNqU+M>e~&o9zdcN}y6duoRn8X-i96`>DlZ z5evokp$`>Q^r@f^MHK8qQ7p7jq10+MwMk==244h05b?o>Y<6ao&}cBbTWXTc&RqX@ zn+-E}caz=hY&tJ<&pE?6zd85ZkGVt06TF(6o1Kwh@EssXISgB_vE27|uh;ExI(rC} zPWs%Q@MJRaJs8*%0SX3#Ua8K}ODTOen+QreydL-3$z<~OvIDiXwfSl#sShyE7<+{h z`n1>WnWRQ#wcD+&t<8>_+Mf`#LyW};yA@TGV|LL{EjhAsyEhycmq!h^oqQ z=rhX#6lw{rA`aG%ZrLEhAT!qia{_ve+o}!}2n1Rsi3|`z*NHHMk*k0?3B8`P&5!?_ z!pb{pCQwVIL3C3d3^Mc8kQy_=@Yq$$PYyx{0)M z=cY?%7XfqLq$?m;1|+YRH{kX9F`8D1aTwD-j>gq@MSUUJ5}-&Ru#riWPkJlFAiB;j z49C?EM13*2;u;G3{T*1bc>(9aU=V#c99K$);gA(&2%~8eWuzBF+b6y;hW2|H+8>Gf z#pERewFd&5F^lwI)%J=(bi&RLtI9=DUy8gWppZZGJSL28bdy^Qg3O!)%%`HhRJm** zY&l=Vu)d1`PGbs680mgE{6VVCqbP7|UQka~v=?OnM81qBC_U z5ZX_v^bKN|VF;N;%^X8FSq{VBr(lLqGlwKfcvsZ$hYVL*)3qb9c>K0OXK6DJC=v)A z!y0rAQAFDey6GTb_^_|qWg7NjS$-3du3$8oV6e}e)^%+^x`|JSRlVkG2ry?PLcauz z2@<1eiZFdIGSgF4k~!zuOtc3==P;5!5d#9|k*1No%BVUZ+Nvc}Wae#T=5sLsU>IPw zE2GM?!EgqNW-`5mu~88ST}N$pateA=J&Dg*EoYYwd|gIrX?AlS5Cb4lH?h%r4fO+Te%t??n=My9%usY7Va zh&C%_6A*XI4+m-_8%`?7dNB|t#=E*gUx|^}v}m(R&I96(`SFRZp7mj2eM$_3EoyIC z&+Ho+8JQAoR><=cqtRLHpV$L3GrbML|1j!#8{N61RBWTQc}Ss@n$;*N*L$N!$r zq&u-}{4NHU1b(pshy75$s&9GTkctZ(S%XU(Fm z61iXvi4H@akVkTndw|$1+A#ipVX4&4=;UNF-&Ve+Bp~kA=kvL|PG>i&=mjwhYVB7& zMP802VhPb!u3Rz@cg(xT)zJ7OYG_MdAav`DuI<3+`!~;4hGM}Q68%g}OgwxvGrbe~ zLD7ccx2e`<@8@UHdA2eXWdU)&~WA$b2E)9S)o;@-u0(rF5xmAnqEY z@4vLJ?LqC_6GNdpHxh^Ae)eoyG?pNjRYL{*)wRnqzS-z*(T4f!uUTE|jK||+qHQ60 zNf|OYoWcKz1IW}523@v^H(k%qsQH2|+7^;41>(NbQ8jiD3-7mifhb+$u-OOsnRTA6 zh@#RiGrF}$f}!g;syS>_@;16p(Foh7D9W&C6J;whl=GRvuYy;RsjqX2+#PQ%^RsKd zGtKFW-K_-TF*MZF>sb4)h zcAjzWks^94)HD*5FJlIOOLT^s8qY9&yQ->xiZ;_%s%WfK#!uZY{M=oEdCIg)KutB- zC_U_PHuWS@sc~bRssiyqfV$&xdwkfsJZB7yb|Yr>Bd$hIZ}MUCLC#inARZ`@Omrht zE@aBQb)mF@O5}*w+?`_n>RNUn9vo1E9+!I-P}}EV zW{AcP;Gf!^Cj!JF5~<|RKDTQMbJ7-^z3+>TsM!Ot{{dv1C-l#MaIOFV002ovPDHLk FV1gYbUD*Ht literal 0 HcmV?d00001 diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle/IQButtonBarArrowRight@2x.png b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle/IQButtonBarArrowRight@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c8b9a874cf27641b060ff537de958ca197896774 GIT binary patch literal 1786 zcmY*adt8!P8vgJWg4as%-Y20Zt{`fK1S(2~ZCEi{ikCzMMN3o4b{`E4ZT%SnxGR;rjY@l^(=gasjJz8u~a$@05Ti_;8YF(ENP%q zN&qiShP4R+E{HYikT6bgs34TKhY-t6#xUc! zF)U14a;k<60K_zcCQW7um|$A+;S@e0jfDKjAZYS67>fiyQUpmPWGHPP=+EV`z^xch zj2qG$27(}w7sn>hDFL6aYjz}Lf_RteZR5-Q88gaOJ0` z2$*TEDg4c!ME;{gVew;moKyjan*y%sGGn+$1tcVL&FIVcRHuN${;yLC|8rZK2C-`= zSRBR;`$b!GmAHly_VPF^jq{qmH;(v``G44FA0l?m{C|r1)agf5)2cU&i2d?x-mpDA zPGJC`3lF4_gQ%ud`nq6ifr6Ru+H?rY(UPmzc_urs75QuCCxBn_W&}x`* zu(qPxVEyg7*HuX5Z9R3Zbe_!Fh4D8EG9>n0Ks!REb;bGeI4e}T6 zIZiD{O8f^LD8t3nJj?7hhp(B$8#n4Fv=S8xX$NR8F?DBEu@T5LB=sN?$vPJ9xinr( zzmv3%=OlqBGLr*n+U)~cH7Ls+W!KBDSay%4%VQc#1AJ{|uIcBSDlb3m*&AXnz;b3h zVXJ1aLx**Lu#y;M_Z-5}<~mSb3jf;Y`=#ku<0>J-j|Z#-d{>jQ`! zojc1$*1btsiD?avNYLZxT{#VwHy#-IORQ;$BD?QMqsi-1+u|U^UoTH4k)LRf`0tkQ zd0u3u`_O(9l6B2o(DKx?-kdab|1sDE_(8XY+ZSAVf0Oks9HoS=2Au!(pHU@$GM;Qd zwUTB3tp6Tq&J3mo1f28-^+jBX*o zmr=<-^T!jOyPx!{;GYOud~4(?zUHAnQR$}4GzdKfZIWrdo<&bdtZ^hf-h!F+td>ok zw3g!S7{ijLIOVdxF(ErHSF{J-s=x;kkV+4ckMf#8yd@-^kEuR6STC%xD{wk@=Y(jl zFW*>pqpYFku`0rQb=%}I9cZsdzAR;Ae$H2nK)fSo61MwH6~62|Y;96dFRYuoohLNP zyk7OFN5N1%<>xL67i~6edu$F`kBMLCn5jIb#l2yoiU(Xz(K3Rem!qH#M(v!nv6Ab{ z9+oX_9G-=ouGE|BT}0W8&awMSuGTIOFK?;2?@P25xm;GYM|i)tYd*u+dc-_JXdBm9 z+~PipHxBftJ(0CX?PuJy5uG6%RTw}Uj!Q4h9H8GpoimQz?%z2;8C|>;`h7inZqfM2 z#on-mlM0KZ-|D0b%~EMU)hd4f19jGd&-4mvY2~ZCT(sO^wD5gBeR&3WW%j!8b}y@K z(B+0-k|GImd`95Dh?m{+9a4Wkv1BeUi4wbvIWlI%y}w#LYrF7`tobU6WOToAHLXpW zFRrFkcRI+S)4d)IBhX{vn1qVKx?D_I-NZFB7y_3y^|J?SKKqC0?{d{4^Tcm$a;NbO zmtVH~*4n*{v5~XqR3x?K+}aNl MxHE{->=&K=Z!8)8l>h($ literal 0 HcmV?d00001 diff --git a/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle/IQButtonBarArrowRight@3x.png b/Santander-Test/Pods/IQKeyboardManagerSwift/IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle/IQButtonBarArrowRight@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..95c43973b283158e67081158220a7f6d6edb8c8b GIT binary patch literal 1844 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 + Icon +

+

IQKeyboardManager

+

+ GitHub license + + +[![Build Status](https://travis-ci.org/hackiftekhar/IQKeyboardManager.svg)](https://travis-ci.org/hackiftekhar/IQKeyboardManager) + + +Often while developing an app, We ran into an issues where the iPhone keyboard slide up and cover the `UITextField/UITextView`. `IQKeyboardManager` allows you to prevent issues of the keyboard sliding up and cover `UITextField/UITextView` without needing you to enter any code and no additional setup required. To use `IQKeyboardManager` you simply need to add source files to your project. + + +#### Key Features + +1) `**CODELESS**, Zero Lines Of Code` + +2) `Works Automatically` + +3) `No More UIScrollView` + +4) `No More Subclasses` + +5) `No More Manual Work` + +6) `No More #imports` + +`IQKeyboardManager` works on all orientations, and with the toolbar. There are also nice optional features allowing you to customize the distance from the text field, add the next/previous done button as a keyboard UIToolbar, play sounds when the user navigations through the form and more. + + +## Screenshot +[![IQKeyboardManager](https://raw.githubusercontent.com/hackiftekhar/IQKeyboardManager/v3.3.0/Screenshot/IQKeyboardManagerScreenshot.png)](http://youtu.be/6nhLw6hju2A) +[![Settings](https://raw.githubusercontent.com/hackiftekhar/IQKeyboardManager/v3.3.0/Screenshot/IQKeyboardManagerSettings.png)](http://youtu.be/6nhLw6hju2A) + +## GIF animation +[![IQKeyboardManager](https://raw.githubusercontent.com/hackiftekhar/IQKeyboardManager/v3.3.0/Screenshot/IQKeyboardManager.gif)](http://youtu.be/6nhLw6hju2A) + +## Video + + + +## Tutorial video by @rebeloper ([#1135](https://github.com/hackiftekhar/IQKeyboardManager/issues/1135)) + +@rebeloper demonstrated two videos on how to implement **IQKeyboardManager** at it's core: + + + +https://www.youtube.com/playlist?list=PL_csAAO9PQ8aTL87XnueOXi3RpWE2m_8v + +## Warning + +- **If you're planning to build SDK/library/framework and wants to handle UITextField/UITextView with IQKeyboardManager then you're totally going on wrong way.** I would never suggest to add **IQKeyboardManager** as **dependency/adding/shipping** with any third-party library, instead of adding **IQKeyboardManager** you should implement your own solution to achieve same kind of results. **IQKeyboardManager** is totally designed for projects to help developers for their convenience, it's not designed for **adding/dependency/shipping** with any **third-party library**, because **doing this could block adoption by other developers for their projects as well(who are not using IQKeyboardManager and implemented their custom solution to handle UITextField/UITextView thought the project).** +- If **IQKeyboardManager** conflicts with other **third-party library**, then it's **developer responsibility** to **enable/disable IQKeyboardManager** when **presenting/dismissing** third-party library UI. Third-party libraries are not responsible to handle IQKeyboardManager. + +## Requirements +[![Platform iOS](https://img.shields.io/badge/Platform-iOS-blue.svg?style=fla)]() + +| | Language | Minimum iOS Target | Minimum Xcode Version | +|------------------------|----------|--------------------|-----------------------| +| IQKeyboardManager | Obj-C | iOS 8.0 | Xcode 8.2.1 | +| IQKeyboardManagerSwift | Swift | iOS 8.0 | Xcode 8.2.1 | +| Demo Project | | | Xcode 9.3 | + +**Note** +- 3.3.7 is the last iOS 7 supported version. + +#### Swift versions support + +| Swift | Xcode | IQKeyboardManagerSwift | +|-------------------|-------|------------------------| +| 4.2, 4.0, 3.2, 3.0| 10.0 | >= 6.0.4 | +| 4.0, 3.2, 3.0 | 9.0 | 5.0.0 | +| 3.1 | 8.3 | 4.0.10 | +| 3.0 (3.0.2) | 8.2 | 4.0.8 | +| 2.2 or 2.3 | 7.3 | 4.0.5 | +| 2.1.1 | 7.2 | 4.0.0 | +| 2.1 | 7.2 | 3.3.7 | +| 2.0 | 7.0 | 3.3.3.1 | +| 1.2 | 6.3 | 3.3.1 | +| 1.0 | 6.0 | 3.3.2 | + +Installation +========================== + +#### Installation with CocoaPods + +[![CocoaPods](https://img.shields.io/cocoapods/v/IQKeyboardManager.svg)](http://cocoadocs.org/docsets/IQKeyboardManager) + +***IQKeyboardManager (Objective-C):*** IQKeyboardManager is available through [CocoaPods](http://cocoapods.org), to install +it simply add the following line to your Podfile: ([#9](https://github.com/hackiftekhar/IQKeyboardManager/issues/9)) + +```ruby +pod 'IQKeyboardManager' #iOS8 and later + +pod 'IQKeyboardManager', '3.3.7' #iOS7 +``` + +***IQKeyboardManager (Swift):*** IQKeyboardManagerSwift is available through [CocoaPods](http://cocoapods.org), to install +it simply add the following line to your Podfile: ([#236](https://github.com/hackiftekhar/IQKeyboardManager/issues/236)) + +*Swift 4.2, 4.0, 3.2, 3.0 (Xcode 9)* + +```ruby +pod 'IQKeyboardManagerSwift' +``` + +*Or you can choose version you need based on Swift support table from [Requirements](README.md#requirements)* + +```ruby +pod 'IQKeyboardManagerSwift', '5.0.0' +``` + +In AppDelegate.swift, just import IQKeyboardManagerSwift framework and enable IQKeyboardManager. + +```swift +import IQKeyboardManagerSwift + +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { + + IQKeyboardManager.shared.enable = true + + return true + } +} +``` + +#### Installation with Carthage + +[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks. + +You can install Carthage with [Homebrew](http://brew.sh/) using the following command: + +```bash +$ brew update +$ brew install carthage +``` + +To integrate `IQKeyboardManger` or `IQKeyboardManagerSwift` into your Xcode project using Carthage, specify it in your `Cartfile`: + +```ogdl +github "hackiftekhar/IQKeyboardManager" +``` + +Run `carthage` to build the frameworks and drag the appropriate framework (`IQKeyboardManager.framework` or `IQKeyboardManagerSwift.framework`) into your Xcode project according to your need. Make sure to add only one framework and not both. + + +#### Installation with Source Code + +[![Github tag](https://img.shields.io/github/tag/hackiftekhar/iqkeyboardmanager.svg)]() + + + +***IQKeyboardManager (Objective-C):*** Just ***drag and drop*** `IQKeyboardManager` directory from demo project to your project. That's it. + +***IQKeyboardManager (Swift):*** ***Drag and drop*** `IQKeyboardManagerSwift` directory from demo project to your project + +In AppDelegate.swift, just enable IQKeyboardManager. + +```swift +@UIApplicationMain +class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { + + IQKeyboardManager.shared.enable = true + + return true + } +} +``` + +Migration Guide +========================== +- [IQKeyboardManager 6.0.0 Migration Guide](https://github.com/hackiftekhar/IQKeyboardManager/wiki/IQKeyboardManager-6.0.0-Migration-Guide) + +Other Links +========================== + +- [Known Issues](https://github.com/hackiftekhar/IQKeyboardManager/wiki/Known-Issues) +- [Manual Management Tweaks](https://github.com/hackiftekhar/IQKeyboardManager/wiki/Manual-Management) +- [Properties and functions usage](https://github.com/hackiftekhar/IQKeyboardManager/wiki/Properties-&-Functions) + +## Flow Diagram +[![IQKeyboardManager CFD](https://raw.githubusercontent.com/hackiftekhar/IQKeyboardManager/master/Screenshot/IQKeyboardManagerFlowDiagram.jpg)](https://raw.githubusercontent.com/hackiftekhar/IQKeyboardManager/master/Screenshot/IQKeyboardManagerFlowDiagram.jpg) + +If you would like to see detailed Flow diagram then see [Detailed Flow Diagram](https://raw.githubusercontent.com/hackiftekhar/IQKeyboardManager/v3.3.0/Screenshot/IQKeyboardManagerCFD.jpg). + + +LICENSE +--- +Distributed under the MIT License. + +Contributions +--- +Any contribution is more than welcome! You can contribute through pull requests and issues on GitHub. + +Author +--- +If you wish to contact me, email at: hack.iftekhar@gmail.com diff --git a/Santander-Test/Pods/Manifest.lock b/Santander-Test/Pods/Manifest.lock index c2ef1f97..cbbac15a 100644 --- a/Santander-Test/Pods/Manifest.lock +++ b/Santander-Test/Pods/Manifest.lock @@ -1,5 +1,6 @@ PODS: - Alamofire (4.8.1) + - IQKeyboardManagerSwift (6.2.0) - Moya (12.0.1): - Moya/Core (= 12.0.1) - Moya/Core (12.0.1): @@ -9,22 +10,25 @@ PODS: - StatusAlert (1.1.0) DEPENDENCIES: + - IQKeyboardManagerSwift - Moya - StatusAlert SPEC REPOS: https://github.com/cocoapods/specs.git: - Alamofire + - IQKeyboardManagerSwift - Moya - Result - StatusAlert SPEC CHECKSUMS: Alamofire: 16ce2c353fb72865124ddae8a57c5942388f4f11 + IQKeyboardManagerSwift: b07ccf9d8cafe993dcd6cb794eb4ba34611a0c4e Moya: cf730b3cd9e005401ef37a85143aa141a12fd38f Result: bd966fac789cc6c1563440b348ab2598cc24d5c7 StatusAlert: 4d6dadebf5f7abd5648fa774ef3062f2f95cc4aa -PODFILE CHECKSUM: e871f6b26d19e6b91fffd808ac5e92e42bc03ffd +PODFILE CHECKSUM: 43c1992cf2813f4080ced8f5452e251bd09e7c41 COCOAPODS: 1.6.0 diff --git a/Santander-Test/Pods/Pods.xcodeproj/project.pbxproj b/Santander-Test/Pods/Pods.xcodeproj/project.pbxproj index de4508f1..9b8d9734 100644 --- a/Santander-Test/Pods/Pods.xcodeproj/project.pbxproj +++ b/Santander-Test/Pods/Pods.xcodeproj/project.pbxproj @@ -7,100 +7,137 @@ objects = { /* Begin PBXBuildFile section */ - 059D92B7BBFBEC53E9A3B6E11C5C3B3A /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CFA6FD91CCF5980C630869D8F179163 /* Response.swift */; }; - 09067C2692931E434234858ADBC4C6D6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2FE98814E15F069042B678A3EE8685C /* Foundation.framework */; }; - 0A39AF55285A3A4F7CBABB6D822FA4A3 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6971CC9434804FA19AF339E8EAC67903 /* Alamofire.swift */; }; - 10C05319610A79A154A5E0B27D29FB52 /* StatusAlert-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = ED623F2AED96E8DF5C80D6AA1AB59A06 /* StatusAlert-dummy.m */; }; - 11F309B46EE6B36CB281409A579996C0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2FE98814E15F069042B678A3EE8685C /* Foundation.framework */; }; - 1B131595178FA51FC0B7C2FB12ED5ADB /* Endpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCE8C03CEDF209A430926EBD3C5308C1 /* Endpoint.swift */; }; - 1C496E2C46E94DECD60F0B1C7CA511E4 /* NetworkLoggerPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = F94C6D18B9F24B9EC996CDF2096FB755 /* NetworkLoggerPlugin.swift */; }; - 1D29D2ACADF961F69D32B06FA6A09E28 /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 711FCD416785CCE9E58692FF9D272D09 /* Notifications.swift */; }; - 225E880F1459B17432E7DF840D03A3E7 /* Task.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A705AAAF2813072CE980B9A231599B5 /* Task.swift */; }; - 27BD5F097E7B5BAAEF31769B2C201BA6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2FE98814E15F069042B678A3EE8685C /* Foundation.framework */; }; - 2E3B9CD1ECA93DF8CD00F582E747DFB1 /* UIDevice+Platform.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD91A68BD08B58E7058F7E33FAC03536 /* UIDevice+Platform.swift */; }; - 313895F247F6C04661152D6D4948C100 /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = E05209C726F688BF89F6CC4697B76B37 /* Image.swift */; }; - 31895E3CF848D69123E3A6DDEDBBF86F /* URL+Moya.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1A0C32E8AACAC7037EAD5CEE05FBAB9 /* URL+Moya.swift */; }; - 355C18EEC82624A06A6CC93965258E33 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E4E9B464796BCD50D5349CD626FB121 /* Request.swift */; }; - 38D635EF452D8D233B0CB7FD5ECD152D /* Pods-Santander-Test-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 064B8C62456DB7AEFF1AEFF7FC9E39F7 /* Pods-Santander-Test-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3B5F45D58C19A4A296857187DA92B264 /* UIDevice+Blur.swift in Sources */ = {isa = PBXBuildFile; fileRef = F55AF63A30960D087EF58DFA3EFF13D5 /* UIDevice+Blur.swift */; }; - 3BD1DAFE1F3E6C9E4EB0F2099B6D6FA2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2FE98814E15F069042B678A3EE8685C /* Foundation.framework */; }; - 3E0749AF6C51BCF0E4A41CF1D6A76FED /* DispatchQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9933F8F0C2327F373DB96CBD9CF5FE80 /* DispatchQueue+Alamofire.swift */; }; - 4A42935426AB30760B47ADDE1BB1C39D /* NoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3384A51D237BE9FFE5CC9FD8501267CA /* NoError.swift */; }; - 5D53EA65636A0B296726611E3C491CF7 /* Result-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E32D8039C364144FF831E6B396D67593 /* Result-dummy.m */; }; - 5D97ACC58BF197F2426B2C6853142DF5 /* NetworkActivityPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E44758592C3E3423268131941D91178 /* NetworkActivityPlugin.swift */; }; - 60B6C2A003864AAD3A426448152F67BE /* Timeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8444584E0708FE54CD421CB67274B2B /* Timeline.swift */; }; - 6499810827FC895E23B2E30263617389 /* Plugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = D42F1ADC85D9FE06E135C5A4A4712179 /* Plugin.swift */; }; - 64C35953B1CEDA2F929331C7626611CC /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E6D7D02F4BC3F8DAB4CEDDD1FF13A7C /* MultipartFormData.swift */; }; - 68BB9452F3012913BABE12BE69C74785 /* AnyEncodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E22C7F50B502391ECADE49470259B11 /* AnyEncodable.swift */; }; - 6AAA002A59C5011CB71E9B83E6803C6D /* ResultProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2ABF1291D81C64F7EEF0EFD5B780A8EF /* ResultProtocol.swift */; }; + 02FB225950EEA73C12B14A3D74A2096E /* IQUIView+IQKeyboardToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F81284941748F0B4B0BF4AD4CBDA1EA /* IQUIView+IQKeyboardToolbar.swift */; }; + 059D92B7BBFBEC53E9A3B6E11C5C3B3A /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4440E7D93688311D478621074DF71345 /* Response.swift */; }; + 09067C2692931E434234858ADBC4C6D6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */; }; + 0A39AF55285A3A4F7CBABB6D822FA4A3 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 347486DBCB93D186BAB6C9AD930ED55A /* Alamofire.swift */; }; + 104D74A8C8DE606C9D0ADDAB052B1543 /* StatusAlert-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 98F4F7FBAD28B2ED090E9BB31FEDA8BF /* StatusAlert-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11F309B46EE6B36CB281409A579996C0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */; }; + 1B131595178FA51FC0B7C2FB12ED5ADB /* Endpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D1FC303B1005EFF099082C9DEEDC065 /* Endpoint.swift */; }; + 1C496E2C46E94DECD60F0B1C7CA511E4 /* NetworkLoggerPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8776B5DF29F8D63EE757702169F8426 /* NetworkLoggerPlugin.swift */; }; + 1D29D2ACADF961F69D32B06FA6A09E28 /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43714182B7BCA5485EBDE4CF6A9ABDD5 /* Notifications.swift */; }; + 1F69C755AF5965693C7298A05060A757 /* StatusAlertUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = E20C969B5ACCF7AC28D547C2078332EF /* StatusAlertUtils.swift */; }; + 225E880F1459B17432E7DF840D03A3E7 /* Task.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94F6676BE91C9388F6A57252CED9B75E /* Task.swift */; }; + 2305008B1D46627F9B49FAFF25CD6FE6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */; }; + 30C07F53D870FC78B292E0E4F91FEE9E /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86F84942F79C4255F7497FC979196A65 /* QuartzCore.framework */; }; + 313895F247F6C04661152D6D4948C100 /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = 719F534FF88E65EA1374FB93CA956CD7 /* Image.swift */; }; + 31895E3CF848D69123E3A6DDEDBBF86F /* URL+Moya.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BB22612F45F951AB3A4BEF92939CBC2 /* URL+Moya.swift */; }; + 355C18EEC82624A06A6CC93965258E33 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = F637DAED777FC65DFA84AD4F763139D2 /* Request.swift */; }; + 36DD0B1007BF3C7BFE352704D5C415F7 /* IQTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E29419B867A52354795ED7FB236D2F33 /* IQTextView.swift */; }; + 3BD1DAFE1F3E6C9E4EB0F2099B6D6FA2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */; }; + 3E0749AF6C51BCF0E4A41CF1D6A76FED /* DispatchQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47B3494D6695B6A07C957BDDC2F3EFAF /* DispatchQueue+Alamofire.swift */; }; + 4467D1C8AABFA6FC321AC7CD6F327B48 /* IQUITextFieldView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89A807D88F6537CFCC7BA4329542521F /* IQUITextFieldView+Additions.swift */; }; + 4A3294F2FCFF96D15DA6FD2D5D839788 /* IQUIView+Hierarchy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 633EDE28CFC6671C9B3A32CBE5574D69 /* IQUIView+Hierarchy.swift */; }; + 4A42935426AB30760B47ADDE1BB1C39D /* NoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97DDE8EFF0D1936B717C36083D879CF3 /* NoError.swift */; }; + 4E3E6EC07A4F261D041BA0C4CA258260 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1829CB35B6E3E9121C9CF36E8FCDBAE6 /* CoreGraphics.framework */; }; + 5677C54BF14ABA45675F2DEB98AFD0D1 /* IQKeyboardManagerSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EBFA20F5DDDD154A8326BD23776A0B0F /* IQKeyboardManagerSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5C004FBC6C6DB7A23CBBCF9C28770277 /* Pods-Santander-Test-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D9FAA9914E2184A41D32A3A311B1860 /* Pods-Santander-Test-dummy.m */; }; + 5D53EA65636A0B296726611E3C491CF7 /* Result-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 26DE6FA33754885F7D18C7AFB0B58F7C /* Result-dummy.m */; }; + 5D97ACC58BF197F2426B2C6853142DF5 /* NetworkActivityPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80961A91C2B8DDC01EC9AECCAC0EA4FF /* NetworkActivityPlugin.swift */; }; + 60B6C2A003864AAD3A426448152F67BE /* Timeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BE933A310F002306D961318BA943C73 /* Timeline.swift */; }; + 633A43974DB81C2CCB1A2C3A7B1BFB37 /* IQKeyboardManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7743099AC812B6D35DF24FCBFCF4537E /* IQKeyboardManager.swift */; }; + 6499810827FC895E23B2E30263617389 /* Plugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 728381B0C957F32C7C5090A61FAEA5CA /* Plugin.swift */; }; + 64C35953B1CEDA2F929331C7626611CC /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4293278E9B40CE3E34D1390D17A6BD4 /* MultipartFormData.swift */; }; + 68BB9452F3012913BABE12BE69C74785 /* AnyEncodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DA0AAD9E0B4F4EA588B48D4CC739263 /* AnyEncodable.swift */; }; + 6AAA002A59C5011CB71E9B83E6803C6D /* ResultProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 036C9BB9BB550214D7E17CE54385E228 /* ResultProtocol.swift */; }; 6CA1BEBC175680F7D37A9C47917203B1 /* Pods-Santander-TestUITests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1410754A2D8AEF29CBAD3CF4DC4714BB /* Pods-Santander-TestUITests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6E04C92190FD45451E6690122ABF62E9 /* Moya-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F2656EE812F18B6B610A2568FCC4561 /* Moya-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6E64C6F2AF1EBF3B28AD5CC90D8D3E2F /* AnyError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FF6AD9627E2BF77BCE034BAF1AF6245 /* AnyError.swift */; }; - 6EFD003458AE7F689DEA720A2030C261 /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 746201A0470CBCE1AB0A40EEB1F47944 /* ResponseSerialization.swift */; }; - 700D3D95AF9520CB227846DFD943A2DA /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEDFD686274F7A4D466DA6A0CE6A715A /* ParameterEncoding.swift */; }; - 73AB05789A4982944AF68DBD013E3EB7 /* NetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B083C244BDBF87F2A610FE414F85CE4D /* NetworkReachabilityManager.swift */; }; - 772911DA6E33D1CBBC30131B7C8BDBB3 /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 02E9CB3DFB8C8D5D17E731A31F2D423E /* Alamofire-dummy.m */; }; - 778F9B551E5A346DA84BC46CBFFA1B22 /* CredentialsPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 670D3F3E1C0779928EC137618EFDF484 /* CredentialsPlugin.swift */; }; - 77E8F0EB9FFBE2E3EB0C77095C644606 /* TaskDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 215E69460404285C2FEA0E9CD156C946 /* TaskDelegate.swift */; }; - 780E9C2B021FB29632D8D1933AECD020 /* StatusAlert-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 06684328EA211B5D771E7AB5A841C507 /* StatusAlert-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7A6FFEFDCF07683D5E2976077212FD27 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2FE98814E15F069042B678A3EE8685C /* Foundation.framework */; }; - 7BEFFCD672FD28B3D77927E392412FB9 /* Result-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 51857ED069DA11590B3AF6CA029787C2 /* Result-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7E3538A6992A38276764936A9733493D /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F4FC7A87827AE5D69595C8E96E333C4 /* AFError.swift */; }; - 80111F83B0BCA39D24985D0F122F0001 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 403650A016ACB4048C5790E80A71B849 /* Result.swift */; }; - 80F474B2FF5EE52C1CDC55E0D6C95263 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2FE98814E15F069042B678A3EE8685C /* Foundation.framework */; }; - 88AE9E6392539A558E0F4417775EEA91 /* URLRequest+Encoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98FD95FBAD88ACEBEAFF8FC99888D010 /* URLRequest+Encoding.swift */; }; - 8D2A6A90A6DDAF75EA52D471258545CC /* ServerTrustPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC0BF35535263907FE94B878D062B54B /* ServerTrustPolicy.swift */; }; + 6E04C92190FD45451E6690122ABF62E9 /* Moya-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A3A7A69572AE7480428E2E0E461AB44 /* Moya-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6E64C6F2AF1EBF3B28AD5CC90D8D3E2F /* AnyError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30FE6299336582DF3F7BC9BA9492A8B1 /* AnyError.swift */; }; + 6EFD003458AE7F689DEA720A2030C261 /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = C57EF9785B9237C31BD56ED973E54549 /* ResponseSerialization.swift */; }; + 700D3D95AF9520CB227846DFD943A2DA /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43B3D46C5537399369C6EAC56AC200FE /* ParameterEncoding.swift */; }; + 73AB05789A4982944AF68DBD013E3EB7 /* NetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA502CFB7AC3936E52CC74C5F5903259 /* NetworkReachabilityManager.swift */; }; + 772911DA6E33D1CBBC30131B7C8BDBB3 /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 96CC6CFAAEF9232FF99261DBA864B65F /* Alamofire-dummy.m */; }; + 778F9B551E5A346DA84BC46CBFFA1B22 /* CredentialsPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D002E8340BBE5C1616ECCA13C725EC1 /* CredentialsPlugin.swift */; }; + 77E8F0EB9FFBE2E3EB0C77095C644606 /* TaskDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE54289085F8E76D867635DEA5F18BAB /* TaskDelegate.swift */; }; + 7A6FFEFDCF07683D5E2976077212FD27 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */; }; + 7BEFFCD672FD28B3D77927E392412FB9 /* Result-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 328A04F05F9289BCF1C7AF8FADD81524 /* Result-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7E3538A6992A38276764936A9733493D /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A8A73AC789E75D3AFE3572EEF6F8A59 /* AFError.swift */; }; + 80111F83B0BCA39D24985D0F122F0001 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD9C67F7A723A7B1D92D3EE704F735DB /* Result.swift */; }; + 88AE9E6392539A558E0F4417775EEA91 /* URLRequest+Encoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74B9158D8A709B402F3747512D251BBC /* URLRequest+Encoding.swift */; }; + 8D2A6A90A6DDAF75EA52D471258545CC /* ServerTrustPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF2C2F8414E8156C7A452AE20C93161F /* ServerTrustPolicy.swift */; }; + 92E9BD908B71CFA1C6EDA2FA86BF1635 /* IQKeyboardManagerSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B5556BF140A5F3EBD4F3ED65FDCA8E66 /* IQKeyboardManagerSwift-dummy.m */; }; 9774AB3F3E8B65D7F1A644CCA6254D03 /* Pods-Santander-TestTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 638AF6E4AD3D6CF6AED6C2F601C4A809 /* Pods-Santander-TestTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9EBD0113F23A6FBB0CDC07F66E77ED81 /* AccessTokenPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB251E41FD23ED1172249CE782C0E93E /* AccessTokenPlugin.swift */; }; - A1EC41966B261DCE460BCDE5124A1DBE /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9DBC305EDC388A7FCDCA4FD959649A7 /* SessionDelegate.swift */; }; - A266363126A240900FCC5CCFE1EDB8BE /* Moya+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF1E6DA75AC4524B84DD818556E56BA3 /* Moya+Alamofire.swift */; }; - AA56769D8733D3F3E7976742D5ABA998 /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041DFCA15BC44B6F4EEC21B37F591AED /* Validation.swift */; }; - AB037232146E78285C5B8F6394D1A658 /* MultiTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31387928AB135818364761E0A8732638 /* MultiTarget.swift */; }; - AEA829AB1A8AF2AD077A808AED6B178A /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 695972AC67A0A3A83751D985BAEA7877 /* MultipartFormData.swift */; }; - B1EB1CD6804A333102774EA1DE9F1B94 /* TargetType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0091D5AC8576E0F57446F173B73A7CE /* TargetType.swift */; }; + 986EF56798DE2C7C65737AD9334E517D /* IQNSArray+Sort.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F1EFD9B3A6694A4DF2D1A7D0CEAE5BF /* IQNSArray+Sort.swift */; }; + 9D0866BCC26350F05BD74C04F200C10A /* UIDevice+Platform.swift in Sources */ = {isa = PBXBuildFile; fileRef = E684B69530F5AC628E7BA0796911F7B9 /* UIDevice+Platform.swift */; }; + 9EBD0113F23A6FBB0CDC07F66E77ED81 /* AccessTokenPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F7F2C851C3617E1D17A463E7618885 /* AccessTokenPlugin.swift */; }; + A1EC41966B261DCE460BCDE5124A1DBE /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7BC42EA73705FAAD6D57EFF04E9D763 /* SessionDelegate.swift */; }; + A266363126A240900FCC5CCFE1EDB8BE /* Moya+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3222A2F3D223C0E9BFC0434EDF1D436 /* Moya+Alamofire.swift */; }; + A380ABE3F1AF1CA7A14F9449BDC0B73F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */; }; + A613A3BC72B998F1914EDF4994DD8A12 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EFB6498CD7E9F2FB9A16399EB90D28B7 /* UIKit.framework */; }; + AA3DA32EDDE1FFCB4FFD9B6D58EB106C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */; }; + AA56769D8733D3F3E7976742D5ABA998 /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B3C9D1ABA430C45075F9D583D67C0AD /* Validation.swift */; }; + AAB81C0BBA1DBCA92F322972C43768C8 /* StatusAlert-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DD36FB1A741E1074457D7A2382146DEE /* StatusAlert-dummy.m */; }; + AB037232146E78285C5B8F6394D1A658 /* MultiTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFA77DDD304D4813A042BD0F715AD28 /* MultiTarget.swift */; }; + AEA829AB1A8AF2AD077A808AED6B178A /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14474910351E268CA497EE13395B79B6 /* MultipartFormData.swift */; }; + B178B38FCD7F99B07422484FC7FD6861 /* IQKeyboardManager.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 9888FB0E0937634EC24AB6032B9AE8CA /* IQKeyboardManager.bundle */; }; + B1EB1CD6804A333102774EA1DE9F1B94 /* TargetType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43B255A8B71C5B85363E9624F9CA0368 /* TargetType.swift */; }; B277AE2A50A7C5F6B1BB9EDA5E1A97B8 /* Pods-Santander-TestTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 05E349DAE1260294B909EE4EF74E1CEE /* Pods-Santander-TestTests-dummy.m */; }; - B642F75A16A71ED991DB8A9DA65AD439 /* ValidationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E72243528290D9091E0F2782ACB54AA /* ValidationType.swift */; }; - B6F6E4CC26451E91B59FAE0F6841DC1F /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EF5700B4CA96AFF0E89179913827474F /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C5A49CAAB41E281C266C192EADBE4EB7 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F26884CBE8F502A41B24162275097927 /* Alamofire.framework */; }; - CD321D15156EF51F506D6183152B0E1C /* MoyaProvider+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2405127CFC10844C2214102CD81A71A /* MoyaProvider+Internal.swift */; }; - D0D3B6F6481841FB0B0DC61653217179 /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = C59D060A0AC9BFD85C57BEDE9E41535B /* Response.swift */; }; - D348D88FE7939869DE08BC623976B321 /* Moya-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E985D4200744BE935D54EA3E805D95B0 /* Moya-dummy.m */; }; - D3FA0AA634AAEA99AB3FABC36BB4958C /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66373CEDBE2C80C70261A44D51E2EE7C /* SessionManager.swift */; }; - DD90258D5667ACC775417DE0E6EE6E77 /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56EC88463798F381C1362F442A5F6344 /* Result.framework */; }; - DE6AC2459484032563903F1BFCCD3756 /* MoyaProvider+Defaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03798F0FA18F0BBEC61230CC457FAF49 /* MoyaProvider+Defaults.swift */; }; + B2A4A7D1BD7C4D59EA0FF0A49163A387 /* IQBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88F91EDCA4BE8027599B63DA2E825ABE /* IQBarButtonItem.swift */; }; + B642F75A16A71ED991DB8A9DA65AD439 /* ValidationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC81268C9C29F16A594F53447D70D13B /* ValidationType.swift */; }; + B6F6E4CC26451E91B59FAE0F6841DC1F /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EB19AC8DA7A93FC9BFCFC76AFC8EF5E6 /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B888C49BC46C9A62CBF03A8FAD7126F1 /* IQInvocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 085FF4D9FD6B749469B78F086929216E /* IQInvocation.swift */; }; + BA61F495C0E45AA2A88D21D51575FF02 /* IQKeyboardReturnKeyHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2927D5C13102DF85F4C558738DCEDB8E /* IQKeyboardReturnKeyHandler.swift */; }; + C0D2A82B14F8FE402E78EBDBCC0CBE18 /* StatusAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7786EF96DCE14E5204731F1893CE1A5 /* StatusAlert.swift */; }; + C5A49CAAB41E281C266C192EADBE4EB7 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45C4ABEAFCB4FA284808F5DBE887B20D /* Alamofire.framework */; }; + CB3084173AD22105B6105A2D17F7C776 /* Pods-Santander-Test-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 064B8C62456DB7AEFF1AEFF7FC9E39F7 /* Pods-Santander-Test-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CD321D15156EF51F506D6183152B0E1C /* MoyaProvider+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4717EBE7E99D0E15A9A655B784B25DC0 /* MoyaProvider+Internal.swift */; }; + D0D3B6F6481841FB0B0DC61653217179 /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6F399CF85DFF7FA61BB6CB811FAD5BA /* Response.swift */; }; + D348D88FE7939869DE08BC623976B321 /* Moya-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 65DE41FA07CAE47B75A7B0ECEA455B45 /* Moya-dummy.m */; }; + D3A177F9BCAD7042B46E0A36CEDDBF8E /* IQTitleBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F95A72295EBE394B54EE1ACD2D34F96 /* IQTitleBarButtonItem.swift */; }; + D3FA0AA634AAEA99AB3FABC36BB4958C /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF5C70165854A846C790FC0BF9CEF8BB /* SessionManager.swift */; }; + D7D49BAE6EAAD5EC2DAF370BCDE783A2 /* IQToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = B26509FE31B6FF712867B3C3ABDDE9CF /* IQToolbar.swift */; }; + D8F4B5841E455F5170B1C2FC30863B05 /* IQKeyboardManagerConstantsInternal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A18D45FD115A7DA68A3AAF2F51C2E6B /* IQKeyboardManagerConstantsInternal.swift */; }; + DD420F096096C518F8E6B44583BF6521 /* IQKeyboardManagerConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B17F3CDC4F8071CA37C06FBE10E5F5 /* IQKeyboardManagerConstants.swift */; }; + DD90258D5667ACC775417DE0E6EE6E77 /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C283542EF8EEF865485C078FFAAD4FCC /* Result.framework */; }; + DDAC963022C8D96EBAAD2284780E0276 /* IQUIScrollView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA585978B6EF86FA20AB0138C45A113D /* IQUIScrollView+Additions.swift */; }; + DE6AC2459484032563903F1BFCCD3756 /* MoyaProvider+Defaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06B9F58D5667FE4E189AB259DAAD2C4 /* MoyaProvider+Defaults.swift */; }; E15EA05765812FBDA4F4428F7B6BBF6D /* Pods-Santander-TestUITests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CD5133133E24C110EF3769A9D93DE159 /* Pods-Santander-TestUITests-dummy.m */; }; - E7E895502A83EDA1534DC002A0267D8D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F2FE98814E15F069042B678A3EE8685C /* Foundation.framework */; }; - EB0DD8CEA1A69867A30267439C970440 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7565D4AE04C04525F3D6A862D0116425 /* Result.swift */; }; - EB65CF8FE56C314DBAF088FE713C9F88 /* MoyaProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A1917AE113EF5496A60FE2DA197E28D /* MoyaProvider.swift */; }; - EFFAD40E8E19B64A6701310100E72542 /* StatusAlertUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7189AED5D97D2B5DAADDD65365E424BC /* StatusAlertUtils.swift */; }; - F2F9E70CF14ECF15A479250991A518DC /* Pods-Santander-Test-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D9FAA9914E2184A41D32A3A311B1860 /* Pods-Santander-Test-dummy.m */; }; - F44AA7A6E15EFE1927FC41B447D6EFD1 /* Cancellable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5445F781C7B97D42CF31E6F5E776C1CB /* Cancellable.swift */; }; - F7F92ADDC5123E31219649726E8321F8 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 018A446AF7E1F701B12CBBEBA9469CDC /* UIKit.framework */; }; - FA03759417E17EE209F5153FB97A754E /* StatusAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AD0798D238BA2980CC2DE849B7C1CE9 /* StatusAlert.swift */; }; - FF38A3D897A7C4228CAA5CCA71401376 /* MoyaError.swift in Sources */ = {isa = PBXBuildFile; fileRef = B63B38C4D1FA05B1CA2FF1D89A95AC5C /* MoyaError.swift */; }; + E3334CC660C4BD5E41C1061B9DC56FF6 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EFB6498CD7E9F2FB9A16399EB90D28B7 /* UIKit.framework */; }; + E7E895502A83EDA1534DC002A0267D8D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */; }; + EB0DD8CEA1A69867A30267439C970440 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = D66130D7B981E7045B09E24E16B2EB60 /* Result.swift */; }; + EB65CF8FE56C314DBAF088FE713C9F88 /* MoyaProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD93652CEA85021627EAF26A035F40B5 /* MoyaProvider.swift */; }; + F0A9F7366B446EDAE4716768BCCADE6C /* IQPreviousNextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87C7B86A27B8EAA7F5FD04A4CFFDB1F2 /* IQPreviousNextView.swift */; }; + F33FDC4826B0B3D3951EFAAD42CB521D /* UIDevice+Blur.swift in Sources */ = {isa = PBXBuildFile; fileRef = 296A315F1030E5D22D1E86AEDBA33212 /* UIDevice+Blur.swift */; }; + F44AA7A6E15EFE1927FC41B447D6EFD1 /* Cancellable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 056C7459B361B149CA51708A85253EE3 /* Cancellable.swift */; }; + F852C0100AB6D9D2CE3E28FCA487C67E /* IQUIViewController+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47DE8F6C18198698D8D90127F3D79364 /* IQUIViewController+Additions.swift */; }; + FF38A3D897A7C4228CAA5CCA71401376 /* MoyaError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01D9799349EC8482A0ECE9B147F2490D /* MoyaError.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 15FF1ADD8B83D122003AE92A6C1BEFA5 /* PBXContainerItemProxy */ = { + 5E1A36908C47574A723FAD56990DAFB4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4B0183450F95394DC0C49E326A20B42D; + remoteInfo = Result; + }; + 6A4EDBBF08D44260DF0148CD85CDDA29 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4B0183450F95394DC0C49E326A20B42D; + remoteInfo = Result; + }; + 739B33F73C327D7438616B072434C417 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 3383968E74B5371B20BB519B170DC7FD; remoteInfo = Alamofire; }; - 3CE3AC40ED75ECFA3839320C0C1C8AB3 /* PBXContainerItemProxy */ = { + 789694E6A5EA5C5F4692301575E3CD2E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = BAAB01D1BA82ABAE2B535579B77ED0CB; - remoteInfo = Moya; + remoteGlobalIDString = 15BF64AFACBC5F40C3D5C6BAB72CDE26; + remoteInfo = StatusAlert; }; - 6A4EDBBF08D44260DF0148CD85CDDA29 /* PBXContainerItemProxy */ = { + 7C4B286844A189385E91FB5326F61F7F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 4B0183450F95394DC0C49E326A20B42D; - remoteInfo = Result; + remoteGlobalIDString = BAAB01D1BA82ABAE2B535579B77ED0CB; + remoteInfo = Moya; }; 89B7C1F59BE279B9AC2C2AEA832F837B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -113,159 +150,178 @@ isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = AF9E2E73F71D7D9C2DA38E0922DEFA17; + remoteGlobalIDString = 88B10C4857809B3E5C3335BCA87F5FC2; remoteInfo = "Pods-Santander-Test"; }; - BE2FE96C842D970D743B817C3C29C800 /* PBXContainerItemProxy */ = { + BD8DBB1BACE773F5B058FA824BBE6DB9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = AF9E2E73F71D7D9C2DA38E0922DEFA17; - remoteInfo = "Pods-Santander-Test"; + remoteGlobalIDString = EFF87187B46551C36797F2B899C54212; + remoteInfo = IQKeyboardManagerSwift; }; - D9479B65D45E6B1213C3ABED87FB5B34 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4B0183450F95394DC0C49E326A20B42D; - remoteInfo = Result; - }; - E8D8E0442913BC3BFF8DB6BDA25462DE /* PBXContainerItemProxy */ = { + BE2FE96C842D970D743B817C3C29C800 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = E7825F7E90CAC8AA4AC3F185016B5350; - remoteInfo = StatusAlert; + remoteGlobalIDString = 88B10C4857809B3E5C3335BCA87F5FC2; + remoteInfo = "Pods-Santander-Test"; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 018A446AF7E1F701B12CBBEBA9469CDC /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; 01B4720D4F3A72FEF3A1525F6D268E7A /* Pods-Santander-Test-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Santander-Test-frameworks.sh"; sourceTree = ""; }; - 02E9CB3DFB8C8D5D17E731A31F2D423E /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; - 03798F0FA18F0BBEC61230CC457FAF49 /* MoyaProvider+Defaults.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "MoyaProvider+Defaults.swift"; path = "Sources/Moya/MoyaProvider+Defaults.swift"; sourceTree = ""; }; - 041DFCA15BC44B6F4EEC21B37F591AED /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; + 01D9799349EC8482A0ECE9B147F2490D /* MoyaError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MoyaError.swift; path = Sources/Moya/MoyaError.swift; sourceTree = ""; }; + 036C9BB9BB550214D7E17CE54385E228 /* ResultProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResultProtocol.swift; path = Result/ResultProtocol.swift; sourceTree = ""; }; + 056C7459B361B149CA51708A85253EE3 /* Cancellable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cancellable.swift; path = Sources/Moya/Cancellable.swift; sourceTree = ""; }; 05E349DAE1260294B909EE4EF74E1CEE /* Pods-Santander-TestTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Santander-TestTests-dummy.m"; sourceTree = ""; }; 064B8C62456DB7AEFF1AEFF7FC9E39F7 /* Pods-Santander-Test-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Santander-Test-umbrella.h"; sourceTree = ""; }; - 06684328EA211B5D771E7AB5A841C507 /* StatusAlert-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "StatusAlert-umbrella.h"; sourceTree = ""; }; + 08069C0730E81199B1847B7820188F18 /* Pods_Santander_TestUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_TestUITests.framework; path = "Pods-Santander-TestUITests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 085FF4D9FD6B749469B78F086929216E /* IQInvocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQInvocation.swift; path = IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift; sourceTree = ""; }; 08A81152EC75BCA30190A6265734A2E9 /* Pods-Santander-Test-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Santander-Test-acknowledgements.markdown"; sourceTree = ""; }; - 0A5DA517BB440420D8090BCF9736AB37 /* Result.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Result.framework; path = Result.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0F2656EE812F18B6B610A2568FCC4561 /* Moya-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Moya-umbrella.h"; sourceTree = ""; }; + 08BEEA538E1F71DAA5790616C8943AF6 /* Moya.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Moya.framework; path = Moya.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 0B3C9D1ABA430C45075F9D583D67C0AD /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; + 0F81284941748F0B4B0BF4AD4CBDA1EA /* IQUIView+IQKeyboardToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+IQKeyboardToolbar.swift"; path = "IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift"; sourceTree = ""; }; 1112BA5594638444A8463D9E6BD25F8C /* Pods-Santander-Test.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-Test.debug.xcconfig"; sourceTree = ""; }; 1410754A2D8AEF29CBAD3CF4DC4714BB /* Pods-Santander-TestUITests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Santander-TestUITests-umbrella.h"; sourceTree = ""; }; - 1A1917AE113EF5496A60FE2DA197E28D /* MoyaProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MoyaProvider.swift; path = Sources/Moya/MoyaProvider.swift; sourceTree = ""; }; - 1E4E9B464796BCD50D5349CD626FB121 /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; + 14474910351E268CA497EE13395B79B6 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; + 15DC749833EFE285A38784DC6194D142 /* StatusAlert.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = StatusAlert.framework; path = StatusAlert.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1829CB35B6E3E9121C9CF36E8FCDBAE6 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; + 18E15337DA6A3A5DCC4EE6501981459B /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; + 1B9A46ABB3BFE5994BED32D734D5432C /* Moya.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Moya.xcconfig; sourceTree = ""; }; + 1F000A497FCACF240584ABE5D0F82CB9 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Alamofire.framework; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 1FA9ACAB0572FE18DB0EFC4D0D489C7B /* Pods-Santander-TestTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Santander-TestTests-acknowledgements.markdown"; sourceTree = ""; }; - 215E69460404285C2FEA0E9CD156C946 /* TaskDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskDelegate.swift; path = Source/TaskDelegate.swift; sourceTree = ""; }; + 26DE6FA33754885F7D18C7AFB0B58F7C /* Result-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Result-dummy.m"; sourceTree = ""; }; 27E2BB89559B46B7D51C7E161F1DE20E /* Pods-Santander-TestUITests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-TestUITests-Info.plist"; sourceTree = ""; }; - 2ABF1291D81C64F7EEF0EFD5B780A8EF /* ResultProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResultProtocol.swift; path = Result/ResultProtocol.swift; sourceTree = ""; }; - 2B2BBA89A3A36F91AC268B77D109B9CB /* Pods_Santander_Test.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_Test.framework; path = "Pods-Santander-Test.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 2E22C7F50B502391ECADE49470259B11 /* AnyEncodable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyEncodable.swift; path = Sources/Moya/AnyEncodable.swift; sourceTree = ""; }; - 31387928AB135818364761E0A8732638 /* MultiTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultiTarget.swift; path = Sources/Moya/MultiTarget.swift; sourceTree = ""; }; + 2927D5C13102DF85F4C558738DCEDB8E /* IQKeyboardReturnKeyHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardReturnKeyHandler.swift; path = IQKeyboardManagerSwift/IQKeyboardReturnKeyHandler.swift; sourceTree = ""; }; + 296A315F1030E5D22D1E86AEDBA33212 /* UIDevice+Blur.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIDevice+Blur.swift"; path = "Sources/StatusAlert/Extensions/UIDevice+Blur.swift"; sourceTree = ""; }; + 2F1EFD9B3A6694A4DF2D1A7D0CEAE5BF /* IQNSArray+Sort.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQNSArray+Sort.swift"; path = "IQKeyboardManagerSwift/Categories/IQNSArray+Sort.swift"; sourceTree = ""; }; + 30FE6299336582DF3F7BC9BA9492A8B1 /* AnyError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyError.swift; path = Result/AnyError.swift; sourceTree = ""; }; 3177B689266F9D9900310F56859F5DB2 /* Pods-Santander-TestTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Santander-TestTests.modulemap"; sourceTree = ""; }; 322053D9E9993C774F41A2AA6CB500A7 /* Pods-Santander-Test-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-Test-acknowledgements.plist"; sourceTree = ""; }; - 3384A51D237BE9FFE5CC9FD8501267CA /* NoError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoError.swift; path = Result/NoError.swift; sourceTree = ""; }; - 341BA3C9801D06C4825B9BF0766C03A6 /* Result-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Result-Info.plist"; sourceTree = ""; }; + 328A04F05F9289BCF1C7AF8FADD81524 /* Result-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-umbrella.h"; sourceTree = ""; }; 34718F3B9548C70AF0984731DDCA7580 /* Pods-Santander-TestUITests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Santander-TestUITests-acknowledgements.markdown"; sourceTree = ""; }; - 3AD0798D238BA2980CC2DE849B7C1CE9 /* StatusAlert.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StatusAlert.swift; path = Sources/StatusAlert/StatusAlert.swift; sourceTree = ""; }; - 403650A016ACB4048C5790E80A71B849 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Result/Result.swift; sourceTree = ""; }; - 41CE2641BA73ABFCE074E95753CA6853 /* Result.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Result.modulemap; sourceTree = ""; }; + 347486DBCB93D186BAB6C9AD930ED55A /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; + 37248464644A9B94B38F659CD7868B33 /* IQKeyboardManagerSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-prefix.pch"; sourceTree = ""; }; + 3A3A7A69572AE7480428E2E0E461AB44 /* Moya-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Moya-umbrella.h"; sourceTree = ""; }; + 3BE933A310F002306D961318BA943C73 /* Timeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeline.swift; path = Source/Timeline.swift; sourceTree = ""; }; + 3D002E8340BBE5C1616ECCA13C725EC1 /* CredentialsPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CredentialsPlugin.swift; path = Sources/Moya/Plugins/CredentialsPlugin.swift; sourceTree = ""; }; + 43714182B7BCA5485EBDE4CF6A9ABDD5 /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = ""; }; + 43B255A8B71C5B85363E9624F9CA0368 /* TargetType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TargetType.swift; path = Sources/Moya/TargetType.swift; sourceTree = ""; }; + 43B3D46C5537399369C6EAC56AC200FE /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; + 4440E7D93688311D478621074DF71345 /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; + 45C4ABEAFCB4FA284808F5DBE887B20D /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 4717EBE7E99D0E15A9A655B784B25DC0 /* MoyaProvider+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "MoyaProvider+Internal.swift"; path = "Sources/Moya/MoyaProvider+Internal.swift"; sourceTree = ""; }; + 47B3494D6695B6A07C957BDDC2F3EFAF /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = ""; }; + 47DE8F6C18198698D8D90127F3D79364 /* IQUIViewController+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIViewController+Additions.swift"; path = "IQKeyboardManagerSwift/Categories/IQUIViewController+Additions.swift"; sourceTree = ""; }; + 48E0DA4E62B261616F5CB85432594956 /* IQKeyboardManagerSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.xcconfig; sourceTree = ""; }; + 4A13C96B31C7821F3E4A5A284662445A /* StatusAlert.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = StatusAlert.modulemap; sourceTree = ""; }; + 4A18D45FD115A7DA68A3AAF2F51C2E6B /* IQKeyboardManagerConstantsInternal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerConstantsInternal.swift; path = IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstantsInternal.swift; sourceTree = ""; }; + 4B9E207652A8E03550292AD25FD2362D /* Result.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Result.framework; path = Result.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 4BFA77DDD304D4813A042BD0F715AD28 /* MultiTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultiTarget.swift; path = Sources/Moya/MultiTarget.swift; sourceTree = ""; }; 500A039A12C1D4FC4DD1BA43A9523E91 /* Pods-Santander-Test.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-Test.release.xcconfig"; sourceTree = ""; }; - 51857ED069DA11590B3AF6CA029787C2 /* Result-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-umbrella.h"; sourceTree = ""; }; - 52F03B889291C2EBE1F0144FABCFFFB6 /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Alamofire.modulemap; sourceTree = ""; }; - 5445F781C7B97D42CF31E6F5E776C1CB /* Cancellable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cancellable.swift; path = Sources/Moya/Cancellable.swift; sourceTree = ""; }; - 56EC88463798F381C1362F442A5F6344 /* Result.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Result.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5AE465C48526532EF9AA380B5F26A718 /* Alamofire.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.xcconfig; sourceTree = ""; }; - 5D0566616612A2B84A146B0E94BE1CCD /* StatusAlert.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = StatusAlert.framework; path = StatusAlert.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 55104E9F564D5CF7B3292964D9C21FAB /* Result.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Result.modulemap; sourceTree = ""; }; + 577F89C1743CC208578DC486E2EB5205 /* Moya-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Moya-Info.plist"; sourceTree = ""; }; + 5813128D7F17576C17CF53BD0B25AA9F /* StatusAlert-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "StatusAlert-Info.plist"; sourceTree = ""; }; + 5A8A73AC789E75D3AFE3572EEF6F8A59 /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = ""; }; 5D9FAA9914E2184A41D32A3A311B1860 /* Pods-Santander-Test-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Santander-Test-dummy.m"; sourceTree = ""; }; 5E1CF47F8BD0FE48ABCF46917BFDB639 /* Pods-Santander-Test-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-Test-Info.plist"; sourceTree = ""; }; - 5ECC735BCFE0C65F6F2FDB25B47CA298 /* StatusAlert-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "StatusAlert-Info.plist"; sourceTree = ""; }; 6009D670E92930F3D826B7B232BAE2DE /* Pods-Santander-TestTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-TestTests.debug.xcconfig"; sourceTree = ""; }; + 633EDE28CFC6671C9B3A32CBE5574D69 /* IQUIView+Hierarchy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+Hierarchy.swift"; path = "IQKeyboardManagerSwift/Categories/IQUIView+Hierarchy.swift"; sourceTree = ""; }; 638AF6E4AD3D6CF6AED6C2F601C4A809 /* Pods-Santander-TestTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Santander-TestTests-umbrella.h"; sourceTree = ""; }; - 66373CEDBE2C80C70261A44D51E2EE7C /* SessionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionManager.swift; path = Source/SessionManager.swift; sourceTree = ""; }; - 670D3F3E1C0779928EC137618EFDF484 /* CredentialsPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CredentialsPlugin.swift; path = Sources/Moya/Plugins/CredentialsPlugin.swift; sourceTree = ""; }; - 695972AC67A0A3A83751D985BAEA7877 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; - 6971CC9434804FA19AF339E8EAC67903 /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; - 6A705AAAF2813072CE980B9A231599B5 /* Task.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Task.swift; path = Sources/Moya/Task.swift; sourceTree = ""; }; - 6CFA6FD91CCF5980C630869D8F179163 /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; - 6E72243528290D9091E0F2782ACB54AA /* ValidationType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ValidationType.swift; path = Sources/Moya/ValidationType.swift; sourceTree = ""; }; - 711FCD416785CCE9E58692FF9D272D09 /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = ""; }; - 7189AED5D97D2B5DAADDD65365E424BC /* StatusAlertUtils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StatusAlertUtils.swift; path = Sources/StatusAlert/StatusAlertUtils.swift; sourceTree = ""; }; + 65DE41FA07CAE47B75A7B0ECEA455B45 /* Moya-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Moya-dummy.m"; sourceTree = ""; }; + 6BB22612F45F951AB3A4BEF92939CBC2 /* URL+Moya.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URL+Moya.swift"; path = "Sources/Moya/URL+Moya.swift"; sourceTree = ""; }; + 719F534FF88E65EA1374FB93CA956CD7 /* Image.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Image.swift; path = Sources/Moya/Image.swift; sourceTree = ""; }; + 728381B0C957F32C7C5090A61FAEA5CA /* Plugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Plugin.swift; path = Sources/Moya/Plugin.swift; sourceTree = ""; }; 72E40C3B6E66E684514A3B0403D07BFE /* Pods-Santander-TestUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-TestUITests.debug.xcconfig"; sourceTree = ""; }; - 746201A0470CBCE1AB0A40EEB1F47944 /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; - 7565D4AE04C04525F3D6A862D0116425 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = ""; }; - 7567C0996E1A79C4872913A57E36DAEC /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Alamofire.framework; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 79C05AF5619EAF23242D588EC29C756E /* Result-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-prefix.pch"; sourceTree = ""; }; + 74B9158D8A709B402F3747512D251BBC /* URLRequest+Encoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URLRequest+Encoding.swift"; path = "Sources/Moya/URLRequest+Encoding.swift"; sourceTree = ""; }; + 75F7F2C851C3617E1D17A463E7618885 /* AccessTokenPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AccessTokenPlugin.swift; path = Sources/Moya/Plugins/AccessTokenPlugin.swift; sourceTree = ""; }; + 7743099AC812B6D35DF24FCBFCF4537E /* IQKeyboardManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManager.swift; path = IQKeyboardManagerSwift/IQKeyboardManager.swift; sourceTree = ""; }; 7A8D526CFB9CE5AE19261B6D3A1AA350 /* Pods-Santander-TestUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-TestUITests.release.xcconfig"; sourceTree = ""; }; - 8A939ADC52D61F5D4233D49975569DC2 /* Moya.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Moya.framework; path = Moya.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8E44758592C3E3423268131941D91178 /* NetworkActivityPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkActivityPlugin.swift; path = Sources/Moya/Plugins/NetworkActivityPlugin.swift; sourceTree = ""; }; - 8F4FC7A87827AE5D69595C8E96E333C4 /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = ""; }; - 8F70CF046CF3D592CE89C10124AB457B /* StatusAlert.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = StatusAlert.xcconfig; sourceTree = ""; }; - 8FAFBAB47BD5449E03EFF699CF40EF41 /* Result.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Result.xcconfig; sourceTree = ""; }; - 98DD7122F5F8136968514F2B2147C2E6 /* StatusAlert-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "StatusAlert-prefix.pch"; sourceTree = ""; }; - 98FD95FBAD88ACEBEAFF8FC99888D010 /* URLRequest+Encoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URLRequest+Encoding.swift"; path = "Sources/Moya/URLRequest+Encoding.swift"; sourceTree = ""; }; - 9933F8F0C2327F373DB96CBD9CF5FE80 /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = ""; }; + 7B2E52D88228B39B19BFC15CB13A3F70 /* IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardManagerSwift-Info.plist"; sourceTree = ""; }; + 80961A91C2B8DDC01EC9AECCAC0EA4FF /* NetworkActivityPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkActivityPlugin.swift; path = Sources/Moya/Plugins/NetworkActivityPlugin.swift; sourceTree = ""; }; + 86F84942F79C4255F7497FC979196A65 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; + 87C7B86A27B8EAA7F5FD04A4CFFDB1F2 /* IQPreviousNextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQPreviousNextView.swift; path = IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift; sourceTree = ""; }; + 88F91EDCA4BE8027599B63DA2E825ABE /* IQBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift; sourceTree = ""; }; + 89A807D88F6537CFCC7BA4329542521F /* IQUITextFieldView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUITextFieldView+Additions.swift"; path = "IQKeyboardManagerSwift/Categories/IQUITextFieldView+Additions.swift"; sourceTree = ""; }; + 8B63A6F4E9E65974D5CFB5EC646E66E3 /* StatusAlert-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "StatusAlert-prefix.pch"; sourceTree = ""; }; + 8D1FC303B1005EFF099082C9DEEDC065 /* Endpoint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Endpoint.swift; path = Sources/Moya/Endpoint.swift; sourceTree = ""; }; + 8DA0AAD9E0B4F4EA588B48D4CC739263 /* AnyEncodable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyEncodable.swift; path = Sources/Moya/AnyEncodable.swift; sourceTree = ""; }; + 8E25B11161FFF47A917FCCEDFF9EB977 /* Alamofire.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.xcconfig; sourceTree = ""; }; + 937966A9F3619A1BECC1B0F3B32F897B /* Result.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Result.xcconfig; sourceTree = ""; }; + 94F6676BE91C9388F6A57252CED9B75E /* Task.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Task.swift; path = Sources/Moya/Task.swift; sourceTree = ""; }; + 96CC6CFAAEF9232FF99261DBA864B65F /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; + 97DDE8EFF0D1936B717C36083D879CF3 /* NoError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoError.swift; path = Result/NoError.swift; sourceTree = ""; }; + 9888FB0E0937634EC24AB6032B9AE8CA /* IQKeyboardManager.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = IQKeyboardManager.bundle; path = IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle; sourceTree = ""; }; + 98BE80CFBBB51E470B47D8919B0130D5 /* Result-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-prefix.pch"; sourceTree = ""; }; + 98F4F7FBAD28B2ED090E9BB31FEDA8BF /* StatusAlert-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "StatusAlert-umbrella.h"; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9E6D7D02F4BC3F8DAB4CEDDD1FF13A7C /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Sources/Moya/MultipartFormData.swift; sourceTree = ""; }; - 9FF6AD9627E2BF77BCE034BAF1AF6245 /* AnyError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyError.swift; path = Result/AnyError.swift; sourceTree = ""; }; - A065E3B4BC77C42EEAC2B82F95FB5F65 /* Alamofire-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Alamofire-Info.plist"; sourceTree = ""; }; + 9DC5BD2CD5EBF56ACC506AF8119FAE80 /* IQKeyboardManagerSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardManagerSwift.modulemap; sourceTree = ""; }; + 9F52C185B872CCE7ABC75DFEB89F1C02 /* StatusAlert.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = StatusAlert.xcconfig; sourceTree = ""; }; + 9F95A72295EBE394B54EE1ACD2D34F96 /* IQTitleBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTitleBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift; sourceTree = ""; }; + A7BC42EA73705FAAD6D57EFF04E9D763 /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = ""; }; + A83C6FE78508C4D27EAF3AB6D4155467 /* Alamofire-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Alamofire-Info.plist"; sourceTree = ""; }; AA2C7453145C44C27B00E2138508290D /* Pods-Santander-Test.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Santander-Test.modulemap"; sourceTree = ""; }; - AAC2ADF83F2ECE52A20435D7E068C12A /* Moya.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Moya.xcconfig; sourceTree = ""; }; - B083C244BDBF87F2A610FE414F85CE4D /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = ""; }; - B2405127CFC10844C2214102CD81A71A /* MoyaProvider+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "MoyaProvider+Internal.swift"; path = "Sources/Moya/MoyaProvider+Internal.swift"; sourceTree = ""; }; + AECA685D3C6ED973422868AA96662816 /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Alamofire.modulemap; sourceTree = ""; }; + AFE480D3EB5A010258DDAC7FBEF966E4 /* Pods_Santander_Test.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_Test.framework; path = "Pods-Santander-Test.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + B1B17F3CDC4F8071CA37C06FBE10E5F5 /* IQKeyboardManagerConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerConstants.swift; path = IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift; sourceTree = ""; }; + B26509FE31B6FF712867B3C3ABDDE9CF /* IQToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbar.swift; path = IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift; sourceTree = ""; }; B2D49289BFD83B3A1582148FE3B1FBCD /* Pods-Santander-TestUITests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-TestUITests-acknowledgements.plist"; sourceTree = ""; }; - B360F7406023D90A2E620DD58D48EE8B /* StatusAlert.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = StatusAlert.modulemap; sourceTree = ""; }; - B63B38C4D1FA05B1CA2FF1D89A95AC5C /* MoyaError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MoyaError.swift; path = Sources/Moya/MoyaError.swift; sourceTree = ""; }; - BB33841FDDFC475D2CF9A2EE4CD248A4 /* Pods_Santander_TestTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_TestTests.framework; path = "Pods-Santander-TestTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - BC0BF35535263907FE94B878D062B54B /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = ""; }; - BD91A68BD08B58E7058F7E33FAC03536 /* UIDevice+Platform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIDevice+Platform.swift"; path = "Sources/StatusAlert/Extensions/UIDevice+Platform.swift"; sourceTree = ""; }; - C0091D5AC8576E0F57446F173B73A7CE /* TargetType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TargetType.swift; path = Sources/Moya/TargetType.swift; sourceTree = ""; }; - C1A0C32E8AACAC7037EAD5CEE05FBAB9 /* URL+Moya.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URL+Moya.swift"; path = "Sources/Moya/URL+Moya.swift"; sourceTree = ""; }; - C31A0AB95333E2A936CA490831980FDE /* Moya-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Moya-Info.plist"; sourceTree = ""; }; - C59D060A0AC9BFD85C57BEDE9E41535B /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Sources/Moya/Response.swift; sourceTree = ""; }; + B5556BF140A5F3EBD4F3ED65FDCA8E66 /* IQKeyboardManagerSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardManagerSwift-dummy.m"; sourceTree = ""; }; + B6F399CF85DFF7FA61BB6CB811FAD5BA /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Sources/Moya/Response.swift; sourceTree = ""; }; + B8776B5DF29F8D63EE757702169F8426 /* NetworkLoggerPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkLoggerPlugin.swift; path = Sources/Moya/Plugins/NetworkLoggerPlugin.swift; sourceTree = ""; }; + BCC3F270782DA39D5C8269EA39BA00FE /* Moya.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Moya.modulemap; sourceTree = ""; }; + BDC12AC17B21AD952C228F3F6271CE6C /* Result-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Result-Info.plist"; sourceTree = ""; }; + BFCAF7529D571A3E1B28CA0E74B2CE9B /* Moya-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Moya-prefix.pch"; sourceTree = ""; }; + C283542EF8EEF865485C078FFAAD4FCC /* Result.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Result.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C3222A2F3D223C0E9BFC0434EDF1D436 /* Moya+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Moya+Alamofire.swift"; path = "Sources/Moya/Moya+Alamofire.swift"; sourceTree = ""; }; + C57EF9785B9237C31BD56ED973E54549 /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; + CB4E5F7F9A3FA15DB2520CB008B6FAC4 /* IQKeyboardManagerSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = IQKeyboardManagerSwift.framework; path = IQKeyboardManagerSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CC81268C9C29F16A594F53447D70D13B /* ValidationType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ValidationType.swift; path = Sources/Moya/ValidationType.swift; sourceTree = ""; }; CD5133133E24C110EF3769A9D93DE159 /* Pods-Santander-TestUITests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Santander-TestUITests-dummy.m"; sourceTree = ""; }; CD7B595FE6596FB636EB30207B2F428A /* Pods-Santander-TestUITests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Santander-TestUITests.modulemap"; sourceTree = ""; }; - CEDFD686274F7A4D466DA6A0CE6A715A /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; D02D3D21156144D3F4B936265D29A56A /* Pods-Santander-TestTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-TestTests-acknowledgements.plist"; sourceTree = ""; }; - D42F1ADC85D9FE06E135C5A4A4712179 /* Plugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Plugin.swift; path = Sources/Moya/Plugin.swift; sourceTree = ""; }; - D5AB81AB335ADC06D8DC47D5C1D8FB95 /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; - D8444584E0708FE54CD421CB67274B2B /* Timeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeline.swift; path = Source/Timeline.swift; sourceTree = ""; }; + D06B9F58D5667FE4E189AB259DAAD2C4 /* MoyaProvider+Defaults.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "MoyaProvider+Defaults.swift"; path = "Sources/Moya/MoyaProvider+Defaults.swift"; sourceTree = ""; }; + D66130D7B981E7045B09E24E16B2EB60 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = ""; }; D90FE54F5D11CC69794D8BED8AA7D675 /* Pods-Santander-TestTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-TestTests-Info.plist"; sourceTree = ""; }; - DCE8C03CEDF209A430926EBD3C5308C1 /* Endpoint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Endpoint.swift; path = Sources/Moya/Endpoint.swift; sourceTree = ""; }; - DF1E6DA75AC4524B84DD818556E56BA3 /* Moya+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Moya+Alamofire.swift"; path = "Sources/Moya/Moya+Alamofire.swift"; sourceTree = ""; }; - DF992F392B5A485B5865530E09BFF17C /* Moya-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Moya-prefix.pch"; sourceTree = ""; }; - E05209C726F688BF89F6CC4697B76B37 /* Image.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Image.swift; path = Sources/Moya/Image.swift; sourceTree = ""; }; - E32D8039C364144FF831E6B396D67593 /* Result-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Result-dummy.m"; sourceTree = ""; }; - E3B560EBC2DC39E67D0C3F614224CB0C /* Pods_Santander_TestUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_TestUITests.framework; path = "Pods-Santander-TestUITests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - E985D4200744BE935D54EA3E805D95B0 /* Moya-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Moya-dummy.m"; sourceTree = ""; }; - ED623F2AED96E8DF5C80D6AA1AB59A06 /* StatusAlert-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "StatusAlert-dummy.m"; sourceTree = ""; }; - EF5700B4CA96AFF0E89179913827474F /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; - F26884CBE8F502A41B24162275097927 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F2FE98814E15F069042B678A3EE8685C /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + DD36FB1A741E1074457D7A2382146DEE /* StatusAlert-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "StatusAlert-dummy.m"; sourceTree = ""; }; + DD93652CEA85021627EAF26A035F40B5 /* MoyaProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MoyaProvider.swift; path = Sources/Moya/MoyaProvider.swift; sourceTree = ""; }; + DF2C2F8414E8156C7A452AE20C93161F /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = ""; }; + DF5C70165854A846C790FC0BF9CEF8BB /* SessionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionManager.swift; path = Source/SessionManager.swift; sourceTree = ""; }; + E20C969B5ACCF7AC28D547C2078332EF /* StatusAlertUtils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StatusAlertUtils.swift; path = Sources/StatusAlert/StatusAlertUtils.swift; sourceTree = ""; }; + E29419B867A52354795ED7FB236D2F33 /* IQTextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextView.swift; path = IQKeyboardManagerSwift/IQTextView/IQTextView.swift; sourceTree = ""; }; + E684B69530F5AC628E7BA0796911F7B9 /* UIDevice+Platform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIDevice+Platform.swift"; path = "Sources/StatusAlert/Extensions/UIDevice+Platform.swift"; sourceTree = ""; }; + E735A4A25FD892AEFF9C851F534D9A3A /* Pods_Santander_TestTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_TestTests.framework; path = "Pods-Santander-TestTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + EA502CFB7AC3936E52CC74C5F5903259 /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = ""; }; + EB19AC8DA7A93FC9BFCFC76AFC8EF5E6 /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; + EBFA20F5DDDD154A8326BD23776A0B0F /* IQKeyboardManagerSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-umbrella.h"; sourceTree = ""; }; + EFB6498CD7E9F2FB9A16399EB90D28B7 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; F3708A4B829835EBC49B784D84968130 /* Pods-Santander-TestTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-TestTests.release.xcconfig"; sourceTree = ""; }; - F55AF63A30960D087EF58DFA3EFF13D5 /* UIDevice+Blur.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIDevice+Blur.swift"; path = "Sources/StatusAlert/Extensions/UIDevice+Blur.swift"; sourceTree = ""; }; - F94C6D18B9F24B9EC996CDF2096FB755 /* NetworkLoggerPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkLoggerPlugin.swift; path = Sources/Moya/Plugins/NetworkLoggerPlugin.swift; sourceTree = ""; }; - F9DBC305EDC388A7FCDCA4FD959649A7 /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = ""; }; - FB251E41FD23ED1172249CE782C0E93E /* AccessTokenPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AccessTokenPlugin.swift; path = Sources/Moya/Plugins/AccessTokenPlugin.swift; sourceTree = ""; }; - FE773D1CF9A3802AEB73F498A87F8B3A /* Moya.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Moya.modulemap; sourceTree = ""; }; + F4293278E9B40CE3E34D1390D17A6BD4 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Sources/Moya/MultipartFormData.swift; sourceTree = ""; }; + F637DAED777FC65DFA84AD4F763139D2 /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; + F7786EF96DCE14E5204731F1893CE1A5 /* StatusAlert.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StatusAlert.swift; path = Sources/StatusAlert/StatusAlert.swift; sourceTree = ""; }; + FA585978B6EF86FA20AB0138C45A113D /* IQUIScrollView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIScrollView+Additions.swift"; path = "IQKeyboardManagerSwift/Categories/IQUIScrollView+Additions.swift"; sourceTree = ""; }; + FD9C67F7A723A7B1D92D3EE704F735DB /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Result/Result.swift; sourceTree = ""; }; + FE54289085F8E76D867635DEA5F18BAB /* TaskDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskDelegate.swift; path = Source/TaskDelegate.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 48ACF90A780D9991A643D8E81E6BEAEA /* Frameworks */ = { + 17DCD29D0B9242D128900FBEA4698769 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C5A49CAAB41E281C266C192EADBE4EB7 /* Alamofire.framework in Frameworks */, - 11F309B46EE6B36CB281409A579996C0 /* Foundation.framework in Frameworks */, - DD90258D5667ACC775417DE0E6EE6E77 /* Result.framework in Frameworks */, + AA3DA32EDDE1FFCB4FFD9B6D58EB106C /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 53820A82DC9706703735416AB2D5D06E /* Frameworks */ = { + 48ACF90A780D9991A643D8E81E6BEAEA /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 80F474B2FF5EE52C1CDC55E0D6C95263 /* Foundation.framework in Frameworks */, + C5A49CAAB41E281C266C192EADBE4EB7 /* Alamofire.framework in Frameworks */, + 11F309B46EE6B36CB281409A579996C0 /* Foundation.framework in Frameworks */, + DD90258D5667ACC775417DE0E6EE6E77 /* Result.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -277,12 +333,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 8A64A1880992A56FEA7132DC7AD842FC /* Frameworks */ = { + B886D41EF763DE44F455CB7E74E9A560 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 27BD5F097E7B5BAAEF31769B2C201BA6 /* Foundation.framework in Frameworks */, - F7F92ADDC5123E31219649726E8321F8 /* UIKit.framework in Frameworks */, + 4E3E6EC07A4F261D041BA0C4CA258260 /* CoreGraphics.framework in Frameworks */, + A380ABE3F1AF1CA7A14F9449BDC0B73F /* Foundation.framework in Frameworks */, + 30C07F53D870FC78B292E0E4F91FEE9E /* QuartzCore.framework in Frameworks */, + E3334CC660C4BD5E41C1061B9DC56FF6 /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -302,6 +360,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + E4A2A7E6121AC09E8ACE0C8FEE53A1F6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 2305008B1D46627F9B49FAFF25CD6FE6 /* Foundation.framework in Frameworks */, + A613A3BC72B998F1914EDF4994DD8A12 /* UIKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; F1626ADC3A7EC435D2722B3173355D36 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -313,66 +380,76 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 01510B87CCB5B0D56ACDB986A1ECBFC2 /* StatusAlert */ = { + 04CC267E9A7BDA107E37B245ACDB31A7 /* Frameworks */ = { isa = PBXGroup; children = ( - 3AD0798D238BA2980CC2DE849B7C1CE9 /* StatusAlert.swift */, - 7189AED5D97D2B5DAADDD65365E424BC /* StatusAlertUtils.swift */, - F55AF63A30960D087EF58DFA3EFF13D5 /* UIDevice+Blur.swift */, - BD91A68BD08B58E7058F7E33FAC03536 /* UIDevice+Platform.swift */, - C9C58EA62B221B85C7F627AFD460EFFA /* Support Files */, + 45C4ABEAFCB4FA284808F5DBE887B20D /* Alamofire.framework */, + C283542EF8EEF865485C078FFAAD4FCC /* Result.framework */, + A98624AAFB2B73C576EB4B41F1AA8197 /* iOS */, ); - name = StatusAlert; - path = StatusAlert; + name = Frameworks; sourceTree = ""; }; - 0B5C7C9DEC29CA20DCD3C273CD70A79B /* Alamofire */ = { + 053BFCD0360F267B64837977F51C5BA2 /* Resources */ = { isa = PBXGroup; children = ( - 8F4FC7A87827AE5D69595C8E96E333C4 /* AFError.swift */, - 6971CC9434804FA19AF339E8EAC67903 /* Alamofire.swift */, - 9933F8F0C2327F373DB96CBD9CF5FE80 /* DispatchQueue+Alamofire.swift */, - 695972AC67A0A3A83751D985BAEA7877 /* MultipartFormData.swift */, - B083C244BDBF87F2A610FE414F85CE4D /* NetworkReachabilityManager.swift */, - 711FCD416785CCE9E58692FF9D272D09 /* Notifications.swift */, - CEDFD686274F7A4D466DA6A0CE6A715A /* ParameterEncoding.swift */, - 1E4E9B464796BCD50D5349CD626FB121 /* Request.swift */, - 6CFA6FD91CCF5980C630869D8F179163 /* Response.swift */, - 746201A0470CBCE1AB0A40EEB1F47944 /* ResponseSerialization.swift */, - 7565D4AE04C04525F3D6A862D0116425 /* Result.swift */, - BC0BF35535263907FE94B878D062B54B /* ServerTrustPolicy.swift */, - F9DBC305EDC388A7FCDCA4FD959649A7 /* SessionDelegate.swift */, - 66373CEDBE2C80C70261A44D51E2EE7C /* SessionManager.swift */, - 215E69460404285C2FEA0E9CD156C946 /* TaskDelegate.swift */, - D8444584E0708FE54CD421CB67274B2B /* Timeline.swift */, - 041DFCA15BC44B6F4EEC21B37F591AED /* Validation.swift */, - 56F72EDA4A8DB9A2B9B203355921F70D /* Support Files */, + 9888FB0E0937634EC24AB6032B9AE8CA /* IQKeyboardManager.bundle */, ); - name = Alamofire; - path = Alamofire; + name = Resources; sourceTree = ""; }; - 124E529BFB7D1FF679F91DB8C8450E19 /* iOS */ = { + 149D5D247260431BC1C9D500806BC075 /* Support Files */ = { isa = PBXGroup; children = ( - F2FE98814E15F069042B678A3EE8685C /* Foundation.framework */, - 018A446AF7E1F701B12CBBEBA9469CDC /* UIKit.framework */, + 55104E9F564D5CF7B3292964D9C21FAB /* Result.modulemap */, + 937966A9F3619A1BECC1B0F3B32F897B /* Result.xcconfig */, + 26DE6FA33754885F7D18C7AFB0B58F7C /* Result-dummy.m */, + BDC12AC17B21AD952C228F3F6271CE6C /* Result-Info.plist */, + 98BE80CFBBB51E470B47D8919B0130D5 /* Result-prefix.pch */, + 328A04F05F9289BCF1C7AF8FADD81524 /* Result-umbrella.h */, ); - name = iOS; + name = "Support Files"; + path = "../Target Support Files/Result"; sourceTree = ""; }; - 4A0B7F05E5BD30E372292D9DF0C5D936 /* Support Files */ = { + 2C389E170C292DDA82437CC392D4FE85 /* Support Files */ = { isa = PBXGroup; children = ( - 41CE2641BA73ABFCE074E95753CA6853 /* Result.modulemap */, - 8FAFBAB47BD5449E03EFF699CF40EF41 /* Result.xcconfig */, - E32D8039C364144FF831E6B396D67593 /* Result-dummy.m */, - 341BA3C9801D06C4825B9BF0766C03A6 /* Result-Info.plist */, - 79C05AF5619EAF23242D588EC29C756E /* Result-prefix.pch */, - 51857ED069DA11590B3AF6CA029787C2 /* Result-umbrella.h */, + AECA685D3C6ED973422868AA96662816 /* Alamofire.modulemap */, + 8E25B11161FFF47A917FCCEDFF9EB977 /* Alamofire.xcconfig */, + 96CC6CFAAEF9232FF99261DBA864B65F /* Alamofire-dummy.m */, + A83C6FE78508C4D27EAF3AB6D4155467 /* Alamofire-Info.plist */, + 18E15337DA6A3A5DCC4EE6501981459B /* Alamofire-prefix.pch */, + EB19AC8DA7A93FC9BFCFC76AFC8EF5E6 /* Alamofire-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/Result"; + path = "../Target Support Files/Alamofire"; + sourceTree = ""; + }; + 30FF202C39E678F49625022FFED16737 /* StatusAlert */ = { + isa = PBXGroup; + children = ( + F7786EF96DCE14E5204731F1893CE1A5 /* StatusAlert.swift */, + E20C969B5ACCF7AC28D547C2078332EF /* StatusAlertUtils.swift */, + 296A315F1030E5D22D1E86AEDBA33212 /* UIDevice+Blur.swift */, + E684B69530F5AC628E7BA0796911F7B9 /* UIDevice+Platform.swift */, + 65E224076652D87317E4CBC37346E5EA /* Support Files */, + ); + name = StatusAlert; + path = StatusAlert; + sourceTree = ""; + }; + 34BAAE7963DA4C69A61651A95716D958 /* Result */ = { + isa = PBXGroup; + children = ( + 30FE6299336582DF3F7BC9BA9492A8B1 /* AnyError.swift */, + 97DDE8EFF0D1936B717C36083D879CF3 /* NoError.swift */, + FD9C67F7A723A7B1D92D3EE704F735DB /* Result.swift */, + 036C9BB9BB550214D7E17CE54385E228 /* ResultProtocol.swift */, + 149D5D247260431BC1C9D500806BC075 /* Support Files */, + ); + name = Result; + path = Result; sourceTree = ""; }; 4E62EEA8F485FE09ADA73F5E5D814811 /* Targets Support Files */ = { @@ -385,56 +462,46 @@ name = "Targets Support Files"; sourceTree = ""; }; - 56F72EDA4A8DB9A2B9B203355921F70D /* Support Files */ = { + 65E224076652D87317E4CBC37346E5EA /* Support Files */ = { isa = PBXGroup; children = ( - 52F03B889291C2EBE1F0144FABCFFFB6 /* Alamofire.modulemap */, - 5AE465C48526532EF9AA380B5F26A718 /* Alamofire.xcconfig */, - 02E9CB3DFB8C8D5D17E731A31F2D423E /* Alamofire-dummy.m */, - A065E3B4BC77C42EEAC2B82F95FB5F65 /* Alamofire-Info.plist */, - D5AB81AB335ADC06D8DC47D5C1D8FB95 /* Alamofire-prefix.pch */, - EF5700B4CA96AFF0E89179913827474F /* Alamofire-umbrella.h */, + 4A13C96B31C7821F3E4A5A284662445A /* StatusAlert.modulemap */, + 9F52C185B872CCE7ABC75DFEB89F1C02 /* StatusAlert.xcconfig */, + DD36FB1A741E1074457D7A2382146DEE /* StatusAlert-dummy.m */, + 5813128D7F17576C17CF53BD0B25AA9F /* StatusAlert-Info.plist */, + 8B63A6F4E9E65974D5CFB5EC646E66E3 /* StatusAlert-prefix.pch */, + 98F4F7FBAD28B2ED090E9BB31FEDA8BF /* StatusAlert-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/Alamofire"; - sourceTree = ""; - }; - 5F68DE9E0BFF1037A1E98E88B1183757 /* Pods */ = { - isa = PBXGroup; - children = ( - 0B5C7C9DEC29CA20DCD3C273CD70A79B /* Alamofire */, - D0ADBAC21D269E0CB2919216209CFA26 /* Moya */, - 79C18D0F643DBBFCF46B73AE675E720E /* Result */, - 01510B87CCB5B0D56ACDB986A1ECBFC2 /* StatusAlert */, - ); - name = Pods; + path = "../Target Support Files/StatusAlert"; sourceTree = ""; }; - 61F9E19C85B51BDACAFD176979B8D9E8 /* Products */ = { + 6DDD2673AE05175675C65363A9F748BD /* Support Files */ = { isa = PBXGroup; children = ( - 7567C0996E1A79C4872913A57E36DAEC /* Alamofire.framework */, - 8A939ADC52D61F5D4233D49975569DC2 /* Moya.framework */, - 2B2BBA89A3A36F91AC268B77D109B9CB /* Pods_Santander_Test.framework */, - BB33841FDDFC475D2CF9A2EE4CD248A4 /* Pods_Santander_TestTests.framework */, - E3B560EBC2DC39E67D0C3F614224CB0C /* Pods_Santander_TestUITests.framework */, - 0A5DA517BB440420D8090BCF9736AB37 /* Result.framework */, - 5D0566616612A2B84A146B0E94BE1CCD /* StatusAlert.framework */, + BCC3F270782DA39D5C8269EA39BA00FE /* Moya.modulemap */, + 1B9A46ABB3BFE5994BED32D734D5432C /* Moya.xcconfig */, + 65DE41FA07CAE47B75A7B0ECEA455B45 /* Moya-dummy.m */, + 577F89C1743CC208578DC486E2EB5205 /* Moya-Info.plist */, + BFCAF7529D571A3E1B28CA0E74B2CE9B /* Moya-prefix.pch */, + 3A3A7A69572AE7480428E2E0E461AB44 /* Moya-umbrella.h */, ); - name = Products; + name = "Support Files"; + path = "../Target Support Files/Moya"; sourceTree = ""; }; - 79C18D0F643DBBFCF46B73AE675E720E /* Result */ = { + 7CFEA0AAA25A01DB424295A88CABF907 /* Support Files */ = { isa = PBXGroup; children = ( - 9FF6AD9627E2BF77BCE034BAF1AF6245 /* AnyError.swift */, - 3384A51D237BE9FFE5CC9FD8501267CA /* NoError.swift */, - 403650A016ACB4048C5790E80A71B849 /* Result.swift */, - 2ABF1291D81C64F7EEF0EFD5B780A8EF /* ResultProtocol.swift */, - 4A0B7F05E5BD30E372292D9DF0C5D936 /* Support Files */, + 9DC5BD2CD5EBF56ACC506AF8119FAE80 /* IQKeyboardManagerSwift.modulemap */, + 48E0DA4E62B261616F5CB85432594956 /* IQKeyboardManagerSwift.xcconfig */, + B5556BF140A5F3EBD4F3ED65FDCA8E66 /* IQKeyboardManagerSwift-dummy.m */, + 7B2E52D88228B39B19BFC15CB13A3F70 /* IQKeyboardManagerSwift-Info.plist */, + 37248464644A9B94B38F659CD7868B33 /* IQKeyboardManagerSwift-prefix.pch */, + EBFA20F5DDDD154A8326BD23776A0B0F /* IQKeyboardManagerSwift-umbrella.h */, ); - name = Result; - path = Result; + name = "Support Files"; + path = "../Target Support Files/IQKeyboardManagerSwift"; sourceTree = ""; }; 863C6216E2FC106570AB6ECF1BDDC850 /* Pods-Santander-TestTests */ = { @@ -453,6 +520,32 @@ path = "Target Support Files/Pods-Santander-TestTests"; sourceTree = ""; }; + 86C31A1DF76B5FA4E2A40A866123CC0E /* IQKeyboardManagerSwift */ = { + isa = PBXGroup; + children = ( + 88F91EDCA4BE8027599B63DA2E825ABE /* IQBarButtonItem.swift */, + 085FF4D9FD6B749469B78F086929216E /* IQInvocation.swift */, + 7743099AC812B6D35DF24FCBFCF4537E /* IQKeyboardManager.swift */, + B1B17F3CDC4F8071CA37C06FBE10E5F5 /* IQKeyboardManagerConstants.swift */, + 4A18D45FD115A7DA68A3AAF2F51C2E6B /* IQKeyboardManagerConstantsInternal.swift */, + 2927D5C13102DF85F4C558738DCEDB8E /* IQKeyboardReturnKeyHandler.swift */, + 2F1EFD9B3A6694A4DF2D1A7D0CEAE5BF /* IQNSArray+Sort.swift */, + 87C7B86A27B8EAA7F5FD04A4CFFDB1F2 /* IQPreviousNextView.swift */, + E29419B867A52354795ED7FB236D2F33 /* IQTextView.swift */, + 9F95A72295EBE394B54EE1ACD2D34F96 /* IQTitleBarButtonItem.swift */, + B26509FE31B6FF712867B3C3ABDDE9CF /* IQToolbar.swift */, + FA585978B6EF86FA20AB0138C45A113D /* IQUIScrollView+Additions.swift */, + 89A807D88F6537CFCC7BA4329542521F /* IQUITextFieldView+Additions.swift */, + 633EDE28CFC6671C9B3A32CBE5574D69 /* IQUIView+Hierarchy.swift */, + 0F81284941748F0B4B0BF4AD4CBDA1EA /* IQUIView+IQKeyboardToolbar.swift */, + 47DE8F6C18198698D8D90127F3D79364 /* IQUIViewController+Additions.swift */, + 053BFCD0360F267B64837977F51C5BA2 /* Resources */, + 7CFEA0AAA25A01DB424295A88CABF907 /* Support Files */, + ); + name = IQKeyboardManagerSwift; + path = IQKeyboardManagerSwift; + sourceTree = ""; + }; A9078A16582838D0FA5E20E72F39180F /* Pods-Santander-TestUITests */ = { isa = PBXGroup; children = ( @@ -469,14 +562,15 @@ path = "Target Support Files/Pods-Santander-TestUITests"; sourceTree = ""; }; - B0701A481DADE74D90494DCA1C43CDD2 /* Frameworks */ = { + A98624AAFB2B73C576EB4B41F1AA8197 /* iOS */ = { isa = PBXGroup; children = ( - F26884CBE8F502A41B24162275097927 /* Alamofire.framework */, - 56EC88463798F381C1362F442A5F6344 /* Result.framework */, - 124E529BFB7D1FF679F91DB8C8450E19 /* iOS */, + 1829CB35B6E3E9121C9CF36E8FCDBAE6 /* CoreGraphics.framework */, + DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */, + 86F84942F79C4255F7497FC979196A65 /* QuartzCore.framework */, + EFB6498CD7E9F2FB9A16399EB90D28B7 /* UIKit.framework */, ); - name = Frameworks; + name = iOS; sourceTree = ""; }; BA0EF3892F9082EED2C4A464C1FF099B /* Pods-Santander-Test */ = { @@ -496,79 +590,104 @@ path = "Target Support Files/Pods-Santander-Test"; sourceTree = ""; }; - BFD10AD1BCF76520222E06C289A743F4 /* Support Files */ = { + BFD36BCD147363C1B0766397B8031EE7 /* Pods */ = { isa = PBXGroup; children = ( - FE773D1CF9A3802AEB73F498A87F8B3A /* Moya.modulemap */, - AAC2ADF83F2ECE52A20435D7E068C12A /* Moya.xcconfig */, - E985D4200744BE935D54EA3E805D95B0 /* Moya-dummy.m */, - C31A0AB95333E2A936CA490831980FDE /* Moya-Info.plist */, - DF992F392B5A485B5865530E09BFF17C /* Moya-prefix.pch */, - 0F2656EE812F18B6B610A2568FCC4561 /* Moya-umbrella.h */, + EF916F15D87BA874557B8A1408D3C2F0 /* Alamofire */, + 86C31A1DF76B5FA4E2A40A866123CC0E /* IQKeyboardManagerSwift */, + FDEAC8E60A8FB2B371155A8F6830A9D9 /* Moya */, + 34BAAE7963DA4C69A61651A95716D958 /* Result */, + 30FF202C39E678F49625022FFED16737 /* StatusAlert */, ); - name = "Support Files"; - path = "../Target Support Files/Moya"; + name = Pods; sourceTree = ""; }; - C36EA2E169A361B98F151E6B9D24FB35 /* Core */ = { + CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( - FB251E41FD23ED1172249CE782C0E93E /* AccessTokenPlugin.swift */, - 2E22C7F50B502391ECADE49470259B11 /* AnyEncodable.swift */, - 5445F781C7B97D42CF31E6F5E776C1CB /* Cancellable.swift */, - 670D3F3E1C0779928EC137618EFDF484 /* CredentialsPlugin.swift */, - DCE8C03CEDF209A430926EBD3C5308C1 /* Endpoint.swift */, - E05209C726F688BF89F6CC4697B76B37 /* Image.swift */, - DF1E6DA75AC4524B84DD818556E56BA3 /* Moya+Alamofire.swift */, - B63B38C4D1FA05B1CA2FF1D89A95AC5C /* MoyaError.swift */, - 1A1917AE113EF5496A60FE2DA197E28D /* MoyaProvider.swift */, - 03798F0FA18F0BBEC61230CC457FAF49 /* MoyaProvider+Defaults.swift */, - B2405127CFC10844C2214102CD81A71A /* MoyaProvider+Internal.swift */, - 9E6D7D02F4BC3F8DAB4CEDDD1FF13A7C /* MultipartFormData.swift */, - 31387928AB135818364761E0A8732638 /* MultiTarget.swift */, - 8E44758592C3E3423268131941D91178 /* NetworkActivityPlugin.swift */, - F94C6D18B9F24B9EC996CDF2096FB755 /* NetworkLoggerPlugin.swift */, - D42F1ADC85D9FE06E135C5A4A4712179 /* Plugin.swift */, - C59D060A0AC9BFD85C57BEDE9E41535B /* Response.swift */, - C0091D5AC8576E0F57446F173B73A7CE /* TargetType.swift */, - 6A705AAAF2813072CE980B9A231599B5 /* Task.swift */, - C1A0C32E8AACAC7037EAD5CEE05FBAB9 /* URL+Moya.swift */, - 98FD95FBAD88ACEBEAFF8FC99888D010 /* URLRequest+Encoding.swift */, - 6E72243528290D9091E0F2782ACB54AA /* ValidationType.swift */, + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + 04CC267E9A7BDA107E37B245ACDB31A7 /* Frameworks */, + BFD36BCD147363C1B0766397B8031EE7 /* Pods */, + DD9BF8EAEAA8BC7488B0707BAF97D324 /* Products */, + 4E62EEA8F485FE09ADA73F5E5D814811 /* Targets Support Files */, + ); + sourceTree = ""; + }; + D47280E7FC22B2F97BF6218A6B281FD8 /* Core */ = { + isa = PBXGroup; + children = ( + 75F7F2C851C3617E1D17A463E7618885 /* AccessTokenPlugin.swift */, + 8DA0AAD9E0B4F4EA588B48D4CC739263 /* AnyEncodable.swift */, + 056C7459B361B149CA51708A85253EE3 /* Cancellable.swift */, + 3D002E8340BBE5C1616ECCA13C725EC1 /* CredentialsPlugin.swift */, + 8D1FC303B1005EFF099082C9DEEDC065 /* Endpoint.swift */, + 719F534FF88E65EA1374FB93CA956CD7 /* Image.swift */, + C3222A2F3D223C0E9BFC0434EDF1D436 /* Moya+Alamofire.swift */, + 01D9799349EC8482A0ECE9B147F2490D /* MoyaError.swift */, + DD93652CEA85021627EAF26A035F40B5 /* MoyaProvider.swift */, + D06B9F58D5667FE4E189AB259DAAD2C4 /* MoyaProvider+Defaults.swift */, + 4717EBE7E99D0E15A9A655B784B25DC0 /* MoyaProvider+Internal.swift */, + F4293278E9B40CE3E34D1390D17A6BD4 /* MultipartFormData.swift */, + 4BFA77DDD304D4813A042BD0F715AD28 /* MultiTarget.swift */, + 80961A91C2B8DDC01EC9AECCAC0EA4FF /* NetworkActivityPlugin.swift */, + B8776B5DF29F8D63EE757702169F8426 /* NetworkLoggerPlugin.swift */, + 728381B0C957F32C7C5090A61FAEA5CA /* Plugin.swift */, + B6F399CF85DFF7FA61BB6CB811FAD5BA /* Response.swift */, + 43B255A8B71C5B85363E9624F9CA0368 /* TargetType.swift */, + 94F6676BE91C9388F6A57252CED9B75E /* Task.swift */, + 6BB22612F45F951AB3A4BEF92939CBC2 /* URL+Moya.swift */, + 74B9158D8A709B402F3747512D251BBC /* URLRequest+Encoding.swift */, + CC81268C9C29F16A594F53447D70D13B /* ValidationType.swift */, ); name = Core; sourceTree = ""; }; - C9C58EA62B221B85C7F627AFD460EFFA /* Support Files */ = { + DD9BF8EAEAA8BC7488B0707BAF97D324 /* Products */ = { isa = PBXGroup; children = ( - B360F7406023D90A2E620DD58D48EE8B /* StatusAlert.modulemap */, - 8F70CF046CF3D592CE89C10124AB457B /* StatusAlert.xcconfig */, - ED623F2AED96E8DF5C80D6AA1AB59A06 /* StatusAlert-dummy.m */, - 5ECC735BCFE0C65F6F2FDB25B47CA298 /* StatusAlert-Info.plist */, - 98DD7122F5F8136968514F2B2147C2E6 /* StatusAlert-prefix.pch */, - 06684328EA211B5D771E7AB5A841C507 /* StatusAlert-umbrella.h */, + 1F000A497FCACF240584ABE5D0F82CB9 /* Alamofire.framework */, + CB4E5F7F9A3FA15DB2520CB008B6FAC4 /* IQKeyboardManagerSwift.framework */, + 08BEEA538E1F71DAA5790616C8943AF6 /* Moya.framework */, + AFE480D3EB5A010258DDAC7FBEF966E4 /* Pods_Santander_Test.framework */, + E735A4A25FD892AEFF9C851F534D9A3A /* Pods_Santander_TestTests.framework */, + 08069C0730E81199B1847B7820188F18 /* Pods_Santander_TestUITests.framework */, + 4B9E207652A8E03550292AD25FD2362D /* Result.framework */, + 15DC749833EFE285A38784DC6194D142 /* StatusAlert.framework */, ); - name = "Support Files"; - path = "../Target Support Files/StatusAlert"; + name = Products; sourceTree = ""; }; - CF1408CF629C7361332E53B88F7BD30C = { + EF916F15D87BA874557B8A1408D3C2F0 /* Alamofire */ = { isa = PBXGroup; children = ( - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, - B0701A481DADE74D90494DCA1C43CDD2 /* Frameworks */, - 5F68DE9E0BFF1037A1E98E88B1183757 /* Pods */, - 61F9E19C85B51BDACAFD176979B8D9E8 /* Products */, - 4E62EEA8F485FE09ADA73F5E5D814811 /* Targets Support Files */, + 5A8A73AC789E75D3AFE3572EEF6F8A59 /* AFError.swift */, + 347486DBCB93D186BAB6C9AD930ED55A /* Alamofire.swift */, + 47B3494D6695B6A07C957BDDC2F3EFAF /* DispatchQueue+Alamofire.swift */, + 14474910351E268CA497EE13395B79B6 /* MultipartFormData.swift */, + EA502CFB7AC3936E52CC74C5F5903259 /* NetworkReachabilityManager.swift */, + 43714182B7BCA5485EBDE4CF6A9ABDD5 /* Notifications.swift */, + 43B3D46C5537399369C6EAC56AC200FE /* ParameterEncoding.swift */, + F637DAED777FC65DFA84AD4F763139D2 /* Request.swift */, + 4440E7D93688311D478621074DF71345 /* Response.swift */, + C57EF9785B9237C31BD56ED973E54549 /* ResponseSerialization.swift */, + D66130D7B981E7045B09E24E16B2EB60 /* Result.swift */, + DF2C2F8414E8156C7A452AE20C93161F /* ServerTrustPolicy.swift */, + A7BC42EA73705FAAD6D57EFF04E9D763 /* SessionDelegate.swift */, + DF5C70165854A846C790FC0BF9CEF8BB /* SessionManager.swift */, + FE54289085F8E76D867635DEA5F18BAB /* TaskDelegate.swift */, + 3BE933A310F002306D961318BA943C73 /* Timeline.swift */, + 0B3C9D1ABA430C45075F9D583D67C0AD /* Validation.swift */, + 2C389E170C292DDA82437CC392D4FE85 /* Support Files */, ); + name = Alamofire; + path = Alamofire; sourceTree = ""; }; - D0ADBAC21D269E0CB2919216209CFA26 /* Moya */ = { + FDEAC8E60A8FB2B371155A8F6830A9D9 /* Moya */ = { isa = PBXGroup; children = ( - C36EA2E169A361B98F151E6B9D24FB35 /* Core */, - BFD10AD1BCF76520222E06C289A743F4 /* Support Files */, + D47280E7FC22B2F97BF6218A6B281FD8 /* Core */, + 6DDD2673AE05175675C65363A9F748BD /* Support Files */, ); name = Moya; path = Moya; @@ -593,19 +712,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 544E5D6D8E975718CA8C7CD740741BED /* Headers */ = { + 2718218073D2054E5B9FB63A7122AD7B /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 38D635EF452D8D233B0CB7FD5ECD152D /* Pods-Santander-Test-umbrella.h in Headers */, + 104D74A8C8DE606C9D0ADDAB052B1543 /* StatusAlert-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 77A1ABB989AAC2ABE969E96C663E70B9 /* Headers */ = { + 5FD2C029FC627D78FBEBD0C3829ACA56 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 780E9C2B021FB29632D8D1933AECD020 /* StatusAlert-umbrella.h in Headers */, + 5677C54BF14ABA45675F2DEB98AFD0D1 /* IQKeyboardManagerSwift-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -625,6 +744,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + BACB2463924AD897F055B85ED2E8C37E /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + CB3084173AD22105B6105A2D17F7C776 /* Pods-Santander-Test-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; D7A6588CEA919559E5AE0CF2E072388A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -636,6 +763,24 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + 15BF64AFACBC5F40C3D5C6BAB72CDE26 /* StatusAlert */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0B2684BF23C370E7E4EF3D5C9D958230 /* Build configuration list for PBXNativeTarget "StatusAlert" */; + buildPhases = ( + 2718218073D2054E5B9FB63A7122AD7B /* Headers */, + 9305F9FE2C8702BAA76B4886E0FE52C8 /* Sources */, + E4A2A7E6121AC09E8ACE0C8FEE53A1F6 /* Frameworks */, + 9C29B9DB3E2AB04FD6DC48B1D96BA855 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = StatusAlert; + productName = StatusAlert; + productReference = 15DC749833EFE285A38784DC6194D142 /* StatusAlert.framework */; + productType = "com.apple.product-type.framework"; + }; 3383968E74B5371B20BB519B170DC7FD /* Alamofire */ = { isa = PBXNativeTarget; buildConfigurationList = E87124444A44B7DB55208E7FEC21D331 /* Build configuration list for PBXNativeTarget "Alamofire" */; @@ -651,7 +796,7 @@ ); name = Alamofire; productName = Alamofire; - productReference = 7567C0996E1A79C4872913A57E36DAEC /* Alamofire.framework */; + productReference = 1F000A497FCACF240584ABE5D0F82CB9 /* Alamofire.framework */; productType = "com.apple.product-type.framework"; }; 4B0183450F95394DC0C49E326A20B42D /* Result */ = { @@ -669,29 +814,30 @@ ); name = Result; productName = Result; - productReference = 0A5DA517BB440420D8090BCF9736AB37 /* Result.framework */; + productReference = 4B9E207652A8E03550292AD25FD2362D /* Result.framework */; productType = "com.apple.product-type.framework"; }; - AF9E2E73F71D7D9C2DA38E0922DEFA17 /* Pods-Santander-Test */ = { + 88B10C4857809B3E5C3335BCA87F5FC2 /* Pods-Santander-Test */ = { isa = PBXNativeTarget; - buildConfigurationList = 2D94F490FCFD4DD015FAAE1EFCB84967 /* Build configuration list for PBXNativeTarget "Pods-Santander-Test" */; + buildConfigurationList = D712AA5D501F5D7B3C284C6A9D7A66FC /* Build configuration list for PBXNativeTarget "Pods-Santander-Test" */; buildPhases = ( - 544E5D6D8E975718CA8C7CD740741BED /* Headers */, - F34B5DAE00F45D7A4D916F0DA646C93D /* Sources */, - 53820A82DC9706703735416AB2D5D06E /* Frameworks */, - 9C981D1265EB3E480936C8E48836A4C6 /* Resources */, + BACB2463924AD897F055B85ED2E8C37E /* Headers */, + B23610BA7A731FFDBA62C608439E9A51 /* Sources */, + 17DCD29D0B9242D128900FBEA4698769 /* Frameworks */, + F431F75A70A253CB6EA64BDAA1E85C91 /* Resources */, ); buildRules = ( ); dependencies = ( - 2467FC5A2BC9C7055B5D99734C16C903 /* PBXTargetDependency */, - 96E9789CB5D1EB88B8FA165B060F6BEC /* PBXTargetDependency */, - B2161C4E04044ECF29911B49AE3D80F0 /* PBXTargetDependency */, - 5240CE7C46D7044D491CA5A7DF8E1F66 /* PBXTargetDependency */, + 7CFAC8F2CA63627DD227A681F53C4159 /* PBXTargetDependency */, + 3767E41B894CFE6A89C52B46FC1A38F6 /* PBXTargetDependency */, + A2227C64602335FEFEEBB9CE125E28D3 /* PBXTargetDependency */, + 8B7127F7012DC5018594C7987A4A6EBD /* PBXTargetDependency */, + D53B2CB4B7DB1953A7AE6F4E82C4AD7B /* PBXTargetDependency */, ); name = "Pods-Santander-Test"; productName = "Pods-Santander-Test"; - productReference = 2B2BBA89A3A36F91AC268B77D109B9CB /* Pods_Santander_Test.framework */; + productReference = AFE480D3EB5A010258DDAC7FBEF966E4 /* Pods_Santander_Test.framework */; productType = "com.apple.product-type.framework"; }; BAAB01D1BA82ABAE2B535579B77ED0CB /* Moya */ = { @@ -711,7 +857,7 @@ ); name = Moya; productName = Moya; - productReference = 8A939ADC52D61F5D4233D49975569DC2 /* Moya.framework */; + productReference = 08BEEA538E1F71DAA5790616C8943AF6 /* Moya.framework */; productType = "com.apple.product-type.framework"; }; C0E89653A2AC6FA0A38278FEF9AF42FC /* Pods-Santander-TestUITests */ = { @@ -730,7 +876,7 @@ ); name = "Pods-Santander-TestUITests"; productName = "Pods-Santander-TestUITests"; - productReference = E3B560EBC2DC39E67D0C3F614224CB0C /* Pods_Santander_TestUITests.framework */; + productReference = 08069C0730E81199B1847B7820188F18 /* Pods_Santander_TestUITests.framework */; productType = "com.apple.product-type.framework"; }; C27DC25A308B276373505823128CD197 /* Pods-Santander-TestTests */ = { @@ -749,25 +895,25 @@ ); name = "Pods-Santander-TestTests"; productName = "Pods-Santander-TestTests"; - productReference = BB33841FDDFC475D2CF9A2EE4CD248A4 /* Pods_Santander_TestTests.framework */; + productReference = E735A4A25FD892AEFF9C851F534D9A3A /* Pods_Santander_TestTests.framework */; productType = "com.apple.product-type.framework"; }; - E7825F7E90CAC8AA4AC3F185016B5350 /* StatusAlert */ = { + EFF87187B46551C36797F2B899C54212 /* IQKeyboardManagerSwift */ = { isa = PBXNativeTarget; - buildConfigurationList = 0D92CF3BE4114B059E40B7B1E2683F81 /* Build configuration list for PBXNativeTarget "StatusAlert" */; + buildConfigurationList = 3B91B77FBB13EFD33FB1AE6F88ABA7C5 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift" */; buildPhases = ( - 77A1ABB989AAC2ABE969E96C663E70B9 /* Headers */, - 971DC12F69A7D8560E9A9E00EEF58C01 /* Sources */, - 8A64A1880992A56FEA7132DC7AD842FC /* Frameworks */, - 46E5D1D5E991B449435674972C860E9F /* Resources */, + 5FD2C029FC627D78FBEBD0C3829ACA56 /* Headers */, + 50CEEDE322708ABF7722F6D79CCF256B /* Sources */, + B886D41EF763DE44F455CB7E74E9A560 /* Frameworks */, + DC94709994DB7B9EF675DAE0DB5045E8 /* Resources */, ); buildRules = ( ); dependencies = ( ); - name = StatusAlert; - productName = StatusAlert; - productReference = 5D0566616612A2B84A146B0E94BE1CCD /* StatusAlert.framework */; + name = IQKeyboardManagerSwift; + productName = IQKeyboardManagerSwift; + productReference = CB4E5F7F9A3FA15DB2520CB008B6FAC4 /* IQKeyboardManagerSwift.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -787,17 +933,18 @@ en, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = 61F9E19C85B51BDACAFD176979B8D9E8 /* Products */; + productRefGroup = DD9BF8EAEAA8BC7488B0707BAF97D324 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 3383968E74B5371B20BB519B170DC7FD /* Alamofire */, + EFF87187B46551C36797F2B899C54212 /* IQKeyboardManagerSwift */, BAAB01D1BA82ABAE2B535579B77ED0CB /* Moya */, - AF9E2E73F71D7D9C2DA38E0922DEFA17 /* Pods-Santander-Test */, + 88B10C4857809B3E5C3335BCA87F5FC2 /* Pods-Santander-Test */, C27DC25A308B276373505823128CD197 /* Pods-Santander-TestTests */, C0E89653A2AC6FA0A38278FEF9AF42FC /* Pods-Santander-TestUITests */, 4B0183450F95394DC0C49E326A20B42D /* Result */, - E7825F7E90CAC8AA4AC3F185016B5350 /* StatusAlert */, + 15BF64AFACBC5F40C3D5C6BAB72CDE26 /* StatusAlert */, ); }; /* End PBXProject section */ @@ -817,35 +964,43 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 46E5D1D5E991B449435674972C860E9F /* Resources */ = { + 8A69BC4AB82D9DB217AD832599112A02 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 8A69BC4AB82D9DB217AD832599112A02 /* Resources */ = { + 9C29B9DB3E2AB04FD6DC48B1D96BA855 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 9C981D1265EB3E480936C8E48836A4C6 /* Resources */ = { + D2F8DBB6DF3B60A84C0D1854859C66CF /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D2F8DBB6DF3B60A84C0D1854859C66CF /* Resources */ = { + D5C5D83CFC472CA90759510466920ACB /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D5C5D83CFC472CA90759510466920ACB /* Resources */ = { + DC94709994DB7B9EF675DAE0DB5045E8 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B178B38FCD7F99B07422484FC7FD6861 /* IQKeyboardManager.bundle in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F431F75A70A253CB6EA64BDAA1E85C91 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -863,6 +1018,30 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 50CEEDE322708ABF7722F6D79CCF256B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B2A4A7D1BD7C4D59EA0FF0A49163A387 /* IQBarButtonItem.swift in Sources */, + B888C49BC46C9A62CBF03A8FAD7126F1 /* IQInvocation.swift in Sources */, + 633A43974DB81C2CCB1A2C3A7B1BFB37 /* IQKeyboardManager.swift in Sources */, + DD420F096096C518F8E6B44583BF6521 /* IQKeyboardManagerConstants.swift in Sources */, + D8F4B5841E455F5170B1C2FC30863B05 /* IQKeyboardManagerConstantsInternal.swift in Sources */, + 92E9BD908B71CFA1C6EDA2FA86BF1635 /* IQKeyboardManagerSwift-dummy.m in Sources */, + BA61F495C0E45AA2A88D21D51575FF02 /* IQKeyboardReturnKeyHandler.swift in Sources */, + 986EF56798DE2C7C65737AD9334E517D /* IQNSArray+Sort.swift in Sources */, + F0A9F7366B446EDAE4716768BCCADE6C /* IQPreviousNextView.swift in Sources */, + 36DD0B1007BF3C7BFE352704D5C415F7 /* IQTextView.swift in Sources */, + D3A177F9BCAD7042B46E0A36CEDDBF8E /* IQTitleBarButtonItem.swift in Sources */, + D7D49BAE6EAAD5EC2DAF370BCDE783A2 /* IQToolbar.swift in Sources */, + DDAC963022C8D96EBAAD2284780E0276 /* IQUIScrollView+Additions.swift in Sources */, + 4467D1C8AABFA6FC321AC7CD6F327B48 /* IQUITextFieldView+Additions.swift in Sources */, + 4A3294F2FCFF96D15DA6FD2D5D839788 /* IQUIView+Hierarchy.swift in Sources */, + 02FB225950EEA73C12B14A3D74A2096E /* IQUIView+IQKeyboardToolbar.swift in Sources */, + F852C0100AB6D9D2CE3E28FCA487C67E /* IQUIViewController+Additions.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 83F0B699A09857193A6E75CBAD21221D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -905,15 +1084,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 971DC12F69A7D8560E9A9E00EEF58C01 /* Sources */ = { + 9305F9FE2C8702BAA76B4886E0FE52C8 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 10C05319610A79A154A5E0B27D29FB52 /* StatusAlert-dummy.m in Sources */, - FA03759417E17EE209F5153FB97A754E /* StatusAlert.swift in Sources */, - EFFAD40E8E19B64A6701310100E72542 /* StatusAlertUtils.swift in Sources */, - 3B5F45D58C19A4A296857187DA92B264 /* UIDevice+Blur.swift in Sources */, - 2E3B9CD1ECA93DF8CD00F582E747DFB1 /* UIDevice+Platform.swift in Sources */, + AAB81C0BBA1DBCA92F322972C43768C8 /* StatusAlert-dummy.m in Sources */, + C0D2A82B14F8FE402E78EBDBCC0CBE18 /* StatusAlert.swift in Sources */, + 1F69C755AF5965693C7298A05060A757 /* StatusAlertUtils.swift in Sources */, + F33FDC4826B0B3D3951EFAAD42CB521D /* UIDevice+Blur.swift in Sources */, + 9D0866BCC26350F05BD74C04F200C10A /* UIDevice+Platform.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -942,19 +1121,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - C4ADDC2FC642C7EE9718A102043F14EC /* Sources */ = { + B23610BA7A731FFDBA62C608439E9A51 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - E15EA05765812FBDA4F4428F7B6BBF6D /* Pods-Santander-TestUITests-dummy.m in Sources */, + 5C004FBC6C6DB7A23CBBCF9C28770277 /* Pods-Santander-Test-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - F34B5DAE00F45D7A4D916F0DA646C93D /* Sources */ = { + C4ADDC2FC642C7EE9718A102043F14EC /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F2F9E70CF14ECF15A479250991A518DC /* Pods-Santander-Test-dummy.m in Sources */, + E15EA05765812FBDA4F4428F7B6BBF6D /* Pods-Santander-TestUITests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -967,42 +1146,48 @@ target = 3383968E74B5371B20BB519B170DC7FD /* Alamofire */; targetProxy = 89B7C1F59BE279B9AC2C2AEA832F837B /* PBXContainerItemProxy */; }; - 2467FC5A2BC9C7055B5D99734C16C903 /* PBXTargetDependency */ = { + 3767E41B894CFE6A89C52B46FC1A38F6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Alamofire; - target = 3383968E74B5371B20BB519B170DC7FD /* Alamofire */; - targetProxy = 15FF1ADD8B83D122003AE92A6C1BEFA5 /* PBXContainerItemProxy */; + name = IQKeyboardManagerSwift; + target = EFF87187B46551C36797F2B899C54212 /* IQKeyboardManagerSwift */; + targetProxy = BD8DBB1BACE773F5B058FA824BBE6DB9 /* PBXContainerItemProxy */; }; 42DD3FD355AAB38C566F0BC087083F3F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "Pods-Santander-Test"; - target = AF9E2E73F71D7D9C2DA38E0922DEFA17 /* Pods-Santander-Test */; + target = 88B10C4857809B3E5C3335BCA87F5FC2 /* Pods-Santander-Test */; targetProxy = 969DCCA076A9B9D70065EA7CB5DB6A86 /* PBXContainerItemProxy */; }; - 5240CE7C46D7044D491CA5A7DF8E1F66 /* PBXTargetDependency */ = { + 7CFAC8F2CA63627DD227A681F53C4159 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = StatusAlert; - target = E7825F7E90CAC8AA4AC3F185016B5350 /* StatusAlert */; - targetProxy = E8D8E0442913BC3BFF8DB6BDA25462DE /* PBXContainerItemProxy */; - }; - 96E9789CB5D1EB88B8FA165B060F6BEC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Moya; - target = BAAB01D1BA82ABAE2B535579B77ED0CB /* Moya */; - targetProxy = 3CE3AC40ED75ECFA3839320C0C1C8AB3 /* PBXContainerItemProxy */; + name = Alamofire; + target = 3383968E74B5371B20BB519B170DC7FD /* Alamofire */; + targetProxy = 739B33F73C327D7438616B072434C417 /* PBXContainerItemProxy */; }; - B2161C4E04044ECF29911B49AE3D80F0 /* PBXTargetDependency */ = { + 8B7127F7012DC5018594C7987A4A6EBD /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Result; target = 4B0183450F95394DC0C49E326A20B42D /* Result */; - targetProxy = D9479B65D45E6B1213C3ABED87FB5B34 /* PBXContainerItemProxy */; + targetProxy = 5E1A36908C47574A723FAD56990DAFB4 /* PBXContainerItemProxy */; + }; + A2227C64602335FEFEEBB9CE125E28D3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Moya; + target = BAAB01D1BA82ABAE2B535579B77ED0CB /* Moya */; + targetProxy = 7C4B286844A189385E91FB5326F61F7F /* PBXContainerItemProxy */; }; BF10BB821AEF1A2F5B1486B70CCE5CDD /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "Pods-Santander-Test"; - target = AF9E2E73F71D7D9C2DA38E0922DEFA17 /* Pods-Santander-Test */; + target = 88B10C4857809B3E5C3335BCA87F5FC2 /* Pods-Santander-Test */; targetProxy = BE2FE96C842D970D743B817C3C29C800 /* PBXContainerItemProxy */; }; + D53B2CB4B7DB1953A7AE6F4E82C4AD7B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = StatusAlert; + target = 15BF64AFACBC5F40C3D5C6BAB72CDE26 /* StatusAlert */; + targetProxy = 789694E6A5EA5C5F4692301575E3CD2E /* PBXContainerItemProxy */; + }; E88EF6EBC52E2364458D88C21074D8D1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Result; @@ -1014,7 +1199,7 @@ /* Begin XCBuildConfiguration section */ 0FB9D4D9E1E618B6D43E20521441EB25 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5AE465C48526532EF9AA380B5F26A718 /* Alamofire.xcconfig */; + baseConfigurationReference = 8E25B11161FFF47A917FCCEDFF9EB977 /* Alamofire.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1048,9 +1233,9 @@ }; name = Release; }; - 10B596E58618494E0D100BF6C82CD2BD /* Debug */ = { + 16419DA1024545FD12B5A373477D6581 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8F70CF046CF3D592CE89C10124AB457B /* StatusAlert.xcconfig */; + baseConfigurationReference = 8E25B11161FFF47A917FCCEDFF9EB977 /* Alamofire.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1061,18 +1246,18 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/StatusAlert/StatusAlert-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/StatusAlert/StatusAlert-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Alamofire/Alamofire-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Alamofire/Alamofire-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/StatusAlert/StatusAlert.modulemap"; - PRODUCT_MODULE_NAME = StatusAlert; - PRODUCT_NAME = StatusAlert; + MODULEMAP_FILE = "Target Support Files/Alamofire/Alamofire.modulemap"; + PRODUCT_MODULE_NAME = Alamofire; + PRODUCT_NAME = Alamofire; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -1083,10 +1268,12 @@ }; name = Debug; }; - 16419DA1024545FD12B5A373477D6581 /* Debug */ = { + 238DA9E4AC60B157201D424347BC6155 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5AE465C48526532EF9AA380B5F26A718 /* Alamofire.xcconfig */; + baseConfigurationReference = 1112BA5594638444A8463D9E6BD25F8C /* Pods-Santander-Test.debug.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1096,22 +1283,23 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Alamofire/Alamofire-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Alamofire/Alamofire-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/Alamofire/Alamofire.modulemap"; - PRODUCT_MODULE_NAME = Alamofire; - PRODUCT_NAME = Alamofire; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -1157,12 +1345,10 @@ }; name = Release; }; - 38BF82D3D7AE0F83C675497CC69FEA8B /* Release */ = { + 3E485B577D646088BB68D29D2662F8BF /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 500A039A12C1D4FC4DD1BA43A9523E91 /* Pods-Santander-Test.release.xcconfig */; + baseConfigurationReference = 48E0DA4E62B261616F5CB85432594956 /* IQKeyboardManagerSwift.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1172,29 +1358,27 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.1; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap"; + PRODUCT_MODULE_NAME = IQKeyboardManagerSwift; + PRODUCT_NAME = IQKeyboardManagerSwift; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; 3E7E7BED862F6CC840946052B78589E4 /* Debug */ = { isa = XCBuildConfiguration; @@ -1234,9 +1418,9 @@ }; name = Debug; }; - 6C1A5B8955D03EDCFC5F5853168E6D3B /* Debug */ = { + 53933C54AC67B5A0E6E6F40B10E05C80 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8FAFBAB47BD5449E03EFF699CF40EF41 /* Result.xcconfig */; + baseConfigurationReference = 9F52C185B872CCE7ABC75DFEB89F1C02 /* StatusAlert.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1247,18 +1431,18 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Result/Result-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Result/Result-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/StatusAlert/StatusAlert-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/StatusAlert/StatusAlert-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/Result/Result.modulemap"; - PRODUCT_MODULE_NAME = Result; - PRODUCT_NAME = Result; + MODULEMAP_FILE = "Target Support Files/StatusAlert/StatusAlert.modulemap"; + PRODUCT_MODULE_NAME = StatusAlert; + PRODUCT_NAME = StatusAlert; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; @@ -1269,12 +1453,10 @@ }; name = Debug; }; - 74D317F1EF69F2113B155C077B84BBEE /* Release */ = { + 6C1A5B8955D03EDCFC5F5853168E6D3B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7A8D526CFB9CE5AE19261B6D3A1AA350 /* Pods-Santander-TestUITests.release.xcconfig */; + baseConfigurationReference = 937966A9F3619A1BECC1B0F3B32F897B /* Result.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1284,34 +1466,34 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Result/Result-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Result/Result-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.1; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/Result/Result.modulemap"; + PRODUCT_MODULE_NAME = Result; + PRODUCT_NAME = Result; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; - 795910E5C8437F0AEF5613895692E4E6 /* Release */ = { + 74D317F1EF69F2113B155C077B84BBEE /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8F70CF046CF3D592CE89C10124AB457B /* StatusAlert.xcconfig */; + baseConfigurationReference = 7A8D526CFB9CE5AE19261B6D3A1AA350 /* Pods-Santander-TestUITests.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1321,22 +1503,23 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/StatusAlert/StatusAlert-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/StatusAlert/StatusAlert-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/StatusAlert/StatusAlert.modulemap"; - PRODUCT_MODULE_NAME = StatusAlert; - PRODUCT_NAME = StatusAlert; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -1384,7 +1567,7 @@ }; 83573944FBFCC88348188CE22B707DAC /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AAC2ADF83F2ECE52A20435D7E068C12A /* Moya.xcconfig */; + baseConfigurationReference = 1B9A46ABB3BFE5994BED32D734D5432C /* Moya.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1477,12 +1660,10 @@ }; name = Release; }; - B6A60C63D8A7F25286CDDF8CF79B1410 /* Debug */ = { + B4F7E217DC8509700B9E6CBA20DA233D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1112BA5594638444A8463D9E6BD25F8C /* Pods-Santander-Test.debug.xcconfig */; + baseConfigurationReference = 48E0DA4E62B261616F5CB85432594956 /* IQKeyboardManagerSwift.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1492,28 +1673,28 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.1; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap"; + PRODUCT_MODULE_NAME = IQKeyboardManagerSwift; + PRODUCT_NAME = IQKeyboardManagerSwift; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; C1391485F05B41BD35738A433056B7FA /* Debug */ = { isa = XCBuildConfiguration; @@ -1581,7 +1762,7 @@ }; D383535440703B0108BB82C0AD47665A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8FAFBAB47BD5449E03EFF699CF40EF41 /* Result.xcconfig */; + baseConfigurationReference = 937966A9F3619A1BECC1B0F3B32F897B /* Result.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1617,7 +1798,7 @@ }; DBC53AACE64A36F9A22795C6E178A55E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = AAC2ADF83F2ECE52A20435D7E068C12A /* Moya.xcconfig */; + baseConfigurationReference = 1B9A46ABB3BFE5994BED32D734D5432C /* Moya.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1651,23 +1832,98 @@ }; name = Release; }; + E3B8394D7CA07A299356D7868875A40D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9F52C185B872CCE7ABC75DFEB89F1C02 /* StatusAlert.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/StatusAlert/StatusAlert-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/StatusAlert/StatusAlert-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/StatusAlert/StatusAlert.modulemap"; + PRODUCT_MODULE_NAME = StatusAlert; + PRODUCT_NAME = StatusAlert; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + E7ADC585BA6E413D7DF961B1529A915F /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 500A039A12C1D4FC4DD1BA43A9523E91 /* Pods-Santander-Test.release.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 0D92CF3BE4114B059E40B7B1E2683F81 /* Build configuration list for PBXNativeTarget "StatusAlert" */ = { + 0B2684BF23C370E7E4EF3D5C9D958230 /* Build configuration list for PBXNativeTarget "StatusAlert" */ = { isa = XCConfigurationList; buildConfigurations = ( - 10B596E58618494E0D100BF6C82CD2BD /* Debug */, - 795910E5C8437F0AEF5613895692E4E6 /* Release */, + 53933C54AC67B5A0E6E6F40B10E05C80 /* Debug */, + E3B8394D7CA07A299356D7868875A40D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2D94F490FCFD4DD015FAAE1EFCB84967 /* Build configuration list for PBXNativeTarget "Pods-Santander-Test" */ = { + 3B91B77FBB13EFD33FB1AE6F88ABA7C5 /* Build configuration list for PBXNativeTarget "IQKeyboardManagerSwift" */ = { isa = XCConfigurationList; buildConfigurations = ( - B6A60C63D8A7F25286CDDF8CF79B1410 /* Debug */, - 38BF82D3D7AE0F83C675497CC69FEA8B /* Release */, + 3E485B577D646088BB68D29D2662F8BF /* Debug */, + B4F7E217DC8509700B9E6CBA20DA233D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1717,6 +1973,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + D712AA5D501F5D7B3C284C6A9D7A66FC /* Build configuration list for PBXNativeTarget "Pods-Santander-Test" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 238DA9E4AC60B157201D424347BC6155 /* Debug */, + E7ADC585BA6E413D7DF961B1529A915F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; E87124444A44B7DB55208E7FEC21D331 /* Build configuration list for PBXNativeTarget "Alamofire" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/IQKeyboardManagerSwift.xcscheme b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/IQKeyboardManagerSwift.xcscheme new file mode 100644 index 00000000..3749ecf9 --- /dev/null +++ b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/IQKeyboardManagerSwift.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Pods-Santander-Test.xcscheme b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Pods-Santander-Test.xcscheme index 8eebfa4b..ab875475 100644 --- a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Pods-Santander-Test.xcscheme +++ b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Pods-Santander-Test.xcscheme @@ -14,7 +14,7 @@ buildForAnalyzing = "YES"> @@ -45,7 +45,7 @@ diff --git a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/StatusAlert.xcscheme b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/StatusAlert.xcscheme index dad30e3e..9aef71c3 100644 --- a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/StatusAlert.xcscheme +++ b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/StatusAlert.xcscheme @@ -14,7 +14,7 @@ buildForArchiving = "YES"> diff --git a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist index d98abbe5..9fd5157f 100644 --- a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist @@ -11,48 +11,55 @@ orderHint 0 - Moya.xcscheme + IQKeyboardManagerSwift.xcscheme isShown orderHint 1 - Pods-Santander-Test.xcscheme + Moya.xcscheme isShown orderHint 2 - Pods-Santander-TestTests.xcscheme + Pods-Santander-Test.xcscheme isShown orderHint 3 - Pods-Santander-TestUITests.xcscheme + Pods-Santander-TestTests.xcscheme isShown orderHint 4 - Result.xcscheme + Pods-Santander-TestUITests.xcscheme isShown orderHint 5 - StatusAlert.xcscheme + Result.xcscheme isShown orderHint 6 + StatusAlert.xcscheme + + isShown + + orderHint + 7 + SuppressBuildableAutocreation diff --git a/Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist b/Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist new file mode 100644 index 00000000..45024a7b --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 6.2.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-dummy.m b/Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-dummy.m new file mode 100644 index 00000000..7937f277 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_IQKeyboardManagerSwift : NSObject +@end +@implementation PodsDummy_IQKeyboardManagerSwift +@end diff --git a/Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch b/Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch new file mode 100644 index 00000000..beb2a244 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-umbrella.h b/Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-umbrella.h new file mode 100644 index 00000000..e95b3987 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double IQKeyboardManagerSwiftVersionNumber; +FOUNDATION_EXPORT const unsigned char IQKeyboardManagerSwiftVersionString[]; + diff --git a/Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap b/Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap new file mode 100644 index 00000000..6d9b3439 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.modulemap @@ -0,0 +1,6 @@ +framework module IQKeyboardManagerSwift { + umbrella header "IQKeyboardManagerSwift-umbrella.h" + + export * + module * { export * } +} diff --git a/Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.xcconfig b/Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.xcconfig new file mode 100644 index 00000000..ddaa6fad --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/IQKeyboardManagerSwift/IQKeyboardManagerSwift.xcconfig @@ -0,0 +1,9 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/IQKeyboardManagerSwift +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.markdown b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.markdown index 35c6fbc9..dd93d095 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.markdown +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.markdown @@ -24,6 +24,31 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## IQKeyboardManagerSwift + +MIT License + +Copyright (c) 2013-2017 Iftekhar Qurashi + +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. + + ## Moya The MIT License (MIT) diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.plist b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.plist index da5610e0..10e326de 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.plist +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.plist @@ -41,6 +41,37 @@ THE SOFTWARE. Type PSGroupSpecifier + + FooterText + MIT License + +Copyright (c) 2013-2017 Iftekhar Qurashi + +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. + + License + MIT + Title + IQKeyboardManagerSwift + Type + PSGroupSpecifier + FooterText The MIT License (MIT) diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-frameworks.sh b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-frameworks.sh index 0d3b9e6f..21a5af3b 100755 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-frameworks.sh +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-frameworks.sh @@ -154,12 +154,14 @@ strip_invalid_archs() { if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework" + install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework" install_framework "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework" install_framework "${BUILT_PRODUCTS_DIR}/Result/Result.framework" install_framework "${BUILT_PRODUCTS_DIR}/StatusAlert/StatusAlert.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework" + install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework" install_framework "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework" install_framework "${BUILT_PRODUCTS_DIR}/Result/Result.framework" install_framework "${BUILT_PRODUCTS_DIR}/StatusAlert/StatusAlert.framework" diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig index a450c602..521efc34 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig @@ -1,9 +1,9 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" -framework "StatusAlert" -framework "UIKit" +OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "Moya" -framework "QuartzCore" -framework "Result" -framework "StatusAlert" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.release.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.release.xcconfig index a450c602..521efc34 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.release.xcconfig +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.release.xcconfig @@ -1,9 +1,9 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" -framework "StatusAlert" -framework "UIKit" +OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "Moya" -framework "QuartzCore" -framework "Result" -framework "StatusAlert" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.debug.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.debug.xcconfig index 18feaeae..bf1d611e 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.debug.xcconfig +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.debug.xcconfig @@ -1,8 +1,8 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" -framework "StatusAlert" -framework "UIKit" +OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "Moya" -framework "QuartzCore" -framework "Result" -framework "StatusAlert" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.release.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.release.xcconfig index 18feaeae..bf1d611e 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.release.xcconfig +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.release.xcconfig @@ -1,8 +1,8 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" -framework "StatusAlert" -framework "UIKit" +OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "Moya" -framework "QuartzCore" -framework "Result" -framework "StatusAlert" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.debug.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.debug.xcconfig index 18feaeae..bf1d611e 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.debug.xcconfig +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.debug.xcconfig @@ -1,8 +1,8 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" -framework "StatusAlert" -framework "UIKit" +OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "Moya" -framework "QuartzCore" -framework "Result" -framework "StatusAlert" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.release.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.release.xcconfig index 18feaeae..bf1d611e 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.release.xcconfig +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.release.xcconfig @@ -1,8 +1,8 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "Foundation" -framework "Moya" -framework "Result" -framework "StatusAlert" -framework "UIKit" +OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "Moya" -framework "QuartzCore" -framework "Result" -framework "StatusAlert" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj index 4dfaac47..c3355a0e 100644 --- a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj +++ b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj @@ -736,6 +736,7 @@ inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-frameworks.sh", "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework", + "${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework", "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework", "${BUILT_PRODUCTS_DIR}/Result/Result.framework", "${BUILT_PRODUCTS_DIR}/StatusAlert/StatusAlert.framework", @@ -745,6 +746,7 @@ ); outputPaths = ( "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManagerSwift.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Moya.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Result.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/StatusAlert.framework", diff --git a/Santander-Test/Santander-Test.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist b/Santander-Test/Santander-Test.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist index 35d7e141..51009d62 100644 --- a/Santander-Test/Santander-Test.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Santander-Test/Santander-Test.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ Santander-Test.xcscheme_^#shared#^_ orderHint - 7 + 8 diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index cd07ec30a17af163c1033fec4b6d6fe0a1b8bc18..9419abe606918caaf92f0fb1eff88ff3bf4eb467 100644 GIT binary patch literal 100180 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 V?oR*x)9Km&_wWDz&o*7>{U7$E!L0xQ literal 99106 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 Bool { - // Override point for customization after application launch. + + IQKeyboardManager.shared.enable = true + return true } diff --git a/Santander-Test/Santander-Test/Info.plist b/Santander-Test/Santander-Test/Info.plist index 3748ff4d..bc515eb8 100644 --- a/Santander-Test/Santander-Test/Info.plist +++ b/Santander-Test/Santander-Test/Info.plist @@ -2,18 +2,6 @@ - UIAppFonts - - DINPro-Medium.otf - DINPro-Regular.otf - DINPro-Light.otf - DINPro-Bold.otf - DINPro-Black.otf - DINNeuzeitGroteskStd-Light.otf - DINNeuzeitGroteskStd-BdCond.otf - DINMittelschriftStd.otf - DINEngschriftStd.otf - CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleExecutable @@ -32,6 +20,18 @@ 1 LSRequiresIPhoneOS + UIAppFonts + + DINPro-Medium.otf + DINPro-Regular.otf + DINPro-Light.otf + DINPro-Bold.otf + DINPro-Black.otf + DINNeuzeitGroteskStd-Light.otf + DINNeuzeitGroteskStd-BdCond.otf + DINMittelschriftStd.otf + DINEngschriftStd.otf + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile @@ -43,8 +43,6 @@ UISupportedInterfaceOrientations UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad From b630221ed5e287e86fe82b802af9b733f6543d29 Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Sun, 19 May 2019 22:00:28 -0400 Subject: [PATCH 19/39] =?UTF-8?q?Configura=C3=A7=C3=A3o=20da=20tab=20bar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 100180 -> 101236 bytes .../tab_bar_contato.imageset/Contents.json | 21 ++++++++++++++++++ .../tab_bar_contato.png | Bin 0 -> 4570 bytes .../Contents.json | 21 ++++++++++++++++++ .../tab_bar_investimento.png | Bin 0 -> 4599 bytes .../Scenes/Form/FormViewController.swift | 14 ++++++++++-- .../FundDetail/FundDetailViewController.swift | 12 ++++++++++ .../Scenes/MainTabBar/MainTabBar.storyboard | 10 ++++----- .../Scenes/MainTabBar/MainTabBar.swift | 13 +++++------ 9 files changed, 77 insertions(+), 14 deletions(-) create mode 100644 Santander-Test/Santander-Test/Assets.xcassets/tab_bar_contato.imageset/Contents.json create mode 100644 Santander-Test/Santander-Test/Assets.xcassets/tab_bar_contato.imageset/tab_bar_contato.png create mode 100644 Santander-Test/Santander-Test/Assets.xcassets/tab_bar_investimento.imageset/Contents.json create mode 100644 Santander-Test/Santander-Test/Assets.xcassets/tab_bar_investimento.imageset/tab_bar_investimento.png diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index 9419abe606918caaf92f0fb1eff88ff3bf4eb467..ed96a67521b69393155463e9ef6bc6ba47de9c43 100644 GIT binary patch literal 101236 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 literal 100180 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 V?oR*x)9Km&_wWDz&o*7>{U7$E!L0xQ diff --git a/Santander-Test/Santander-Test/Assets.xcassets/tab_bar_contato.imageset/Contents.json b/Santander-Test/Santander-Test/Assets.xcassets/tab_bar_contato.imageset/Contents.json new file mode 100644 index 00000000..e4fd891a --- /dev/null +++ b/Santander-Test/Santander-Test/Assets.xcassets/tab_bar_contato.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "tab_bar_contato.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Santander-Test/Santander-Test/Assets.xcassets/tab_bar_contato.imageset/tab_bar_contato.png b/Santander-Test/Santander-Test/Assets.xcassets/tab_bar_contato.imageset/tab_bar_contato.png new file mode 100644 index 0000000000000000000000000000000000000000..973d6b2dc7bb3f1a17bfa331d34669654a613e06 GIT binary patch literal 4570 zcma)=S2P@4yv6lS5TXsEcP4}obwnLKy6B=LdW+shjm~HxqeV?HN+d>z76#FY7A?_c zbV3+yT=#ptPxo!_a~}TdoVE7(?RAn2^);y}SSj%E@TehLYDRc?_(6ACmW zzBBm#Mw(CY5MzLCJUqG_h?!qWIG0+Y6!#oZ=VBZ>!uQ;aHJ>W$} zqxy${n_JWA<>{NT!<)k>&GWDl9gn;qYw-q~XUIJ&c#;w(a4|O!(k!;|j7-*Pt#&nZ zn76E~T$ME}%-JKV>w@v-C=qt`xq-Z7uHz(K3ZN9e1krQ%kcu2YSa4PEE%3y^{LpBf z&7dxMr?(Ct(nO?9JC>IT35MUwo6DIY7$Eu&R8S<@>qhS?c!!u}^yO9}!y4^JZyM== zl5t!d9Oi3@WYeJlBTrGyrqIBJf`{#51@&$(s(;X)BF)}qCXL_DwpKKKGIneAe1uLo z3w-s`^PhX+zon>kSrAI;?;BlpK=xdHHq0H76+;Qi>D2+TOSUx5pmOv0R}cs;LaG4T z^j{Tbrb$dyU#i;{4yA?Utu6_{f0bpoxcB;i>!7->KfFqH(ImbMMxG?c_aC)-s;?Ya z|FUTgtWrjNM(Nw{(JVgxJ#C<9IxkGcC$v6rZ?kU}y^U!v{xyAHD*d$SMeIsO-zXiv z-KUUGJ~>Yzh&m}{+c}_upy@461~fXzhu*0jeSN0R6oE+~#3Q@Ozut3&rSQ+#SbH3# zo%Q(tdezL&r~Vg&>{c6n`WE{`WUWBa>SG=#-$O8SINw&pGnO&up91{TFRYJYbI<4- zsg;CNS$-{IC2e)j-ND5Jg$2dt)<-vP>-%alYV&SxPorO;d5Bl^161ScyA$yS#x%c^ z6gT+OLtNIx3^s#0A35d8W+qoqu?1_4eTaswUTb_@3I1M^*Rk6mGgmwwp$|KvNi8?g zUdT4kzJU@N`JFFM&Cdy>4c2U~p2UO5&>o8UHZDu)XJw~fcQ;Hs9Ix!RjfQZ8nib*4 zj@fa^d^#g-dt2|EDOTw8yp0N@ z_s5>Fjbw@;OXLLn(@~MvF({G?5+4uSIM%v&G|ud8a&&6>sgCp7RYbIwU?Y562PWqb z6SCs7@x}=r`PFH>#JkrKa3Jx5B>dqRR_u??(0loVhf&!_UP6ae@9H$kBesGjcEd$9 z3MPY?L^H)j6W3~^bVN55$wBTyPfoTVsJ^7x7q?IRf3@6RO)US_(S*)L8azWXo5lk( zl|}pam)ne+j}qGGy$csP!gOg?LTee;>-~&WpiV^*Uwl^*4eo!PMKE^iRi6SCS+99Q zO;S0ApSM|0;h)DVW1*H0%-)O>Tq3V!48v2t7&q=jiv;_3{bi)X)`nj=zfxg^bLwH? zj{FZEGk_=k$7H`ZnMjn>MmN90*|M56@&O`LM~fR#oQAy^C^P>~W?bnRA0qX}kQ`9tx$ zWv{kZzP^vW*v>RKQ6zf0xq;%ag+3@a(uQU{%A^@M?mkgYU=hbXBQ!*Y{{(IyAm=Ch zQhlsG(3v~2GJ#>8tfqM&82{B@?!;)}u#Lu_nT`N_(=%oer=INwt)X)UAdl53m8bLv z$2xJvPzr$H<6hQxBh_SIB9ny|9nn%DS*qQE&S;AF*H&Ih7Rh2RL|#F%Mt|PZR1fn$ zH1^4zq!LAO>e(P+95LK+DRPd_Jj~DDxUkl`HY=U5+~4py|3{UV&Ryr{*9=F7e)hoq ztRCU0Y;gFnG4kb0T_UcWcsZz-TJN z3WHX2CC-=8c8NcVl0=$RytYelybGnp;@u zy8;=(G=dmFt;SOHK8RWL>q1*KxS6VnT&pRCC2dPQC0>b*KPI&>8&?#l?9OfeQa1vx zZAu7MZWO!RbETfy2z{8|2KARrHJwdmX=d9Tl&*~r?j+w_IQ!+khC)qP@3JC4G?RPe z+$(omxN6*&?SBtix!MH1V{gvrE;PPuatG5#uQy!4bmGo~>>}G5+n?=QF?aw-0HHzq z6j+&~DGGPC2Smo{X{&zwz1$uG$;0M7^&Qg$)umm_+g3jhVk(1rwBqP5A?hL>q+z$D z+7yA*Xnhif1RmA6`ia$yVr|61cJ&nUY)qG?N9|r2K?rQ~iOG=3UX6 z^|Ez?#osAKd>s$M7_*(F{xLf#m|rOUy|_xV^R^ak+!%`c?b!<9zeEf*D%r%Ed@RN9 zyBJL?)@)R4h1} z(pek(At|re7}mljhQ(HwJoaKP{+t`x*r>5j->Q!lVa?gjK!L*gn0CPd?$DO zY#}2zpp5$yBbQ~r{aOO?4k1ed+o+T)PiVw7No-q2-;Kpp-(2hgYVrjc*sl>ZPPaPC z-}83_Dp*i2R3}=5p|6sb(wfT?tFoFNkc^Q&kKT=mV{hV=sNQSBOJ08UM%uYmzN?8o z(xhFYi6ExxJIh_R<;&sH`CxFa%}lq%|Jte=>GF?z9|_Y{z`4s3>h&z9&gSesRClpX z7jhe|5pLg!esLH3Al+x~8budvC3)>UbQ6k?*)8|dM_VE(x8~mm*`ofjDWG%PviZf_DoLH|H~^es0nnvB;M zeLj?3dGC~bsc30&h7tW_YC}M6yeK?^HzSGH)lSWXP#*rs<_RU!Wh{?~$?Ov}_Ez&G zX3vPRG{Df8pP)D+Lboaw5nE>&VlTN%GN8w*Rl3vdr_q^Ps3N$b5i>i_DB`3rn3llf zL}4GQjpz)OT>%_E=1L7~G!l(Evm7F-XZvvZu^VhgNGx8}9P{#xQ!QiEO>Hokl1Xrg z({=48_0bsi=y44nMV@Gu@I=f+)R1?S$idVU7zD$opftjpEps$!uyMx_Y;(3X8wuNn zPa^rKIW2z*LVmyGO<{_sa!&;jSCmsN8WP0FWlBXkS*?G1PRo?5ge^UGRk)zp7%g)^ z5a(*K$T~@mD?B=Ciu<9=o_CEqhe3bn2{WKn$2hcEEqbwC9J$4(vGK!s)G6Q@qW6h! zH91|!00l_DN-5}5n5Zx5HeDU9;Q3?G zTW9mUQwA*aqw7M?AH)_Qy8i68DyGAI>8^&|ai6@LMo#}@UR}1q<3BzvUk8A;ND}KW=HYEY|hQ zt*)m_e*Ce+85P=h2ZEum1_zUVwR)GdK*8=*vfzc?)(VE4q>X@`Xy0LlT~QWF+cNP? zA8F`(D(*aXw4Fp-FV;Zl?hfLm@~=8CO&3Va+Rn>bJY*^IK{D0`@)7W|MDWkg!0`7B zsxBnXRhcGY{s-2_(FQqc?iF2o#5c}jtgyQ#;v~RYuwTc_dGe8nNvJ3Ij7c1;EVnH}x}*WH z!*))DJL3r-jGb3+&WCw1E@K@b38!8s3$E{^_BwaPLx9v;ZtC$P(RMO&+H8i^c8Lft z0tZ`(oxYZ;D*FZBjc;+%2co0jyRMd_+rA@YR&z|4MYSoZyhydyQA_?A7bPjSVBs8p z87eWp!vwaGHh?0le*Mv$&+lli)M1iZzD>N;Yc3zkxz5|p5ZileFPjZH5}<%|fC}gr zeaa$|&t7XOjU#{}Rkq)M!5Nl1NytVdVxtiDKr~aT(aVp)9#V7H80!2fgf015`v_k) z_U(T5(%DtL2Lb-g-G4-aBMqgSBWo$2e#)ijW!OX3%B+YTc{QDi&p))LfAo}e2i21Z z%(KO4;6l(Bu`lDx_<=2a`Nf?{FM;*erwh$-OEB#wHih6Ib{YW{d z#X&g1SOc0yvCQO9_?gsLqrP)eqvj#}NVF;Kik5GFb&9)PB1fd>bd*cCGQd&rC3)DU zyab@``M2k+SC5ryN~xOlx)uc72TFLZKA$OIoM`t*!@P+vZm4N zQd^!JnqddR4p4@{A_HLl0%HS@-?FBaFfbXoTE_9K@73$Mp`;1lv%>mSsSfn3gvp3llj92M0WB}FD)tX- zRYBCM143=9h4LiDF*i&{iTMkr}i=b1BdC?3jhEB literal 0 HcmV?d00001 diff --git a/Santander-Test/Santander-Test/Assets.xcassets/tab_bar_investimento.imageset/Contents.json b/Santander-Test/Santander-Test/Assets.xcassets/tab_bar_investimento.imageset/Contents.json new file mode 100644 index 00000000..c8b397f4 --- /dev/null +++ b/Santander-Test/Santander-Test/Assets.xcassets/tab_bar_investimento.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "tab_bar_investimento.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Santander-Test/Santander-Test/Assets.xcassets/tab_bar_investimento.imageset/tab_bar_investimento.png b/Santander-Test/Santander-Test/Assets.xcassets/tab_bar_investimento.imageset/tab_bar_investimento.png new file mode 100644 index 0000000000000000000000000000000000000000..c53841ea8be6f487f27291f133b67f501177b765 GIT binary patch literal 4599 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 WNIu83`ufdJ4gjicq=nRc68AsSQ|EC2 literal 0 HcmV?d00001 diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift index e53c01a6..17906d8e 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift @@ -60,16 +60,26 @@ class FormViewController: UIViewController { } override func viewDidLoad() { - super.viewDidLoad() - + super.viewDidLoad() setupTableView() + setupTabBar() requestData() } + override func viewWillAppear(_ animated: Bool) { + setupTabBar() + } + private func setupTableView() { registerTableViewCells() } + private func setupTabBar() { + tabBarController?.tabBar.backgroundImage = UIImage( + named: MainTabBar.BackgroundImageName.form.rawValue + ) + } + private func requestData() { let request = Form.GetFormCells.Request() interactor?.getFormCells(request: request) diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift index 450b3d6b..8bef6a8e 100644 --- a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift @@ -60,14 +60,26 @@ class FundDetailViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() + setupTableView() + setupTabBar() requestData() } + override func viewWillAppear(_ animated: Bool) { + setupTabBar() + } + private func setupTableView() { registerTableViewCells() } + private func setupTabBar() { + tabBarController?.tabBar.backgroundImage = UIImage( + named: MainTabBar.BackgroundImageName.fundDetails.rawValue + ) + } + private func requestData() { let request = FundDetail.GetFundDetail.Request() interactor?.getFundDetail(request: request) diff --git a/Santander-Test/Santander-Test/Scenes/MainTabBar/MainTabBar.storyboard b/Santander-Test/Santander-Test/Scenes/MainTabBar/MainTabBar.storyboard index 3da17139..afad357e 100644 --- a/Santander-Test/Santander-Test/Scenes/MainTabBar/MainTabBar.storyboard +++ b/Santander-Test/Santander-Test/Scenes/MainTabBar/MainTabBar.storyboard @@ -13,7 +13,7 @@ - + @@ -26,20 +26,20 @@ - + - + - + - + diff --git a/Santander-Test/Santander-Test/Scenes/MainTabBar/MainTabBar.swift b/Santander-Test/Santander-Test/Scenes/MainTabBar/MainTabBar.swift index 4f84fab3..60506c82 100644 --- a/Santander-Test/Santander-Test/Scenes/MainTabBar/MainTabBar.swift +++ b/Santander-Test/Santander-Test/Scenes/MainTabBar/MainTabBar.swift @@ -8,12 +8,11 @@ import UIKit -class MainTabBar: UITabBarController { - - override func viewDidLoad() { - super.viewDidLoad() - - tabBar.barTintColor = UIColor.darkRedColor +class MainTabBar: UITabBarController {} + +extension MainTabBar { + enum BackgroundImageName: String { + case form = "tab_bar_contato" + case fundDetails = "tab_bar_investimento" } - } From b20882cff75f80d6be50b4a8e2988520189d8c59 Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Sun, 19 May 2019 22:32:36 -0400 Subject: [PATCH 20/39] Auto layout da tela de FundDetail --- .../UserInterfaceState.xcuserstate | Bin 101236 -> 101236 bytes .../Scenes/Form/FormViewController.swift | 2 +- .../Scenes/FundDetail/FundDetail.storyboard | 9 +++++++-- .../FundDetail/FundDetailViewController.swift | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index ed96a67521b69393155463e9ef6bc6ba47de9c43..dd2a66168fbec2f4cde9ce7bed67ac626a73f0c7 100644 GIT binary patch literal 101236 zcmdqK2YeJo^f3gBAtX@!X>#tAmrj*LPvKLv3Id6 zBp?

50xPDTPaOIp(RbzB=k6@%~b}b~A_h<|^*f_Le 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

AFdaQKC9Jf#Jlr}O4butr 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

2fkE4VQ?+$wbzbou*%?kUB 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 diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift index 17906d8e..2b063c48 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift @@ -62,11 +62,11 @@ class FormViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() setupTableView() - setupTabBar() requestData() } override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) setupTabBar() } diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetail.storyboard b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetail.storyboard index 95f3302e..f0b18669 100644 --- a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetail.storyboard +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetail.storyboard @@ -18,9 +18,8 @@ - + - @@ -28,6 +27,12 @@ + + + + + + diff --git a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift index 8bef6a8e..6b2d38f4 100644 --- a/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift +++ b/Santander-Test/Santander-Test/Scenes/FundDetail/FundDetailViewController.swift @@ -62,11 +62,11 @@ class FundDetailViewController: UIViewController { super.viewDidLoad() setupTableView() - setupTabBar() requestData() } override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) setupTabBar() } From e4fa49781a7c741fca9daba181b0d64f6f208c52 Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Mon, 20 May 2019 01:15:44 -0400 Subject: [PATCH 21/39] =?UTF-8?q?implementa=C3=A7=C3=A3o=20dos=20n=C3=ADve?= =?UTF-8?q?is=20de=20risk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Santander-Test.xcodeproj/project.pbxproj | 4 ++ .../UserInterfaceState.xcuserstate | Bin 101236 -> 102561 bytes .../Form/Checkbox/CheckboxCell.swift | 6 +-- .../GenericScenes/Form/Field/FieldCell.swift | 4 +- .../GenericScenes/Form/Send/SendButton.swift | 6 +-- .../Fund/DownInfo/FundDownInfoCell.swift | 4 +- .../Fund/Header/FundHeader.swift | 6 +-- .../Fund/Info/FundInfoCell.swift | 2 +- .../Fund/MoreInfo/FundMoreInfoCell.swift | 14 ++--- .../GenericScenes/Fund/Risk/FundRisk.swift | 48 ++++++++++++++---- .../GenericScenes/Fund/Risk/FundRisk.xib | 48 +++++++++++------- .../Scenes/Form/FormViewController.swift | 4 +- .../Success/SuccessViewController.swift | 4 +- .../Extensions/UIColorExtensions.swift | 16 ++++-- .../Extensions/UIViewExtensions.swift | 18 +++++++ 15 files changed, 126 insertions(+), 58 deletions(-) create mode 100644 Santander-Test/Santander-Test/Supporting Files/Extensions/UIViewExtensions.swift diff --git a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj index c3355a0e..7df2bcd4 100644 --- a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj +++ b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj @@ -68,6 +68,7 @@ 965C2FE3228EACC300015140 /* FundDownInfoCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 965C2FE2228EACC300015140 /* FundDownInfoCell.xib */; }; 965C2FE5228EACD400015140 /* FundDownInfoCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FE4228EACD400015140 /* FundDownInfoCell.swift */; }; 965C2FE7228EE8CC00015140 /* UIViewControllerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FE6228EE8CC00015140 /* UIViewControllerExtensions.swift */; }; + 965C2FED2292614600015140 /* UIViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FEC2292614600015140 /* UIViewExtensions.swift */; }; 973161DFBDDB30BB534A86DA /* Pods_Santander_TestUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 878E0A16E793237D34137EC7 /* Pods_Santander_TestUITests.framework */; }; C4FCFE13C06111F180515DFA /* Pods_Santander_Test.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F563E135B794CADBF7401F8 /* Pods_Santander_Test.framework */; }; /* End PBXBuildFile section */ @@ -164,6 +165,7 @@ 965C2FE2228EACC300015140 /* FundDownInfoCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FundDownInfoCell.xib; sourceTree = ""; }; 965C2FE4228EACD400015140 /* FundDownInfoCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FundDownInfoCell.swift; sourceTree = ""; }; 965C2FE6228EE8CC00015140 /* UIViewControllerExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIViewControllerExtensions.swift; sourceTree = ""; }; + 965C2FEC2292614600015140 /* UIViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIViewExtensions.swift; sourceTree = ""; }; A512F1F10FEC63C067350139 /* Pods-Santander-Test.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Santander-Test.debug.xcconfig"; path = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -357,6 +359,7 @@ children = ( 965C2F77228BBDB300015140 /* UIColorExtensions.swift */, 965C2FE6228EE8CC00015140 /* UIViewControllerExtensions.swift */, + 965C2FEC2292614600015140 /* UIViewExtensions.swift */, ); path = Extensions; sourceTree = ""; @@ -764,6 +767,7 @@ buildActionMask = 2147483647; files = ( 965C2F3B228974F500015140 /* FundsServiceApiManager.swift in Sources */, + 965C2FED2292614600015140 /* UIViewExtensions.swift in Sources */, 965C2F3E2289776F00015140 /* FormCell.swift in Sources */, 965C2F86228D474300015140 /* MainTabBar.swift in Sources */, 965C2FC0228E128E00015140 /* FundDetailWorker.swift in Sources */, diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index dd2a66168fbec2f4cde9ce7bed67ac626a73f0c7..c4a8565e2efbf9b43078e1b16c4ec3ebdc7a1ab5 100644 GIT binary patch literal 102561 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

Pw@Rj_07-ufO0IlK|a^t4Md7;pr(bRfB+bEhl%A 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 Wrj7saua{2zzrX(fe{Iyh;r{`hR=f`Y literal 101236 zcmdqK2YeJo^f3gBAtX@!X>#tAmrj*LPvKLv3Id6 zBp?

50xPDTPaOIp(RbzB=k6@%~b}b~A_h<|^*f_Le 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

AFdaQKC9Jf#Jlr}O4butr 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

2fkE4VQ?+$wbzbou*%, with event: UIEvent?) { @@ -47,7 +47,7 @@ class SendButton: UIButton { frame.size = CGSize(width: originalWidth, height: originalHeight) center = buttonCenter layer.cornerRadius = 25 - backgroundColor = UIColor.darkRedColor + backgroundColor = UIColor.getColorDarkRed delegate?.buttonPressed() } } diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/DownInfo/FundDownInfoCell.swift b/Santander-Test/Santander-Test/GenericScenes/Fund/DownInfo/FundDownInfoCell.swift index 8d4b61d0..336631ef 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Fund/DownInfo/FundDownInfoCell.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/DownInfo/FundDownInfoCell.swift @@ -34,8 +34,8 @@ class FundDownInfoCell: UITableViewCell { } private func configureLayout() { - downInfoNameLabel.textColor = UIColor.darkGrayColor - button.tintColor = UIColor.darkRedColor + downInfoNameLabel.textColor = UIColor.getColorDarkGray + button.tintColor = UIColor.getColorDarkRed } private func didSetViewModel() { diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/Header/FundHeader.swift b/Santander-Test/Santander-Test/GenericScenes/Fund/Header/FundHeader.swift index 4d23504a..64f54855 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Fund/Header/FundHeader.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/Header/FundHeader.swift @@ -29,9 +29,9 @@ class FundHeader: UITableViewCell { } private func configureLayout() { - title.textColor = UIColor.darkGrayColor - whatIs.textColor = UIColor.darkGrayColor - definition.textColor = UIColor.darkGrayColor + title.textColor = UIColor.getColorDarkGray + whatIs.textColor = UIColor.getColorDarkGray + definition.textColor = UIColor.getColorDarkGray } private func didSetViewModel() { diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/Info/FundInfoCell.swift b/Santander-Test/Santander-Test/GenericScenes/Fund/Info/FundInfoCell.swift index 58f42a28..bfa7cac3 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Fund/Info/FundInfoCell.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/Info/FundInfoCell.swift @@ -28,7 +28,7 @@ class FundInfoCell: UITableViewCell { } private func configureLayout() { - infoName.textColor = UIColor.darkGrayColor + infoName.textColor = UIColor.getColorDarkGray } private func didSetViewModel() { diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.swift b/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.swift index 26cb197d..5a0ae90a 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/MoreInfo/FundMoreInfoCell.swift @@ -42,13 +42,13 @@ class FundMoreInfoCell: UITableViewCell { } private func configureLayout() { - moreInfoTitleLabel.textColor = UIColor.darkGrayColor - monthLabel.textColor = UIColor.darkGrayColor - yearLabel.textColor = UIColor.darkGrayColor - twelveMonthsLabel.textColor = UIColor.darkGrayColor - FundLabel.textColor = UIColor.darkGrayColor - cdiLabel.textColor = UIColor.darkGrayColor - lineView.backgroundColor = UIColor.lightGrayColor + moreInfoTitleLabel.textColor = UIColor.getColorDarkGray + monthLabel.textColor = UIColor.getColorDarkGray + yearLabel.textColor = UIColor.getColorDarkGray + twelveMonthsLabel.textColor = UIColor.getColorDarkGray + FundLabel.textColor = UIColor.getColorDarkGray + cdiLabel.textColor = UIColor.getColorDarkGray + lineView.backgroundColor = UIColor.getColorLightGray } private func didSetViewModel() { diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.swift b/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.swift index 8772e13f..2f6c3dcc 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.swift @@ -14,8 +14,8 @@ class FundRisk: UITableViewCell { @IBOutlet weak var lightGreenView: UIView! @IBOutlet weak var darkGreenView: UIView! - @IBOutlet weak var yellowView: UIView! - @IBOutlet weak var orangeView: UIView! + @IBOutlet weak var darkYellowView: UIView! + @IBOutlet weak var darkOrangeView: UIView! @IBOutlet weak var darkRedView: UIView! static let reuseIdentifier = "FundRisk" @@ -32,23 +32,51 @@ class FundRisk: UITableViewCell { } private func configureLayout() { - label.textColor = UIColor.darkGrayColor + label.textColor = UIColor.getColorDarkGray + lightGreenView.backgroundColor = UIColor.getColorRiskLightGreen + darkGreenView.backgroundColor = UIColor.getColorRiskDarkGreen + darkYellowView.backgroundColor = UIColor.getColorRiskDarkYellow + darkOrangeView.backgroundColor = UIColor.getColorRiskDarkOrange + darkRedView.backgroundColor = UIColor.getColorRiskDarkRed + lightGreenView.roundCorners(corners: [.bottomLeft, .topLeft], radius: 3.0) + darkRedView.roundCorners(corners: [.bottomRight, .topRight], radius: 3.0) } private func didSetViewModel() { + + selectRiskView() + } + + private func selectRiskView() { guard let viewModelRisk = viewModel?.risk, 1...5 ~= viewModelRisk - else { return } + else { return } + + switch viewModelRisk { + case 1: + highlightRiskView(riskView: lightGreenView) + case 2: + highlightRiskView(riskView: darkGreenView) + case 3: + highlightRiskView(riskView: darkYellowView) + case 4: + highlightRiskView(riskView: darkOrangeView) + case 5: + highlightRiskView(riskView: darkRedView) + default: + return + } -// switch viewModel.risk { -// case 1: -// -// default: -// darkRedView -// } } + private func highlightRiskView(riskView: UIView) { + riskView.constraints.forEach { (constraint) in + if constraint.firstAttribute == .height { + constraint.constant = 10 + } + } + } } extension FundRisk { diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.xib b/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.xib index f5efd8c8..cb06a4e8 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.xib +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.xib @@ -27,53 +27,65 @@ - - + + - + + + + - + + + + - + + + + - + + + + - + + + + - - - - - - - - - + + + + + + + + - - diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift index 2b063c48..6c41a034 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift @@ -127,9 +127,9 @@ extension FormViewController: FormDisplayLogic { func displayFieldValidation(viewModel: Form.FieldValidation.ViewModel) { if let cell = tableView.cellForRow(at: viewModel.indexPath) as? FieldCell { if viewModel.isValid { - cell.lineView.backgroundColor = UIColor.lightGreenColor + cell.lineView.backgroundColor = UIColor.getColorLightGreen } else { - cell.lineView.backgroundColor = UIColor.darkRedColor + cell.lineView.backgroundColor = UIColor.getColorDarkRed } } } diff --git a/Santander-Test/Santander-Test/Scenes/Success/SuccessViewController.swift b/Santander-Test/Santander-Test/Scenes/Success/SuccessViewController.swift index 85db2c74..efb53722 100644 --- a/Santander-Test/Santander-Test/Scenes/Success/SuccessViewController.swift +++ b/Santander-Test/Santander-Test/Scenes/Success/SuccessViewController.swift @@ -51,8 +51,8 @@ class SuccessViewController: UIViewController { } private func configureLayout() { - thankYouLabel.textColor = UIColor.darkGrayColor - sendNewMessageButton.tintColor = UIColor.darkRedColor + thankYouLabel.textColor = UIColor.getColorDarkGray + sendNewMessageButton.tintColor = UIColor.getColorDarkRed } @IBAction func sendNewMessageButton(_ sender: Any) { diff --git a/Santander-Test/Santander-Test/Supporting Files/Extensions/UIColorExtensions.swift b/Santander-Test/Santander-Test/Supporting Files/Extensions/UIColorExtensions.swift index 50a5b2bb..c3f3db36 100644 --- a/Santander-Test/Santander-Test/Supporting Files/Extensions/UIColorExtensions.swift +++ b/Santander-Test/Santander-Test/Supporting Files/Extensions/UIColorExtensions.swift @@ -10,9 +10,15 @@ import UIKit extension UIColor { - static let darkRedColor = UIColor(red: 218/255, green: 1/255, blue: 1/255, alpha: 1.0) - static let darkGrayColor = UIColor(red: 151/255, green: 151/255, blue: 151/255, alpha: 1.0) - static let lightRedColor = UIColor(red: 235/255, green: 118/255, blue: 118/255, alpha: 1.0) - static let lightGrayColor = UIColor(red: 239/255, green: 238/255, blue: 237/255, alpha: 1.0) - static let lightGreenColor = UIColor(red: 101/255, green: 190/255, blue: 48/255, alpha: 1.0) + static let getColorDarkRed = UIColor(red: 218/255, green: 1/255, blue: 1/255, alpha: 1.0) + static let getColorDarkGray = UIColor(red: 151/255, green: 151/255, blue: 151/255, alpha: 1.0) + static let getColorLightRed = UIColor(red: 235/255, green: 118/255, blue: 118/255, alpha: 1.0) + static let getColorLightGray = UIColor(red: 239/255, green: 238/255, blue: 237/255, alpha: 1.0) + static let getColorLightGreen = UIColor(red: 101/255, green: 190/255, blue: 48/255, alpha: 1.0) + + static let getColorRiskLightGreen = UIColor(red: 116/255, green: 218/255, blue: 97/255, alpha: 1.0) + static let getColorRiskDarkGreen = UIColor(red: 74/255, green: 193/255, blue: 108/255, alpha: 1.0) + static let getColorRiskDarkYellow = UIColor(red: 255/255, green: 192/255, blue: 17/255, alpha: 1.0) + static let getColorRiskDarkOrange = UIColor(red: 255/255, green: 116/255, blue: 44/255, alpha: 1.0) + static let getColorRiskDarkRed = UIColor(red: 255/255, green: 54/255, blue: 52/255, alpha: 1.0) } diff --git a/Santander-Test/Santander-Test/Supporting Files/Extensions/UIViewExtensions.swift b/Santander-Test/Santander-Test/Supporting Files/Extensions/UIViewExtensions.swift new file mode 100644 index 00000000..9e149894 --- /dev/null +++ b/Santander-Test/Santander-Test/Supporting Files/Extensions/UIViewExtensions.swift @@ -0,0 +1,18 @@ +// +// UIViewExtensions.swift +// Santander-Test +// +// Created by Matheus Ribeiro on 20/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import UIKit + +extension UIView { + func roundCorners(corners: UIRectCorner, radius: CGFloat) { + let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)) + let mask = CAShapeLayer() + mask.path = path.cgPath + layer.mask = mask + } +} From 4fce21ef6db3175f8724ded10bc3c3713ebe3f10 Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Mon, 20 May 2019 02:15:18 -0400 Subject: [PATCH 22/39] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20do=20apontador?= =?UTF-8?q?=20do=20n=C3=ADvel=20de=20risk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 102561 -> 103936 bytes .../GenericScenes/Fund/Risk/FundRisk.swift | 12 ++++++++++++ .../GenericScenes/Fund/Risk/FundRisk.xib | 14 ++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index c4a8565e2efbf9b43078e1b16c4ec3ebdc7a1ab5..399b8dedfda1f599fb4b7268d872568b232351eb 100644 GIT binary patch literal 103936 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

Pw@Rj_07-ufO0IlK|a^t4Md7;pr(bRfB+bEhl%A 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 Wrj7saua{2zzrX(fe{Iyh;r{`hR=f`Y diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.swift b/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.swift index 2f6c3dcc..5dee1e2a 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.swift @@ -18,6 +18,9 @@ class FundRisk: UITableViewCell { @IBOutlet weak var darkOrangeView: UIView! @IBOutlet weak var darkRedView: UIView! + @IBOutlet weak var riskPointer: UIImageView! + @IBOutlet weak var riskPointerCenterConstraint: NSLayoutConstraint! + static let reuseIdentifier = "FundRisk" var viewModel: FundRisk.ViewModel? { @@ -56,14 +59,19 @@ class FundRisk: UITableViewCell { switch viewModelRisk { case 1: highlightRiskView(riskView: lightGreenView) + setupRiskPointer(aboveRiskView: lightGreenView) case 2: highlightRiskView(riskView: darkGreenView) + setupRiskPointer(aboveRiskView: darkGreenView) case 3: highlightRiskView(riskView: darkYellowView) + setupRiskPointer(aboveRiskView: darkYellowView) case 4: highlightRiskView(riskView: darkOrangeView) + setupRiskPointer(aboveRiskView: darkOrangeView) case 5: highlightRiskView(riskView: darkRedView) + setupRiskPointer(aboveRiskView: darkRedView) default: return } @@ -77,6 +85,10 @@ class FundRisk: UITableViewCell { } } } + + private func setupRiskPointer(aboveRiskView riskView: UIView) { + riskPointerCenterConstraint.constant = riskView.frame.midX - darkYellowView.frame.midX + } } extension FundRisk { diff --git a/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.xib b/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.xib index cb06a4e8..c2875dfc 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.xib +++ b/Santander-Test/Santander-Test/GenericScenes/Fund/Risk/FundRisk.xib @@ -67,10 +67,19 @@ + + + + + + + + + @@ -86,8 +95,13 @@ + + + + + From bb4b73b3feaf18a7725757beefc46e74910c9792 Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Mon, 20 May 2019 05:00:01 -0400 Subject: [PATCH 23/39] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20b=C3=A1sica=20d?= =?UTF-8?q?e=20validar=20todos=20os=20campos=20do=20form?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 103936 -> 105013 bytes .../Scenes/Form/FormInteractor.swift | 20 +++++++++ .../Scenes/Form/FormModels.swift | 17 ++++++++ .../Scenes/Form/FormPresenter.swift | 13 ++++++ .../Scenes/Form/FormViewController.swift | 15 ++++++- .../Scenes/Form/FormWorker.swift | 41 ++++++++++++++++++ 6 files changed, 105 insertions(+), 1 deletion(-) diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index 399b8dedfda1f599fb4b7268d872568b232351eb..7d2a4bee164621ac48291f01e906ff44604dc557 100644 GIT binary patch literal 105013 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

`|Ulo>mU96>?O0k1de1Y<>J; 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 X_*Yn!|M&0L`0s=N-@ig`d-VSRc8F<1 literal 103936 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 Void) { + + var response: Bool = true + var responseIndexPath: IndexPath? + var responseMessage: String? + + for count in 0.. Date: Mon, 20 May 2019 05:05:03 -0400 Subject: [PATCH 24/39] =?UTF-8?q?Pequeno=20ajuste=20na=20fun=C3=A7=C3=A3o?= =?UTF-8?q?=20de=20validar=20todos=20os=20campos=20do=20form?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 105013 -> 106344 bytes .../Scenes/Form/FormInteractor.swift | 4 ---- .../Scenes/Form/FormModels.swift | 1 - .../Scenes/Form/FormViewController.swift | 1 - .../Scenes/Form/FormWorker.swift | 6 +----- 5 files changed, 1 insertion(+), 11 deletions(-) diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index 7d2a4bee164621ac48291f01e906ff44604dc557..41ccdbead0ae610b480d26666b6371276ea0b5c6 100644 GIT binary patch literal 106344 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 literal 105013 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

`|Ulo>mU96>?O0k1de1Y<>J; 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 X_*Yn!|M&0L`0s=N-@ig`d-VSRc8F<1 diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormInteractor.swift b/Santander-Test/Santander-Test/Scenes/Form/FormInteractor.swift index 6caf4f84..ae0b8547 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormInteractor.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormInteractor.swift @@ -56,12 +56,8 @@ class FormInteractor: FormBusinessLogic, FormDataStore { func validateAllFields(request: Form.AllFieldsValidation.Request) { worker = FormWorker() - - let displayedFormCells = request.displayedFormCells let tableView = request.tableView - worker?.validateAllFields( - displayedFormCells: displayedFormCells, tableView: tableView, completion: { (isValid, indexPath, message) in let response = Form.AllFieldsValidation.Response( diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormModels.swift b/Santander-Test/Santander-Test/Scenes/Form/FormModels.swift index ef880c8d..48b4b266 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormModels.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormModels.swift @@ -69,7 +69,6 @@ enum Form { enum AllFieldsValidation { struct Request { - let displayedFormCells: [Form.GetFormCells.ViewModel.DisplayViewModel] let tableView: UITableView } struct Response { diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift index 54bd4b96..cc60b57b 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift @@ -209,7 +209,6 @@ extension FormViewController: FieldCellDelegate { extension FormViewController: SendCellDelegate { func buttonPressed() { let request = Form.AllFieldsValidation.Request( - displayedFormCells: displayedFormCells, tableView: tableView ) interactor?.validateAllFields(request: request) diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormWorker.swift b/Santander-Test/Santander-Test/Scenes/Form/FormWorker.swift index 2efbce82..5e4eccec 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormWorker.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormWorker.swift @@ -46,7 +46,6 @@ class FormWorker { } func validateAllFields( - displayedFormCells: [Form.GetFormCells.ViewModel.DisplayViewModel], tableView: UITableView, completion: (Bool, IndexPath?, String?) -> Void) { @@ -54,10 +53,7 @@ class FormWorker { var responseIndexPath: IndexPath? var responseMessage: String? - for count in 0.. Date: Mon, 20 May 2019 05:14:58 -0400 Subject: [PATCH 25/39] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20do=20AMPopTip?= =?UTF-8?q?=20para=20exibir=20mensagens=20de=20campos=20preenchidos=20inco?= =?UTF-8?q?rretamente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Santander-Test/Podfile | 1 + Santander-Test/Podfile.lock | 6 +- Santander-Test/Pods/AMPopTip/LICENSE | 21 + Santander-Test/Pods/AMPopTip/README.md | 266 ++++ .../Pods/AMPopTip/Source/PopTip+Draw.swift | 190 +++ .../AMPopTip/Source/PopTip+Transitions.swift | 131 ++ .../Pods/AMPopTip/Source/PopTip.swift | 832 +++++++++++ Santander-Test/Pods/Manifest.lock | 6 +- .../Pods/Pods.xcodeproj/project.pbxproj | 1295 ++++++++++------- .../xcschemes/AMPopTip.xcscheme | 60 + .../xcschemes/Pods-Santander-Test.xcscheme | 4 +- .../xcschemes/StatusAlert.xcscheme | 2 +- .../xcschemes/xcschememanagement.plist | 21 +- .../AMPopTip/AMPopTip-Info.plist | 26 + .../AMPopTip/AMPopTip-dummy.m | 5 + .../AMPopTip/AMPopTip-prefix.pch | 12 + .../AMPopTip/AMPopTip-umbrella.h | 16 + .../AMPopTip/AMPopTip.modulemap | 6 + .../AMPopTip/AMPopTip.xcconfig | 9 + ...s-Santander-Test-acknowledgements.markdown | 25 + ...Pods-Santander-Test-acknowledgements.plist | 31 + .../Pods-Santander-Test-frameworks.sh | 2 + .../Pods-Santander-Test.debug.xcconfig | 6 +- .../Pods-Santander-Test.release.xcconfig | 6 +- .../Pods-Santander-TestTests.debug.xcconfig | 6 +- .../Pods-Santander-TestTests.release.xcconfig | 6 +- .../Pods-Santander-TestUITests.debug.xcconfig | 6 +- ...ods-Santander-TestUITests.release.xcconfig | 6 +- .../Santander-Test.xcodeproj/project.pbxproj | 2 + .../xcschemes/xcschememanagement.plist | 2 +- .../UserInterfaceState.xcuserstate | Bin 106344 -> 106467 bytes .../Scenes/Form/FormViewController.swift | 13 +- .../Scenes/Form/FormWorker.swift | 2 +- 33 files changed, 2437 insertions(+), 585 deletions(-) create mode 100644 Santander-Test/Pods/AMPopTip/LICENSE create mode 100644 Santander-Test/Pods/AMPopTip/README.md create mode 100644 Santander-Test/Pods/AMPopTip/Source/PopTip+Draw.swift create mode 100644 Santander-Test/Pods/AMPopTip/Source/PopTip+Transitions.swift create mode 100644 Santander-Test/Pods/AMPopTip/Source/PopTip.swift create mode 100644 Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/AMPopTip.xcscheme create mode 100644 Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip-Info.plist create mode 100644 Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip-dummy.m create mode 100644 Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip-prefix.pch create mode 100644 Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip-umbrella.h create mode 100644 Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip.modulemap create mode 100644 Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip.xcconfig diff --git a/Santander-Test/Podfile b/Santander-Test/Podfile index a425e70a..b5bb0780 100644 --- a/Santander-Test/Podfile +++ b/Santander-Test/Podfile @@ -10,6 +10,7 @@ target 'Santander-Test' do pod 'Moya' pod 'StatusAlert' pod 'IQKeyboardManagerSwift' + pod 'AMPopTip' target 'Santander-TestTests' do inherit! :search_paths diff --git a/Santander-Test/Podfile.lock b/Santander-Test/Podfile.lock index cbbac15a..15324d25 100644 --- a/Santander-Test/Podfile.lock +++ b/Santander-Test/Podfile.lock @@ -1,5 +1,6 @@ PODS: - Alamofire (4.8.1) + - AMPopTip (3.6.0) - IQKeyboardManagerSwift (6.2.0) - Moya (12.0.1): - Moya/Core (= 12.0.1) @@ -10,6 +11,7 @@ PODS: - StatusAlert (1.1.0) DEPENDENCIES: + - AMPopTip - IQKeyboardManagerSwift - Moya - StatusAlert @@ -17,6 +19,7 @@ DEPENDENCIES: SPEC REPOS: https://github.com/cocoapods/specs.git: - Alamofire + - AMPopTip - IQKeyboardManagerSwift - Moya - Result @@ -24,11 +27,12 @@ SPEC REPOS: SPEC CHECKSUMS: Alamofire: 16ce2c353fb72865124ddae8a57c5942388f4f11 + AMPopTip: ebfa860ade372f383e8b3500d3101e8c4a4f73ce IQKeyboardManagerSwift: b07ccf9d8cafe993dcd6cb794eb4ba34611a0c4e Moya: cf730b3cd9e005401ef37a85143aa141a12fd38f Result: bd966fac789cc6c1563440b348ab2598cc24d5c7 StatusAlert: 4d6dadebf5f7abd5648fa774ef3062f2f95cc4aa -PODFILE CHECKSUM: 43c1992cf2813f4080ced8f5452e251bd09e7c41 +PODFILE CHECKSUM: 4e150ff8c831fa6b97c7c1e6355aa319f0463e89 COCOAPODS: 1.6.0 diff --git a/Santander-Test/Pods/AMPopTip/LICENSE b/Santander-Test/Pods/AMPopTip/LICENSE new file mode 100644 index 00000000..530c63e3 --- /dev/null +++ b/Santander-Test/Pods/AMPopTip/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Andrea Mazzini + +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. diff --git a/Santander-Test/Pods/AMPopTip/README.md b/Santander-Test/Pods/AMPopTip/README.md new file mode 100644 index 00000000..2ae0b934 --- /dev/null +++ b/Santander-Test/Pods/AMPopTip/README.md @@ -0,0 +1,266 @@ +

+ +

+ +[![Build Status](https://travis-ci.org/andreamazz/AMPopTip.svg)](https://travis-ci.org/andreamazz/AMPopTip) +[![codecov](https://codecov.io/gh/andreamazz/AMPopTip/branch/master/graph/badge.svg)](https://codecov.io/gh/andreamazz/AMPopTip) +[![CocoaPods](https://cocoapod-badges.herokuapp.com/v/AMPopTip/badge.svg)](http://cocoapods.org/?q=ampoptip) +[![Docs](https://img.shields.io/cocoapods/metrics/doc-percent/AMPopTip.svg)](http://cocoadocs.org/docsets/AMPopTip) +[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) +![Swift 3.0](https://img.shields.io/badge/swift-4.2-orange.svg) +[![Join the chat at https://gitter.im/andreamazz/AMPopTip](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/andreamazz/AMPopTip?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +Animated popover that pops out of a frame. You can specify the direction of the popover and the arrow that points to its origin. Color, border radius and font can be easily customized. +This popover can be used to leave subtle hints about your UI and provide fun looking onboarding popups. + +

+ + + +

+ +# Screenshot +![AMPopTip](https://raw.githubusercontent.com/andreamazz/AMPopTip/master/assets/screenshot.gif) + +### Versioning notes + +With version `2.0.0` the library was re-written in Swift, and the API was slightly updated. Checkout version `1.5.x` for the previous Objective-C implementation. + +Version `3.0.0` introduces Swift 4 support, `3.5.0` Swift 4.2. + +# Setup with CocoaPods +* Add ```pod 'AMPopTip'``` to your ```Podfile``` +* Run ```pod install``` +* Run ```open App.xcworkspace``` + +# Setup with Carthage +* Add ```github "andreamazz/AMPopTip"``` +* Run ```carthage update``` +* Add ```AMPopTip.framework``` in your project + +# Usage +The API is fairly straight forward, you can show and hide the popover at any time. + +## Showing the popover +You must specify the text that you want to display alongside the popover direction, its max width, the view that will contain it and the frame of the view that the popover's arrow will point to. + +```swift +let popTip = PopTip() +popTip.show(text: "Hey! Listen!", direction: .up, maxWidth: 200, in: view, from: someView.frame) +``` + +You can also display the popover in the center, with no arrow, in this case the `from` can be the whole view: +```swift +popTip.show(text: "Hey! Listen!", direction: .none, maxWidth: 200, in: view, from: view.frame) +``` + +## Coordinate system +Please note that the frame you are intended to provide needs to refer to the absolute coordinate system of the view you are presenting the popover in. This means that if you are presenting the popover in a view, pointing to a nested subview, you'll need to convert its frame using UIKit's `convertRect(_:toView:)`. Read the reference [here](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/occ/instm/UIView/convertRect:toView:). + +## Showing a custom view +You can provide a custom view that will be wrapped in the PopTip and presented. + +```swift +let customView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) +// Configure your view +popTip.show(customView: customView, direction: .down, in: view, from: someView.frame) +``` + +## Dismissing the popover + +You can hide the popover by calling: +```swift +popTip.hide() +``` + +Or you can specify the duration of the popover: +```swift +popTip.show(text: "Hey! Listen!", direction: .up, maxWidth: 200, in: view, from: someView.frame, duration: 3) +``` + +You can also let the user dismiss the popover by tapping on it: +```swift +popTip.shouldDismissOnTap = true +``` + +You can add a block that will be fired when the user taps the PopTip... +```swift +popTip.tapHandler = { popTip in + print("\(popTip) tapped") +} +``` + +... when the popover is shown... +```swift +popTip.appearHandler = { popTip in + print("\(popTip) appeared") +}; +``` + +... or when the popover is dismissed: +```swift +popTip.dismissHandler = { popTip in + print("\(popTip) dismissed") +} + +popTip.tapOutsideHandler = { _ in + print("tap outside") +} + +popTip.swipeOutsideHandler = { _ in + print("swipe outside") +} +``` + +# Updating the PopTip + +You can update the text, attributed text, or custom view to a PopTip already visible: + +```swift +popTip.update(text: "New string") +popTip.update(attributedText: someAttributedString) +popTip.update(customView: someView) +``` + +The position can also be changed by updating the `from` property: + +```swift +let here = CGRect(x: 100, 100, 10, 10) +let there = CGRect(x: 400, 400, 10, 10) + +popTip.show(text: "Hey! Listen!", direction: .up, maxWidth: 200, in: view, from: here) +DispatchQueue.main.asyncAfter(deadline: .now() + 2) { + popTip.from = there +} +``` + +# Custom entrance animation + +You can choose which animation should be performed when the popTip is displayed: +```swift +popTip.entranceAnimation = .scale; +``` + +Available animations: +```swift +PopTipEntranceAnimation.scale, +PopTipEntranceAnimation.transition, +PopTipEntranceAnimation.none, +PopTipEntranceAnimation.custom +``` + +## PopTipEntranceAnimation.custom + +You can provide your own animation block when using `PopTipEntranceAnimation.custom`: +```swift +popTip.entranceAnimationHandler = { [weak self] completion in + guard let `self` = self else { return } + self.popTip.transform = CGAffineTransform(rotationAngle: 0.3) + UIView.animate(withDuration: 0.5, animations: { + self.popTip.transform = .identity + }, completion: { (_) in + completion() + }) +} +``` +This sample makes the PopTip rotate on entrance. Make sure to call the completion block when the animation is done. Also note that the animation is fired as soon as the PopTip is added as subview. + +# Action animations +Action animations are subtle animations that can be performed to get the user's attention. +Set your preferred animation: +```swift +popTip.actionAnimation = .bounce() +``` + +Available animations: +```swift +PopTipActionAnimation.bounce, +PopTipActionAnimation.float, +PopTipActionAnimation.pulse, +PopTipActionAnimation.none +``` +The animation is fired as soon as the popover enters the scene and completes its entrance animation, if `startActionAnimationOnShow` is set to true. + +## Customize the animations + +You can pass a custom value as an associated value to customize the action animation: + +```swift +popTip.actionAnimation = .bounce(16) // This will bounce for 16px instead of the default value +``` + +![AMPopTip bounce](assets/bounce_effect.gif) + +# Customizing the arrow position + +The arrow is centered by default, and moves to avoid the edge of the screen. You can manually change the offset from the center using the `bubbleOffset` property. + +# A note about subviews + +The popover is presented inside the view provided in the `in` parameter. If this view is smaller than the resulting popover, to prevent clipping set `clipsToBounds = false` on the presenting view, and set `constrainInContainerView = false` to the pop tip instance. See #175 for more context. + +# Customization + +Use the appearance proxy to customize the popover before creating the instance, or just use its public properties: +```swift +textColor = <#UIColor#>; +textAlignment = <#NSTextAlignment#> +bubbleColor = <#UIColor#> +borderColor = <#UIColor#> +borderWidth = <#CGFloat#> +cornerRadius = <#CGFloat#> // Popover's border radius +rounded = <#Bool#> // If set to YES the radius will equal frame.height / 2 +offset = <#CGFloat#> // Offset between the popover and the origin +font = <#UIFont#> +padding = <#CGFloat#> +edgeInsets = <#UIEdgeInsets#> +arrowSize = <#CGSize#> +animationIn = <#TimeInterval#> +animationOut = <#TimeInterval#> +delayIn = <#TimeInterval#> +delayOut = <#TimeInterval#> +entranceAnimation = <#PopTipEntranceAnimation#> +actionAnimation = <#PopTipActionAnimation#> +actionAnimationIn = <#TimeInterval#> +actionAnimationOut = <#TimeInterval#> +actionDelayIn = <#TimeInterval#> +actionDelayOut = <#TimeInterval#> +edgeMargin = <#CGFloat#> +bubbleOffset = <#CGFloat#> // Offset between the bubble and the arrow +arrowRadius = <#CGFloat#> +shadowOpacity = <#Float#> +shadowRadius = <#Float#> +shadowOffset = <#CGSize#> +shadowColor = <#UIColor#> +``` + +# Author +[Andrea Mazzini](https://twitter.com/theandreamazz). I'm available for freelance work, feel free to contact me. + +Want to support the development of [these free libraries](https://cocoapods.org/owners/734)? Buy me a coffee ☕️ via [Paypal](https://www.paypal.me/andreamazzini). + +# Contributors +Thanks to [everyone](https://github.com/andreamazz/AMPopTip/graphs/contributors) kind enough to submit a pull request. + +# MIT License + + Copyright (c) 2017 Andrea Mazzini. 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. diff --git a/Santander-Test/Pods/AMPopTip/Source/PopTip+Draw.swift b/Santander-Test/Pods/AMPopTip/Source/PopTip+Draw.swift new file mode 100644 index 00000000..b6a2d6c5 --- /dev/null +++ b/Santander-Test/Pods/AMPopTip/Source/PopTip+Draw.swift @@ -0,0 +1,190 @@ +// +// PopTip.swift +// AMPopTip +// +// Created by Andrea Mazzini on 01/05/2017. +// Copyright © 2017 Andrea Mazzini. All rights reserved. +// + +import UIKit + +fileprivate struct CornerPoint { + var center: CGPoint + var startAngle: CGFloat + var endAngle: CGFloat +} + +// MARK: - Draw helper +public extension PopTip { + class func pathWith(rect: CGRect, frame: CGRect, direction: PopTipDirection, arrowSize: CGSize, arrowPosition: CGPoint, arrowRadius: CGFloat, borderWidth: CGFloat = 0, radius: CGFloat = 0) -> UIBezierPath { + var path = UIBezierPath() + var baloonFrame = CGRect.zero + + switch direction { + case .none: + baloonFrame = CGRect(x: borderWidth, y: borderWidth, width: frame.width - borderWidth * 2, height: frame.height - borderWidth * 2) + path = UIBezierPath(roundedRect: baloonFrame, cornerRadius: radius) + case .down: + baloonFrame = CGRect(x: 0, y: arrowSize.height, width: rect.width - borderWidth * 2, height: rect.height - arrowSize.height - borderWidth * 2) + + let arrowStartPoint = CGPoint(x: arrowPosition.x - arrowSize.width / 2, y: arrowPosition.y + arrowSize.height) + let arrowEndPoint = CGPoint(x: arrowPosition.x + arrowSize.width / 2, y: arrowPosition.y + arrowSize.height) + let arrowVertex = arrowPosition + let cornerPoint = self.roundCornerCircleCenter(start: arrowStartPoint, vertex: arrowVertex, end: arrowEndPoint, radius: arrowRadius) + + // 1: Arrow starting point + path.move(to: CGPoint(x: arrowStartPoint.x, y: arrowStartPoint.y)) + // 2: Arrow vertex arc + path.addArc(withCenter: cornerPoint.center, radius: arrowRadius, startAngle: cornerPoint.startAngle, endAngle: cornerPoint.endAngle, clockwise: true) + // 3: End drawing arrow + path.addLine(to: CGPoint(x: arrowEndPoint.x, y: arrowEndPoint.y)) + // 4: Top right line + path.addLine(to: CGPoint(x: baloonFrame.width - radius, y: baloonFrame.minY)) + // 5: Top right arc + path.addArc(withCenter: CGPoint(x: baloonFrame.width - radius, y: baloonFrame.minY + radius), radius:radius, startAngle: CGFloat.pi * 1.5, endAngle: 0, clockwise:true) + // 6: Right line + path.addLine(to: CGPoint(x: baloonFrame.width, y: baloonFrame.maxY - radius - borderWidth)) + // 7: Bottom right arc + path.addArc(withCenter: CGPoint(x: baloonFrame.maxX - radius, y: baloonFrame.maxY - radius), radius:radius, startAngle: 0, endAngle: CGFloat.pi / 2, clockwise: true) + // 8: Bottom line + path.addLine(to: CGPoint(x: baloonFrame.minX + radius + borderWidth, y: baloonFrame.maxY)) + // 9: Bottom left arc + path.addArc(withCenter: CGPoint(x: borderWidth + radius, y: baloonFrame.maxY - radius), radius:radius, startAngle: CGFloat.pi / 2, endAngle: CGFloat.pi, clockwise: true) + // 10: Left line + path.addLine(to: CGPoint(x: borderWidth, y: baloonFrame.minY + radius + borderWidth)) + // 11: Top left arc + path.addArc(withCenter: CGPoint(x: borderWidth + radius, y: baloonFrame.minY + radius), radius:radius, startAngle: CGFloat.pi, endAngle: CGFloat.pi * 1.5, clockwise: true) + // 13: Close path + path.close() + + case .up: + baloonFrame = CGRect(x: 0, y: 0, width: rect.size.width - borderWidth * 2, height: rect.size.height - arrowSize.height - borderWidth * 2) + + let arrowStartPoint = CGPoint(x: arrowPosition.x + arrowSize.width/2, y: arrowPosition.y - arrowSize.height) + let arrowEndPoint = CGPoint(x: arrowPosition.x - arrowSize.width/2, y: arrowPosition.y - arrowSize.height) + let arrowVertex = arrowPosition + let cornerPoint = self.roundCornerCircleCenter(start: arrowStartPoint, vertex: arrowVertex, end: arrowEndPoint, radius: arrowRadius) + + // 1: Arrow starting point + path.move(to: CGPoint(x: arrowStartPoint.x, y: arrowStartPoint.y)) + // 2: Arrow vertex arc + path.addArc(withCenter: cornerPoint.center, radius: arrowRadius, startAngle: cornerPoint.startAngle, endAngle: cornerPoint.endAngle, clockwise: true) + // 3: End drawing arrow + path.addLine(to: CGPoint(x: arrowEndPoint.x, y: arrowEndPoint.y)) + // 4: Bottom left line + path.addLine(to: CGPoint(x: baloonFrame.minX + radius + borderWidth, y: baloonFrame.maxY)) + // 5: Bottom left arc + path.addArc(withCenter: CGPoint(x: borderWidth + radius, y: baloonFrame.maxY - radius), radius:radius, startAngle: CGFloat.pi / 2, endAngle: CGFloat.pi, clockwise: true) + // 6: Left line + path.addLine(to: CGPoint(x: borderWidth, y: baloonFrame.minY + radius + borderWidth)) + // 7: Top left arc + path.addArc(withCenter: CGPoint(x: baloonFrame.minX + radius + borderWidth, y: baloonFrame.minY + radius), radius:radius, startAngle: CGFloat.pi, endAngle: CGFloat.pi * 1.5, clockwise: true) + // 8: Top line + path.addLine(to: CGPoint(x: baloonFrame.width - radius, y: baloonFrame.minY)) + // 9: Top right arc + path.addArc(withCenter: CGPoint(x: baloonFrame.width - radius, y: baloonFrame.minY + radius), radius:radius, startAngle: CGFloat.pi * 1.5, endAngle: 0, clockwise:true) + // 10: Right line + path.addLine(to: CGPoint(x: baloonFrame.width, y: baloonFrame.maxY - radius - borderWidth)) + // 11: Bottom right arc + path.addArc(withCenter: CGPoint(x: baloonFrame.maxX - radius, y: baloonFrame.maxY - radius), radius:radius, startAngle: 0, endAngle: CGFloat.pi / 2, clockwise: true) + // 12: Close path + path.close() + + case .left: + baloonFrame = CGRect(x: 0, y: 0, width: rect.size.width - arrowSize.height - borderWidth * 2, height: rect.size.height - borderWidth * 2) + + let arrowStartPoint = CGPoint(x: arrowPosition.x - arrowSize.height, y: arrowPosition.y - arrowSize.width / 2) + let arrowEndPoint = CGPoint(x: arrowPosition.x - arrowSize.height, y: arrowPosition.y + arrowSize.width / 2) + let arrowVertex = arrowPosition + let cornerPoint = self.roundCornerCircleCenter(start: arrowStartPoint, vertex: arrowVertex, end: arrowEndPoint, radius: arrowRadius) + + // 1: Arrow starting point + path.move(to: CGPoint(x: arrowStartPoint.x, y: arrowStartPoint.y)) + // 2: Arrow vertex arc + path.addArc(withCenter: cornerPoint.center, radius: arrowRadius, startAngle: cornerPoint.startAngle, endAngle: cornerPoint.endAngle, clockwise: true) + // 3: End drawing arrow + path.addLine(to: CGPoint(x: arrowEndPoint.x, y: arrowEndPoint.y)) + // 4: Right bottom line + path.addLine(to: CGPoint(x: baloonFrame.width, y: baloonFrame.maxY - radius - borderWidth)) + // 5: Bottom right arc + path.addArc(withCenter: CGPoint(x: baloonFrame.maxX - radius, y: baloonFrame.maxY - radius), radius:radius, startAngle: 0, endAngle: CGFloat.pi / 2, clockwise: true) + // 6: Bottom line + path.addLine(to: CGPoint(x: baloonFrame.minX + radius + borderWidth, y: baloonFrame.maxY)) + // 7: Bottom left arc + path.addArc(withCenter: CGPoint(x: borderWidth + radius, y: baloonFrame.maxY - radius), radius:radius, startAngle: CGFloat.pi / 2, endAngle: CGFloat.pi, clockwise: true) + // 8: Left line + path.addLine(to: CGPoint(x: borderWidth, y: baloonFrame.minY + radius + borderWidth)) + // 9: Top left arc + path.addArc(withCenter: CGPoint(x: borderWidth + radius, y: baloonFrame.minY + radius + borderWidth), radius:radius, startAngle: CGFloat.pi, endAngle: CGFloat.pi * 1.5, clockwise: true) + // 10: Top line + path.addLine(to: CGPoint(x: baloonFrame.width - radius, y: baloonFrame.minY + borderWidth)) + // 11: Top right arc + path.addArc(withCenter: CGPoint(x: baloonFrame.width - radius, y: baloonFrame.minY + radius + borderWidth), radius:radius, startAngle: CGFloat.pi * 1.5, endAngle: 0, clockwise:true) + // 12: Close path + path.close() + + case .right: + baloonFrame = CGRect(x: arrowSize.height, y: 0, width: rect.size.width - arrowSize.height - borderWidth * 2, height: rect.size.height - borderWidth * 2) + + let arrowStartPoint = CGPoint(x: arrowPosition.x + arrowSize.height, y: arrowPosition.y + arrowSize.width / 2) + let arrowEndPoint = CGPoint(x: arrowPosition.x + arrowSize.height, y: arrowPosition.y - arrowSize.width / 2) + let arrowVertex = arrowPosition + let cornerPoint = self.roundCornerCircleCenter(start: arrowStartPoint, vertex: arrowVertex, end: arrowEndPoint, radius: arrowRadius) + + // 1: Arrow starting point + path.move(to: CGPoint(x: arrowStartPoint.x, y: arrowStartPoint.y)) + // 2: Arrow vertex arc + path.addArc(withCenter: cornerPoint.center, radius: arrowRadius, startAngle: cornerPoint.startAngle, endAngle: cornerPoint.endAngle, clockwise: true) + // 3: End drawing arrow + path.addLine(to: CGPoint(x: arrowEndPoint.x, y: arrowEndPoint.y)) + // 6: Left top line + path.addLine(to: CGPoint(x: baloonFrame.minX, y: baloonFrame.minY + radius + borderWidth)) + // 7: Top left arc + path.addArc(withCenter: CGPoint(x: baloonFrame.minX + radius, y: baloonFrame.minY + radius + borderWidth), radius:radius, startAngle: CGFloat.pi, endAngle: CGFloat.pi * 1.5, clockwise: true) + // 8: Top line + path.addLine(to: CGPoint(x: baloonFrame.width - radius, y: baloonFrame.minY + borderWidth)) + // 9: Top right arc + path.addArc(withCenter: CGPoint(x: baloonFrame.maxX - radius, y: baloonFrame.minY + radius + borderWidth), radius:radius, startAngle: CGFloat.pi * 1.5, endAngle: 0, clockwise:true) + // 10: Right line + path.addLine(to: CGPoint(x: baloonFrame.maxX, y: baloonFrame.maxY - radius)) + // 11: Bottom right arc + path.addArc(withCenter: CGPoint(x: baloonFrame.maxX - radius, y: baloonFrame.maxY - radius), radius:radius, startAngle: 0, endAngle: CGFloat.pi / 2, clockwise: true) + // 4: Bottom line + path.addLine(to: CGPoint(x: baloonFrame.minX + radius, y: baloonFrame.maxY )) + // 5: Bottom left arc + path.addArc(withCenter: CGPoint(x: baloonFrame.minX + radius, y: baloonFrame.maxY - radius), radius:radius, startAngle: CGFloat.pi / 2, endAngle: CGFloat.pi, clockwise: true) + path.close() + } + + return path + } + + private class func roundCornerCircleCenter(start: CGPoint, vertex: CGPoint, end: CGPoint, radius: CGFloat) -> CornerPoint { + + let firstLineAngle: CGFloat = atan2(vertex.y - start.y , vertex.x - start.x) + let secondLineAngle: CGFloat = atan2(end.y - vertex.y , end.x - vertex.x) + + let firstLineOffset = CGVector(dx: -sin(firstLineAngle) * radius, dy: cos(firstLineAngle) * radius) + let secondLineOffset = CGVector(dx: -sin(secondLineAngle) * radius, dy: cos(secondLineAngle) * radius) + + let x1 = start.x + firstLineOffset.dx + let y1 = start.y + firstLineOffset.dy + + let x2 = vertex.x + firstLineOffset.dx + let y2 = vertex.y + firstLineOffset.dy + + let x3 = vertex.x + secondLineOffset.dx + let y3 = vertex.y + secondLineOffset.dy + + let x4 = end.x + secondLineOffset.dx + let y4 = end.y + secondLineOffset.dy + + let intersectionX = ((x1 * y2 - y1 * x2) * (x3 - x4) - (x1 - x2) * (x3 * y4 - y3 * x4)) / ((x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4)) + let intersectionY = ((x1 * y2 - y1 * x2) * (y3 - y4) - (y1 - y2) * (x3 * y4 - y3 * x4)) / ((x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4)) + + return CornerPoint(center: CGPoint(x: intersectionX, y: intersectionY), + startAngle: firstLineAngle - CGFloat.pi / 2, + endAngle: secondLineAngle - CGFloat.pi / 2) + } +} + diff --git a/Santander-Test/Pods/AMPopTip/Source/PopTip+Transitions.swift b/Santander-Test/Pods/AMPopTip/Source/PopTip+Transitions.swift new file mode 100644 index 00000000..72b132a3 --- /dev/null +++ b/Santander-Test/Pods/AMPopTip/Source/PopTip+Transitions.swift @@ -0,0 +1,131 @@ +// +// PopTip.swift +// AMPopTip +// +// Created by Andrea Mazzini on 01/05/2017. +// Copyright © 2017 Andrea Mazzini. All rights reserved. +// + +import UIKit + +public extension PopTip { + + /// Triggers the chosen entrance animation + /// + /// - Parameter completion: the completion handler + public func performEntranceAnimation(completion: @escaping () -> Void) { + switch entranceAnimation { + case .scale: + entranceScale(completion: completion) + case .transition: + entranceTransition(completion: completion) + case .fadeIn: + entranceFadeIn(completion: completion) + case .custom: + if let backgroundMask = backgroundMask { + containerView?.addSubview(backgroundMask) + } + containerView?.addSubview(self) + entranceAnimationHandler?(completion) + case .none: + if let backgroundMask = backgroundMask { + containerView?.addSubview(backgroundMask) + } + containerView?.addSubview(self) + completion() + } + } + + /// Triggers the chosen exit animation + /// + /// - Parameter completion: the completion handler + public func performExitAnimation(completion: @escaping () -> Void) { + switch exitAnimation { + case .scale: + exitScale(completion: completion) + case .fadeOut: + exitFadeOut(completion: completion) + case .custom: + exitAnimationHandler?(completion) + case .none: + completion() + } + } + + private func entranceTransition(completion: @escaping () -> Void) { + transform = CGAffineTransform(scaleX: 0.6, y: 0.6) + switch direction { + case .up: + transform = transform.translatedBy(x: 0, y: -from.origin.y) + case .down, .none: + transform = transform.translatedBy(x: 0, y: (containerView?.frame.height ?? 0) - from.origin.y) + case .left: + transform = transform.translatedBy(x: from.origin.x, y: 0) + case .right: + transform = transform.translatedBy(x: (containerView?.frame.width ?? 0) - from.origin.x, y: 0) + } + if let backgroundMask = backgroundMask { + containerView?.addSubview(backgroundMask) + } + containerView?.addSubview(self) + + UIView.animate(withDuration: animationIn, delay: delayIn, usingSpringWithDamping: 0.6, initialSpringVelocity: 1.5, options: [.curveEaseInOut, .beginFromCurrentState], animations: { + self.transform = .identity + self.backgroundMask?.alpha = 1 + }) { (_) in + completion() + } + } + + private func entranceScale(completion: @escaping () -> Void) { + transform = CGAffineTransform(scaleX: 0, y: 0) + if let backgroundMask = backgroundMask { + containerView?.addSubview(backgroundMask) + } + containerView?.addSubview(self) + + UIView.animate(withDuration: animationIn, delay: delayIn, usingSpringWithDamping: 0.6, initialSpringVelocity: 1.5, options: [.curveEaseInOut, .beginFromCurrentState], animations: { + self.transform = .identity + self.backgroundMask?.alpha = 1 + }) { (_) in + completion() + } + } + + private func entranceFadeIn(completion: @escaping () -> Void) { + if let backgroundMask = backgroundMask { + containerView?.addSubview(backgroundMask) + } + containerView?.addSubview(self) + + alpha = 0 + UIView.animate(withDuration: animationIn, delay: delayIn, options: [.curveEaseInOut, .beginFromCurrentState], animations: { + self.alpha = 1 + self.backgroundMask?.alpha = 1 + }) { (_) in + completion() + } + } + + private func exitScale(completion: @escaping () -> Void) { + transform = .identity + + UIView.animate(withDuration: animationOut, delay: delayOut, options: [.curveEaseInOut, .beginFromCurrentState], animations: { + self.transform = CGAffineTransform(scaleX: 0.0001, y: 0.0001) + self.backgroundMask?.alpha = 0 + }) { (_) in + completion() + } + } + + private func exitFadeOut(completion: @escaping () -> Void) { + alpha = 1 + + UIView.animate(withDuration: animationOut, delay: delayOut, options: [.curveEaseInOut, .beginFromCurrentState], animations: { + self.alpha = 0 + self.backgroundMask?.alpha = 0 + }) { (_) in + completion() + } + } +} diff --git a/Santander-Test/Pods/AMPopTip/Source/PopTip.swift b/Santander-Test/Pods/AMPopTip/Source/PopTip.swift new file mode 100644 index 00000000..7d92c41e --- /dev/null +++ b/Santander-Test/Pods/AMPopTip/Source/PopTip.swift @@ -0,0 +1,832 @@ +// +// PopTip.swift +// AMPopTip +// +// Created by Andrea Mazzini on 01/05/2017. +// Copyright © 2017 Andrea Mazzini. All rights reserved. +// + +import UIKit + +/// Enum that specifies the direction of the poptip +public enum PopTipDirection { + /// Up, the poptip will appear above the element, arrow pointing down + case up + /// Down, the poptip will appear below the element, arrow pointing up + case down + /// Left, the poptip will appear on the left of the element, arrow pointing right + case left + /// Right, the poptip will appear on the right of the element, arrow pointing left + case right + /// None, the poptip will appear above the element with no arrow + case none +} + +/** Enum that specifies the type of entrance animation. Entrance animations are performed while showing the poptip. + + - `scale`: The poptip scales from 0% to 100% + - `transitions`: The poptip moves in position from the edge of the screen + - `fadeIn`: The poptip fade in + - `custom`: The Animation is provided by the user + - `none`: No Animation + */ +public enum PopTipEntranceAnimation { + /// The poptip scales from 0% to 100% + case scale + /// The poptip moves in position from the edge of the screen + case transition + /// The poptip fades in + case fadeIn + /// The Animation is provided by the user + case custom + /// No Animation + case none +} + +/** Enum that specifies the type of entrance animation. Entrance animations are performed while showing the poptip. + + - `scale`: The poptip scales from 100% to 0% + - `fadeOut`: The poptip fade out + - `custom`: The Animation is provided by the user + - `none`: No Animation + */ +public enum PopTipExitAnimation { + /// The poptip scales from 100% to 0% + case scale + /// The poptip fades out + case fadeOut + /// The Animation is provided by the user + case custom + /// No Animation + case none +} + +/** Enum that specifies the type of action animation. Action animations are performed after the poptip is visible and the entrance animation completed. + + - `bounce(offset: CGFloat?)`: The poptip bounces following its direction. The bounce offset can be provided optionally + - `float(offset: CGFloat?)`: The poptip floats in place. The float offset can be provided optionally + - `pulse(offset: CGFloat?)`: The poptip pulsates by changing its size. The maximum amount of pulse increase can be provided optionally + - `none`: No animation + */ +public enum PopTipActionAnimation { + /// The poptip bounces following its direction. The bounce offset can be provided optionally + case bounce(CGFloat?) + /// The poptip floats in place. The float offset can be provided optionally. Defaults to 8 points + case float(offsetX: CGFloat?, offsetY: CGFloat?) + /// The poptip pulsates by changing its size. The maximum amount of pulse increase can be provided optionally. Defaults to 1.1 (110% of the original size) + case pulse(CGFloat?) + /// No animation + case none +} + +private let DefaultBounceOffset = CGFloat(8) +private let DefaultFloatOffset = CGFloat(8) +private let DefaultPulseOffset = CGFloat(1.1) + +open class PopTip: UIView { + /// The text displayed by the poptip. Can be updated once the poptip is visible + open var text: String? { + didSet { + accessibilityLabel = text + setNeedsLayout() + } + } + /// The `UIFont` used in the poptip's text + open var font = UIFont.systemFont(ofSize: UIFont.systemFontSize) + /// The `UIColor` of the text + @objc open dynamic var textColor = UIColor.white + /// The `NSTextAlignment` of the text + @objc open dynamic var textAlignment = NSTextAlignment.center + /// The `UIColor` for the poptip's background + @objc open dynamic var bubbleColor = UIColor.red + /// The `UIColor` for the poptip's bordedr + @objc open dynamic var borderColor = UIColor.clear + /// The width for the poptip's border + @objc open dynamic var borderWidth = CGFloat(0.0) + /// The `Double` with the poptip's border radius + @objc open dynamic var cornerRadius = CGFloat(4.0) + /// The `BOOL` that determines wether the poptip is rounded. If set to `true` the radius will equal `frame.height / 2` + @objc open dynamic var isRounded = false + /// The `UIColor` with the poptip's shadow color + @objc open dynamic var shadowColor: UIColor = .clear + /// The `CGSize` with the poptip's shadow offset + @objc open dynamic var shadowOffset: CGSize = .zero + /// The `Float` with the poptip's shadow radius + @objc open dynamic var shadowRadius: Float = 0 + /// The `Float` with the poptip's shadow opacity + @objc open dynamic var shadowOpacity: Float = 0 + /// Holds the offset between the poptip and origin + @objc open dynamic var offset = CGFloat(0.0) + /// Holds the CGFloat with the padding used for the inner text + @objc open dynamic var padding = CGFloat(6.0) + /// Holds the insets setting for padding different direction + @objc open dynamic var edgeInsets = UIEdgeInsets.zero + /// Holds the CGSize with the width and height of the arrow + @objc open dynamic var arrowSize = CGSize(width: 8, height: 8) + /// CGfloat value that determines the radius of the vertex for the pointing arrow + @objc open dynamic var arrowRadius = CGFloat(0.0) + /// Holds the NSTimeInterval with the duration of the revealing animation + @objc open dynamic var animationIn: TimeInterval = 0.4 + /// Holds the NSTimeInterval with the duration of the disappearing animation + @objc open dynamic var animationOut: TimeInterval = 0.2 + /// Holds the NSTimeInterval with the delay of the revealing animation + @objc open dynamic var delayIn: TimeInterval = 0 + /// Holds the NSTimeInterval with the delay of the disappearing animation + @objc open dynamic var delayOut: TimeInterval = 0 + /// Holds the enum with the type of entrance animation (triggered once the poptip is shown) + open var entranceAnimation = PopTipEntranceAnimation.scale + /// Holds the enum with the type of exit animation (triggered once the poptip is dismissed) + open var exitAnimation = PopTipExitAnimation.scale + /// Holds the enum with the type of action animation (triggered once the poptip is shown) + open var actionAnimation = PopTipActionAnimation.none + /// Holds the NSTimeInterval with the duration of the action animation + @objc open dynamic var actionAnimationIn: TimeInterval = 1.2 + /// Holds the NSTimeInterval with the duration of the action stop animation + @objc open dynamic var actionAnimationOut: TimeInterval = 1.0 + /// Holds the NSTimeInterval with the delay of the action animation + @objc open dynamic var actionDelayIn: TimeInterval = 0 + /// Holds the NSTimeInterval with the delay of the action animation stop + @objc open dynamic var actionDelayOut: TimeInterval = 0 + /// CGfloat value that determines the leftmost margin from the screen + @objc open dynamic var edgeMargin = CGFloat(0.0) + /// Holds the offset between the bubble and origin + @objc open dynamic var bubbleOffset = CGFloat(0.0) + /// Color of the mask that is going to dim the background when the pop up is visible + @objc open dynamic var maskColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.6) + /// Flag to enable or disable background mask + @objc open dynamic var shouldShowMask = false + /// Flag to enable or disable the checks that make sure that the tip does not extend over the container + @objc open dynamic var constrainInContainerView = true + /// Holds the CGrect with the rect the tip is pointing to + open var from = CGRect.zero { + didSet { + setup() + } + } + /// Holds the readonly BOOL with the poptip visiblity. The poptip is considered visible as soon as + /// the animation is complete, and invisible when the subview is removed from its parent. + open var isVisible: Bool { get { return self.superview != nil } } + /// A boolean value that determines whether the poptip is dismissed on tap. + @objc open dynamic var shouldDismissOnTap = true + /// A boolean value that determines whether to dismiss when tapping outside the poptip. + @objc open dynamic var shouldDismissOnTapOutside = true + /// A boolean value that determines whether to dismiss when swiping outside the poptip. + @objc open dynamic var shouldDismissOnSwipeOutside = false + /// A boolean value that determines if the action animation should start automatically when the poptip is shown + @objc open dynamic var startActionAnimationOnShow = true + /// A direction that determines what swipe direction to dismiss when swiping outside the poptip. + /// The default direction is `right` + open var swipeRemoveGestureDirection = UISwipeGestureRecognizer.Direction.right { + didSet { + swipeGestureRecognizer?.direction = swipeRemoveGestureDirection + } + } + /// A block that will be fired when the user taps the poptip. + open var tapHandler: ((PopTip) -> Void)? + /// A block that will be fired when the user taps outside the poptip. + open var tapOutsideHandler: ((PopTip) -> Void)? + /// A block that will be fired when the user swipes outside the poptip. + open var swipeOutsideHandler: ((PopTip) -> Void)? + /// A block that will be fired when the poptip appears. + open var appearHandler: ((PopTip) -> Void)? + /// A block that will be fired when the poptip is dismissed. + open var dismissHandler: ((PopTip) -> Void)? + /// A block that handles the entrance animation of the poptip. Should be provided + /// when using a `PopTipActionAnimationCustom` entrance animation type. + /// Please note that the poptip will be automatically added as a subview before firing the block + /// Remember to call the completion block provided + open var entranceAnimationHandler: ((@escaping () -> Void) -> Void)? + /// A block block that handles the exit animation of the poptip. Should be provided + /// when using a `AMPopTipActionAnimationCustom` exit animation type. + /// Remember to call the completion block provided + open var exitAnimationHandler: ((@escaping () -> Void) -> Void)? + /// The CGPoint originating the arrow. Read only. + open private(set) var arrowPosition = CGPoint.zero + /// A read only reference to the view containing the poptip + open private(set) weak var containerView: UIView? + /// The direction from which the poptip is shown. Read only. + open private(set) var direction = PopTipDirection.none + /// Holds the readonly BOOL with the poptip animation state. + open private(set) var isAnimating: Bool = false + /// The view that dims the background (including the button that triggered PopTip. + /// The mask by appears with fade in effect only. + open private(set) var backgroundMask: UIView? + /// The tap gesture recognizer. Read-only. + open private(set) var tapGestureRecognizer: UITapGestureRecognizer? + fileprivate var attributedText: NSAttributedString? + fileprivate var paragraphStyle = NSMutableParagraphStyle() + fileprivate var tapRemoveGestureRecognizer: UITapGestureRecognizer? + fileprivate var swipeGestureRecognizer: UISwipeGestureRecognizer? + fileprivate var dismissTimer: Timer? + fileprivate var textBounds = CGRect.zero + fileprivate var maxWidth = CGFloat(0) + fileprivate var customView: UIView? + fileprivate var isApplicationInBackground: Bool? + fileprivate var label: UILabel = { + let label = UILabel() + label.numberOfLines = 0 + return label + }() + private var shouldBounce = false + + /// Setup a poptip oriented vertically (direction .up or .down). Returns the bubble frame and the arrow position + /// + /// - Returns: a tuple with the bubble frame and the arrow position + internal func setupVertically() -> (CGRect, CGPoint) { + guard let containerView = containerView else { return (CGRect.zero, CGPoint.zero) } + + var frame = CGRect.zero + let offset = self.offset * (direction == .up ? -1 : 1) + + frame.size = CGSize(width: textBounds.width + padding * 2 + edgeInsets.horizontal, height: textBounds.height + padding * 2 + edgeInsets.vertical + arrowSize.height) + var x = from.origin.x + from.width / 2 - frame.width / 2 + if x < 0 { x = edgeMargin } + if constrainInContainerView && (x + frame.width > containerView.bounds.width) { + x = containerView.bounds.width - frame.width - edgeMargin + } + + if direction == .down { + frame.origin = CGPoint(x: x, y: from.origin.y + from.height + offset) + } else { + frame.origin = CGPoint(x: x, y: from.origin.y - frame.height + offset) + } + + // Make sure that the bubble doesn't leave the boundaries of the view + var arrowPosition = CGPoint( + x: from.origin.x + from.width / 2 - frame.origin.x, + y: (direction == .up) ? frame.height : from.origin.y + from.height - frame.origin.y + offset + ) + + if bubbleOffset > 0 && arrowPosition.x < bubbleOffset { + bubbleOffset = arrowPosition.x - arrowSize.width + } else if bubbleOffset < 0 && frame.width < abs(bubbleOffset) { + bubbleOffset = -(arrowPosition.x - arrowSize.width) + } else if bubbleOffset < 0 && (frame.origin.x - arrowPosition.x) < abs(bubbleOffset) { + bubbleOffset = -(arrowSize.width + edgeMargin) + } + + if constrainInContainerView { + // Make sure that the bubble doesn't leave the boundaries of the view + let leftSpace = frame.origin.x - containerView.frame.origin.x + let rightSpace = containerView.frame.width - leftSpace - frame.width + + if bubbleOffset < 0 && leftSpace < abs(bubbleOffset) { + bubbleOffset = -leftSpace + edgeMargin + } else if bubbleOffset > 0 && rightSpace < bubbleOffset { + bubbleOffset = rightSpace - edgeMargin + } + } + frame.origin.x += bubbleOffset + frame.size = CGSize(width: frame.width + borderWidth * 2, height: frame.height + borderWidth * 2) + + // Only when the tip is not constrained, make sure to center the frame if the containerView is smaller than the tip + if containerView.frame.width < frame.width, !constrainInContainerView { + frame.origin.x = -frame.width / 2 + containerView.frame.width / 2 + arrowPosition.x += frame.width / 2 - containerView.frame.width / 2 + } + + return (frame, arrowPosition) + } + + /// Setup a poptip oriented horizontally (direction .left or .right). Returns the bubble frame and the arrow position + /// + /// - Returns: a tuple with the bubble frame and the arrow position + internal func setupHorizontally() -> (CGRect, CGPoint) { + guard let containerView = containerView else { return (CGRect.zero, CGPoint.zero) } + + var frame = CGRect.zero + let offset = self.offset * (direction == .left ? -1 : 1) + frame.size = CGSize(width: textBounds.width + padding * 2 + edgeInsets.horizontal + arrowSize.height, height: textBounds.height + padding * 2 + edgeInsets.vertical) + + let x = direction == .left ? from.origin.x - frame.width + offset : from.origin.x + from.width + offset + var y = from.origin.y + from.height / 2 - frame.height / 2 + + if y < 0 { y = edgeMargin } + // Make sure we stay in the view limits except if it has scroll then it must be inside contentview limits not the view + if let containerScrollView = containerView as? UIScrollView { + if y + frame.height > containerScrollView.contentSize.height { + y = containerScrollView.contentSize.height - frame.height - edgeMargin + } + } else { + if y + frame.height > containerView.bounds.height && constrainInContainerView { + y = containerView.bounds.height - frame.height - edgeMargin + } + } + frame.origin = CGPoint(x: x, y: y) + + // Make sure that the bubble doesn't leave the boundaries of the view + let arrowPosition = CGPoint( + x: direction == .left ? from.origin.x - frame.origin.x + offset : from.origin.x + from.width - frame.origin.x + offset, + y: from.origin.y + from.height / 2 - frame.origin.y + ) + + if bubbleOffset > 0 && arrowPosition.y < bubbleOffset { + bubbleOffset = arrowPosition.y - arrowSize.width + } else if bubbleOffset < 0 && frame.height < abs(bubbleOffset) { + bubbleOffset = -(arrowPosition.y - arrowSize.height) + } + + if constrainInContainerView { + let topSpace = frame.origin.y - containerView.frame.origin.y + let bottomSpace = containerView.frame.height - topSpace - frame.height + + if bubbleOffset < 0 && topSpace < abs(bubbleOffset) { + bubbleOffset = -topSpace + edgeMargin + } else if bubbleOffset > 0 && bottomSpace < bubbleOffset { + bubbleOffset = bottomSpace - edgeMargin + } + } + + frame.origin.y += bubbleOffset + frame.size = CGSize(width: frame.width + borderWidth * 2, height: frame.height + borderWidth * 2) + + return (frame, arrowPosition) + } + + /// Checks if the rect with positioning `.none` is inside the container + internal func rectContained(rect: CGRect) -> CGRect { + guard let containerView = containerView, constrainInContainerView else { return rect } + + var finalRect = rect + + // The `.none` positioning implies a rect with the origin in the middle of the poptip + if (rect.origin.x) < containerView.frame.origin.x { + finalRect.origin.x = edgeMargin + } + if (rect.origin.y) < containerView.frame.origin.y { + finalRect.origin.y = edgeMargin + } + if (rect.origin.x + rect.width) > (containerView.frame.origin.x + containerView.frame.width) { + finalRect.origin.x = containerView.frame.origin.x + containerView.frame.width - rect.width - edgeMargin + } + if (rect.origin.y + rect.height) > (containerView.frame.origin.y + containerView.frame.height) { + finalRect.origin.y = containerView.frame.origin.y + containerView.frame.height - rect.height - edgeMargin + } + + return finalRect + } + + fileprivate func textBounds(for text: String?, attributedText: NSAttributedString?, view: UIView?, with font: UIFont, padding: CGFloat, edges: UIEdgeInsets, in maxWidth: CGFloat) -> CGRect { + var bounds = CGRect.zero + if let text = text { + bounds = NSString(string: text).boundingRect(with: CGSize(width: maxWidth, height: CGFloat.infinity), options: .usesLineFragmentOrigin, attributes: [NSAttributedString.Key.font: font], context: nil) + } + if let attributedText = attributedText { + bounds = attributedText.boundingRect(with: CGSize(width: maxWidth, height: CGFloat.infinity), options: .usesLineFragmentOrigin, context: nil) + } + if let view = view { + bounds = view.frame + } + bounds.origin = CGPoint(x: padding + edges.left, y: padding + edges.top) + return bounds.integral + } + + fileprivate func setup() { + guard let containerView = containerView else { return } + + var rect = CGRect.zero + backgroundColor = .clear + + if direction == .left { + maxWidth = CGFloat.minimum(maxWidth, from.origin.x - padding * 2 - edgeInsets.horizontal - arrowSize.width) + } + if direction == .right { + maxWidth = CGFloat.minimum(maxWidth, containerView.bounds.width - from.origin.x - from.width - padding * 2 - edgeInsets.horizontal - arrowSize.width) + } + + textBounds = textBounds(for: text, attributedText: attributedText, view: customView, with: font, padding: padding, edges: edgeInsets, in: maxWidth) + + switch direction { + case .up: + let dimensions = setupVertically() + rect = dimensions.0 + arrowPosition = dimensions.1 + let anchor = arrowPosition.x / rect.size.width + layer.anchorPoint = CGPoint(x: anchor, y: 1) + layer.position = CGPoint(x: layer.position.x + rect.width * anchor, y: layer.position.y + rect.height / 2) + case .down: + let dimensions = setupVertically() + rect = dimensions.0 + arrowPosition = dimensions.1 + let anchor = arrowPosition.x / rect.size.width + textBounds.origin = CGPoint(x: textBounds.origin.x, y: textBounds.origin.y + arrowSize.height) + layer.anchorPoint = CGPoint(x: anchor, y: 0) + layer.position = CGPoint(x: layer.position.x + rect.width * anchor, y: layer.position.y - rect.height / 2) + case .left: + let dimensions = setupHorizontally() + rect = dimensions.0 + arrowPosition = dimensions.1 + let anchor = arrowPosition.y / rect.height + layer.anchorPoint = CGPoint(x: 1, y: anchor) + layer.position = CGPoint(x: layer.position.x - rect.width / 2, y: layer.position.y + rect.height * anchor) + case .right: + let dimensions = setupHorizontally() + rect = dimensions.0 + arrowPosition = dimensions.1 + textBounds.origin = CGPoint(x: textBounds.origin.x + arrowSize.height, y: textBounds.origin.y) + let anchor = arrowPosition.y / rect.height + layer.anchorPoint = CGPoint(x: 0, y: anchor) + layer.position = CGPoint(x: layer.position.x + rect.width / 2, y: layer.position.y + rect.height * anchor) + case .none: + rect.size = CGSize(width: textBounds.width + padding * 2.0 + edgeInsets.horizontal + borderWidth * 2, height: textBounds.height + padding * 2.0 + edgeInsets.vertical + borderWidth * 2) + rect.origin = CGPoint(x: from.midX - rect.size.width / 2, y: from.midY - rect.height / 2) + rect = rectContained(rect: rect) + arrowPosition = CGPoint.zero + layer.anchorPoint = CGPoint(x: 0.5, y: 0.5) + layer.position = CGPoint(x: from.midX, y: from.midY) + } + + label.frame = textBounds + if label.superview == nil { + addSubview(label) + } + + frame = rect + + if let customView = customView { + customView.frame = textBounds + } + + if !shouldShowMask { + backgroundMask?.removeFromSuperview() + } else { + if backgroundMask == nil { + backgroundMask = UIView() + backgroundMask?.backgroundColor = maskColor + } + backgroundMask?.frame = containerView.bounds + } + + setNeedsDisplay() + + if tapGestureRecognizer == nil { + tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(PopTip.handleTap(_:))) + tapGestureRecognizer?.cancelsTouchesInView = false + self.addGestureRecognizer(tapGestureRecognizer!) + } + if shouldDismissOnTapOutside && tapRemoveGestureRecognizer == nil { + tapRemoveGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(PopTip.handleTapOutside(_:))) + } + if shouldDismissOnSwipeOutside && swipeGestureRecognizer == nil { + swipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(PopTip.handleSwipeOutside(_:))) + swipeGestureRecognizer?.direction = swipeRemoveGestureDirection + } + + if isApplicationInBackground == nil { + NotificationCenter.default.addObserver(self, selector: #selector(PopTip.handleApplicationActive), name: UIApplication.didBecomeActiveNotification, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(PopTip.handleApplicationResignActive), name: UIApplication.willResignActiveNotification, object: nil) + } + } + + /// Custom draw override + /// + /// - Parameter rect: the rect occupied by the view + open override func draw(_ rect: CGRect) { + if isRounded { + let showHorizontally = direction == .left || direction == .right + cornerRadius = (frame.size.height - (showHorizontally ? 0 : arrowSize.height)) / 2 + } + + let path = PopTip.pathWith(rect: rect, frame: frame, direction: direction, arrowSize: arrowSize, arrowPosition: arrowPosition, arrowRadius: arrowRadius, borderWidth: borderWidth, radius: cornerRadius) + + layer.shadowPath = path.cgPath + layer.shadowOpacity = shadowOpacity + layer.shadowRadius = CGFloat(shadowRadius) + layer.shadowOffset = shadowOffset + layer.shadowColor = shadowColor.cgColor + + bubbleColor.setFill() + path.fill() + + borderColor.setStroke() + path.lineWidth = borderWidth + path.stroke() + + paragraphStyle.alignment = textAlignment + + let titleAttributes: [NSAttributedString.Key : Any] = [ + NSAttributedString.Key.paragraphStyle: paragraphStyle, + NSAttributedString.Key.font: font, + NSAttributedString.Key.foregroundColor: textColor + ] + + if let text = text { + label.attributedText = NSAttributedString(string: text, attributes: titleAttributes) + } else if let text = attributedText { + label.attributedText = text + } else { + label.attributedText = nil + } + } + + /// Shows an animated poptip in a given view, from a given rectangle. The property `isVisible` will be `true` as soon as the poptip is added to the given view. + /// + /// - Parameters: + /// - text: The text to display + /// - direction: The direction of the poptip in relation to the element that generates it + /// - maxWidth: The maximum width of the poptip. If the poptip won't fit in the given space, this will be overridden. + /// - view: The view that will hold the poptip as a subview. + /// - frame: The originating frame. The poptip's arrow will point to the center of this frame. + /// - duration: Optional time interval that determines when the poptip will self-dismiss. + open func show(text: String, direction: PopTipDirection, maxWidth: CGFloat, in view: UIView, from frame: CGRect, duration: TimeInterval? = nil) { + resetView() + + attributedText = nil + self.text = text + accessibilityLabel = text + self.direction = direction + containerView = view + self.maxWidth = maxWidth + customView?.removeFromSuperview() + customView = nil + from = frame + + show(duration: duration) + } + + /// Shows an animated poptip in a given view, from a given rectangle. The property `isVisible` will be `true` as soon as the poptip is added to the given view. + /// + /// - Parameters: + /// - attributedText: The attributed string to display + /// - direction: The direction of the poptip in relation to the element that generates it + /// - maxWidth: The maximum width of the poptip. If the poptip won't fit in the given space, this will be overridden. + /// - view: The view that will hold the poptip as a subview. + /// - frame: The originating frame. The poptip's arrow will point to the center of this frame. + /// - duration: Optional time interval that determines when the poptip will self-dismiss. + open func show(attributedText: NSAttributedString, direction: PopTipDirection, maxWidth: CGFloat, in view: UIView, from frame: CGRect, duration: TimeInterval? = nil) { + resetView() + + text = nil + self.attributedText = attributedText + accessibilityLabel = attributedText.string + self.direction = direction + containerView = view + self.maxWidth = maxWidth + customView?.removeFromSuperview() + customView = nil + from = frame + + show(duration: duration) + } + + + /// Shows an animated poptip in a given view, from a given rectangle. The property `isVisible` will be `true` as soon as the poptip is added to the given view. + /// + /// - Parameters: + /// - customView: A custom view + /// - direction: The direction of the poptip in relation to the element that generates it + /// - view: The view that will hold the poptip as a subview. + /// - frame: The originating frame. The poptip's arrow will point to the center of this frame. + /// - duration: Optional time interval that determines when the poptip will self-dismiss. + open func show(customView: UIView, direction: PopTipDirection, in view: UIView, from frame: CGRect, duration: TimeInterval? = nil) { + resetView() + + text = nil + attributedText = nil + self.direction = direction + containerView = view + maxWidth = customView.frame.size.width + self.customView?.removeFromSuperview() + self.customView = customView + addSubview(customView) + customView.layoutIfNeeded() + from = frame + + show(duration: duration) + } + + /// Update the current text + /// + /// - Parameter text: the new text + open func update(text: String) { + self.text = text + updateBubble() + } + + /// Update the current text + /// + /// - Parameter attributedText: the new attributs string + open func update(attributedText: NSAttributedString) { + self.attributedText = attributedText + updateBubble() + } + + /// Update the current text + /// + /// - Parameter customView: the new custom view + open func update(customView: UIView) { + self.customView = customView + updateBubble() + } + + /// Hides the poptip and removes it from the view. The property `isVisible` will be set to `false` when the animation is complete and the poptip is removed from the parent view. + /// + /// - Parameter forced: Force the removal, ignoring running animations + @objc open func hide(forced: Bool = false) { + if !forced && isAnimating { + return + } + + resetView() + isAnimating = true + dismissTimer?.invalidate() + dismissTimer = nil + + if let gestureRecognizer = tapRemoveGestureRecognizer { + containerView?.removeGestureRecognizer(gestureRecognizer) + } + if let gestureRecognizer = swipeGestureRecognizer { + containerView?.removeGestureRecognizer(gestureRecognizer) + } + + let completion = { + self.customView?.removeFromSuperview() + self.customView = nil + self.dismissActionAnimation() + self.backgroundMask?.removeFromSuperview() + self.removeFromSuperview() + self.layer.removeAllAnimations() + self.transform = .identity + self.isAnimating = false + self.dismissHandler?(self) + } + + if isApplicationInBackground ?? false { + completion() + } else { + performExitAnimation(completion: completion) + } + } + + /// Makes the poptip perform the action indefinitely. The action animation calls for the user's attention after the poptip is shown + open func startActionAnimation() { + performActionAnimation() + } + + /// Stops the poptip action animation. Does nothing if the poptip wasn't animating in the first place. + /// + /// - Parameter completion: Optional completion block clled once the animation is completed + open func stopActionAnimation(_ completion: (() -> Void)? = nil) { + dismissActionAnimation(completion) + } + + fileprivate func resetView() { + CATransaction.begin() + layer.removeAllAnimations() + CATransaction.commit() + transform = .identity + shouldBounce = false + } + + fileprivate func updateBubble() { + stopActionAnimation { + UIView.animate(withDuration: 0.2, delay: 0, options: [.transitionCrossDissolve, .beginFromCurrentState], animations: { + self.setup() + }) { (_) in + self.startActionAnimation() + } + } + } + + fileprivate func show(duration: TimeInterval? = nil) { + isAnimating = true + dismissTimer?.invalidate() + + setNeedsLayout() + performEntranceAnimation { + if let tapRemoveGesture = self.tapRemoveGestureRecognizer { + self.containerView?.addGestureRecognizer(tapRemoveGesture) + } + if let swipeGesture = self.swipeGestureRecognizer { + self.containerView?.addGestureRecognizer(swipeGesture) + } + + self.appearHandler?(self) + if self.startActionAnimationOnShow { + self.performActionAnimation() + } + self.isAnimating = false + if let duration = duration { + self.dismissTimer = Timer.scheduledTimer(timeInterval: duration, target: self, selector: #selector(PopTip.hide), userInfo: nil, repeats: false) + } + } + } + + @objc fileprivate func handleTap(_ gesture: UITapGestureRecognizer) { + if shouldDismissOnTap { + hide() + } + tapHandler?(self) + } + + @objc fileprivate func handleTapOutside(_ gesture: UITapGestureRecognizer) { + if shouldDismissOnTapOutside { + hide() + } + tapOutsideHandler?(self) + } + + @objc fileprivate func handleSwipeOutside(_ gesture: UITapGestureRecognizer) { + if shouldDismissOnSwipeOutside { + hide() + } + swipeOutsideHandler?(self) + } + + @objc fileprivate func handleApplicationActive() { + isApplicationInBackground = false + } + + @objc fileprivate func handleApplicationResignActive() { + isApplicationInBackground = true + } + + fileprivate func performActionAnimation() { + switch actionAnimation { + case .bounce(let offset): + shouldBounce = true + bounceAnimation(offset: offset ?? DefaultBounceOffset) + case .float(let offsetX, let offsetY): + floatAnimation(offsetX: offsetX ?? DefaultFloatOffset, offsetY: offsetY ?? DefaultFloatOffset) + case .pulse(let offset): + pulseAnimation(offset: offset ?? DefaultPulseOffset) + case .none: + return + } + } + + fileprivate func dismissActionAnimation(_ completion: (() -> Void)? = nil) { + shouldBounce = false + UIView.animate(withDuration: actionAnimationOut / 2, delay: actionDelayOut, options: .beginFromCurrentState, animations: { + self.transform = .identity + }) { (_) in + self.layer.removeAllAnimations() + completion?() + } + } + + fileprivate func bounceAnimation(offset: CGFloat) { + var offsetX = CGFloat(0) + var offsetY = CGFloat(0) + switch direction { + case .up, .none: + offsetY = -offset + case .left: + offsetX = -offset + case .right: + offsetX = offset + case .down: + offsetY = offset + } + + UIView.animate(withDuration: actionAnimationIn / 10, delay: actionDelayIn, options: [.curveEaseIn, .allowUserInteraction, .beginFromCurrentState], animations: { + self.transform = CGAffineTransform(translationX: offsetX, y: offsetY) + }) { (completed) in + if completed { + UIView.animate(withDuration: self.actionAnimationIn - self.actionAnimationIn / 10, delay: 0, usingSpringWithDamping: 0.4, initialSpringVelocity: 1, options: [.allowUserInteraction, .beginFromCurrentState], animations: { + self.transform = .identity + }, completion: { (done) in + if self.shouldBounce && done { + self.bounceAnimation(offset: offset) + } + }) + } + } + } + + fileprivate func floatAnimation(offsetX: CGFloat, offsetY: CGFloat) { + var offsetX = offsetX + var offsetY = offsetY + switch direction { + case .up, .none: + offsetY = -offsetY + case .left: + offsetX = -offsetX + default: break + } + + UIView.animate(withDuration: actionAnimationIn / 2, delay: actionDelayIn, options: [.curveEaseInOut, .repeat, .autoreverse, .beginFromCurrentState, .allowUserInteraction], animations: { + self.transform = CGAffineTransform(translationX: offsetX, y: offsetY) + }, completion: nil) + } + + fileprivate func pulseAnimation(offset: CGFloat) { + UIView.animate(withDuration: actionAnimationIn / 2, delay: actionDelayIn, options: [.curveEaseInOut, .allowUserInteraction, .beginFromCurrentState, .autoreverse, .repeat], animations: { + self.transform = CGAffineTransform(scaleX: offset, y: offset) + }, completion: nil) + } + + deinit { + NotificationCenter.default.removeObserver(self) + } +} + +fileprivate extension UIEdgeInsets { + var horizontal: CGFloat { + return self.left + self.right + } + + var vertical: CGFloat { + return self.top + self.bottom + } +} diff --git a/Santander-Test/Pods/Manifest.lock b/Santander-Test/Pods/Manifest.lock index cbbac15a..15324d25 100644 --- a/Santander-Test/Pods/Manifest.lock +++ b/Santander-Test/Pods/Manifest.lock @@ -1,5 +1,6 @@ PODS: - Alamofire (4.8.1) + - AMPopTip (3.6.0) - IQKeyboardManagerSwift (6.2.0) - Moya (12.0.1): - Moya/Core (= 12.0.1) @@ -10,6 +11,7 @@ PODS: - StatusAlert (1.1.0) DEPENDENCIES: + - AMPopTip - IQKeyboardManagerSwift - Moya - StatusAlert @@ -17,6 +19,7 @@ DEPENDENCIES: SPEC REPOS: https://github.com/cocoapods/specs.git: - Alamofire + - AMPopTip - IQKeyboardManagerSwift - Moya - Result @@ -24,11 +27,12 @@ SPEC REPOS: SPEC CHECKSUMS: Alamofire: 16ce2c353fb72865124ddae8a57c5942388f4f11 + AMPopTip: ebfa860ade372f383e8b3500d3101e8c4a4f73ce IQKeyboardManagerSwift: b07ccf9d8cafe993dcd6cb794eb4ba34611a0c4e Moya: cf730b3cd9e005401ef37a85143aa141a12fd38f Result: bd966fac789cc6c1563440b348ab2598cc24d5c7 StatusAlert: 4d6dadebf5f7abd5648fa774ef3062f2f95cc4aa -PODFILE CHECKSUM: 43c1992cf2813f4080ced8f5452e251bd09e7c41 +PODFILE CHECKSUM: 4e150ff8c831fa6b97c7c1e6355aa319f0463e89 COCOAPODS: 1.6.0 diff --git a/Santander-Test/Pods/Pods.xcodeproj/project.pbxproj b/Santander-Test/Pods/Pods.xcodeproj/project.pbxproj index 9b8d9734..6575d7f9 100644 --- a/Santander-Test/Pods/Pods.xcodeproj/project.pbxproj +++ b/Santander-Test/Pods/Pods.xcodeproj/project.pbxproj @@ -7,311 +7,335 @@ objects = { /* Begin PBXBuildFile section */ - 02FB225950EEA73C12B14A3D74A2096E /* IQUIView+IQKeyboardToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F81284941748F0B4B0BF4AD4CBDA1EA /* IQUIView+IQKeyboardToolbar.swift */; }; - 059D92B7BBFBEC53E9A3B6E11C5C3B3A /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4440E7D93688311D478621074DF71345 /* Response.swift */; }; + 02FB225950EEA73C12B14A3D74A2096E /* IQUIView+IQKeyboardToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82C69D1A74C5F456C4A803DFAC82CE09 /* IQUIView+IQKeyboardToolbar.swift */; }; + 059D92B7BBFBEC53E9A3B6E11C5C3B3A /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05EA68EF87A95B537922D70C6DC0427 /* Response.swift */; }; + 077FC20E6644D0CC24318906467DB4EA /* StatusAlertUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D88DA44C23CFA4142EBCFF9B27EFF5 /* StatusAlertUtils.swift */; }; 09067C2692931E434234858ADBC4C6D6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */; }; - 0A39AF55285A3A4F7CBABB6D822FA4A3 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 347486DBCB93D186BAB6C9AD930ED55A /* Alamofire.swift */; }; - 104D74A8C8DE606C9D0ADDAB052B1543 /* StatusAlert-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 98F4F7FBAD28B2ED090E9BB31FEDA8BF /* StatusAlert-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 09F37003965A0689DCDB98EEBF35988A /* PopTip+Transitions.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED4C8B5361C64793391D06271956C190 /* PopTip+Transitions.swift */; }; + 0A39AF55285A3A4F7CBABB6D822FA4A3 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 364E4A632F5EC247E27102522F340CDD /* Alamofire.swift */; }; + 117A9A7A12D6466C58337E512984EA09 /* AMPopTip-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FA9B159763A6EABA1D15D3D6E8BB8EE3 /* AMPopTip-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 11F309B46EE6B36CB281409A579996C0 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */; }; - 1B131595178FA51FC0B7C2FB12ED5ADB /* Endpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D1FC303B1005EFF099082C9DEEDC065 /* Endpoint.swift */; }; - 1C496E2C46E94DECD60F0B1C7CA511E4 /* NetworkLoggerPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8776B5DF29F8D63EE757702169F8426 /* NetworkLoggerPlugin.swift */; }; - 1D29D2ACADF961F69D32B06FA6A09E28 /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43714182B7BCA5485EBDE4CF6A9ABDD5 /* Notifications.swift */; }; - 1F69C755AF5965693C7298A05060A757 /* StatusAlertUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = E20C969B5ACCF7AC28D547C2078332EF /* StatusAlertUtils.swift */; }; - 225E880F1459B17432E7DF840D03A3E7 /* Task.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94F6676BE91C9388F6A57252CED9B75E /* Task.swift */; }; - 2305008B1D46627F9B49FAFF25CD6FE6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */; }; + 1B131595178FA51FC0B7C2FB12ED5ADB /* Endpoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D55C096C7852AD0FD5900FFDEC056A7 /* Endpoint.swift */; }; + 1C496E2C46E94DECD60F0B1C7CA511E4 /* NetworkLoggerPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BBA6A8B1542C5036781E5CB1AD15100 /* NetworkLoggerPlugin.swift */; }; + 1D29D2ACADF961F69D32B06FA6A09E28 /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71C48AA44E7FE6CA667F2F4956309ED0 /* Notifications.swift */; }; + 225E880F1459B17432E7DF840D03A3E7 /* Task.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1271F76A652701E7081E1256BCEA38D5 /* Task.swift */; }; + 2F0E58380E710D15560B27A683FB6FE3 /* PopTip+Draw.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9DFC3190B2000CE552C11328102AD09 /* PopTip+Draw.swift */; }; + 3005629E42A84DED8C68F0C783DEE3A6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */; }; 30C07F53D870FC78B292E0E4F91FEE9E /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86F84942F79C4255F7497FC979196A65 /* QuartzCore.framework */; }; - 313895F247F6C04661152D6D4948C100 /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = 719F534FF88E65EA1374FB93CA956CD7 /* Image.swift */; }; - 31895E3CF848D69123E3A6DDEDBBF86F /* URL+Moya.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BB22612F45F951AB3A4BEF92939CBC2 /* URL+Moya.swift */; }; - 355C18EEC82624A06A6CC93965258E33 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = F637DAED777FC65DFA84AD4F763139D2 /* Request.swift */; }; - 36DD0B1007BF3C7BFE352704D5C415F7 /* IQTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E29419B867A52354795ED7FB236D2F33 /* IQTextView.swift */; }; + 313895F247F6C04661152D6D4948C100 /* Image.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7905351DDA208FF2BCDDDB073F863EA1 /* Image.swift */; }; + 314B8AD1268E89278CCE47BFEA79C43F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */; }; + 31895E3CF848D69123E3A6DDEDBBF86F /* URL+Moya.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8C902A8CC69883010175615A839CBCD /* URL+Moya.swift */; }; + 32083CD40AE0F52B9C5EE6520F51D866 /* AMPopTip-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1299D2802DF81035888B1EF8BD097426 /* AMPopTip-dummy.m */; }; + 329BBBB341642193502FA0DF77C011FA /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EFB6498CD7E9F2FB9A16399EB90D28B7 /* UIKit.framework */; }; + 355C18EEC82624A06A6CC93965258E33 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = E58D219C426FD2752002E027A43233F2 /* Request.swift */; }; + 36DD0B1007BF3C7BFE352704D5C415F7 /* IQTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E6C381B71ED17C8633C06674859A450 /* IQTextView.swift */; }; 3BD1DAFE1F3E6C9E4EB0F2099B6D6FA2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */; }; - 3E0749AF6C51BCF0E4A41CF1D6A76FED /* DispatchQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47B3494D6695B6A07C957BDDC2F3EFAF /* DispatchQueue+Alamofire.swift */; }; - 4467D1C8AABFA6FC321AC7CD6F327B48 /* IQUITextFieldView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89A807D88F6537CFCC7BA4329542521F /* IQUITextFieldView+Additions.swift */; }; - 4A3294F2FCFF96D15DA6FD2D5D839788 /* IQUIView+Hierarchy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 633EDE28CFC6671C9B3A32CBE5574D69 /* IQUIView+Hierarchy.swift */; }; - 4A42935426AB30760B47ADDE1BB1C39D /* NoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97DDE8EFF0D1936B717C36083D879CF3 /* NoError.swift */; }; + 3E0749AF6C51BCF0E4A41CF1D6A76FED /* DispatchQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00DACC21DA90E8AA013FAE6339E6E285 /* DispatchQueue+Alamofire.swift */; }; + 4467D1C8AABFA6FC321AC7CD6F327B48 /* IQUITextFieldView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFB4BE60C2E697DB2B80B3F13833F5E8 /* IQUITextFieldView+Additions.swift */; }; + 4A3294F2FCFF96D15DA6FD2D5D839788 /* IQUIView+Hierarchy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B59FD9D3900B13A0C0C03E7343CB19EF /* IQUIView+Hierarchy.swift */; }; + 4A42935426AB30760B47ADDE1BB1C39D /* NoError.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAC703355C70EAC3B48FF2F65BEF1DAB /* NoError.swift */; }; + 4D3F118DF9909DFF62FD2453B5EED984 /* StatusAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 793D9BD7B815AAF1CE1A5BC097261E71 /* StatusAlert.swift */; }; 4E3E6EC07A4F261D041BA0C4CA258260 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1829CB35B6E3E9121C9CF36E8FCDBAE6 /* CoreGraphics.framework */; }; - 5677C54BF14ABA45675F2DEB98AFD0D1 /* IQKeyboardManagerSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EBFA20F5DDDD154A8326BD23776A0B0F /* IQKeyboardManagerSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5C004FBC6C6DB7A23CBBCF9C28770277 /* Pods-Santander-Test-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D9FAA9914E2184A41D32A3A311B1860 /* Pods-Santander-Test-dummy.m */; }; - 5D53EA65636A0B296726611E3C491CF7 /* Result-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 26DE6FA33754885F7D18C7AFB0B58F7C /* Result-dummy.m */; }; - 5D97ACC58BF197F2426B2C6853142DF5 /* NetworkActivityPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80961A91C2B8DDC01EC9AECCAC0EA4FF /* NetworkActivityPlugin.swift */; }; - 60B6C2A003864AAD3A426448152F67BE /* Timeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BE933A310F002306D961318BA943C73 /* Timeline.swift */; }; - 633A43974DB81C2CCB1A2C3A7B1BFB37 /* IQKeyboardManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7743099AC812B6D35DF24FCBFCF4537E /* IQKeyboardManager.swift */; }; - 6499810827FC895E23B2E30263617389 /* Plugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 728381B0C957F32C7C5090A61FAEA5CA /* Plugin.swift */; }; - 64C35953B1CEDA2F929331C7626611CC /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4293278E9B40CE3E34D1390D17A6BD4 /* MultipartFormData.swift */; }; - 68BB9452F3012913BABE12BE69C74785 /* AnyEncodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DA0AAD9E0B4F4EA588B48D4CC739263 /* AnyEncodable.swift */; }; - 6AAA002A59C5011CB71E9B83E6803C6D /* ResultProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 036C9BB9BB550214D7E17CE54385E228 /* ResultProtocol.swift */; }; + 5677C54BF14ABA45675F2DEB98AFD0D1 /* IQKeyboardManagerSwift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 15C6D9AAE7AFB1D510907D85B8CAC6B6 /* IQKeyboardManagerSwift-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 58DAB19CBEC891D2FC9C085735782F33 /* StatusAlert-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BC9DAF4C343EFAC7BEC0603F45F19B3 /* StatusAlert-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5A18281634C290F12C5ABF249DEE9564 /* UIDevice+Platform.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83455889E13854AD8ABDD99CD2CC39DA /* UIDevice+Platform.swift */; }; + 5D53EA65636A0B296726611E3C491CF7 /* Result-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FA89BCF8A139DFA2E60DDAB8DC3BDFE1 /* Result-dummy.m */; }; + 5D97ACC58BF197F2426B2C6853142DF5 /* NetworkActivityPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = D26A8905411437A4096352B51EC87710 /* NetworkActivityPlugin.swift */; }; + 60B6C2A003864AAD3A426448152F67BE /* Timeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED490BFE696CCBB0DFAA6B89FB2ACBF /* Timeline.swift */; }; + 633A43974DB81C2CCB1A2C3A7B1BFB37 /* IQKeyboardManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DECA3076074BA79EE14747097FA4232 /* IQKeyboardManager.swift */; }; + 6499810827FC895E23B2E30263617389 /* Plugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61C7B2747A259463EF9F583ED0735FFF /* Plugin.swift */; }; + 64C35953B1CEDA2F929331C7626611CC /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C381BBCB0AA8AFC6E94A60990BF256E /* MultipartFormData.swift */; }; + 68BB9452F3012913BABE12BE69C74785 /* AnyEncodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47CDDA230D44A9D90E4E680D0F704ECA /* AnyEncodable.swift */; }; + 6AAA002A59C5011CB71E9B83E6803C6D /* ResultProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E07512BEE542791831615B14890629F /* ResultProtocol.swift */; }; 6CA1BEBC175680F7D37A9C47917203B1 /* Pods-Santander-TestUITests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1410754A2D8AEF29CBAD3CF4DC4714BB /* Pods-Santander-TestUITests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6E04C92190FD45451E6690122ABF62E9 /* Moya-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A3A7A69572AE7480428E2E0E461AB44 /* Moya-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6E64C6F2AF1EBF3B28AD5CC90D8D3E2F /* AnyError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30FE6299336582DF3F7BC9BA9492A8B1 /* AnyError.swift */; }; - 6EFD003458AE7F689DEA720A2030C261 /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = C57EF9785B9237C31BD56ED973E54549 /* ResponseSerialization.swift */; }; - 700D3D95AF9520CB227846DFD943A2DA /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43B3D46C5537399369C6EAC56AC200FE /* ParameterEncoding.swift */; }; - 73AB05789A4982944AF68DBD013E3EB7 /* NetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA502CFB7AC3936E52CC74C5F5903259 /* NetworkReachabilityManager.swift */; }; - 772911DA6E33D1CBBC30131B7C8BDBB3 /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 96CC6CFAAEF9232FF99261DBA864B65F /* Alamofire-dummy.m */; }; - 778F9B551E5A346DA84BC46CBFFA1B22 /* CredentialsPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D002E8340BBE5C1616ECCA13C725EC1 /* CredentialsPlugin.swift */; }; - 77E8F0EB9FFBE2E3EB0C77095C644606 /* TaskDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE54289085F8E76D867635DEA5F18BAB /* TaskDelegate.swift */; }; + 6D5139BE6172B47602185037BB82DF47 /* PopTip.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9505602C5BF594EAAC4A87E55F2C370A /* PopTip.swift */; }; + 6E04C92190FD45451E6690122ABF62E9 /* Moya-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A64D86776CE0A15D579A12A1E3435FC /* Moya-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6E64C6F2AF1EBF3B28AD5CC90D8D3E2F /* AnyError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8821CC7B10075A400D45D7905D391703 /* AnyError.swift */; }; + 6EFD003458AE7F689DEA720A2030C261 /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CF22CDAC0AC4795D80AD5F6585FDCB2 /* ResponseSerialization.swift */; }; + 700D3D95AF9520CB227846DFD943A2DA /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD6CDA7D7EAF4FC3809223A51A3B6520 /* ParameterEncoding.swift */; }; + 73AB05789A4982944AF68DBD013E3EB7 /* NetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40F4581CF8577E41F9E26140B86166D4 /* NetworkReachabilityManager.swift */; }; + 772911DA6E33D1CBBC30131B7C8BDBB3 /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DD6D83DD5AE4B9C0CA1C80B73978D5F /* Alamofire-dummy.m */; }; + 778F9B551E5A346DA84BC46CBFFA1B22 /* CredentialsPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EB06C4313AEB9EB7D11D7BC4AC79893 /* CredentialsPlugin.swift */; }; + 77E8F0EB9FFBE2E3EB0C77095C644606 /* TaskDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 756857999614F2D10AB3F2D2085DB1A7 /* TaskDelegate.swift */; }; 7A6FFEFDCF07683D5E2976077212FD27 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */; }; - 7BEFFCD672FD28B3D77927E392412FB9 /* Result-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 328A04F05F9289BCF1C7AF8FADD81524 /* Result-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7E3538A6992A38276764936A9733493D /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A8A73AC789E75D3AFE3572EEF6F8A59 /* AFError.swift */; }; - 80111F83B0BCA39D24985D0F122F0001 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD9C67F7A723A7B1D92D3EE704F735DB /* Result.swift */; }; - 88AE9E6392539A558E0F4417775EEA91 /* URLRequest+Encoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74B9158D8A709B402F3747512D251BBC /* URLRequest+Encoding.swift */; }; - 8D2A6A90A6DDAF75EA52D471258545CC /* ServerTrustPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF2C2F8414E8156C7A452AE20C93161F /* ServerTrustPolicy.swift */; }; - 92E9BD908B71CFA1C6EDA2FA86BF1635 /* IQKeyboardManagerSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B5556BF140A5F3EBD4F3ED65FDCA8E66 /* IQKeyboardManagerSwift-dummy.m */; }; + 7BEFFCD672FD28B3D77927E392412FB9 /* Result-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 11E428322B8F20B4BD04558E00C12301 /* Result-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7E3538A6992A38276764936A9733493D /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA5BE578C477043FD77994721DF2CF79 /* AFError.swift */; }; + 80111F83B0BCA39D24985D0F122F0001 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7C27ADB3CDDE59F459AB5DF4B23583F /* Result.swift */; }; + 88AE9E6392539A558E0F4417775EEA91 /* URLRequest+Encoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BF013BC64BC6FEC0A17E5BB75E959F7 /* URLRequest+Encoding.swift */; }; + 88D92EDE37F1B362ECB8A6F8911DAC6E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */; }; + 8C7CD095FC0252C2920A4204819AF718 /* Pods-Santander-Test-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D9FAA9914E2184A41D32A3A311B1860 /* Pods-Santander-Test-dummy.m */; }; + 8D2A6A90A6DDAF75EA52D471258545CC /* ServerTrustPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F87DA44039A5D2EC5DB495708C0AB39 /* ServerTrustPolicy.swift */; }; + 92E9BD908B71CFA1C6EDA2FA86BF1635 /* IQKeyboardManagerSwift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A5271583821AE646F1015B53E4B0D22C /* IQKeyboardManagerSwift-dummy.m */; }; 9774AB3F3E8B65D7F1A644CCA6254D03 /* Pods-Santander-TestTests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 638AF6E4AD3D6CF6AED6C2F601C4A809 /* Pods-Santander-TestTests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 986EF56798DE2C7C65737AD9334E517D /* IQNSArray+Sort.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F1EFD9B3A6694A4DF2D1A7D0CEAE5BF /* IQNSArray+Sort.swift */; }; - 9D0866BCC26350F05BD74C04F200C10A /* UIDevice+Platform.swift in Sources */ = {isa = PBXBuildFile; fileRef = E684B69530F5AC628E7BA0796911F7B9 /* UIDevice+Platform.swift */; }; - 9EBD0113F23A6FBB0CDC07F66E77ED81 /* AccessTokenPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F7F2C851C3617E1D17A463E7618885 /* AccessTokenPlugin.swift */; }; - A1EC41966B261DCE460BCDE5124A1DBE /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7BC42EA73705FAAD6D57EFF04E9D763 /* SessionDelegate.swift */; }; - A266363126A240900FCC5CCFE1EDB8BE /* Moya+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3222A2F3D223C0E9BFC0434EDF1D436 /* Moya+Alamofire.swift */; }; + 986EF56798DE2C7C65737AD9334E517D /* IQNSArray+Sort.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8CA6ADC7C7F6B367BAD8CBEBF1343A6 /* IQNSArray+Sort.swift */; }; + 9EBD0113F23A6FBB0CDC07F66E77ED81 /* AccessTokenPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82244C246EAA54475DC81632EA200415 /* AccessTokenPlugin.swift */; }; + A1EC41966B261DCE460BCDE5124A1DBE /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94FBF4B876049E18090503AA42985DEC /* SessionDelegate.swift */; }; + A266363126A240900FCC5CCFE1EDB8BE /* Moya+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA4B95F0E633A9A9A8873BF0C4903533 /* Moya+Alamofire.swift */; }; A380ABE3F1AF1CA7A14F9449BDC0B73F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */; }; - A613A3BC72B998F1914EDF4994DD8A12 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EFB6498CD7E9F2FB9A16399EB90D28B7 /* UIKit.framework */; }; - AA3DA32EDDE1FFCB4FFD9B6D58EB106C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */; }; - AA56769D8733D3F3E7976742D5ABA998 /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B3C9D1ABA430C45075F9D583D67C0AD /* Validation.swift */; }; - AAB81C0BBA1DBCA92F322972C43768C8 /* StatusAlert-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DD36FB1A741E1074457D7A2382146DEE /* StatusAlert-dummy.m */; }; - AB037232146E78285C5B8F6394D1A658 /* MultiTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BFA77DDD304D4813A042BD0F715AD28 /* MultiTarget.swift */; }; - AEA829AB1A8AF2AD077A808AED6B178A /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14474910351E268CA497EE13395B79B6 /* MultipartFormData.swift */; }; - B178B38FCD7F99B07422484FC7FD6861 /* IQKeyboardManager.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 9888FB0E0937634EC24AB6032B9AE8CA /* IQKeyboardManager.bundle */; }; - B1EB1CD6804A333102774EA1DE9F1B94 /* TargetType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43B255A8B71C5B85363E9624F9CA0368 /* TargetType.swift */; }; + AA56769D8733D3F3E7976742D5ABA998 /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = B821A0250D510FC0475D60FCF6CA59F8 /* Validation.swift */; }; + AB037232146E78285C5B8F6394D1A658 /* MultiTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95F01307A1F45845DBA269F14D919F08 /* MultiTarget.swift */; }; + AEA829AB1A8AF2AD077A808AED6B178A /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = B19C5155BECC982BA93863CCE6A88B01 /* MultipartFormData.swift */; }; + B178B38FCD7F99B07422484FC7FD6861 /* IQKeyboardManager.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 4E6702644CDF6D2BB61A66FB6113E484 /* IQKeyboardManager.bundle */; }; + B1EB1CD6804A333102774EA1DE9F1B94 /* TargetType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7896B8BF68E862E13985590C6A5FA5E3 /* TargetType.swift */; }; B277AE2A50A7C5F6B1BB9EDA5E1A97B8 /* Pods-Santander-TestTests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 05E349DAE1260294B909EE4EF74E1CEE /* Pods-Santander-TestTests-dummy.m */; }; - B2A4A7D1BD7C4D59EA0FF0A49163A387 /* IQBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88F91EDCA4BE8027599B63DA2E825ABE /* IQBarButtonItem.swift */; }; - B642F75A16A71ED991DB8A9DA65AD439 /* ValidationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC81268C9C29F16A594F53447D70D13B /* ValidationType.swift */; }; - B6F6E4CC26451E91B59FAE0F6841DC1F /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EB19AC8DA7A93FC9BFCFC76AFC8EF5E6 /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B888C49BC46C9A62CBF03A8FAD7126F1 /* IQInvocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 085FF4D9FD6B749469B78F086929216E /* IQInvocation.swift */; }; - BA61F495C0E45AA2A88D21D51575FF02 /* IQKeyboardReturnKeyHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2927D5C13102DF85F4C558738DCEDB8E /* IQKeyboardReturnKeyHandler.swift */; }; - C0D2A82B14F8FE402E78EBDBCC0CBE18 /* StatusAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = F7786EF96DCE14E5204731F1893CE1A5 /* StatusAlert.swift */; }; + B2A4A7D1BD7C4D59EA0FF0A49163A387 /* IQBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F79064F1A379876B04975C47909474E /* IQBarButtonItem.swift */; }; + B642F75A16A71ED991DB8A9DA65AD439 /* ValidationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E3AC696856747E97BB0C7036CC738F0 /* ValidationType.swift */; }; + B6F6E4CC26451E91B59FAE0F6841DC1F /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9007EDEB45A2B5EBA58AEBA614715C01 /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B71861435CE67838D5C615C7BF529F8D /* StatusAlert-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F52E478305B403B1169C3B03E7EBC07F /* StatusAlert-dummy.m */; }; + B888C49BC46C9A62CBF03A8FAD7126F1 /* IQInvocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C23191AA0D756503E4C42654D277AE58 /* IQInvocation.swift */; }; + B8FBCA47A659B360E2684C44D970F107 /* Pods-Santander-Test-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 064B8C62456DB7AEFF1AEFF7FC9E39F7 /* Pods-Santander-Test-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BA61F495C0E45AA2A88D21D51575FF02 /* IQKeyboardReturnKeyHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27F1E014D4F06349619A808BCC3D021A /* IQKeyboardReturnKeyHandler.swift */; }; + C089BCD74D2A26B10186867D672DA506 /* UIDevice+Blur.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE397110EB17007AD8326CD6E6A3C67E /* UIDevice+Blur.swift */; }; C5A49CAAB41E281C266C192EADBE4EB7 /* Alamofire.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45C4ABEAFCB4FA284808F5DBE887B20D /* Alamofire.framework */; }; - CB3084173AD22105B6105A2D17F7C776 /* Pods-Santander-Test-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 064B8C62456DB7AEFF1AEFF7FC9E39F7 /* Pods-Santander-Test-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CD321D15156EF51F506D6183152B0E1C /* MoyaProvider+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4717EBE7E99D0E15A9A655B784B25DC0 /* MoyaProvider+Internal.swift */; }; - D0D3B6F6481841FB0B0DC61653217179 /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6F399CF85DFF7FA61BB6CB811FAD5BA /* Response.swift */; }; - D348D88FE7939869DE08BC623976B321 /* Moya-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 65DE41FA07CAE47B75A7B0ECEA455B45 /* Moya-dummy.m */; }; - D3A177F9BCAD7042B46E0A36CEDDBF8E /* IQTitleBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F95A72295EBE394B54EE1ACD2D34F96 /* IQTitleBarButtonItem.swift */; }; - D3FA0AA634AAEA99AB3FABC36BB4958C /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF5C70165854A846C790FC0BF9CEF8BB /* SessionManager.swift */; }; - D7D49BAE6EAAD5EC2DAF370BCDE783A2 /* IQToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = B26509FE31B6FF712867B3C3ABDDE9CF /* IQToolbar.swift */; }; - D8F4B5841E455F5170B1C2FC30863B05 /* IQKeyboardManagerConstantsInternal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A18D45FD115A7DA68A3AAF2F51C2E6B /* IQKeyboardManagerConstantsInternal.swift */; }; - DD420F096096C518F8E6B44583BF6521 /* IQKeyboardManagerConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1B17F3CDC4F8071CA37C06FBE10E5F5 /* IQKeyboardManagerConstants.swift */; }; + CD321D15156EF51F506D6183152B0E1C /* MoyaProvider+Internal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 291574678DD74D639BB420782B57ECFC /* MoyaProvider+Internal.swift */; }; + D0D3B6F6481841FB0B0DC61653217179 /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 731A83702890AE7019DC4C29DB8E4EC9 /* Response.swift */; }; + D348D88FE7939869DE08BC623976B321 /* Moya-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F7B15147E249F80E5874E77D31A450C /* Moya-dummy.m */; }; + D3A177F9BCAD7042B46E0A36CEDDBF8E /* IQTitleBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 157AB990513DA582CA4369A962E2F52F /* IQTitleBarButtonItem.swift */; }; + D3FA0AA634AAEA99AB3FABC36BB4958C /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF6CAF521EED88DF2040CD240D5F4C3A /* SessionManager.swift */; }; + D7D49BAE6EAAD5EC2DAF370BCDE783A2 /* IQToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 214339B9ACA04BC4CA6C980F9545E964 /* IQToolbar.swift */; }; + D8F4B5841E455F5170B1C2FC30863B05 /* IQKeyboardManagerConstantsInternal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3007389BFB5C400ADA99640D19484908 /* IQKeyboardManagerConstantsInternal.swift */; }; + DD420F096096C518F8E6B44583BF6521 /* IQKeyboardManagerConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE087567C6073974F01DC1BAA34DE25C /* IQKeyboardManagerConstants.swift */; }; DD90258D5667ACC775417DE0E6EE6E77 /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C283542EF8EEF865485C078FFAAD4FCC /* Result.framework */; }; - DDAC963022C8D96EBAAD2284780E0276 /* IQUIScrollView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA585978B6EF86FA20AB0138C45A113D /* IQUIScrollView+Additions.swift */; }; - DE6AC2459484032563903F1BFCCD3756 /* MoyaProvider+Defaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06B9F58D5667FE4E189AB259DAAD2C4 /* MoyaProvider+Defaults.swift */; }; + DDAC963022C8D96EBAAD2284780E0276 /* IQUIScrollView+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13E4593C0360CBA8031C9DC2E64BEBC1 /* IQUIScrollView+Additions.swift */; }; + DE6AC2459484032563903F1BFCCD3756 /* MoyaProvider+Defaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = A621FA60DF20FE1423923BA34B6029F1 /* MoyaProvider+Defaults.swift */; }; E15EA05765812FBDA4F4428F7B6BBF6D /* Pods-Santander-TestUITests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CD5133133E24C110EF3769A9D93DE159 /* Pods-Santander-TestUITests-dummy.m */; }; E3334CC660C4BD5E41C1061B9DC56FF6 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EFB6498CD7E9F2FB9A16399EB90D28B7 /* UIKit.framework */; }; E7E895502A83EDA1534DC002A0267D8D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */; }; - EB0DD8CEA1A69867A30267439C970440 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = D66130D7B981E7045B09E24E16B2EB60 /* Result.swift */; }; - EB65CF8FE56C314DBAF088FE713C9F88 /* MoyaProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD93652CEA85021627EAF26A035F40B5 /* MoyaProvider.swift */; }; - F0A9F7366B446EDAE4716768BCCADE6C /* IQPreviousNextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87C7B86A27B8EAA7F5FD04A4CFFDB1F2 /* IQPreviousNextView.swift */; }; - F33FDC4826B0B3D3951EFAAD42CB521D /* UIDevice+Blur.swift in Sources */ = {isa = PBXBuildFile; fileRef = 296A315F1030E5D22D1E86AEDBA33212 /* UIDevice+Blur.swift */; }; - F44AA7A6E15EFE1927FC41B447D6EFD1 /* Cancellable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 056C7459B361B149CA51708A85253EE3 /* Cancellable.swift */; }; - F852C0100AB6D9D2CE3E28FCA487C67E /* IQUIViewController+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47DE8F6C18198698D8D90127F3D79364 /* IQUIViewController+Additions.swift */; }; - FF38A3D897A7C4228CAA5CCA71401376 /* MoyaError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01D9799349EC8482A0ECE9B147F2490D /* MoyaError.swift */; }; + EB0DD8CEA1A69867A30267439C970440 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18C43DAE9908ABB7744297D7506D770A /* Result.swift */; }; + EB65CF8FE56C314DBAF088FE713C9F88 /* MoyaProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05C078CAC67FA75DFA89DF555E04156A /* MoyaProvider.swift */; }; + F0A9F7366B446EDAE4716768BCCADE6C /* IQPreviousNextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B079EB42F083C7BEE0CFAE9F9CBBE17 /* IQPreviousNextView.swift */; }; + F44AA7A6E15EFE1927FC41B447D6EFD1 /* Cancellable.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC9BF101351D627A2889DC5AC3F84506 /* Cancellable.swift */; }; + F852C0100AB6D9D2CE3E28FCA487C67E /* IQUIViewController+Additions.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45FB62426083CE495268BAF39405DFD /* IQUIViewController+Additions.swift */; }; + FF38A3D897A7C4228CAA5CCA71401376 /* MoyaError.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF38D7A18F03C664EC6EE0C9B22A7CE4 /* MoyaError.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 5E1A36908C47574A723FAD56990DAFB4 /* PBXContainerItemProxy */ = { + 394DD8541DDFF77A28FBB238EEF723A3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 692F870FA017FAB61B5C3290C3BC5F54; + remoteInfo = AMPopTip; + }; + 49600E263670D867E35C1B1E918A2EEF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EFF87187B46551C36797F2B899C54212; + remoteInfo = IQKeyboardManagerSwift; + }; + 6A4EDBBF08D44260DF0148CD85CDDA29 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4B0183450F95394DC0C49E326A20B42D; remoteInfo = Result; }; - 6A4EDBBF08D44260DF0148CD85CDDA29 /* PBXContainerItemProxy */ = { + 7D231DD4F66D54D4FD7A2F8FEBEF1FCC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4B0183450F95394DC0C49E326A20B42D; remoteInfo = Result; }; - 739B33F73C327D7438616B072434C417 /* PBXContainerItemProxy */ = { + 89B7C1F59BE279B9AC2C2AEA832F837B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 3383968E74B5371B20BB519B170DC7FD; remoteInfo = Alamofire; }; - 789694E6A5EA5C5F4692301575E3CD2E /* PBXContainerItemProxy */ = { + 969DCCA076A9B9D70065EA7CB5DB6A86 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 15BF64AFACBC5F40C3D5C6BAB72CDE26; - remoteInfo = StatusAlert; + remoteGlobalIDString = F6743F51E8DAAB9AB7DB29A84A37F017; + remoteInfo = "Pods-Santander-Test"; }; - 7C4B286844A189385E91FB5326F61F7F /* PBXContainerItemProxy */ = { + A7BE02881176372328240EA60252BB3A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = BAAB01D1BA82ABAE2B535579B77ED0CB; remoteInfo = Moya; }; - 89B7C1F59BE279B9AC2C2AEA832F837B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 3383968E74B5371B20BB519B170DC7FD; - remoteInfo = Alamofire; - }; - 969DCCA076A9B9D70065EA7CB5DB6A86 /* PBXContainerItemProxy */ = { + BE2FE96C842D970D743B817C3C29C800 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 88B10C4857809B3E5C3335BCA87F5FC2; + remoteGlobalIDString = F6743F51E8DAAB9AB7DB29A84A37F017; remoteInfo = "Pods-Santander-Test"; }; - BD8DBB1BACE773F5B058FA824BBE6DB9 /* PBXContainerItemProxy */ = { + C2484FBCD16255B9BC841E5263AE7033 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = EFF87187B46551C36797F2B899C54212; - remoteInfo = IQKeyboardManagerSwift; + remoteGlobalIDString = 3383968E74B5371B20BB519B170DC7FD; + remoteInfo = Alamofire; }; - BE2FE96C842D970D743B817C3C29C800 /* PBXContainerItemProxy */ = { + CB56E2428B8E2A6752A736019B630B48 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 88B10C4857809B3E5C3335BCA87F5FC2; - remoteInfo = "Pods-Santander-Test"; + remoteGlobalIDString = F6CF1E66B5C83639563339131FB4A512; + remoteInfo = StatusAlert; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 00DACC21DA90E8AA013FAE6339E6E285 /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = ""; }; 01B4720D4F3A72FEF3A1525F6D268E7A /* Pods-Santander-Test-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Santander-Test-frameworks.sh"; sourceTree = ""; }; - 01D9799349EC8482A0ECE9B147F2490D /* MoyaError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MoyaError.swift; path = Sources/Moya/MoyaError.swift; sourceTree = ""; }; - 036C9BB9BB550214D7E17CE54385E228 /* ResultProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResultProtocol.swift; path = Result/ResultProtocol.swift; sourceTree = ""; }; - 056C7459B361B149CA51708A85253EE3 /* Cancellable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cancellable.swift; path = Sources/Moya/Cancellable.swift; sourceTree = ""; }; + 05C078CAC67FA75DFA89DF555E04156A /* MoyaProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MoyaProvider.swift; path = Sources/Moya/MoyaProvider.swift; sourceTree = ""; }; 05E349DAE1260294B909EE4EF74E1CEE /* Pods-Santander-TestTests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Santander-TestTests-dummy.m"; sourceTree = ""; }; 064B8C62456DB7AEFF1AEFF7FC9E39F7 /* Pods-Santander-Test-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Santander-Test-umbrella.h"; sourceTree = ""; }; - 08069C0730E81199B1847B7820188F18 /* Pods_Santander_TestUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_TestUITests.framework; path = "Pods-Santander-TestUITests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - 085FF4D9FD6B749469B78F086929216E /* IQInvocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQInvocation.swift; path = IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift; sourceTree = ""; }; 08A81152EC75BCA30190A6265734A2E9 /* Pods-Santander-Test-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Santander-Test-acknowledgements.markdown"; sourceTree = ""; }; - 08BEEA538E1F71DAA5790616C8943AF6 /* Moya.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Moya.framework; path = Moya.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0B3C9D1ABA430C45075F9D583D67C0AD /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; - 0F81284941748F0B4B0BF4AD4CBDA1EA /* IQUIView+IQKeyboardToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+IQKeyboardToolbar.swift"; path = "IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift"; sourceTree = ""; }; + 0A64D86776CE0A15D579A12A1E3435FC /* Moya-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Moya-umbrella.h"; sourceTree = ""; }; + 0A9370C1B5A38F7E656EE5FAB9855D66 /* AMPopTip.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AMPopTip.xcconfig; sourceTree = ""; }; + 0ED490BFE696CCBB0DFAA6B89FB2ACBF /* Timeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeline.swift; path = Source/Timeline.swift; sourceTree = ""; }; + 1101C4E2CAB959A7BFD21FE75E332005 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Alamofire.framework; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 1112BA5594638444A8463D9E6BD25F8C /* Pods-Santander-Test.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-Test.debug.xcconfig"; sourceTree = ""; }; + 11E428322B8F20B4BD04558E00C12301 /* Result-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-umbrella.h"; sourceTree = ""; }; + 1271F76A652701E7081E1256BCEA38D5 /* Task.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Task.swift; path = Sources/Moya/Task.swift; sourceTree = ""; }; + 1299D2802DF81035888B1EF8BD097426 /* AMPopTip-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AMPopTip-dummy.m"; sourceTree = ""; }; + 13E4593C0360CBA8031C9DC2E64BEBC1 /* IQUIScrollView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIScrollView+Additions.swift"; path = "IQKeyboardManagerSwift/Categories/IQUIScrollView+Additions.swift"; sourceTree = ""; }; 1410754A2D8AEF29CBAD3CF4DC4714BB /* Pods-Santander-TestUITests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Santander-TestUITests-umbrella.h"; sourceTree = ""; }; - 14474910351E268CA497EE13395B79B6 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; - 15DC749833EFE285A38784DC6194D142 /* StatusAlert.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = StatusAlert.framework; path = StatusAlert.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 145218CC34A5DEC0A2852C9D9724C4EB /* AMPopTip-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AMPopTip-prefix.pch"; sourceTree = ""; }; + 157AB990513DA582CA4369A962E2F52F /* IQTitleBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTitleBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift; sourceTree = ""; }; + 15C6D9AAE7AFB1D510907D85B8CAC6B6 /* IQKeyboardManagerSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-umbrella.h"; sourceTree = ""; }; + 17F4B87CA0F449904B527F31FA799551 /* IQKeyboardManagerSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardManagerSwift.modulemap; sourceTree = ""; }; 1829CB35B6E3E9121C9CF36E8FCDBAE6 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - 18E15337DA6A3A5DCC4EE6501981459B /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; - 1B9A46ABB3BFE5994BED32D734D5432C /* Moya.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Moya.xcconfig; sourceTree = ""; }; - 1F000A497FCACF240584ABE5D0F82CB9 /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Alamofire.framework; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 18C43DAE9908ABB7744297D7506D770A /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = ""; }; + 1DD6D83DD5AE4B9C0CA1C80B73978D5F /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; + 1EB06C4313AEB9EB7D11D7BC4AC79893 /* CredentialsPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CredentialsPlugin.swift; path = Sources/Moya/Plugins/CredentialsPlugin.swift; sourceTree = ""; }; 1FA9ACAB0572FE18DB0EFC4D0D489C7B /* Pods-Santander-TestTests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Santander-TestTests-acknowledgements.markdown"; sourceTree = ""; }; - 26DE6FA33754885F7D18C7AFB0B58F7C /* Result-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Result-dummy.m"; sourceTree = ""; }; + 214339B9ACA04BC4CA6C980F9545E964 /* IQToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbar.swift; path = IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift; sourceTree = ""; }; 27E2BB89559B46B7D51C7E161F1DE20E /* Pods-Santander-TestUITests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-TestUITests-Info.plist"; sourceTree = ""; }; - 2927D5C13102DF85F4C558738DCEDB8E /* IQKeyboardReturnKeyHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardReturnKeyHandler.swift; path = IQKeyboardManagerSwift/IQKeyboardReturnKeyHandler.swift; sourceTree = ""; }; - 296A315F1030E5D22D1E86AEDBA33212 /* UIDevice+Blur.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIDevice+Blur.swift"; path = "Sources/StatusAlert/Extensions/UIDevice+Blur.swift"; sourceTree = ""; }; - 2F1EFD9B3A6694A4DF2D1A7D0CEAE5BF /* IQNSArray+Sort.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQNSArray+Sort.swift"; path = "IQKeyboardManagerSwift/Categories/IQNSArray+Sort.swift"; sourceTree = ""; }; - 30FE6299336582DF3F7BC9BA9492A8B1 /* AnyError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyError.swift; path = Result/AnyError.swift; sourceTree = ""; }; + 27F1E014D4F06349619A808BCC3D021A /* IQKeyboardReturnKeyHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardReturnKeyHandler.swift; path = IQKeyboardManagerSwift/IQKeyboardReturnKeyHandler.swift; sourceTree = ""; }; + 291574678DD74D639BB420782B57ECFC /* MoyaProvider+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "MoyaProvider+Internal.swift"; path = "Sources/Moya/MoyaProvider+Internal.swift"; sourceTree = ""; }; + 2C381BBCB0AA8AFC6E94A60990BF256E /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Sources/Moya/MultipartFormData.swift; sourceTree = ""; }; + 2F309854407F224D9C16B2A9333BDADE /* IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardManagerSwift-Info.plist"; sourceTree = ""; }; + 3007389BFB5C400ADA99640D19484908 /* IQKeyboardManagerConstantsInternal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerConstantsInternal.swift; path = IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstantsInternal.swift; sourceTree = ""; }; 3177B689266F9D9900310F56859F5DB2 /* Pods-Santander-TestTests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Santander-TestTests.modulemap"; sourceTree = ""; }; 322053D9E9993C774F41A2AA6CB500A7 /* Pods-Santander-Test-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-Test-acknowledgements.plist"; sourceTree = ""; }; - 328A04F05F9289BCF1C7AF8FADD81524 /* Result-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-umbrella.h"; sourceTree = ""; }; 34718F3B9548C70AF0984731DDCA7580 /* Pods-Santander-TestUITests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Santander-TestUITests-acknowledgements.markdown"; sourceTree = ""; }; - 347486DBCB93D186BAB6C9AD930ED55A /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; - 37248464644A9B94B38F659CD7868B33 /* IQKeyboardManagerSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-prefix.pch"; sourceTree = ""; }; - 3A3A7A69572AE7480428E2E0E461AB44 /* Moya-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Moya-umbrella.h"; sourceTree = ""; }; - 3BE933A310F002306D961318BA943C73 /* Timeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeline.swift; path = Source/Timeline.swift; sourceTree = ""; }; - 3D002E8340BBE5C1616ECCA13C725EC1 /* CredentialsPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CredentialsPlugin.swift; path = Sources/Moya/Plugins/CredentialsPlugin.swift; sourceTree = ""; }; - 43714182B7BCA5485EBDE4CF6A9ABDD5 /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = ""; }; - 43B255A8B71C5B85363E9624F9CA0368 /* TargetType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TargetType.swift; path = Sources/Moya/TargetType.swift; sourceTree = ""; }; - 43B3D46C5537399369C6EAC56AC200FE /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; - 4440E7D93688311D478621074DF71345 /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; + 364E4A632F5EC247E27102522F340CDD /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; + 3A7155821E550BB48423DD1D5A915B48 /* StatusAlert.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = StatusAlert.xcconfig; sourceTree = ""; }; + 3CF22CDAC0AC4795D80AD5F6585FDCB2 /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; + 3D55C096C7852AD0FD5900FFDEC056A7 /* Endpoint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Endpoint.swift; path = Sources/Moya/Endpoint.swift; sourceTree = ""; }; + 40F4581CF8577E41F9E26140B86166D4 /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = ""; }; 45C4ABEAFCB4FA284808F5DBE887B20D /* Alamofire.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 4717EBE7E99D0E15A9A655B784B25DC0 /* MoyaProvider+Internal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "MoyaProvider+Internal.swift"; path = "Sources/Moya/MoyaProvider+Internal.swift"; sourceTree = ""; }; - 47B3494D6695B6A07C957BDDC2F3EFAF /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = ""; }; - 47DE8F6C18198698D8D90127F3D79364 /* IQUIViewController+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIViewController+Additions.swift"; path = "IQKeyboardManagerSwift/Categories/IQUIViewController+Additions.swift"; sourceTree = ""; }; - 48E0DA4E62B261616F5CB85432594956 /* IQKeyboardManagerSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.xcconfig; sourceTree = ""; }; - 4A13C96B31C7821F3E4A5A284662445A /* StatusAlert.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = StatusAlert.modulemap; sourceTree = ""; }; - 4A18D45FD115A7DA68A3AAF2F51C2E6B /* IQKeyboardManagerConstantsInternal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerConstantsInternal.swift; path = IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstantsInternal.swift; sourceTree = ""; }; - 4B9E207652A8E03550292AD25FD2362D /* Result.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Result.framework; path = Result.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 4BFA77DDD304D4813A042BD0F715AD28 /* MultiTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultiTarget.swift; path = Sources/Moya/MultiTarget.swift; sourceTree = ""; }; + 47CDDA230D44A9D90E4E680D0F704ECA /* AnyEncodable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyEncodable.swift; path = Sources/Moya/AnyEncodable.swift; sourceTree = ""; }; + 4A815150FE659B719E0E5ECD4EC715BA /* Moya.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Moya.xcconfig; sourceTree = ""; }; + 4E07512BEE542791831615B14890629F /* ResultProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResultProtocol.swift; path = Result/ResultProtocol.swift; sourceTree = ""; }; + 4E6702644CDF6D2BB61A66FB6113E484 /* IQKeyboardManager.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = IQKeyboardManager.bundle; path = IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle; sourceTree = ""; }; + 4E8913DBA190C8B315A24290438509E2 /* IQKeyboardManagerSwift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-prefix.pch"; sourceTree = ""; }; 500A039A12C1D4FC4DD1BA43A9523E91 /* Pods-Santander-Test.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-Test.release.xcconfig"; sourceTree = ""; }; - 55104E9F564D5CF7B3292964D9C21FAB /* Result.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Result.modulemap; sourceTree = ""; }; - 577F89C1743CC208578DC486E2EB5205 /* Moya-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Moya-Info.plist"; sourceTree = ""; }; - 5813128D7F17576C17CF53BD0B25AA9F /* StatusAlert-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "StatusAlert-Info.plist"; sourceTree = ""; }; - 5A8A73AC789E75D3AFE3572EEF6F8A59 /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = ""; }; + 52A7962BA43F6C95A0167DE119923864 /* Alamofire-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Alamofire-Info.plist"; sourceTree = ""; }; + 54A5B4CE524043844F286D1E6867FD30 /* Moya.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Moya.modulemap; sourceTree = ""; }; + 555CDDB61EE2030B6AA753AE6C16F884 /* IQKeyboardManagerSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = IQKeyboardManagerSwift.framework; path = IQKeyboardManagerSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 5D9FAA9914E2184A41D32A3A311B1860 /* Pods-Santander-Test-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Santander-Test-dummy.m"; sourceTree = ""; }; 5E1CF47F8BD0FE48ABCF46917BFDB639 /* Pods-Santander-Test-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-Test-Info.plist"; sourceTree = ""; }; + 5EDE2F0D0D20F8B9666B15E4E4980ABA /* AMPopTip-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "AMPopTip-Info.plist"; sourceTree = ""; }; + 5F87DA44039A5D2EC5DB495708C0AB39 /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = ""; }; 6009D670E92930F3D826B7B232BAE2DE /* Pods-Santander-TestTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-TestTests.debug.xcconfig"; sourceTree = ""; }; - 633EDE28CFC6671C9B3A32CBE5574D69 /* IQUIView+Hierarchy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+Hierarchy.swift"; path = "IQKeyboardManagerSwift/Categories/IQUIView+Hierarchy.swift"; sourceTree = ""; }; + 61C7B2747A259463EF9F583ED0735FFF /* Plugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Plugin.swift; path = Sources/Moya/Plugin.swift; sourceTree = ""; }; + 62D8E1A78982244825E42655DEF31E2B /* AMPopTip.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = AMPopTip.framework; path = AMPopTip.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 638AF6E4AD3D6CF6AED6C2F601C4A809 /* Pods-Santander-TestTests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Santander-TestTests-umbrella.h"; sourceTree = ""; }; - 65DE41FA07CAE47B75A7B0ECEA455B45 /* Moya-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Moya-dummy.m"; sourceTree = ""; }; - 6BB22612F45F951AB3A4BEF92939CBC2 /* URL+Moya.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URL+Moya.swift"; path = "Sources/Moya/URL+Moya.swift"; sourceTree = ""; }; - 719F534FF88E65EA1374FB93CA956CD7 /* Image.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Image.swift; path = Sources/Moya/Image.swift; sourceTree = ""; }; - 728381B0C957F32C7C5090A61FAEA5CA /* Plugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Plugin.swift; path = Sources/Moya/Plugin.swift; sourceTree = ""; }; + 6778F6C5A30EF7507D609F04AA77C837 /* StatusAlert-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "StatusAlert-Info.plist"; sourceTree = ""; }; + 6896D29C611F9F43AB11277DBED46F8C /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Alamofire.modulemap; sourceTree = ""; }; + 6B0D3C25CAABB853B0E1562B0AB04773 /* Alamofire.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.xcconfig; sourceTree = ""; }; + 6BBA6A8B1542C5036781E5CB1AD15100 /* NetworkLoggerPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkLoggerPlugin.swift; path = Sources/Moya/Plugins/NetworkLoggerPlugin.swift; sourceTree = ""; }; + 6BF013BC64BC6FEC0A17E5BB75E959F7 /* URLRequest+Encoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URLRequest+Encoding.swift"; path = "Sources/Moya/URLRequest+Encoding.swift"; sourceTree = ""; }; + 6DECA3076074BA79EE14747097FA4232 /* IQKeyboardManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManager.swift; path = IQKeyboardManagerSwift/IQKeyboardManager.swift; sourceTree = ""; }; + 6E6C381B71ED17C8633C06674859A450 /* IQTextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextView.swift; path = IQKeyboardManagerSwift/IQTextView/IQTextView.swift; sourceTree = ""; }; + 6F7B15147E249F80E5874E77D31A450C /* Moya-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Moya-dummy.m"; sourceTree = ""; }; + 71C48AA44E7FE6CA667F2F4956309ED0 /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = ""; }; 72E40C3B6E66E684514A3B0403D07BFE /* Pods-Santander-TestUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-TestUITests.debug.xcconfig"; sourceTree = ""; }; - 74B9158D8A709B402F3747512D251BBC /* URLRequest+Encoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URLRequest+Encoding.swift"; path = "Sources/Moya/URLRequest+Encoding.swift"; sourceTree = ""; }; - 75F7F2C851C3617E1D17A463E7618885 /* AccessTokenPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AccessTokenPlugin.swift; path = Sources/Moya/Plugins/AccessTokenPlugin.swift; sourceTree = ""; }; - 7743099AC812B6D35DF24FCBFCF4537E /* IQKeyboardManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManager.swift; path = IQKeyboardManagerSwift/IQKeyboardManager.swift; sourceTree = ""; }; + 731A83702890AE7019DC4C29DB8E4EC9 /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Sources/Moya/Response.swift; sourceTree = ""; }; + 756857999614F2D10AB3F2D2085DB1A7 /* TaskDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskDelegate.swift; path = Source/TaskDelegate.swift; sourceTree = ""; }; + 7896B8BF68E862E13985590C6A5FA5E3 /* TargetType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TargetType.swift; path = Sources/Moya/TargetType.swift; sourceTree = ""; }; + 7905351DDA208FF2BCDDDB073F863EA1 /* Image.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Image.swift; path = Sources/Moya/Image.swift; sourceTree = ""; }; + 793D9BD7B815AAF1CE1A5BC097261E71 /* StatusAlert.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StatusAlert.swift; path = Sources/StatusAlert/StatusAlert.swift; sourceTree = ""; }; 7A8D526CFB9CE5AE19261B6D3A1AA350 /* Pods-Santander-TestUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-TestUITests.release.xcconfig"; sourceTree = ""; }; - 7B2E52D88228B39B19BFC15CB13A3F70 /* IQKeyboardManagerSwift-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "IQKeyboardManagerSwift-Info.plist"; sourceTree = ""; }; - 80961A91C2B8DDC01EC9AECCAC0EA4FF /* NetworkActivityPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkActivityPlugin.swift; path = Sources/Moya/Plugins/NetworkActivityPlugin.swift; sourceTree = ""; }; + 7B079EB42F083C7BEE0CFAE9F9CBBE17 /* IQPreviousNextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQPreviousNextView.swift; path = IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift; sourceTree = ""; }; + 7BB4646A4AE5EDF356A6C99B24EE2022 /* StatusAlert-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "StatusAlert-prefix.pch"; sourceTree = ""; }; + 82244C246EAA54475DC81632EA200415 /* AccessTokenPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AccessTokenPlugin.swift; path = Sources/Moya/Plugins/AccessTokenPlugin.swift; sourceTree = ""; }; + 82C69D1A74C5F456C4A803DFAC82CE09 /* IQUIView+IQKeyboardToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+IQKeyboardToolbar.swift"; path = "IQKeyboardManagerSwift/IQToolbar/IQUIView+IQKeyboardToolbar.swift"; sourceTree = ""; }; + 83455889E13854AD8ABDD99CD2CC39DA /* UIDevice+Platform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIDevice+Platform.swift"; path = "Sources/StatusAlert/Extensions/UIDevice+Platform.swift"; sourceTree = ""; }; 86F84942F79C4255F7497FC979196A65 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; }; - 87C7B86A27B8EAA7F5FD04A4CFFDB1F2 /* IQPreviousNextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQPreviousNextView.swift; path = IQKeyboardManagerSwift/IQToolbar/IQPreviousNextView.swift; sourceTree = ""; }; - 88F91EDCA4BE8027599B63DA2E825ABE /* IQBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift; sourceTree = ""; }; - 89A807D88F6537CFCC7BA4329542521F /* IQUITextFieldView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUITextFieldView+Additions.swift"; path = "IQKeyboardManagerSwift/Categories/IQUITextFieldView+Additions.swift"; sourceTree = ""; }; - 8B63A6F4E9E65974D5CFB5EC646E66E3 /* StatusAlert-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "StatusAlert-prefix.pch"; sourceTree = ""; }; - 8D1FC303B1005EFF099082C9DEEDC065 /* Endpoint.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Endpoint.swift; path = Sources/Moya/Endpoint.swift; sourceTree = ""; }; - 8DA0AAD9E0B4F4EA588B48D4CC739263 /* AnyEncodable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyEncodable.swift; path = Sources/Moya/AnyEncodable.swift; sourceTree = ""; }; - 8E25B11161FFF47A917FCCEDFF9EB977 /* Alamofire.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.xcconfig; sourceTree = ""; }; - 937966A9F3619A1BECC1B0F3B32F897B /* Result.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Result.xcconfig; sourceTree = ""; }; - 94F6676BE91C9388F6A57252CED9B75E /* Task.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Task.swift; path = Sources/Moya/Task.swift; sourceTree = ""; }; - 96CC6CFAAEF9232FF99261DBA864B65F /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; - 97DDE8EFF0D1936B717C36083D879CF3 /* NoError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoError.swift; path = Result/NoError.swift; sourceTree = ""; }; - 9888FB0E0937634EC24AB6032B9AE8CA /* IQKeyboardManager.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = IQKeyboardManager.bundle; path = IQKeyboardManagerSwift/Resources/IQKeyboardManager.bundle; sourceTree = ""; }; - 98BE80CFBBB51E470B47D8919B0130D5 /* Result-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-prefix.pch"; sourceTree = ""; }; - 98F4F7FBAD28B2ED090E9BB31FEDA8BF /* StatusAlert-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "StatusAlert-umbrella.h"; sourceTree = ""; }; + 8754AA9A73992CC94C22AC805D068C94 /* IQKeyboardManagerSwift.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = IQKeyboardManagerSwift.xcconfig; sourceTree = ""; }; + 8821CC7B10075A400D45D7905D391703 /* AnyError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AnyError.swift; path = Result/AnyError.swift; sourceTree = ""; }; + 8BE8F1E8D7017DC3790579A436C90309 /* Moya-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Moya-Info.plist"; sourceTree = ""; }; + 8F79064F1A379876B04975C47909474E /* IQBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQBarButtonItem.swift; sourceTree = ""; }; + 9007EDEB45A2B5EBA58AEBA614715C01 /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; + 94EA58095938F9B3C04D77F29F66A5D0 /* Pods_Santander_TestUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_TestUITests.framework; path = "Pods-Santander-TestUITests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 94FBF4B876049E18090503AA42985DEC /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = ""; }; + 9505602C5BF594EAAC4A87E55F2C370A /* PopTip.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PopTip.swift; path = Source/PopTip.swift; sourceTree = ""; }; + 9549855D3684432FAA2479D3F48F8D39 /* Result.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Result.framework; path = Result.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 955E3FDCA8BA841ACF0A01EFD5D71CE5 /* Result-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Result-Info.plist"; sourceTree = ""; }; + 95F01307A1F45845DBA269F14D919F08 /* MultiTarget.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultiTarget.swift; path = Sources/Moya/MultiTarget.swift; sourceTree = ""; }; + 97D88DA44C23CFA4142EBCFF9B27EFF5 /* StatusAlertUtils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StatusAlertUtils.swift; path = Sources/StatusAlert/StatusAlertUtils.swift; sourceTree = ""; }; + 98EE8FF0327A2617229C1DCBE5E3BB81 /* Result.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Result.modulemap; sourceTree = ""; }; + 9BC9DAF4C343EFAC7BEC0603F45F19B3 /* StatusAlert-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "StatusAlert-umbrella.h"; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9DC5BD2CD5EBF56ACC506AF8119FAE80 /* IQKeyboardManagerSwift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = IQKeyboardManagerSwift.modulemap; sourceTree = ""; }; - 9F52C185B872CCE7ABC75DFEB89F1C02 /* StatusAlert.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = StatusAlert.xcconfig; sourceTree = ""; }; - 9F95A72295EBE394B54EE1ACD2D34F96 /* IQTitleBarButtonItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTitleBarButtonItem.swift; path = IQKeyboardManagerSwift/IQToolbar/IQTitleBarButtonItem.swift; sourceTree = ""; }; - A7BC42EA73705FAAD6D57EFF04E9D763 /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = ""; }; - A83C6FE78508C4D27EAF3AB6D4155467 /* Alamofire-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Alamofire-Info.plist"; sourceTree = ""; }; + 9E3AC696856747E97BB0C7036CC738F0 /* ValidationType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ValidationType.swift; path = Sources/Moya/ValidationType.swift; sourceTree = ""; }; + A45FB62426083CE495268BAF39405DFD /* IQUIViewController+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIViewController+Additions.swift"; path = "IQKeyboardManagerSwift/Categories/IQUIViewController+Additions.swift"; sourceTree = ""; }; + A5271583821AE646F1015B53E4B0D22C /* IQKeyboardManagerSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardManagerSwift-dummy.m"; sourceTree = ""; }; + A621FA60DF20FE1423923BA34B6029F1 /* MoyaProvider+Defaults.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "MoyaProvider+Defaults.swift"; path = "Sources/Moya/MoyaProvider+Defaults.swift"; sourceTree = ""; }; AA2C7453145C44C27B00E2138508290D /* Pods-Santander-Test.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Santander-Test.modulemap"; sourceTree = ""; }; - AECA685D3C6ED973422868AA96662816 /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Alamofire.modulemap; sourceTree = ""; }; - AFE480D3EB5A010258DDAC7FBEF966E4 /* Pods_Santander_Test.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_Test.framework; path = "Pods-Santander-Test.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - B1B17F3CDC4F8071CA37C06FBE10E5F5 /* IQKeyboardManagerConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerConstants.swift; path = IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift; sourceTree = ""; }; - B26509FE31B6FF712867B3C3ABDDE9CF /* IQToolbar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQToolbar.swift; path = IQKeyboardManagerSwift/IQToolbar/IQToolbar.swift; sourceTree = ""; }; + B19C5155BECC982BA93863CCE6A88B01 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; B2D49289BFD83B3A1582148FE3B1FBCD /* Pods-Santander-TestUITests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-TestUITests-acknowledgements.plist"; sourceTree = ""; }; - B5556BF140A5F3EBD4F3ED65FDCA8E66 /* IQKeyboardManagerSwift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "IQKeyboardManagerSwift-dummy.m"; sourceTree = ""; }; - B6F399CF85DFF7FA61BB6CB811FAD5BA /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Sources/Moya/Response.swift; sourceTree = ""; }; - B8776B5DF29F8D63EE757702169F8426 /* NetworkLoggerPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkLoggerPlugin.swift; path = Sources/Moya/Plugins/NetworkLoggerPlugin.swift; sourceTree = ""; }; - BCC3F270782DA39D5C8269EA39BA00FE /* Moya.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Moya.modulemap; sourceTree = ""; }; - BDC12AC17B21AD952C228F3F6271CE6C /* Result-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Result-Info.plist"; sourceTree = ""; }; - BFCAF7529D571A3E1B28CA0E74B2CE9B /* Moya-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Moya-prefix.pch"; sourceTree = ""; }; + B59FD9D3900B13A0C0C03E7343CB19EF /* IQUIView+Hierarchy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIView+Hierarchy.swift"; path = "IQKeyboardManagerSwift/Categories/IQUIView+Hierarchy.swift"; sourceTree = ""; }; + B821A0250D510FC0475D60FCF6CA59F8 /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; + B9DFC3190B2000CE552C11328102AD09 /* PopTip+Draw.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "PopTip+Draw.swift"; path = "Source/PopTip+Draw.swift"; sourceTree = ""; }; + BF38D7A18F03C664EC6EE0C9B22A7CE4 /* MoyaError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MoyaError.swift; path = Sources/Moya/MoyaError.swift; sourceTree = ""; }; + BF7E09A17DBD8AB26665BBCDBC2CDFEA /* Moya-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Moya-prefix.pch"; sourceTree = ""; }; + BFB4BE60C2E697DB2B80B3F13833F5E8 /* IQUITextFieldView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUITextFieldView+Additions.swift"; path = "IQKeyboardManagerSwift/Categories/IQUITextFieldView+Additions.swift"; sourceTree = ""; }; + C23191AA0D756503E4C42654D277AE58 /* IQInvocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQInvocation.swift; path = IQKeyboardManagerSwift/IQToolbar/IQInvocation.swift; sourceTree = ""; }; C283542EF8EEF865485C078FFAAD4FCC /* Result.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Result.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C3222A2F3D223C0E9BFC0434EDF1D436 /* Moya+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Moya+Alamofire.swift"; path = "Sources/Moya/Moya+Alamofire.swift"; sourceTree = ""; }; - C57EF9785B9237C31BD56ED973E54549 /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; - CB4E5F7F9A3FA15DB2520CB008B6FAC4 /* IQKeyboardManagerSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = IQKeyboardManagerSwift.framework; path = IQKeyboardManagerSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - CC81268C9C29F16A594F53447D70D13B /* ValidationType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ValidationType.swift; path = Sources/Moya/ValidationType.swift; sourceTree = ""; }; + C4F3617A6AD2DA24CB5D716B779284F8 /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; + C7C27ADB3CDDE59F459AB5DF4B23583F /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Result/Result.swift; sourceTree = ""; }; CD5133133E24C110EF3769A9D93DE159 /* Pods-Santander-TestUITests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Santander-TestUITests-dummy.m"; sourceTree = ""; }; CD7B595FE6596FB636EB30207B2F428A /* Pods-Santander-TestUITests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Santander-TestUITests.modulemap"; sourceTree = ""; }; D02D3D21156144D3F4B936265D29A56A /* Pods-Santander-TestTests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-TestTests-acknowledgements.plist"; sourceTree = ""; }; - D06B9F58D5667FE4E189AB259DAAD2C4 /* MoyaProvider+Defaults.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "MoyaProvider+Defaults.swift"; path = "Sources/Moya/MoyaProvider+Defaults.swift"; sourceTree = ""; }; - D66130D7B981E7045B09E24E16B2EB60 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = ""; }; + D05EA68EF87A95B537922D70C6DC0427 /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; + D1CB1588C635AF0E142CA79C1D791345 /* Result.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Result.xcconfig; sourceTree = ""; }; + D26A8905411437A4096352B51EC87710 /* NetworkActivityPlugin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkActivityPlugin.swift; path = Sources/Moya/Plugins/NetworkActivityPlugin.swift; sourceTree = ""; }; D90FE54F5D11CC69794D8BED8AA7D675 /* Pods-Santander-TestTests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Santander-TestTests-Info.plist"; sourceTree = ""; }; + DA5BE578C477043FD77994721DF2CF79 /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = ""; }; DC70403EFC8F9FE430904EE770C96364 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - DD36FB1A741E1074457D7A2382146DEE /* StatusAlert-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "StatusAlert-dummy.m"; sourceTree = ""; }; - DD93652CEA85021627EAF26A035F40B5 /* MoyaProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MoyaProvider.swift; path = Sources/Moya/MoyaProvider.swift; sourceTree = ""; }; - DF2C2F8414E8156C7A452AE20C93161F /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = ""; }; - DF5C70165854A846C790FC0BF9CEF8BB /* SessionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionManager.swift; path = Source/SessionManager.swift; sourceTree = ""; }; - E20C969B5ACCF7AC28D547C2078332EF /* StatusAlertUtils.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StatusAlertUtils.swift; path = Sources/StatusAlert/StatusAlertUtils.swift; sourceTree = ""; }; - E29419B867A52354795ED7FB236D2F33 /* IQTextView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQTextView.swift; path = IQKeyboardManagerSwift/IQTextView/IQTextView.swift; sourceTree = ""; }; - E684B69530F5AC628E7BA0796911F7B9 /* UIDevice+Platform.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIDevice+Platform.swift"; path = "Sources/StatusAlert/Extensions/UIDevice+Platform.swift"; sourceTree = ""; }; - E735A4A25FD892AEFF9C851F534D9A3A /* Pods_Santander_TestTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_TestTests.framework; path = "Pods-Santander-TestTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; - EA502CFB7AC3936E52CC74C5F5903259 /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = ""; }; - EB19AC8DA7A93FC9BFCFC76AFC8EF5E6 /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; - EBFA20F5DDDD154A8326BD23776A0B0F /* IQKeyboardManagerSwift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "IQKeyboardManagerSwift-umbrella.h"; sourceTree = ""; }; + DF6CAF521EED88DF2040CD240D5F4C3A /* SessionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionManager.swift; path = Source/SessionManager.swift; sourceTree = ""; }; + E088536B128E3AB516E66A17708F6322 /* StatusAlert.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = StatusAlert.modulemap; sourceTree = ""; }; + E1C2681F4C36A1893AAE9A6548862463 /* Pods_Santander_Test.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_Test.framework; path = "Pods-Santander-Test.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + E58D219C426FD2752002E027A43233F2 /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; + E819577D2B1029AE4C9270C33FFFE71E /* Result-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-prefix.pch"; sourceTree = ""; }; + E91E237C060ECC2B4366CA83D0CC2C5E /* Pods_Santander_TestTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Pods_Santander_TestTests.framework; path = "Pods-Santander-TestTests.framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + E98DD21778D48883FC8AFC80B446C777 /* AMPopTip.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = AMPopTip.modulemap; sourceTree = ""; }; + ED4C8B5361C64793391D06271956C190 /* PopTip+Transitions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "PopTip+Transitions.swift"; path = "Source/PopTip+Transitions.swift"; sourceTree = ""; }; + EE397110EB17007AD8326CD6E6A3C67E /* UIDevice+Blur.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "UIDevice+Blur.swift"; path = "Sources/StatusAlert/Extensions/UIDevice+Blur.swift"; sourceTree = ""; }; EFB6498CD7E9F2FB9A16399EB90D28B7 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + F001F52BA7BA1ED9D50942621A44C511 /* StatusAlert.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = StatusAlert.framework; path = StatusAlert.framework; sourceTree = BUILT_PRODUCTS_DIR; }; F3708A4B829835EBC49B784D84968130 /* Pods-Santander-TestTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Santander-TestTests.release.xcconfig"; sourceTree = ""; }; - F4293278E9B40CE3E34D1390D17A6BD4 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Sources/Moya/MultipartFormData.swift; sourceTree = ""; }; - F637DAED777FC65DFA84AD4F763139D2 /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; - F7786EF96DCE14E5204731F1893CE1A5 /* StatusAlert.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StatusAlert.swift; path = Sources/StatusAlert/StatusAlert.swift; sourceTree = ""; }; - FA585978B6EF86FA20AB0138C45A113D /* IQUIScrollView+Additions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQUIScrollView+Additions.swift"; path = "IQKeyboardManagerSwift/Categories/IQUIScrollView+Additions.swift"; sourceTree = ""; }; - FD9C67F7A723A7B1D92D3EE704F735DB /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Result/Result.swift; sourceTree = ""; }; - FE54289085F8E76D867635DEA5F18BAB /* TaskDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskDelegate.swift; path = Source/TaskDelegate.swift; sourceTree = ""; }; + F52E478305B403B1169C3B03E7EBC07F /* StatusAlert-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "StatusAlert-dummy.m"; sourceTree = ""; }; + F7EF57EFB1DD70A9C3098E6C3F95C151 /* Moya.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Moya.framework; path = Moya.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F8C902A8CC69883010175615A839CBCD /* URL+Moya.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URL+Moya.swift"; path = "Sources/Moya/URL+Moya.swift"; sourceTree = ""; }; + F8CA6ADC7C7F6B367BAD8CBEBF1343A6 /* IQNSArray+Sort.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "IQNSArray+Sort.swift"; path = "IQKeyboardManagerSwift/Categories/IQNSArray+Sort.swift"; sourceTree = ""; }; + FA4B95F0E633A9A9A8873BF0C4903533 /* Moya+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Moya+Alamofire.swift"; path = "Sources/Moya/Moya+Alamofire.swift"; sourceTree = ""; }; + FA89BCF8A139DFA2E60DDAB8DC3BDFE1 /* Result-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Result-dummy.m"; sourceTree = ""; }; + FA9B159763A6EABA1D15D3D6E8BB8EE3 /* AMPopTip-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AMPopTip-umbrella.h"; sourceTree = ""; }; + FAC703355C70EAC3B48FF2F65BEF1DAB /* NoError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NoError.swift; path = Result/NoError.swift; sourceTree = ""; }; + FC9BF101351D627A2889DC5AC3F84506 /* Cancellable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Cancellable.swift; path = Sources/Moya/Cancellable.swift; sourceTree = ""; }; + FD6CDA7D7EAF4FC3809223A51A3B6520 /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; + FE087567C6073974F01DC1BAA34DE25C /* IQKeyboardManagerConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = IQKeyboardManagerConstants.swift; path = IQKeyboardManagerSwift/Constants/IQKeyboardManagerConstants.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 17DCD29D0B9242D128900FBEA4698769 /* Frameworks */ = { + 2FAF1D107A0B9FB6A19D58960CEC7344 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AA3DA32EDDE1FFCB4FFD9B6D58EB106C /* Foundation.framework in Frameworks */, + 3005629E42A84DED8C68F0C783DEE3A6 /* Foundation.framework in Frameworks */, + 329BBBB341642193502FA0DF77C011FA /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -325,6 +349,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 61ADA0C1B2897AA3D357547B127F1565 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 314B8AD1268E89278CCE47BFEA79C43F /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 6ABC78A038A90F8F48964B9677372CB6 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -333,6 +365,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 89BB5572C584E93D4B27FFE1EE1E6FFF /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 88D92EDE37F1B362ECB8A6F8911DAC6E /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; B886D41EF763DE44F455CB7E74E9A560 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -360,15 +400,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - E4A2A7E6121AC09E8ACE0C8FEE53A1F6 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 2305008B1D46627F9B49FAFF25CD6FE6 /* Foundation.framework in Frameworks */, - A613A3BC72B998F1914EDF4994DD8A12 /* UIKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; F1626ADC3A7EC435D2722B3173355D36 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -390,118 +421,110 @@ name = Frameworks; sourceTree = ""; }; - 053BFCD0360F267B64837977F51C5BA2 /* Resources */ = { + 1A1D14300A58FDC9F70D8885755512A1 /* Support Files */ = { isa = PBXGroup; children = ( - 9888FB0E0937634EC24AB6032B9AE8CA /* IQKeyboardManager.bundle */, - ); - name = Resources; - sourceTree = ""; - }; - 149D5D247260431BC1C9D500806BC075 /* Support Files */ = { - isa = PBXGroup; - children = ( - 55104E9F564D5CF7B3292964D9C21FAB /* Result.modulemap */, - 937966A9F3619A1BECC1B0F3B32F897B /* Result.xcconfig */, - 26DE6FA33754885F7D18C7AFB0B58F7C /* Result-dummy.m */, - BDC12AC17B21AD952C228F3F6271CE6C /* Result-Info.plist */, - 98BE80CFBBB51E470B47D8919B0130D5 /* Result-prefix.pch */, - 328A04F05F9289BCF1C7AF8FADD81524 /* Result-umbrella.h */, + 6896D29C611F9F43AB11277DBED46F8C /* Alamofire.modulemap */, + 6B0D3C25CAABB853B0E1562B0AB04773 /* Alamofire.xcconfig */, + 1DD6D83DD5AE4B9C0CA1C80B73978D5F /* Alamofire-dummy.m */, + 52A7962BA43F6C95A0167DE119923864 /* Alamofire-Info.plist */, + C4F3617A6AD2DA24CB5D716B779284F8 /* Alamofire-prefix.pch */, + 9007EDEB45A2B5EBA58AEBA614715C01 /* Alamofire-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/Result"; + path = "../Target Support Files/Alamofire"; sourceTree = ""; }; - 2C389E170C292DDA82437CC392D4FE85 /* Support Files */ = { + 3EB0C83CAF9F96A61BFFC8BC01F5CAD8 /* Support Files */ = { isa = PBXGroup; children = ( - AECA685D3C6ED973422868AA96662816 /* Alamofire.modulemap */, - 8E25B11161FFF47A917FCCEDFF9EB977 /* Alamofire.xcconfig */, - 96CC6CFAAEF9232FF99261DBA864B65F /* Alamofire-dummy.m */, - A83C6FE78508C4D27EAF3AB6D4155467 /* Alamofire-Info.plist */, - 18E15337DA6A3A5DCC4EE6501981459B /* Alamofire-prefix.pch */, - EB19AC8DA7A93FC9BFCFC76AFC8EF5E6 /* Alamofire-umbrella.h */, + 17F4B87CA0F449904B527F31FA799551 /* IQKeyboardManagerSwift.modulemap */, + 8754AA9A73992CC94C22AC805D068C94 /* IQKeyboardManagerSwift.xcconfig */, + A5271583821AE646F1015B53E4B0D22C /* IQKeyboardManagerSwift-dummy.m */, + 2F309854407F224D9C16B2A9333BDADE /* IQKeyboardManagerSwift-Info.plist */, + 4E8913DBA190C8B315A24290438509E2 /* IQKeyboardManagerSwift-prefix.pch */, + 15C6D9AAE7AFB1D510907D85B8CAC6B6 /* IQKeyboardManagerSwift-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/Alamofire"; + path = "../Target Support Files/IQKeyboardManagerSwift"; sourceTree = ""; }; - 30FF202C39E678F49625022FFED16737 /* StatusAlert */ = { + 4E62EEA8F485FE09ADA73F5E5D814811 /* Targets Support Files */ = { isa = PBXGroup; children = ( - F7786EF96DCE14E5204731F1893CE1A5 /* StatusAlert.swift */, - E20C969B5ACCF7AC28D547C2078332EF /* StatusAlertUtils.swift */, - 296A315F1030E5D22D1E86AEDBA33212 /* UIDevice+Blur.swift */, - E684B69530F5AC628E7BA0796911F7B9 /* UIDevice+Platform.swift */, - 65E224076652D87317E4CBC37346E5EA /* Support Files */, + BA0EF3892F9082EED2C4A464C1FF099B /* Pods-Santander-Test */, + 863C6216E2FC106570AB6ECF1BDDC850 /* Pods-Santander-TestTests */, + A9078A16582838D0FA5E20E72F39180F /* Pods-Santander-TestUITests */, ); - name = StatusAlert; - path = StatusAlert; + name = "Targets Support Files"; sourceTree = ""; }; - 34BAAE7963DA4C69A61651A95716D958 /* Result */ = { + 56285F3447EC0E47169E9F16B26D0E4F /* Support Files */ = { isa = PBXGroup; children = ( - 30FE6299336582DF3F7BC9BA9492A8B1 /* AnyError.swift */, - 97DDE8EFF0D1936B717C36083D879CF3 /* NoError.swift */, - FD9C67F7A723A7B1D92D3EE704F735DB /* Result.swift */, - 036C9BB9BB550214D7E17CE54385E228 /* ResultProtocol.swift */, - 149D5D247260431BC1C9D500806BC075 /* Support Files */, + E088536B128E3AB516E66A17708F6322 /* StatusAlert.modulemap */, + 3A7155821E550BB48423DD1D5A915B48 /* StatusAlert.xcconfig */, + F52E478305B403B1169C3B03E7EBC07F /* StatusAlert-dummy.m */, + 6778F6C5A30EF7507D609F04AA77C837 /* StatusAlert-Info.plist */, + 7BB4646A4AE5EDF356A6C99B24EE2022 /* StatusAlert-prefix.pch */, + 9BC9DAF4C343EFAC7BEC0603F45F19B3 /* StatusAlert-umbrella.h */, ); - name = Result; - path = Result; + name = "Support Files"; + path = "../Target Support Files/StatusAlert"; sourceTree = ""; }; - 4E62EEA8F485FE09ADA73F5E5D814811 /* Targets Support Files */ = { + 582E78C5DF50D88F3BC4886372AF89FE /* Support Files */ = { isa = PBXGroup; children = ( - BA0EF3892F9082EED2C4A464C1FF099B /* Pods-Santander-Test */, - 863C6216E2FC106570AB6ECF1BDDC850 /* Pods-Santander-TestTests */, - A9078A16582838D0FA5E20E72F39180F /* Pods-Santander-TestUITests */, + E98DD21778D48883FC8AFC80B446C777 /* AMPopTip.modulemap */, + 0A9370C1B5A38F7E656EE5FAB9855D66 /* AMPopTip.xcconfig */, + 1299D2802DF81035888B1EF8BD097426 /* AMPopTip-dummy.m */, + 5EDE2F0D0D20F8B9666B15E4E4980ABA /* AMPopTip-Info.plist */, + 145218CC34A5DEC0A2852C9D9724C4EB /* AMPopTip-prefix.pch */, + FA9B159763A6EABA1D15D3D6E8BB8EE3 /* AMPopTip-umbrella.h */, ); - name = "Targets Support Files"; + name = "Support Files"; + path = "../Target Support Files/AMPopTip"; sourceTree = ""; }; - 65E224076652D87317E4CBC37346E5EA /* Support Files */ = { + 6A057F5B7E36364DD5B9A90C68150548 /* Support Files */ = { isa = PBXGroup; children = ( - 4A13C96B31C7821F3E4A5A284662445A /* StatusAlert.modulemap */, - 9F52C185B872CCE7ABC75DFEB89F1C02 /* StatusAlert.xcconfig */, - DD36FB1A741E1074457D7A2382146DEE /* StatusAlert-dummy.m */, - 5813128D7F17576C17CF53BD0B25AA9F /* StatusAlert-Info.plist */, - 8B63A6F4E9E65974D5CFB5EC646E66E3 /* StatusAlert-prefix.pch */, - 98F4F7FBAD28B2ED090E9BB31FEDA8BF /* StatusAlert-umbrella.h */, + 54A5B4CE524043844F286D1E6867FD30 /* Moya.modulemap */, + 4A815150FE659B719E0E5ECD4EC715BA /* Moya.xcconfig */, + 6F7B15147E249F80E5874E77D31A450C /* Moya-dummy.m */, + 8BE8F1E8D7017DC3790579A436C90309 /* Moya-Info.plist */, + BF7E09A17DBD8AB26665BBCDBC2CDFEA /* Moya-prefix.pch */, + 0A64D86776CE0A15D579A12A1E3435FC /* Moya-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/StatusAlert"; + path = "../Target Support Files/Moya"; sourceTree = ""; }; - 6DDD2673AE05175675C65363A9F748BD /* Support Files */ = { + 6CE46993FE8FC7D92C2DAEEE52E274C0 /* AMPopTip */ = { isa = PBXGroup; children = ( - BCC3F270782DA39D5C8269EA39BA00FE /* Moya.modulemap */, - 1B9A46ABB3BFE5994BED32D734D5432C /* Moya.xcconfig */, - 65DE41FA07CAE47B75A7B0ECEA455B45 /* Moya-dummy.m */, - 577F89C1743CC208578DC486E2EB5205 /* Moya-Info.plist */, - BFCAF7529D571A3E1B28CA0E74B2CE9B /* Moya-prefix.pch */, - 3A3A7A69572AE7480428E2E0E461AB44 /* Moya-umbrella.h */, + 9505602C5BF594EAAC4A87E55F2C370A /* PopTip.swift */, + B9DFC3190B2000CE552C11328102AD09 /* PopTip+Draw.swift */, + ED4C8B5361C64793391D06271956C190 /* PopTip+Transitions.swift */, + 582E78C5DF50D88F3BC4886372AF89FE /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/Moya"; + name = AMPopTip; + path = AMPopTip; sourceTree = ""; }; - 7CFEA0AAA25A01DB424295A88CABF907 /* Support Files */ = { + 845B6CE234ED8174B179EA9F75D1594D /* Support Files */ = { isa = PBXGroup; children = ( - 9DC5BD2CD5EBF56ACC506AF8119FAE80 /* IQKeyboardManagerSwift.modulemap */, - 48E0DA4E62B261616F5CB85432594956 /* IQKeyboardManagerSwift.xcconfig */, - B5556BF140A5F3EBD4F3ED65FDCA8E66 /* IQKeyboardManagerSwift-dummy.m */, - 7B2E52D88228B39B19BFC15CB13A3F70 /* IQKeyboardManagerSwift-Info.plist */, - 37248464644A9B94B38F659CD7868B33 /* IQKeyboardManagerSwift-prefix.pch */, - EBFA20F5DDDD154A8326BD23776A0B0F /* IQKeyboardManagerSwift-umbrella.h */, + 98EE8FF0327A2617229C1DCBE5E3BB81 /* Result.modulemap */, + D1CB1588C635AF0E142CA79C1D791345 /* Result.xcconfig */, + FA89BCF8A139DFA2E60DDAB8DC3BDFE1 /* Result-dummy.m */, + 955E3FDCA8BA841ACF0A01EFD5D71CE5 /* Result-Info.plist */, + E819577D2B1029AE4C9270C33FFFE71E /* Result-prefix.pch */, + 11E428322B8F20B4BD04558E00C12301 /* Result-umbrella.h */, ); name = "Support Files"; - path = "../Target Support Files/IQKeyboardManagerSwift"; + path = "../Target Support Files/Result"; sourceTree = ""; }; 863C6216E2FC106570AB6ECF1BDDC850 /* Pods-Santander-TestTests */ = { @@ -520,27 +543,27 @@ path = "Target Support Files/Pods-Santander-TestTests"; sourceTree = ""; }; - 86C31A1DF76B5FA4E2A40A866123CC0E /* IQKeyboardManagerSwift */ = { + 8DC894E19E1D4CF5F40B2C6C7A9211D1 /* IQKeyboardManagerSwift */ = { isa = PBXGroup; children = ( - 88F91EDCA4BE8027599B63DA2E825ABE /* IQBarButtonItem.swift */, - 085FF4D9FD6B749469B78F086929216E /* IQInvocation.swift */, - 7743099AC812B6D35DF24FCBFCF4537E /* IQKeyboardManager.swift */, - B1B17F3CDC4F8071CA37C06FBE10E5F5 /* IQKeyboardManagerConstants.swift */, - 4A18D45FD115A7DA68A3AAF2F51C2E6B /* IQKeyboardManagerConstantsInternal.swift */, - 2927D5C13102DF85F4C558738DCEDB8E /* IQKeyboardReturnKeyHandler.swift */, - 2F1EFD9B3A6694A4DF2D1A7D0CEAE5BF /* IQNSArray+Sort.swift */, - 87C7B86A27B8EAA7F5FD04A4CFFDB1F2 /* IQPreviousNextView.swift */, - E29419B867A52354795ED7FB236D2F33 /* IQTextView.swift */, - 9F95A72295EBE394B54EE1ACD2D34F96 /* IQTitleBarButtonItem.swift */, - B26509FE31B6FF712867B3C3ABDDE9CF /* IQToolbar.swift */, - FA585978B6EF86FA20AB0138C45A113D /* IQUIScrollView+Additions.swift */, - 89A807D88F6537CFCC7BA4329542521F /* IQUITextFieldView+Additions.swift */, - 633EDE28CFC6671C9B3A32CBE5574D69 /* IQUIView+Hierarchy.swift */, - 0F81284941748F0B4B0BF4AD4CBDA1EA /* IQUIView+IQKeyboardToolbar.swift */, - 47DE8F6C18198698D8D90127F3D79364 /* IQUIViewController+Additions.swift */, - 053BFCD0360F267B64837977F51C5BA2 /* Resources */, - 7CFEA0AAA25A01DB424295A88CABF907 /* Support Files */, + 8F79064F1A379876B04975C47909474E /* IQBarButtonItem.swift */, + C23191AA0D756503E4C42654D277AE58 /* IQInvocation.swift */, + 6DECA3076074BA79EE14747097FA4232 /* IQKeyboardManager.swift */, + FE087567C6073974F01DC1BAA34DE25C /* IQKeyboardManagerConstants.swift */, + 3007389BFB5C400ADA99640D19484908 /* IQKeyboardManagerConstantsInternal.swift */, + 27F1E014D4F06349619A808BCC3D021A /* IQKeyboardReturnKeyHandler.swift */, + F8CA6ADC7C7F6B367BAD8CBEBF1343A6 /* IQNSArray+Sort.swift */, + 7B079EB42F083C7BEE0CFAE9F9CBBE17 /* IQPreviousNextView.swift */, + 6E6C381B71ED17C8633C06674859A450 /* IQTextView.swift */, + 157AB990513DA582CA4369A962E2F52F /* IQTitleBarButtonItem.swift */, + 214339B9ACA04BC4CA6C980F9545E964 /* IQToolbar.swift */, + 13E4593C0360CBA8031C9DC2E64BEBC1 /* IQUIScrollView+Additions.swift */, + BFB4BE60C2E697DB2B80B3F13833F5E8 /* IQUITextFieldView+Additions.swift */, + B59FD9D3900B13A0C0C03E7343CB19EF /* IQUIView+Hierarchy.swift */, + 82C69D1A74C5F456C4A803DFAC82CE09 /* IQUIView+IQKeyboardToolbar.swift */, + A45FB62426083CE495268BAF39405DFD /* IQUIViewController+Additions.swift */, + BB46FDFCA3E7D48F2873D5F373BAC289 /* Resources */, + 3EB0C83CAF9F96A61BFFC8BC01F5CAD8 /* Support Files */, ); name = IQKeyboardManagerSwift; path = IQKeyboardManagerSwift; @@ -590,16 +613,70 @@ path = "Target Support Files/Pods-Santander-Test"; sourceTree = ""; }; - BFD36BCD147363C1B0766397B8031EE7 /* Pods */ = { + BB46FDFCA3E7D48F2873D5F373BAC289 /* Resources */ = { isa = PBXGroup; children = ( - EF916F15D87BA874557B8A1408D3C2F0 /* Alamofire */, - 86C31A1DF76B5FA4E2A40A866123CC0E /* IQKeyboardManagerSwift */, - FDEAC8E60A8FB2B371155A8F6830A9D9 /* Moya */, - 34BAAE7963DA4C69A61651A95716D958 /* Result */, - 30FF202C39E678F49625022FFED16737 /* StatusAlert */, + 4E6702644CDF6D2BB61A66FB6113E484 /* IQKeyboardManager.bundle */, ); - name = Pods; + name = Resources; + sourceTree = ""; + }; + BCB6573B8E41B4C4C0480E410B9E0769 /* Core */ = { + isa = PBXGroup; + children = ( + 82244C246EAA54475DC81632EA200415 /* AccessTokenPlugin.swift */, + 47CDDA230D44A9D90E4E680D0F704ECA /* AnyEncodable.swift */, + FC9BF101351D627A2889DC5AC3F84506 /* Cancellable.swift */, + 1EB06C4313AEB9EB7D11D7BC4AC79893 /* CredentialsPlugin.swift */, + 3D55C096C7852AD0FD5900FFDEC056A7 /* Endpoint.swift */, + 7905351DDA208FF2BCDDDB073F863EA1 /* Image.swift */, + FA4B95F0E633A9A9A8873BF0C4903533 /* Moya+Alamofire.swift */, + BF38D7A18F03C664EC6EE0C9B22A7CE4 /* MoyaError.swift */, + 05C078CAC67FA75DFA89DF555E04156A /* MoyaProvider.swift */, + A621FA60DF20FE1423923BA34B6029F1 /* MoyaProvider+Defaults.swift */, + 291574678DD74D639BB420782B57ECFC /* MoyaProvider+Internal.swift */, + 2C381BBCB0AA8AFC6E94A60990BF256E /* MultipartFormData.swift */, + 95F01307A1F45845DBA269F14D919F08 /* MultiTarget.swift */, + D26A8905411437A4096352B51EC87710 /* NetworkActivityPlugin.swift */, + 6BBA6A8B1542C5036781E5CB1AD15100 /* NetworkLoggerPlugin.swift */, + 61C7B2747A259463EF9F583ED0735FFF /* Plugin.swift */, + 731A83702890AE7019DC4C29DB8E4EC9 /* Response.swift */, + 7896B8BF68E862E13985590C6A5FA5E3 /* TargetType.swift */, + 1271F76A652701E7081E1256BCEA38D5 /* Task.swift */, + F8C902A8CC69883010175615A839CBCD /* URL+Moya.swift */, + 6BF013BC64BC6FEC0A17E5BB75E959F7 /* URLRequest+Encoding.swift */, + 9E3AC696856747E97BB0C7036CC738F0 /* ValidationType.swift */, + ); + name = Core; + sourceTree = ""; + }; + BD45C81BD98CE392E5786E7DEECC93A4 /* Products */ = { + isa = PBXGroup; + children = ( + 1101C4E2CAB959A7BFD21FE75E332005 /* Alamofire.framework */, + 62D8E1A78982244825E42655DEF31E2B /* AMPopTip.framework */, + 555CDDB61EE2030B6AA753AE6C16F884 /* IQKeyboardManagerSwift.framework */, + F7EF57EFB1DD70A9C3098E6C3F95C151 /* Moya.framework */, + E1C2681F4C36A1893AAE9A6548862463 /* Pods_Santander_Test.framework */, + E91E237C060ECC2B4366CA83D0CC2C5E /* Pods_Santander_TestTests.framework */, + 94EA58095938F9B3C04D77F29F66A5D0 /* Pods_Santander_TestUITests.framework */, + 9549855D3684432FAA2479D3F48F8D39 /* Result.framework */, + F001F52BA7BA1ED9D50942621A44C511 /* StatusAlert.framework */, + ); + name = Products; + sourceTree = ""; + }; + C002BDB3E66CB8748CFC85763CCBEDFA /* StatusAlert */ = { + isa = PBXGroup; + children = ( + 793D9BD7B815AAF1CE1A5BC097261E71 /* StatusAlert.swift */, + 97D88DA44C23CFA4142EBCFF9B27EFF5 /* StatusAlertUtils.swift */, + EE397110EB17007AD8326CD6E6A3C67E /* UIDevice+Blur.swift */, + 83455889E13854AD8ABDD99CD2CC39DA /* UIDevice+Platform.swift */, + 56285F3447EC0E47169E9F16B26D0E4F /* Support Files */, + ); + name = StatusAlert; + path = StatusAlert; sourceTree = ""; }; CF1408CF629C7361332E53B88F7BD30C = { @@ -607,116 +684,106 @@ children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, 04CC267E9A7BDA107E37B245ACDB31A7 /* Frameworks */, - BFD36BCD147363C1B0766397B8031EE7 /* Pods */, - DD9BF8EAEAA8BC7488B0707BAF97D324 /* Products */, + E21D492D1DCAFF433C7FC3AF8A0AE42D /* Pods */, + BD45C81BD98CE392E5786E7DEECC93A4 /* Products */, 4E62EEA8F485FE09ADA73F5E5D814811 /* Targets Support Files */, ); sourceTree = ""; }; - D47280E7FC22B2F97BF6218A6B281FD8 /* Core */ = { + D0ACFE16757C4FCD83D3F516DFA35C7B /* Moya */ = { isa = PBXGroup; children = ( - 75F7F2C851C3617E1D17A463E7618885 /* AccessTokenPlugin.swift */, - 8DA0AAD9E0B4F4EA588B48D4CC739263 /* AnyEncodable.swift */, - 056C7459B361B149CA51708A85253EE3 /* Cancellable.swift */, - 3D002E8340BBE5C1616ECCA13C725EC1 /* CredentialsPlugin.swift */, - 8D1FC303B1005EFF099082C9DEEDC065 /* Endpoint.swift */, - 719F534FF88E65EA1374FB93CA956CD7 /* Image.swift */, - C3222A2F3D223C0E9BFC0434EDF1D436 /* Moya+Alamofire.swift */, - 01D9799349EC8482A0ECE9B147F2490D /* MoyaError.swift */, - DD93652CEA85021627EAF26A035F40B5 /* MoyaProvider.swift */, - D06B9F58D5667FE4E189AB259DAAD2C4 /* MoyaProvider+Defaults.swift */, - 4717EBE7E99D0E15A9A655B784B25DC0 /* MoyaProvider+Internal.swift */, - F4293278E9B40CE3E34D1390D17A6BD4 /* MultipartFormData.swift */, - 4BFA77DDD304D4813A042BD0F715AD28 /* MultiTarget.swift */, - 80961A91C2B8DDC01EC9AECCAC0EA4FF /* NetworkActivityPlugin.swift */, - B8776B5DF29F8D63EE757702169F8426 /* NetworkLoggerPlugin.swift */, - 728381B0C957F32C7C5090A61FAEA5CA /* Plugin.swift */, - B6F399CF85DFF7FA61BB6CB811FAD5BA /* Response.swift */, - 43B255A8B71C5B85363E9624F9CA0368 /* TargetType.swift */, - 94F6676BE91C9388F6A57252CED9B75E /* Task.swift */, - 6BB22612F45F951AB3A4BEF92939CBC2 /* URL+Moya.swift */, - 74B9158D8A709B402F3747512D251BBC /* URLRequest+Encoding.swift */, - CC81268C9C29F16A594F53447D70D13B /* ValidationType.swift */, + BCB6573B8E41B4C4C0480E410B9E0769 /* Core */, + 6A057F5B7E36364DD5B9A90C68150548 /* Support Files */, ); - name = Core; + name = Moya; + path = Moya; sourceTree = ""; }; - DD9BF8EAEAA8BC7488B0707BAF97D324 /* Products */ = { + E21D492D1DCAFF433C7FC3AF8A0AE42D /* Pods */ = { isa = PBXGroup; children = ( - 1F000A497FCACF240584ABE5D0F82CB9 /* Alamofire.framework */, - CB4E5F7F9A3FA15DB2520CB008B6FAC4 /* IQKeyboardManagerSwift.framework */, - 08BEEA538E1F71DAA5790616C8943AF6 /* Moya.framework */, - AFE480D3EB5A010258DDAC7FBEF966E4 /* Pods_Santander_Test.framework */, - E735A4A25FD892AEFF9C851F534D9A3A /* Pods_Santander_TestTests.framework */, - 08069C0730E81199B1847B7820188F18 /* Pods_Santander_TestUITests.framework */, - 4B9E207652A8E03550292AD25FD2362D /* Result.framework */, - 15DC749833EFE285A38784DC6194D142 /* StatusAlert.framework */, + F1A4F2099A92E769CD6E2E01FE4EAD32 /* Alamofire */, + 6CE46993FE8FC7D92C2DAEEE52E274C0 /* AMPopTip */, + 8DC894E19E1D4CF5F40B2C6C7A9211D1 /* IQKeyboardManagerSwift */, + D0ACFE16757C4FCD83D3F516DFA35C7B /* Moya */, + FE011F741BCD2FC6EFC2A01E90EFA247 /* Result */, + C002BDB3E66CB8748CFC85763CCBEDFA /* StatusAlert */, ); - name = Products; + name = Pods; sourceTree = ""; }; - EF916F15D87BA874557B8A1408D3C2F0 /* Alamofire */ = { + F1A4F2099A92E769CD6E2E01FE4EAD32 /* Alamofire */ = { isa = PBXGroup; children = ( - 5A8A73AC789E75D3AFE3572EEF6F8A59 /* AFError.swift */, - 347486DBCB93D186BAB6C9AD930ED55A /* Alamofire.swift */, - 47B3494D6695B6A07C957BDDC2F3EFAF /* DispatchQueue+Alamofire.swift */, - 14474910351E268CA497EE13395B79B6 /* MultipartFormData.swift */, - EA502CFB7AC3936E52CC74C5F5903259 /* NetworkReachabilityManager.swift */, - 43714182B7BCA5485EBDE4CF6A9ABDD5 /* Notifications.swift */, - 43B3D46C5537399369C6EAC56AC200FE /* ParameterEncoding.swift */, - F637DAED777FC65DFA84AD4F763139D2 /* Request.swift */, - 4440E7D93688311D478621074DF71345 /* Response.swift */, - C57EF9785B9237C31BD56ED973E54549 /* ResponseSerialization.swift */, - D66130D7B981E7045B09E24E16B2EB60 /* Result.swift */, - DF2C2F8414E8156C7A452AE20C93161F /* ServerTrustPolicy.swift */, - A7BC42EA73705FAAD6D57EFF04E9D763 /* SessionDelegate.swift */, - DF5C70165854A846C790FC0BF9CEF8BB /* SessionManager.swift */, - FE54289085F8E76D867635DEA5F18BAB /* TaskDelegate.swift */, - 3BE933A310F002306D961318BA943C73 /* Timeline.swift */, - 0B3C9D1ABA430C45075F9D583D67C0AD /* Validation.swift */, - 2C389E170C292DDA82437CC392D4FE85 /* Support Files */, + DA5BE578C477043FD77994721DF2CF79 /* AFError.swift */, + 364E4A632F5EC247E27102522F340CDD /* Alamofire.swift */, + 00DACC21DA90E8AA013FAE6339E6E285 /* DispatchQueue+Alamofire.swift */, + B19C5155BECC982BA93863CCE6A88B01 /* MultipartFormData.swift */, + 40F4581CF8577E41F9E26140B86166D4 /* NetworkReachabilityManager.swift */, + 71C48AA44E7FE6CA667F2F4956309ED0 /* Notifications.swift */, + FD6CDA7D7EAF4FC3809223A51A3B6520 /* ParameterEncoding.swift */, + E58D219C426FD2752002E027A43233F2 /* Request.swift */, + D05EA68EF87A95B537922D70C6DC0427 /* Response.swift */, + 3CF22CDAC0AC4795D80AD5F6585FDCB2 /* ResponseSerialization.swift */, + 18C43DAE9908ABB7744297D7506D770A /* Result.swift */, + 5F87DA44039A5D2EC5DB495708C0AB39 /* ServerTrustPolicy.swift */, + 94FBF4B876049E18090503AA42985DEC /* SessionDelegate.swift */, + DF6CAF521EED88DF2040CD240D5F4C3A /* SessionManager.swift */, + 756857999614F2D10AB3F2D2085DB1A7 /* TaskDelegate.swift */, + 0ED490BFE696CCBB0DFAA6B89FB2ACBF /* Timeline.swift */, + B821A0250D510FC0475D60FCF6CA59F8 /* Validation.swift */, + 1A1D14300A58FDC9F70D8885755512A1 /* Support Files */, ); name = Alamofire; path = Alamofire; sourceTree = ""; }; - FDEAC8E60A8FB2B371155A8F6830A9D9 /* Moya */ = { + FE011F741BCD2FC6EFC2A01E90EFA247 /* Result */ = { isa = PBXGroup; children = ( - D47280E7FC22B2F97BF6218A6B281FD8 /* Core */, - 6DDD2673AE05175675C65363A9F748BD /* Support Files */, + 8821CC7B10075A400D45D7905D391703 /* AnyError.swift */, + FAC703355C70EAC3B48FF2F65BEF1DAB /* NoError.swift */, + C7C27ADB3CDDE59F459AB5DF4B23583F /* Result.swift */, + 4E07512BEE542791831615B14890629F /* ResultProtocol.swift */, + 845B6CE234ED8174B179EA9F75D1594D /* Support Files */, ); - name = Moya; - path = Moya; + name = Result; + path = Result; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 23D70D9651451F43E7E8CC1A87B4B7E9 /* Headers */ = { + 192512EEECEB8B3F2388EF7CD98FE16A /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B6F6E4CC26451E91B59FAE0F6841DC1F /* Alamofire-umbrella.h in Headers */, + 117A9A7A12D6466C58337E512984EA09 /* AMPopTip-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 24E0A5A25C6279C4B63841C53779093E /* Headers */ = { + 1FD6F66D0198C70C4000AE75095B649C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 9774AB3F3E8B65D7F1A644CCA6254D03 /* Pods-Santander-TestTests-umbrella.h in Headers */, + B8FBCA47A659B360E2684C44D970F107 /* Pods-Santander-Test-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 2718218073D2054E5B9FB63A7122AD7B /* Headers */ = { + 23D70D9651451F43E7E8CC1A87B4B7E9 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 104D74A8C8DE606C9D0ADDAB052B1543 /* StatusAlert-umbrella.h in Headers */, + B6F6E4CC26451E91B59FAE0F6841DC1F /* Alamofire-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 24E0A5A25C6279C4B63841C53779093E /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 9774AB3F3E8B65D7F1A644CCA6254D03 /* Pods-Santander-TestTests-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -744,11 +811,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - BACB2463924AD897F055B85ED2E8C37E /* Headers */ = { + 9996E8B8F3A60AC7419C8E1EC55DE0E7 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - CB3084173AD22105B6105A2D17F7C776 /* Pods-Santander-Test-umbrella.h in Headers */, + 58DAB19CBEC891D2FC9C085735782F33 /* StatusAlert-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -763,24 +830,6 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 15BF64AFACBC5F40C3D5C6BAB72CDE26 /* StatusAlert */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0B2684BF23C370E7E4EF3D5C9D958230 /* Build configuration list for PBXNativeTarget "StatusAlert" */; - buildPhases = ( - 2718218073D2054E5B9FB63A7122AD7B /* Headers */, - 9305F9FE2C8702BAA76B4886E0FE52C8 /* Sources */, - E4A2A7E6121AC09E8ACE0C8FEE53A1F6 /* Frameworks */, - 9C29B9DB3E2AB04FD6DC48B1D96BA855 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = StatusAlert; - productName = StatusAlert; - productReference = 15DC749833EFE285A38784DC6194D142 /* StatusAlert.framework */; - productType = "com.apple.product-type.framework"; - }; 3383968E74B5371B20BB519B170DC7FD /* Alamofire */ = { isa = PBXNativeTarget; buildConfigurationList = E87124444A44B7DB55208E7FEC21D331 /* Build configuration list for PBXNativeTarget "Alamofire" */; @@ -796,7 +845,7 @@ ); name = Alamofire; productName = Alamofire; - productReference = 1F000A497FCACF240584ABE5D0F82CB9 /* Alamofire.framework */; + productReference = 1101C4E2CAB959A7BFD21FE75E332005 /* Alamofire.framework */; productType = "com.apple.product-type.framework"; }; 4B0183450F95394DC0C49E326A20B42D /* Result */ = { @@ -814,30 +863,25 @@ ); name = Result; productName = Result; - productReference = 4B9E207652A8E03550292AD25FD2362D /* Result.framework */; + productReference = 9549855D3684432FAA2479D3F48F8D39 /* Result.framework */; productType = "com.apple.product-type.framework"; }; - 88B10C4857809B3E5C3335BCA87F5FC2 /* Pods-Santander-Test */ = { + 692F870FA017FAB61B5C3290C3BC5F54 /* AMPopTip */ = { isa = PBXNativeTarget; - buildConfigurationList = D712AA5D501F5D7B3C284C6A9D7A66FC /* Build configuration list for PBXNativeTarget "Pods-Santander-Test" */; + buildConfigurationList = 6AA4EA7CA97A980F60A253A3DE20B5FF /* Build configuration list for PBXNativeTarget "AMPopTip" */; buildPhases = ( - BACB2463924AD897F055B85ED2E8C37E /* Headers */, - B23610BA7A731FFDBA62C608439E9A51 /* Sources */, - 17DCD29D0B9242D128900FBEA4698769 /* Frameworks */, - F431F75A70A253CB6EA64BDAA1E85C91 /* Resources */, + 192512EEECEB8B3F2388EF7CD98FE16A /* Headers */, + 66B36FB6F562AD39C0F1F2D736BE0022 /* Sources */, + 89BB5572C584E93D4B27FFE1EE1E6FFF /* Frameworks */, + E6BF1E5F8FECF8F3282B1E52D56E7B04 /* Resources */, ); buildRules = ( ); dependencies = ( - 7CFAC8F2CA63627DD227A681F53C4159 /* PBXTargetDependency */, - 3767E41B894CFE6A89C52B46FC1A38F6 /* PBXTargetDependency */, - A2227C64602335FEFEEBB9CE125E28D3 /* PBXTargetDependency */, - 8B7127F7012DC5018594C7987A4A6EBD /* PBXTargetDependency */, - D53B2CB4B7DB1953A7AE6F4E82C4AD7B /* PBXTargetDependency */, ); - name = "Pods-Santander-Test"; - productName = "Pods-Santander-Test"; - productReference = AFE480D3EB5A010258DDAC7FBEF966E4 /* Pods_Santander_Test.framework */; + name = AMPopTip; + productName = AMPopTip; + productReference = 62D8E1A78982244825E42655DEF31E2B /* AMPopTip.framework */; productType = "com.apple.product-type.framework"; }; BAAB01D1BA82ABAE2B535579B77ED0CB /* Moya */ = { @@ -857,7 +901,7 @@ ); name = Moya; productName = Moya; - productReference = 08BEEA538E1F71DAA5790616C8943AF6 /* Moya.framework */; + productReference = F7EF57EFB1DD70A9C3098E6C3F95C151 /* Moya.framework */; productType = "com.apple.product-type.framework"; }; C0E89653A2AC6FA0A38278FEF9AF42FC /* Pods-Santander-TestUITests */ = { @@ -876,7 +920,7 @@ ); name = "Pods-Santander-TestUITests"; productName = "Pods-Santander-TestUITests"; - productReference = 08069C0730E81199B1847B7820188F18 /* Pods_Santander_TestUITests.framework */; + productReference = 94EA58095938F9B3C04D77F29F66A5D0 /* Pods_Santander_TestUITests.framework */; productType = "com.apple.product-type.framework"; }; C27DC25A308B276373505823128CD197 /* Pods-Santander-TestTests */ = { @@ -895,7 +939,7 @@ ); name = "Pods-Santander-TestTests"; productName = "Pods-Santander-TestTests"; - productReference = E735A4A25FD892AEFF9C851F534D9A3A /* Pods_Santander_TestTests.framework */; + productReference = E91E237C060ECC2B4366CA83D0CC2C5E /* Pods_Santander_TestTests.framework */; productType = "com.apple.product-type.framework"; }; EFF87187B46551C36797F2B899C54212 /* IQKeyboardManagerSwift */ = { @@ -913,7 +957,49 @@ ); name = IQKeyboardManagerSwift; productName = IQKeyboardManagerSwift; - productReference = CB4E5F7F9A3FA15DB2520CB008B6FAC4 /* IQKeyboardManagerSwift.framework */; + productReference = 555CDDB61EE2030B6AA753AE6C16F884 /* IQKeyboardManagerSwift.framework */; + productType = "com.apple.product-type.framework"; + }; + F6743F51E8DAAB9AB7DB29A84A37F017 /* Pods-Santander-Test */ = { + isa = PBXNativeTarget; + buildConfigurationList = 12C3D604FC184770EF398B1F57BB184F /* Build configuration list for PBXNativeTarget "Pods-Santander-Test" */; + buildPhases = ( + 1FD6F66D0198C70C4000AE75095B649C /* Headers */, + 1320CF76E5AEEA254318118E4D3D0A97 /* Sources */, + 61ADA0C1B2897AA3D357547B127F1565 /* Frameworks */, + DA2E7F4C34C1B07CA61202720BDC55F8 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + CD16410320C0E6BD9976CFD1BEF09930 /* PBXTargetDependency */, + CB065F770243560D5927D817F60EE29B /* PBXTargetDependency */, + 66B4BB04C1FD5A82AF4EF6F717DDCF1F /* PBXTargetDependency */, + 1152F04DD7A1FAE617A865882EA55C80 /* PBXTargetDependency */, + 2C89A4D93D9F9B29C5280D1EC65BA39C /* PBXTargetDependency */, + DBE3D9CFF3ED902BB38ABAAFE932583E /* PBXTargetDependency */, + ); + name = "Pods-Santander-Test"; + productName = "Pods-Santander-Test"; + productReference = E1C2681F4C36A1893AAE9A6548862463 /* Pods_Santander_Test.framework */; + productType = "com.apple.product-type.framework"; + }; + F6CF1E66B5C83639563339131FB4A512 /* StatusAlert */ = { + isa = PBXNativeTarget; + buildConfigurationList = CFFA59F9F0021FF7452D3FB1A10BCDEB /* Build configuration list for PBXNativeTarget "StatusAlert" */; + buildPhases = ( + 9996E8B8F3A60AC7419C8E1EC55DE0E7 /* Headers */, + 12F4EED5F0E6C0B6EDB218B757511EF6 /* Sources */, + 2FAF1D107A0B9FB6A19D58960CEC7344 /* Frameworks */, + A8CBCC26D088D583FF55601F14F69CE7 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = StatusAlert; + productName = StatusAlert; + productReference = F001F52BA7BA1ED9D50942621A44C511 /* StatusAlert.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -933,18 +1019,19 @@ en, ); mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = DD9BF8EAEAA8BC7488B0707BAF97D324 /* Products */; + productRefGroup = BD45C81BD98CE392E5786E7DEECC93A4 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 3383968E74B5371B20BB519B170DC7FD /* Alamofire */, + 692F870FA017FAB61B5C3290C3BC5F54 /* AMPopTip */, EFF87187B46551C36797F2B899C54212 /* IQKeyboardManagerSwift */, BAAB01D1BA82ABAE2B535579B77ED0CB /* Moya */, - 88B10C4857809B3E5C3335BCA87F5FC2 /* Pods-Santander-Test */, + F6743F51E8DAAB9AB7DB29A84A37F017 /* Pods-Santander-Test */, C27DC25A308B276373505823128CD197 /* Pods-Santander-TestTests */, C0E89653A2AC6FA0A38278FEF9AF42FC /* Pods-Santander-TestUITests */, 4B0183450F95394DC0C49E326A20B42D /* Result */, - 15BF64AFACBC5F40C3D5C6BAB72CDE26 /* StatusAlert */, + F6CF1E66B5C83639563339131FB4A512 /* StatusAlert */, ); }; /* End PBXProject section */ @@ -971,7 +1058,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9C29B9DB3E2AB04FD6DC48B1D96BA855 /* Resources */ = { + A8CBCC26D088D583FF55601F14F69CE7 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -992,6 +1079,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + DA2E7F4C34C1B07CA61202720BDC55F8 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; DC94709994DB7B9EF675DAE0DB5045E8 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -1000,7 +1094,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - F431F75A70A253CB6EA64BDAA1E85C91 /* Resources */ = { + E6BF1E5F8FECF8F3282B1E52D56E7B04 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -1018,6 +1112,26 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 12F4EED5F0E6C0B6EDB218B757511EF6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B71861435CE67838D5C615C7BF529F8D /* StatusAlert-dummy.m in Sources */, + 4D3F118DF9909DFF62FD2453B5EED984 /* StatusAlert.swift in Sources */, + 077FC20E6644D0CC24318906467DB4EA /* StatusAlertUtils.swift in Sources */, + C089BCD74D2A26B10186867D672DA506 /* UIDevice+Blur.swift in Sources */, + 5A18281634C290F12C5ABF249DEE9564 /* UIDevice+Platform.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1320CF76E5AEEA254318118E4D3D0A97 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8C7CD095FC0252C2920A4204819AF718 /* Pods-Santander-Test-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 50CEEDE322708ABF7722F6D79CCF256B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1042,6 +1156,17 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 66B36FB6F562AD39C0F1F2D736BE0022 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 32083CD40AE0F52B9C5EE6520F51D866 /* AMPopTip-dummy.m in Sources */, + 2F0E58380E710D15560B27A683FB6FE3 /* PopTip+Draw.swift in Sources */, + 09F37003965A0689DCDB98EEBF35988A /* PopTip+Transitions.swift in Sources */, + 6D5139BE6172B47602185037BB82DF47 /* PopTip.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 83F0B699A09857193A6E75CBAD21221D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1084,18 +1209,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9305F9FE2C8702BAA76B4886E0FE52C8 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - AAB81C0BBA1DBCA92F322972C43768C8 /* StatusAlert-dummy.m in Sources */, - C0D2A82B14F8FE402E78EBDBCC0CBE18 /* StatusAlert.swift in Sources */, - 1F69C755AF5965693C7298A05060A757 /* StatusAlertUtils.swift in Sources */, - F33FDC4826B0B3D3951EFAAD42CB521D /* UIDevice+Blur.swift in Sources */, - 9D0866BCC26350F05BD74C04F200C10A /* UIDevice+Platform.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; A1C8B029F600160149A2404C342F6E50 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1121,14 +1234,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B23610BA7A731FFDBA62C608439E9A51 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 5C004FBC6C6DB7A23CBBCF9C28770277 /* Pods-Santander-Test-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; C4ADDC2FC642C7EE9718A102043F14EC /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -1146,47 +1251,53 @@ target = 3383968E74B5371B20BB519B170DC7FD /* Alamofire */; targetProxy = 89B7C1F59BE279B9AC2C2AEA832F837B /* PBXContainerItemProxy */; }; - 3767E41B894CFE6A89C52B46FC1A38F6 /* PBXTargetDependency */ = { + 1152F04DD7A1FAE617A865882EA55C80 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = IQKeyboardManagerSwift; - target = EFF87187B46551C36797F2B899C54212 /* IQKeyboardManagerSwift */; - targetProxy = BD8DBB1BACE773F5B058FA824BBE6DB9 /* PBXContainerItemProxy */; + name = Moya; + target = BAAB01D1BA82ABAE2B535579B77ED0CB /* Moya */; + targetProxy = A7BE02881176372328240EA60252BB3A /* PBXContainerItemProxy */; + }; + 2C89A4D93D9F9B29C5280D1EC65BA39C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Result; + target = 4B0183450F95394DC0C49E326A20B42D /* Result */; + targetProxy = 7D231DD4F66D54D4FD7A2F8FEBEF1FCC /* PBXContainerItemProxy */; }; 42DD3FD355AAB38C566F0BC087083F3F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "Pods-Santander-Test"; - target = 88B10C4857809B3E5C3335BCA87F5FC2 /* Pods-Santander-Test */; + target = F6743F51E8DAAB9AB7DB29A84A37F017 /* Pods-Santander-Test */; targetProxy = 969DCCA076A9B9D70065EA7CB5DB6A86 /* PBXContainerItemProxy */; }; - 7CFAC8F2CA63627DD227A681F53C4159 /* PBXTargetDependency */ = { + 66B4BB04C1FD5A82AF4EF6F717DDCF1F /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Alamofire; - target = 3383968E74B5371B20BB519B170DC7FD /* Alamofire */; - targetProxy = 739B33F73C327D7438616B072434C417 /* PBXContainerItemProxy */; + name = IQKeyboardManagerSwift; + target = EFF87187B46551C36797F2B899C54212 /* IQKeyboardManagerSwift */; + targetProxy = 49600E263670D867E35C1B1E918A2EEF /* PBXContainerItemProxy */; }; - 8B7127F7012DC5018594C7987A4A6EBD /* PBXTargetDependency */ = { + BF10BB821AEF1A2F5B1486B70CCE5CDD /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Result; - target = 4B0183450F95394DC0C49E326A20B42D /* Result */; - targetProxy = 5E1A36908C47574A723FAD56990DAFB4 /* PBXContainerItemProxy */; + name = "Pods-Santander-Test"; + target = F6743F51E8DAAB9AB7DB29A84A37F017 /* Pods-Santander-Test */; + targetProxy = BE2FE96C842D970D743B817C3C29C800 /* PBXContainerItemProxy */; }; - A2227C64602335FEFEEBB9CE125E28D3 /* PBXTargetDependency */ = { + CB065F770243560D5927D817F60EE29B /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Moya; - target = BAAB01D1BA82ABAE2B535579B77ED0CB /* Moya */; - targetProxy = 7C4B286844A189385E91FB5326F61F7F /* PBXContainerItemProxy */; + name = Alamofire; + target = 3383968E74B5371B20BB519B170DC7FD /* Alamofire */; + targetProxy = C2484FBCD16255B9BC841E5263AE7033 /* PBXContainerItemProxy */; }; - BF10BB821AEF1A2F5B1486B70CCE5CDD /* PBXTargetDependency */ = { + CD16410320C0E6BD9976CFD1BEF09930 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = "Pods-Santander-Test"; - target = 88B10C4857809B3E5C3335BCA87F5FC2 /* Pods-Santander-Test */; - targetProxy = BE2FE96C842D970D743B817C3C29C800 /* PBXContainerItemProxy */; + name = AMPopTip; + target = 692F870FA017FAB61B5C3290C3BC5F54 /* AMPopTip */; + targetProxy = 394DD8541DDFF77A28FBB238EEF723A3 /* PBXContainerItemProxy */; }; - D53B2CB4B7DB1953A7AE6F4E82C4AD7B /* PBXTargetDependency */ = { + DBE3D9CFF3ED902BB38ABAAFE932583E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = StatusAlert; - target = 15BF64AFACBC5F40C3D5C6BAB72CDE26 /* StatusAlert */; - targetProxy = 789694E6A5EA5C5F4692301575E3CD2E /* PBXContainerItemProxy */; + target = F6CF1E66B5C83639563339131FB4A512 /* StatusAlert */; + targetProxy = CB56E2428B8E2A6752A736019B630B48 /* PBXContainerItemProxy */; }; E88EF6EBC52E2364458D88C21074D8D1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -1199,7 +1310,7 @@ /* Begin XCBuildConfiguration section */ 0FB9D4D9E1E618B6D43E20521441EB25 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8E25B11161FFF47A917FCCEDFF9EB977 /* Alamofire.xcconfig */; + baseConfigurationReference = 6B0D3C25CAABB853B0E1562B0AB04773 /* Alamofire.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1233,9 +1344,47 @@ }; name = Release; }; + 1384336784C0D8286E29FAA87EC30426 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1112BA5594638444A8463D9E6BD25F8C /* Pods-Santander-Test.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; 16419DA1024545FD12B5A373477D6581 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8E25B11161FFF47A917FCCEDFF9EB977 /* Alamofire.xcconfig */; + baseConfigurationReference = 6B0D3C25CAABB853B0E1562B0AB04773 /* Alamofire.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1268,12 +1417,10 @@ }; name = Debug; }; - 238DA9E4AC60B157201D424347BC6155 /* Debug */ = { + 187432D34D469D89BE3A3BD89ACC0937 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1112BA5594638444A8463D9E6BD25F8C /* Pods-Santander-Test.debug.xcconfig */; + baseConfigurationReference = 3A7155821E550BB48423DD1D5A915B48 /* StatusAlert.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1283,23 +1430,22 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/StatusAlert/StatusAlert-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/StatusAlert/StatusAlert-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.1; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/StatusAlert/StatusAlert.modulemap"; + PRODUCT_MODULE_NAME = StatusAlert; + PRODUCT_NAME = StatusAlert; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; @@ -1347,7 +1493,7 @@ }; 3E485B577D646088BB68D29D2662F8BF /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 48E0DA4E62B261616F5CB85432594956 /* IQKeyboardManagerSwift.xcconfig */; + baseConfigurationReference = 8754AA9A73992CC94C22AC805D068C94 /* IQKeyboardManagerSwift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1418,10 +1564,12 @@ }; name = Debug; }; - 53933C54AC67B5A0E6E6F40B10E05C80 /* Debug */ = { + 53E2997CF3EED120C980FBF4ED99677E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9F52C185B872CCE7ABC75DFEB89F1C02 /* StatusAlert.xcconfig */; + baseConfigurationReference = 500A039A12C1D4FC4DD1BA43A9523E91 /* Pods-Santander-Test.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -1431,31 +1579,33 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/StatusAlert/StatusAlert-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/StatusAlert/StatusAlert-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.1; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/StatusAlert/StatusAlert.modulemap"; - PRODUCT_MODULE_NAME = StatusAlert; - PRODUCT_NAME = StatusAlert; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; 6C1A5B8955D03EDCFC5F5853168E6D3B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 937966A9F3619A1BECC1B0F3B32F897B /* Result.xcconfig */; + baseConfigurationReference = D1CB1588C635AF0E142CA79C1D791345 /* Result.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1567,7 +1717,7 @@ }; 83573944FBFCC88348188CE22B707DAC /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1B9A46ABB3BFE5994BED32D734D5432C /* Moya.xcconfig */; + baseConfigurationReference = 4A815150FE659B719E0E5ECD4EC715BA /* Moya.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1600,6 +1750,78 @@ }; name = Debug; }; + 89A971816ED9B83A9681DFF8C99153B1 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3A7155821E550BB48423DD1D5A915B48 /* StatusAlert.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/StatusAlert/StatusAlert-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/StatusAlert/StatusAlert-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/StatusAlert/StatusAlert.modulemap"; + PRODUCT_MODULE_NAME = StatusAlert; + PRODUCT_NAME = StatusAlert; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 9E359B9255E9B069A4219B39F99A2B51 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0A9370C1B5A38F7E656EE5FAB9855D66 /* AMPopTip.xcconfig */; + buildSettings = { + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GCC_PREFIX_HEADER = "Target Support Files/AMPopTip/AMPopTip-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/AMPopTip/AMPopTip-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/AMPopTip/AMPopTip.modulemap"; + PRODUCT_MODULE_NAME = AMPopTip; + PRODUCT_NAME = AMPopTip; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 4.2; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; A105C1752A0A49B30ED621B71E226CDB /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1662,7 +1884,7 @@ }; B4F7E217DC8509700B9E6CBA20DA233D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 48E0DA4E62B261616F5CB85432594956 /* IQKeyboardManagerSwift.xcconfig */; + baseConfigurationReference = 8754AA9A73992CC94C22AC805D068C94 /* IQKeyboardManagerSwift.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1762,7 +1984,7 @@ }; D383535440703B0108BB82C0AD47665A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 937966A9F3619A1BECC1B0F3B32F897B /* Result.xcconfig */; + baseConfigurationReference = D1CB1588C635AF0E142CA79C1D791345 /* Result.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1798,7 +2020,7 @@ }; DBC53AACE64A36F9A22795C6E178A55E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1B9A46ABB3BFE5994BED32D734D5432C /* Moya.xcconfig */; + baseConfigurationReference = 4A815150FE659B719E0E5ECD4EC715BA /* Moya.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1832,9 +2054,9 @@ }; name = Release; }; - E3B8394D7CA07A299356D7868875A40D /* Release */ = { + DD2C9642B0438059A14EDD42E35996FA /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9F52C185B872CCE7ABC75DFEB89F1C02 /* StatusAlert.xcconfig */; + baseConfigurationReference = 0A9370C1B5A38F7E656EE5FAB9855D66 /* AMPopTip.xcconfig */; buildSettings = { CODE_SIGN_IDENTITY = ""; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1845,76 +2067,36 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/StatusAlert/StatusAlert-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/StatusAlert/StatusAlert-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/AMPopTip/AMPopTip-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/AMPopTip/AMPopTip-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/StatusAlert/StatusAlert.modulemap"; - PRODUCT_MODULE_NAME = StatusAlert; - PRODUCT_NAME = StatusAlert; + MODULEMAP_FILE = "Target Support Files/AMPopTip/AMPopTip.modulemap"; + PRODUCT_MODULE_NAME = AMPopTip; + PRODUCT_NAME = AMPopTip; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - E7ADC585BA6E413D7DF961B1529A915F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 500A039A12C1D4FC4DD1BA43A9523E91 /* Pods-Santander-Test.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.1; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 0B2684BF23C370E7E4EF3D5C9D958230 /* Build configuration list for PBXNativeTarget "StatusAlert" */ = { + 12C3D604FC184770EF398B1F57BB184F /* Build configuration list for PBXNativeTarget "Pods-Santander-Test" */ = { isa = XCConfigurationList; buildConfigurations = ( - 53933C54AC67B5A0E6E6F40B10E05C80 /* Debug */, - E3B8394D7CA07A299356D7868875A40D /* Release */, + 1384336784C0D8286E29FAA87EC30426 /* Debug */, + 53E2997CF3EED120C980FBF4ED99677E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -1937,6 +2119,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 6AA4EA7CA97A980F60A253A3DE20B5FF /* Build configuration list for PBXNativeTarget "AMPopTip" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DD2C9642B0438059A14EDD42E35996FA /* Debug */, + 9E359B9255E9B069A4219B39F99A2B51 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 79E494A7493F9AB9FE36E8AF4802FA6F /* Build configuration list for PBXNativeTarget "Moya" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1973,11 +2164,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D712AA5D501F5D7B3C284C6A9D7A66FC /* Build configuration list for PBXNativeTarget "Pods-Santander-Test" */ = { + CFFA59F9F0021FF7452D3FB1A10BCDEB /* Build configuration list for PBXNativeTarget "StatusAlert" */ = { isa = XCConfigurationList; buildConfigurations = ( - 238DA9E4AC60B157201D424347BC6155 /* Debug */, - E7ADC585BA6E413D7DF961B1529A915F /* Release */, + 187432D34D469D89BE3A3BD89ACC0937 /* Debug */, + 89A971816ED9B83A9681DFF8C99153B1 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/AMPopTip.xcscheme b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/AMPopTip.xcscheme new file mode 100644 index 00000000..eafe8fb2 --- /dev/null +++ b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/AMPopTip.xcscheme @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Pods-Santander-Test.xcscheme b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Pods-Santander-Test.xcscheme index ab875475..6a80b290 100644 --- a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Pods-Santander-Test.xcscheme +++ b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/Pods-Santander-Test.xcscheme @@ -14,7 +14,7 @@ buildForAnalyzing = "YES"> @@ -45,7 +45,7 @@ diff --git a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/StatusAlert.xcscheme b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/StatusAlert.xcscheme index 9aef71c3..364b73e0 100644 --- a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/StatusAlert.xcscheme +++ b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/StatusAlert.xcscheme @@ -14,7 +14,7 @@ buildForArchiving = "YES"> diff --git a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist index 9fd5157f..4cf4622b 100644 --- a/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Santander-Test/Pods/Pods.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist @@ -4,6 +4,13 @@ SchemeUserState + AMPopTip.xcscheme + + isShown + + orderHint + 1 + Alamofire.xcscheme isShown @@ -16,49 +23,49 @@ isShown orderHint - 1 + 2 Moya.xcscheme isShown orderHint - 2 + 3 Pods-Santander-Test.xcscheme isShown orderHint - 3 + 4 Pods-Santander-TestTests.xcscheme isShown orderHint - 4 + 5 Pods-Santander-TestUITests.xcscheme isShown orderHint - 5 + 6 Result.xcscheme isShown orderHint - 6 + 7 StatusAlert.xcscheme isShown orderHint - 7 + 8 SuppressBuildableAutocreation diff --git a/Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip-Info.plist b/Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip-Info.plist new file mode 100644 index 00000000..fd3425ec --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 3.6.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip-dummy.m b/Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip-dummy.m new file mode 100644 index 00000000..58610775 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_AMPopTip : NSObject +@end +@implementation PodsDummy_AMPopTip +@end diff --git a/Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip-prefix.pch b/Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip-prefix.pch new file mode 100644 index 00000000..beb2a244 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip-prefix.pch @@ -0,0 +1,12 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + diff --git a/Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip-umbrella.h b/Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip-umbrella.h new file mode 100644 index 00000000..89d1d10c --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip-umbrella.h @@ -0,0 +1,16 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + + +FOUNDATION_EXPORT double AMPopTipVersionNumber; +FOUNDATION_EXPORT const unsigned char AMPopTipVersionString[]; + diff --git a/Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip.modulemap b/Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip.modulemap new file mode 100644 index 00000000..5d9bb932 --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip.modulemap @@ -0,0 +1,6 @@ +framework module AMPopTip { + umbrella header "AMPopTip-umbrella.h" + + export * + module * { export * } +} diff --git a/Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip.xcconfig b/Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip.xcconfig new file mode 100644 index 00000000..dad67f0f --- /dev/null +++ b/Santander-Test/Pods/Target Support Files/AMPopTip/AMPopTip.xcconfig @@ -0,0 +1,9 @@ +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/AMPopTip +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS +PODS_BUILD_DIR = ${BUILD_DIR} +PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) +PODS_ROOT = ${SRCROOT} +PODS_TARGET_SRCROOT = ${PODS_ROOT}/AMPopTip +PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} +SKIP_INSTALL = YES diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.markdown b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.markdown index dd93d095..bc9f70a3 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.markdown +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.markdown @@ -1,6 +1,31 @@ # Acknowledgements This application makes use of the following third party libraries: +## AMPopTip + +The MIT License (MIT) + +Copyright (c) 2016 Andrea Mazzini + +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. + + ## Alamofire Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.plist b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.plist index 10e326de..c77529a7 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.plist +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-acknowledgements.plist @@ -12,6 +12,37 @@ Type PSGroupSpecifier + + FooterText + The MIT License (MIT) + +Copyright (c) 2016 Andrea Mazzini + +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. + + License + MIT + Title + AMPopTip + Type + PSGroupSpecifier + FooterText Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/) diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-frameworks.sh b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-frameworks.sh index 21a5af3b..bc4bfd5a 100755 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-frameworks.sh +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-frameworks.sh @@ -153,6 +153,7 @@ strip_invalid_archs() { if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/AMPopTip/AMPopTip.framework" install_framework "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework" install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework" install_framework "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework" @@ -160,6 +161,7 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/StatusAlert/StatusAlert.framework" fi if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework "${BUILT_PRODUCTS_DIR}/AMPopTip/AMPopTip.framework" install_framework "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework" install_framework "${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework" install_framework "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework" diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig index 521efc34..cd7548aa 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig @@ -1,9 +1,9 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AMPopTip" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AMPopTip/AMPopTip.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "Moya" -framework "QuartzCore" -framework "Result" -framework "StatusAlert" -framework "UIKit" +OTHER_LDFLAGS = $(inherited) -framework "AMPopTip" -framework "Alamofire" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "Moya" -framework "QuartzCore" -framework "Result" -framework "StatusAlert" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.release.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.release.xcconfig index 521efc34..cd7548aa 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.release.xcconfig +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-Test/Pods-Santander-Test.release.xcconfig @@ -1,9 +1,9 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AMPopTip" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AMPopTip/AMPopTip.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "Moya" -framework "QuartzCore" -framework "Result" -framework "StatusAlert" -framework "UIKit" +OTHER_LDFLAGS = $(inherited) -framework "AMPopTip" -framework "Alamofire" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "Moya" -framework "QuartzCore" -framework "Result" -framework "StatusAlert" -framework "UIKit" OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.debug.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.debug.xcconfig index bf1d611e..143eadc5 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.debug.xcconfig +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.debug.xcconfig @@ -1,8 +1,8 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AMPopTip" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AMPopTip/AMPopTip.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "Moya" -framework "QuartzCore" -framework "Result" -framework "StatusAlert" -framework "UIKit" +OTHER_LDFLAGS = $(inherited) -framework "AMPopTip" -framework "Alamofire" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "Moya" -framework "QuartzCore" -framework "Result" -framework "StatusAlert" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.release.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.release.xcconfig index bf1d611e..143eadc5 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.release.xcconfig +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestTests/Pods-Santander-TestTests.release.xcconfig @@ -1,8 +1,8 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AMPopTip" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AMPopTip/AMPopTip.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "Moya" -framework "QuartzCore" -framework "Result" -framework "StatusAlert" -framework "UIKit" +OTHER_LDFLAGS = $(inherited) -framework "AMPopTip" -framework "Alamofire" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "Moya" -framework "QuartzCore" -framework "Result" -framework "StatusAlert" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.debug.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.debug.xcconfig index bf1d611e..143eadc5 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.debug.xcconfig +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.debug.xcconfig @@ -1,8 +1,8 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AMPopTip" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AMPopTip/AMPopTip.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "Moya" -framework "QuartzCore" -framework "Result" -framework "StatusAlert" -framework "UIKit" +OTHER_LDFLAGS = $(inherited) -framework "AMPopTip" -framework "Alamofire" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "Moya" -framework "QuartzCore" -framework "Result" -framework "StatusAlert" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.release.xcconfig b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.release.xcconfig index bf1d611e..143eadc5 100644 --- a/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.release.xcconfig +++ b/Santander-Test/Pods/Target Support Files/Pods-Santander-TestUITests/Pods-Santander-TestUITests.release.xcconfig @@ -1,8 +1,8 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AMPopTip" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift" "${PODS_CONFIGURATION_BUILD_DIR}/Moya" "${PODS_CONFIGURATION_BUILD_DIR}/Result" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AMPopTip/AMPopTip.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Moya/Moya.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Result/Result.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/StatusAlert/StatusAlert.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "Alamofire" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "Moya" -framework "QuartzCore" -framework "Result" -framework "StatusAlert" -framework "UIKit" +OTHER_LDFLAGS = $(inherited) -framework "AMPopTip" -framework "Alamofire" -framework "CoreGraphics" -framework "Foundation" -framework "IQKeyboardManagerSwift" -framework "Moya" -framework "QuartzCore" -framework "Result" -framework "StatusAlert" -framework "UIKit" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj index 7df2bcd4..801a38f5 100644 --- a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj +++ b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj @@ -738,6 +738,7 @@ ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-Santander-Test/Pods-Santander-Test-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/AMPopTip/AMPopTip.framework", "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework", "${BUILT_PRODUCTS_DIR}/IQKeyboardManagerSwift/IQKeyboardManagerSwift.framework", "${BUILT_PRODUCTS_DIR}/Moya/Moya.framework", @@ -748,6 +749,7 @@ outputFileListPaths = ( ); outputPaths = ( + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AMPopTip.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManagerSwift.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Moya.framework", diff --git a/Santander-Test/Santander-Test.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist b/Santander-Test/Santander-Test.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist index 51009d62..473dbb87 100644 --- a/Santander-Test/Santander-Test.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Santander-Test/Santander-Test.xcodeproj/xcuserdata/matheusribeiro.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,7 +7,7 @@ Santander-Test.xcscheme_^#shared#^_ orderHint - 8 + 9 diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index 41ccdbead0ae610b480d26666b6371276ea0b5c6..1a582c104393f1eec0bca4b13148e0aaad445179 100644 GIT binary patch literal 106467 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∾bGwsVUzHv@R;zp@Pq)tpg#$V2n%QKdBW-mYb2~l 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
qM4pqp4px`Lhmc|enRgr^a16bd7k;6 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 diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift index cc60b57b..e14245e6 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift @@ -11,6 +11,7 @@ // import UIKit +import AMPopTip protocol FormDisplayLogic: class { func displayFormCells(viewModel: Form.GetFormCells.ViewModel) @@ -111,6 +112,11 @@ class FormViewController: UIViewController { forCellReuseIdentifier: FieldCell.reuseIdentifier ) } + + private func showPopUpTip(_ tip: String, inView view: UIView) { + let superView = view.superview! + PopTip().show(text: tip, direction: .up, maxWidth: 250, in: superView, from: view.frame, duration: 4) + } } @@ -139,7 +145,12 @@ extension FormViewController: FormDisplayLogic { if viewModel.isValid { router?.routeToSuccess(segue: nil) } else { - print("message: \(viewModel.message) indexPath: \(viewModel.indexPath?.row)") + guard + let message = viewModel.message, + let indexPath = viewModel.indexPath, + let cell = tableView.cellForRow(at: indexPath) as? FieldCell + else { return } + showPopUpTip(message, inView: cell.textField) } } } diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormWorker.swift b/Santander-Test/Santander-Test/Scenes/Form/FormWorker.swift index 5e4eccec..789c3c3e 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormWorker.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormWorker.swift @@ -67,7 +67,7 @@ class FormWorker { case .email: responseMessage = "Insira um e-mail válido" case .telNumber: - responseMessage = "Número de telefone deve ser (##) #####-#### ou (##) ####-####" + responseMessage = "(##) #####-#### ou (##) ####-####" } response = false responseIndexPath = indexPath From 9bfda779c8d1183adc5406ac3b06a3204d880057 Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Mon, 20 May 2019 06:17:29 -0400 Subject: [PATCH 26/39] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20b=C3=A1sica=20d?= =?UTF-8?q?a=20formata=C3=A7=C3=A3o=20de=20telefone?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 106467 -> 105500 bytes .../GenericScenes/Form/Field/FieldCell.swift | 55 +++++++++++++++++- 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index 1a582c104393f1eec0bca4b13148e0aaad445179..7adc767664c74775a28d8708933696e93eb708bb 100644 GIT binary patch literal 105500 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 literal 106467 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∾bGwsVUzHv@R;zp@Pq)tpg#$V2n%QKdBW-mYb2~l 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
qM4pqp4px`Lhmc|enRgr^a16bd7k;6 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 String { + + var text = number.replacingOccurrences(of: "(", with: "") + text = text.replacingOccurrences(of: ")", with: "") + text = text.replacingOccurrences(of: "-", with: "") + text = text.replacingOccurrences(of: " ", with: "") + + let textLenght = text.count + + if textLenght == 1 { + return "(\(text)" + } else if textLenght == 2 { + return "(\(text)" + } else if textLenght == 3 { + return "(\(text.prefix(2))) \(text.suffix(1))" + } else if textLenght == 4 { + return "(\(text.prefix(2))) \(text.suffix(2))" + } else if textLenght == 5 { + return "(\(text.prefix(2))) \(text.suffix(3))" + } else if textLenght == 6 { + return "(\(text.prefix(2))) \(text.suffix(4))" + } else if textLenght == 7 { + return "(\(text.prefix(2))) \(text.suffix(5))" + } else if textLenght == 8 { + let start = text.index(text.startIndex, offsetBy: 2) + let end = text.index(text.endIndex, offsetBy: -1) + let range = start.. Date: Mon, 20 May 2019 06:28:08 -0400 Subject: [PATCH 27/39] =?UTF-8?q?Melhorada=20a=20implementa=C3=A7=C3=A3o?= =?UTF-8?q?=20do=20conversor=20de=20numero=20para=20formato=20de=20telefon?= =?UTF-8?q?e?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 105500 -> 105499 bytes .../GenericScenes/Form/Field/FieldCell.swift | 39 +++++------------- 2 files changed, 10 insertions(+), 29 deletions(-) diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index 7adc767664c74775a28d8708933696e93eb708bb..fe60dbac0dcc54cc2218c23c6ba671f0698cfbd2 100644 GIT binary patch delta 14021 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 TJZ*ap;>G>jZ|tz$ZX5Q0sdKWH delta 13945 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 bpzNLe*_}iAw7qjAFUIV+wcFOkHtzoc6sxK} diff --git a/Santander-Test/Santander-Test/GenericScenes/Form/Field/FieldCell.swift b/Santander-Test/Santander-Test/GenericScenes/Form/Field/FieldCell.swift index e478f9a5..080ab66a 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Form/Field/FieldCell.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Form/Field/FieldCell.swift @@ -62,7 +62,6 @@ class FieldCell: UITableViewCell { } private func convertNumberToPhoneFormat(number: String) -> String { - var text = number.replacingOccurrences(of: "(", with: "") text = text.replacingOccurrences(of: ")", with: "") text = text.replacingOccurrences(of: "-", with: "") @@ -70,42 +69,24 @@ class FieldCell: UITableViewCell { let textLenght = text.count - if textLenght == 1 { - return "(\(text)" - } else if textLenght == 2 { + switch textLenght { + case 1, 2: return "(\(text)" - } else if textLenght == 3 { - return "(\(text.prefix(2))) \(text.suffix(1))" - } else if textLenght == 4 { - return "(\(text.prefix(2))) \(text.suffix(2))" - } else if textLenght == 5 { - return "(\(text.prefix(2))) \(text.suffix(3))" - } else if textLenght == 6 { - return "(\(text.prefix(2))) \(text.suffix(4))" - } else if textLenght == 7 { - return "(\(text.prefix(2))) \(text.suffix(5))" - } else if textLenght == 8 { - let start = text.index(text.startIndex, offsetBy: 2) - let end = text.index(text.endIndex, offsetBy: -1) - let range = start.. Date: Mon, 20 May 2019 07:10:50 -0400 Subject: [PATCH 28/39] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20b=C3=A1sica=20d?= =?UTF-8?q?o=20checkbox?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Santander-Test.xcodeproj/project.pbxproj | 4 ++ .../UserInterfaceState.xcuserstate | Bin 105499 -> 108313 bytes .../checkbox_selected.imageset/Contents.json | 21 ++++++++ .../checkbox_selected.png | Bin 0 -> 820 bytes .../Contents.json | 21 ++++++++ .../checkbox_unselected.png | Bin 0 -> 609 bytes .../Form/Checkbox/CheckBox.swift | 46 ++++++++++++++++++ .../Form/Checkbox/CheckboxCell.swift | 24 +++++---- .../Form/Checkbox/CheckboxCell.xib | 19 ++------ 9 files changed, 109 insertions(+), 26 deletions(-) create mode 100644 Santander-Test/Santander-Test/Assets.xcassets/checkbox_selected.imageset/Contents.json create mode 100644 Santander-Test/Santander-Test/Assets.xcassets/checkbox_selected.imageset/checkbox_selected.png create mode 100644 Santander-Test/Santander-Test/Assets.xcassets/checkbox_unselected.imageset/Contents.json create mode 100644 Santander-Test/Santander-Test/Assets.xcassets/checkbox_unselected.imageset/checkbox_unselected.png create mode 100644 Santander-Test/Santander-Test/GenericScenes/Form/Checkbox/CheckBox.swift diff --git a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj index 801a38f5..6181f450 100644 --- a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj +++ b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj @@ -69,6 +69,7 @@ 965C2FE5228EACD400015140 /* FundDownInfoCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FE4228EACD400015140 /* FundDownInfoCell.swift */; }; 965C2FE7228EE8CC00015140 /* UIViewControllerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FE6228EE8CC00015140 /* UIViewControllerExtensions.swift */; }; 965C2FED2292614600015140 /* UIViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FEC2292614600015140 /* UIViewExtensions.swift */; }; + 965C2FEF2292BA6C00015140 /* CheckBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FEE2292BA6C00015140 /* CheckBox.swift */; }; 973161DFBDDB30BB534A86DA /* Pods_Santander_TestUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 878E0A16E793237D34137EC7 /* Pods_Santander_TestUITests.framework */; }; C4FCFE13C06111F180515DFA /* Pods_Santander_Test.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F563E135B794CADBF7401F8 /* Pods_Santander_Test.framework */; }; /* End PBXBuildFile section */ @@ -166,6 +167,7 @@ 965C2FE4228EACD400015140 /* FundDownInfoCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FundDownInfoCell.swift; sourceTree = ""; }; 965C2FE6228EE8CC00015140 /* UIViewControllerExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIViewControllerExtensions.swift; sourceTree = ""; }; 965C2FEC2292614600015140 /* UIViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIViewExtensions.swift; sourceTree = ""; }; + 965C2FEE2292BA6C00015140 /* CheckBox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckBox.swift; sourceTree = ""; }; A512F1F10FEC63C067350139 /* Pods-Santander-Test.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Santander-Test.debug.xcconfig"; path = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -340,6 +342,7 @@ children = ( 965C2F6D228B6EB100015140 /* CheckboxCell.xib */, 965C2F6F228B6EBE00015140 /* CheckboxCell.swift */, + 965C2FEE2292BA6C00015140 /* CheckBox.swift */, ); path = Checkbox; sourceTree = ""; @@ -788,6 +791,7 @@ 965C2F36228966AF00015140 /* Constants.swift in Sources */, 965C2F59228A891900015140 /* FormViewController.swift in Sources */, 965C2FE7228EE8CC00015140 /* UIViewControllerExtensions.swift in Sources */, + 965C2FEF2292BA6C00015140 /* CheckBox.swift in Sources */, 965C2FD0228E4C5A00015140 /* FundRisk.swift in Sources */, 965C2FAB228DF72A00015140 /* SendButton.swift in Sources */, 965C2F78228BBDB300015140 /* UIColorExtensions.swift in Sources */, diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index fe60dbac0dcc54cc2218c23c6ba671f0698cfbd2..a5f1aec110da945b15cb48b2218dfd94ab4244b0 100644 GIT binary patch literal 108313 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

{8v(rw2 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 literal 105499 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 diff --git a/Santander-Test/Santander-Test/Assets.xcassets/checkbox_selected.imageset/Contents.json b/Santander-Test/Santander-Test/Assets.xcassets/checkbox_selected.imageset/Contents.json new file mode 100644 index 00000000..74e660df --- /dev/null +++ b/Santander-Test/Santander-Test/Assets.xcassets/checkbox_selected.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "checkbox_selected.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Santander-Test/Santander-Test/Assets.xcassets/checkbox_selected.imageset/checkbox_selected.png b/Santander-Test/Santander-Test/Assets.xcassets/checkbox_selected.imageset/checkbox_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..18ef1968686f95d8ed0efba85b3f2919ca67b8fe GIT binary patch literal 820 zcmV-41Izr0P)Px%?ny*JR9Fe^SUqnOK@h!NU*Sk;NCg&95jPYmEh`_U-BcM?60!bZGQD(y8Ije*nW zC6Wo89O51ct}`z5Pf`w`xaWniWW)!f*Q?S0Esz<{*6Sg<1G41*5bRr4Jbd~>?p!?9 z<7%r_@fnb2)9?4UX0zF1b7SE(q9}R}!_73~ES(VIpxJERLaV}fn{0z&70TRGWjbQc z!a9|92Qcd*p&o$6A2+IHD#V}~MSBFq%pTiy7H4LEAR;QIlO*>vnAI$p^_Euvpc!&@ zFoT4)0CR%jDHbvF43uMb;bLYpjb+Bl(P8W@qA;w*CBZo4C}zs-dVR|q!8M#rf{s!r z$cIk^QIU&uP379;l!vGa?&_K>27Cp8-JBrjZ9c>dA28!{mOM+kI1j#rVYpMT*MFS1 zHy=Dcw)uR1goJ&S2PTh`Ul_QFKNT|Nv7)BaBfLdi@&P=n4Hu*+mv?SVCMV8P7<0wy zQ`a1rAa%GdQk)ch#pi2aIFOUwN;KjH!^;b4t-p!0Izeo$bTXV3#4>`D+Eqj>H7ps* zB4QcAN$n~kmKv4}5VU(Z29u3zcIoXC;xZqR&i-;_@FQP zqz}A7>z16%N2xc^@3JOC`STPt(R=5lUj;9V$x;V?Z=)uB###*WJNRByu(X0wAZm}$ yKE!Px%8%ab#R9Fe^Sg}sSFc7WNjGfp(tgtY!Q86LPPf&>ol|-EpUxAq0l!}Rgk3dCi zEgJ(1BdTCy%2*}57vd^v?Z&B6Q3*$i&N)BdonP!bC!&I@)9J*N=@rf@61^k4vr?-J zvnaMjx7!`Yaa@-j?RHzp_Ea(wt<5P)Hk8N;9Z7^vCVsNf=z!F#-6%#F1Cxo*us&zc zahxrI7|C2T*PAK;@+-Yw?^Fl)C;A`=HuI)RA_pM!coA^Qc(qz>dY<>N2(0R3ByjSA z`(3$_RD<$#+I^8XP}gs~RCNZjdTT7phFKdM*YWXMKg{52RKMTfU{8`yu<*Pnif-^+ zQ^WOIA;ie{{X@vuO}EJoBHV@YOFvBA!*s-)g&p9OvIA0s!&256_cS7_mtss3V2w#8 z%%$bboGXd6oJl6~WqKqC6V7C&%payku%aU$UJ6=8mi<)2jI{$Ce@|rEronp*Z5R(< z4RC-No-yNdmaHWK>cQA`-ThXp^}QOOi>>mtO(v69(7(-s>7)g&g1`>`Dkz3b-;9B6 z#>7RIRNZ9?CXJMNWn!q6nlZ`@(gs$PP0N^NtSAFT@pg?_#)>jf6u-V}3>AIE*{s74 zHGDxg84F{QKcyb=+<;, with event: UIEvent?) { + isChecked.toggle() + delegate?.valueDidChange(value: isChecked) + } + + private func updateCheckBoxImage() { + if isChecked { + setImage(UIImage(named: "checkbox_selected"), for: .normal) + } else { + setImage(UIImage(named: "checkbox_unselected"), for: .normal) + } + } + +} diff --git a/Santander-Test/Santander-Test/GenericScenes/Form/Checkbox/CheckboxCell.swift b/Santander-Test/Santander-Test/GenericScenes/Form/Checkbox/CheckboxCell.swift index a5f09ae3..e022ce43 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Form/Checkbox/CheckboxCell.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Form/Checkbox/CheckboxCell.swift @@ -10,8 +10,7 @@ import UIKit class CheckboxCell: UITableViewCell { - @IBOutlet weak var checkboxOuterView: UIView! - @IBOutlet weak var checkboxInnerView: UIView! + @IBOutlet weak var checkboxOuterView: CheckBox! @IBOutlet weak var label: UILabel! @IBOutlet weak var topConstraint: NSLayoutConstraint! @@ -28,27 +27,32 @@ class CheckboxCell: UITableViewCell { super.awakeFromNib() configureLayout() + setupCheckboxDelegate() } private func configureLayout() { - checkboxOuterView.layer.borderColor = UIColor.getColorDarkGray.cgColor - checkboxOuterView.layer.borderWidth = 1 - checkboxOuterView.layer.cornerRadius = 3 - checkboxOuterView.backgroundColor = nil - - checkboxInnerView.backgroundColor = UIColor.getColorDarkRed - checkboxInnerView.layer.cornerRadius = 2 - label.textColor = UIColor.getColorDarkGray } + private func setupCheckboxDelegate() { + checkboxOuterView.delegate = self + } + private func didSetViewModel() { + checkboxOuterView.isChecked = true guard let viewModel = viewModel else { return } label.text = viewModel.message ?? "-" topConstraint.constant = CGFloat(viewModel.topSpace ?? 8) } } +extension CheckboxCell: CheckBoxDelegate { + func valueDidChange(value: Bool) { + print("dscsd") + } + +} + extension CheckboxCell { struct ViewModel { let message: String? diff --git a/Santander-Test/Santander-Test/GenericScenes/Form/Checkbox/CheckboxCell.xib b/Santander-Test/Santander-Test/GenericScenes/Form/Checkbox/CheckboxCell.xib index 15d59db3..3883eb59 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Form/Checkbox/CheckboxCell.xib +++ b/Santander-Test/Santander-Test/GenericScenes/Form/Checkbox/CheckboxCell.xib @@ -21,23 +21,11 @@ - + - - - - - - - - - - - - @@ -51,15 +39,14 @@ - + - - + From a155dc881fa727de01185961194cc248c9e58936 Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Mon, 20 May 2019 08:24:45 -0400 Subject: [PATCH 29/39] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20de=20esconder?= =?UTF-8?q?=20c=C3=A9lulas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 108313 -> 109007 bytes .../Form/Checkbox/CheckboxCell.swift | 11 ++++++-- .../GenericScenes/Form/Field/FieldCell.swift | 10 +++++-- .../Scenes/Form/FormModels.swift | 3 +- .../Scenes/Form/FormPresenter.swift | 6 +++- .../Scenes/Form/FormViewController.swift | 26 +++++++++++++++++- .../Scenes/Form/FormWorker.swift | 4 ++- 7 files changed, 51 insertions(+), 9 deletions(-) diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index a5f1aec110da945b15cb48b2218dfd94ab4244b0..5c759f4809228546bdf6c12f19fbfe4f110c1de0 100644 GIT binary patch literal 109007 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�)G%lwALmM#r^)qm)M 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 literal 108313 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

    {8v(rw2 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 diff --git a/Santander-Test/Santander-Test/GenericScenes/Form/Checkbox/CheckboxCell.swift b/Santander-Test/Santander-Test/GenericScenes/Form/Checkbox/CheckboxCell.swift index e022ce43..f5e1a05a 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Form/Checkbox/CheckboxCell.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Form/Checkbox/CheckboxCell.swift @@ -8,6 +8,10 @@ import UIKit +protocol CheckboxCellDelegate: class { + func didChoose(value: Bool, _ cell: CheckboxCell) +} + class CheckboxCell: UITableViewCell { @IBOutlet weak var checkboxOuterView: CheckBox! @@ -17,6 +21,8 @@ class CheckboxCell: UITableViewCell { static let reuseIdentifier = "CheckboxCell" + weak var delegate: CheckboxCellDelegate? + var viewModel: CheckboxCell.ViewModel? { didSet { didSetViewModel() @@ -39,7 +45,7 @@ class CheckboxCell: UITableViewCell { } private func didSetViewModel() { - checkboxOuterView.isChecked = true + checkboxOuterView.isChecked = false guard let viewModel = viewModel else { return } label.text = viewModel.message ?? "-" topConstraint.constant = CGFloat(viewModel.topSpace ?? 8) @@ -48,7 +54,7 @@ class CheckboxCell: UITableViewCell { extension CheckboxCell: CheckBoxDelegate { func valueDidChange(value: Bool) { - print("dscsd") + delegate?.didChoose(value: value, self) } } @@ -57,5 +63,6 @@ extension CheckboxCell { struct ViewModel { let message: String? let topSpace: Int? + let show: Int? } } diff --git a/Santander-Test/Santander-Test/GenericScenes/Form/Field/FieldCell.swift b/Santander-Test/Santander-Test/GenericScenes/Form/Field/FieldCell.swift index 080ab66a..c71bfc5f 100644 --- a/Santander-Test/Santander-Test/GenericScenes/Form/Field/FieldCell.swift +++ b/Santander-Test/Santander-Test/GenericScenes/Form/Field/FieldCell.swift @@ -56,9 +56,13 @@ class FieldCell: UITableViewCell { let typeField = viewModel?.typeField else { return } - let convertedText = convertNumberToPhoneFormat(number: text) - textField.text = convertedText - delegate?.textDidChange(for: indexPath, text: convertedText, typeField: typeField) + if typeField == .telNumber { + let convertedText = convertNumberToPhoneFormat(number: text) + textField.text = convertedText + delegate?.textDidChange(for: indexPath, text: convertedText, typeField: typeField) + } else { + delegate?.textDidChange(for: indexPath, text: text, typeField: typeField) + } } private func convertNumberToPhoneFormat(number: String) -> String { diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormModels.swift b/Santander-Test/Santander-Test/Scenes/Form/FormModels.swift index 48b4b266..6a75552f 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormModels.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormModels.swift @@ -26,10 +26,11 @@ enum Form { } struct ViewModel { struct DisplayViewModel { + let id: Int let type: Type let message: String? let typeField: TypeField? - let hidden: Bool + var hidden: Bool let topSpacing: Int let show: Int? let required: Bool diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormPresenter.swift b/Santander-Test/Santander-Test/Scenes/Form/FormPresenter.swift index bcf157d4..b7df5724 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormPresenter.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormPresenter.swift @@ -27,7 +27,10 @@ class FormPresenter: FormPresentationLogic { var displayedCells: [Form.GetFormCells.ViewModel.DisplayViewModel] = [] for formCell in response.formCells { - guard let type = formCell.type else { + guard + let type = formCell.type, + let id = formCell.id + else { continue } let message = formCell.message @@ -38,6 +41,7 @@ class FormPresenter: FormPresentationLogic { let required = formCell.required ?? false let displayedCell = Form.GetFormCells.ViewModel.DisplayViewModel( + id: id, type: type, message: message, typeField: typeField, diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift index e14245e6..d72f297c 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift @@ -117,6 +117,18 @@ class FormViewController: UIViewController { let superView = view.superview! PopTip().show(text: tip, direction: .up, maxWidth: 250, in: superView, from: view.frame, duration: 4) } + + private func hideAndDishideFields(value: Bool, _ cell: CheckboxCell) { + guard let cellToHide = cell.viewModel?.show else { return } + for count in 0.. Date: Mon, 20 May 2019 08:39:26 -0400 Subject: [PATCH 30/39] =?UTF-8?q?C=C3=A9lulas=20hidden=20tendo=20seu=20hei?= =?UTF-8?q?ght=20zerados?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 109007 -> 109236 bytes .../Scenes/Form/Form.storyboard | 1 + .../Scenes/Form/FormViewController.swift | 11 ++++++++++- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index 5c759f4809228546bdf6c12f19fbfe4f110c1de0..18e4a7ec9aa8a5b4aad20ffebd52535adf003af0 100644 GIT binary patch literal 109236 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

    B3(ei(& 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�)G%lwALmM#r^)qm)M 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 diff --git a/Santander-Test/Santander-Test/Scenes/Form/Form.storyboard b/Santander-Test/Santander-Test/Scenes/Form/Form.storyboard index a25570b5..8acdad01 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/Form.storyboard +++ b/Santander-Test/Santander-Test/Scenes/Form/Form.storyboard @@ -23,6 +23,7 @@ + diff --git a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift index d72f297c..ea81b8cd 100644 --- a/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift +++ b/Santander-Test/Santander-Test/Scenes/Form/FormViewController.swift @@ -167,7 +167,7 @@ extension FormViewController: FormDisplayLogic { } } -extension FormViewController: UITableViewDataSource { +extension FormViewController: UITableViewDataSource, UITableViewDelegate { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return displayedFormCells.count } @@ -226,6 +226,15 @@ extension FormViewController: UITableViewDataSource { return cell } } + + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + let displayedFormCell = displayedFormCells[indexPath.row] + + if displayedFormCell.hidden { + return 0 + } + return tableView.estimatedRowHeight + } } extension FormViewController: FieldCellDelegate { From 45b51be8568a97ffdca9983f9568a8ac0b2a7ac3 Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Mon, 20 May 2019 10:15:50 -0400 Subject: [PATCH 31/39] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20da=20StringExte?= =?UTF-8?q?nsions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Santander-Test.xcodeproj/project.pbxproj | 4 ++ .../UserInterfaceState.xcuserstate | Bin 109236 -> 109669 bytes .../GenericScenes/Form/Field/FieldCell.swift | 30 +----------- .../Extensions/StringExtensions.swift | 43 ++++++++++++++++++ 4 files changed, 48 insertions(+), 29 deletions(-) create mode 100644 Santander-Test/Santander-Test/Supporting Files/Extensions/StringExtensions.swift diff --git a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj index 6181f450..24b8449e 100644 --- a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj +++ b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj @@ -70,6 +70,7 @@ 965C2FE7228EE8CC00015140 /* UIViewControllerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FE6228EE8CC00015140 /* UIViewControllerExtensions.swift */; }; 965C2FED2292614600015140 /* UIViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FEC2292614600015140 /* UIViewExtensions.swift */; }; 965C2FEF2292BA6C00015140 /* CheckBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FEE2292BA6C00015140 /* CheckBox.swift */; }; + 965C302B2292ED7800015140 /* StringExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C302A2292ED7800015140 /* StringExtensions.swift */; }; 973161DFBDDB30BB534A86DA /* Pods_Santander_TestUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 878E0A16E793237D34137EC7 /* Pods_Santander_TestUITests.framework */; }; C4FCFE13C06111F180515DFA /* Pods_Santander_Test.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F563E135B794CADBF7401F8 /* Pods_Santander_Test.framework */; }; /* End PBXBuildFile section */ @@ -168,6 +169,7 @@ 965C2FE6228EE8CC00015140 /* UIViewControllerExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIViewControllerExtensions.swift; sourceTree = ""; }; 965C2FEC2292614600015140 /* UIViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIViewExtensions.swift; sourceTree = ""; }; 965C2FEE2292BA6C00015140 /* CheckBox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckBox.swift; sourceTree = ""; }; + 965C302A2292ED7800015140 /* StringExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringExtensions.swift; sourceTree = ""; }; A512F1F10FEC63C067350139 /* Pods-Santander-Test.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Santander-Test.debug.xcconfig"; path = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -363,6 +365,7 @@ 965C2F77228BBDB300015140 /* UIColorExtensions.swift */, 965C2FE6228EE8CC00015140 /* UIViewControllerExtensions.swift */, 965C2FEC2292614600015140 /* UIViewExtensions.swift */, + 965C302A2292ED7800015140 /* StringExtensions.swift */, ); path = Extensions; sourceTree = ""; @@ -791,6 +794,7 @@ 965C2F36228966AF00015140 /* Constants.swift in Sources */, 965C2F59228A891900015140 /* FormViewController.swift in Sources */, 965C2FE7228EE8CC00015140 /* UIViewControllerExtensions.swift in Sources */, + 965C302B2292ED7800015140 /* StringExtensions.swift in Sources */, 965C2FEF2292BA6C00015140 /* CheckBox.swift in Sources */, 965C2FD0228E4C5A00015140 /* FundRisk.swift in Sources */, 965C2FAB228DF72A00015140 /* SendButton.swift in Sources */, diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index 18e4a7ec9aa8a5b4aad20ffebd52535adf003af0..ff42bf8f1e28dfdfb4b6d4732aeb3c1f0f9018d2 100644 GIT binary patch literal 109669 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

    UzB@M?!`2wGmGDu&qDrX1*=)h1~%bF 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 CD4mc1 literal 109236 zcmdqK2YeJo^fb2`ND6B=i<8$pr!-7jp?!WXFmH8}>>9 zf`SUz6_sE`L8aI$Hb6zNBP#HFb9RayHJ+oz0!Yoy(oaozL~*d|V=z#3gg-TtBWqSHhKY0{6hO--GYPtMD3pAASI@$D8oe z_&NMMegVITU&TA{PP_}hjo-l^;1BUf_+z{ee}%usKjNS8&-fSoD?tPkLU^JgT4E$7 zVk6y1cM?y|Bj=MoB$cF*EK)=UlObd%DJH|n6f%`eBh$$YQbuNyDl&@%NgcU>)RV>J zQgRttL2f3ukXy;!WHot!Y$T79Eo2*cnY=;XByW+A$j9Up@+tX@>?5C(@5wLZS8|N} zLH;Bsd5$;pF}#Jh@;2VipT+m!6ZoEdFaBKqJU)?6;s@{p`CPt`FX9LD!}u}$Sbh>e zji1i@`EtIBpTp1PYxsG5Eg$5sjO;Sx$O;`C<<*F*xEY)09jjB#{ zfvQn8U$t1ZM72yMsV-Grrn*vfmFim6b*h!Bn^d={Zdcu{x<}QlTCG~Ax?lC6>LJzR zswY%Ws-9A9RlTBmRkdC9nrfG7x9WY>2daIlgQ{;-Kd6qXepj7Tb83xRt2U{fYL~jZ zy0`jlb)q^$-CsReJw!c9JzhOQJyAVLJy|_d?N^tpE7X-f^yK*Ex>NnJH ztKU(-tA0=YzWOuuKK1A7FVtVEzg2&y{#E^(`nZPIs5EMgMx)i3G-geV#-g!mJepXI zR}-h{rs<{eX%aOVn*N#rnnKNRO^IfTW~!!KQ>~e!xj?f}vrKb^X1V4%%`KW+HTP)l z(>$noLi3#FCC$s4S2V9`wrk$f?9%Mk?9uGie5m9+O&49L+jLb({|UMt36M9zP67xP1{%7Pn)kT){fCm(N5J)(^hEb zXysIU5=Ou6OG_`fmE}`UHJX{W`|Ahj2kG z)d%%U^cU(c*I%JuuD?cqy?&LxN#Cqrt6!(zpnp*Rl>TY`Gx{z1XZ0=mZTcPho%%QQ zZ|e8x-_`HeAJ8Avf203a|DFDj{(Jq8`d{_G8L)vEc!SEIHV6j2!ESIEoCcS{Ylt@_ z8&V9ZhBQOEA;XYq$TIXZ^f%-g1{p>g#u`ct(+o2Wm4*gGqhY>bv0;f}nL#pKW4PXM zgW*oYy@u6>M-7h|9ydH~c*gL&VXI+>;Vr{1!-s}X4PO|3GW={fYWUOem#7tWq9E!; zgJ>3G#8}ZQ#);j;9%64XQ_K>x#T>D(*iY;)4iE>4MdDzwM4TW_6#ZgAtQHrEi^Yq? zi^WUC>%`l|yTvAPv-pVkg!rVmMSND=F1{wdF76O_io3+!;z#1g;wR##;uqq6@i+0P z_`7&a{6qXx{7XD8o-kq~F=~ujqs?eHI*d-E%jh-68P7JJV?5V*o-xswYRoql7z>R> z#=*uR#-YYy<1phWV~MfUSZ1s+RvK%K^~U+e%Z*nUmm9A!t}xzUywP}%vDvuV_>gh4 z@p0qJ##fB58+RDrGVU^dY}{x3-1v?0d*hELWWpx3NigY6PE)L@m+4%S&osa^(3EQ` zFby#cHH|Y(GR-tqnr538niiQBn=Ue4Y`VmBooS`%CevM}Ri-tj$4rl#o;E#Wdfv3v zw8Qj{=>yXzrteLMO-D>Wn|?9xtSr>DE%!4rx#cYmwB<6{jCu6q6JR8#zvn}T3m{($6kJ%CPR?M!Lw`1Ok`5@-Q zm``Iqi}^Cg#{3@hSIlt>vS5qaqOs^L28-DeW3gKt7LO&? z(%lko>1pX@IoEQYCDD>(NwcI|vMo850hWQ5d`p34h-Ii{gk_{(7vfpyRa?tXP z<$KF7mR~KuS&mvxS~)ASidLi5WHno3tahu{8fWcg?QK2Vnr2P6W>_<=S=N5md~1QV z&^p38(mKjI#X8kG%{tvW!&+{ww$8E6wT7$>)y_5)tv6V2x87mB z)4I-jzx4s@dg})3M(Y#SC#_qpE!J(;H>_`3-?Hwq?zX;T{n+}6^=s>X>jCS})?ci@ zT7R=1wfO18Eh__+vc&w+Pt=S+u62rZ0FiiY^k<1Tdpn7HprH5E3gf*jj~O! zO|(t2RoVi!D%&jEY+H>jWNWZpXj^K#$aaS) zc8lF=x7p+EXW4t$6YM?h=h&0%$@Xk}j=isauziSqsJ+-e%s$FK-af%T!(L{eX|J)* zv)9^#_BwlmeTn@-`%?R5_RH;8*jL(bvfpgK#eS>(PJ6R`y?ulILHkqor|r+!x7eSx zx7c5`Z@2HV@3!x;e`^2CzR&)-{R{hk`}g+4_9ONm?7!QO+5d2;9U6z$p>qfhqr>iS zIGhfbBi?bAqlY8Wk>p5rq&QL?nT`RDBFA9I5J#zFoMXIWf@7j%s-xUd;iz=fIOaKO z9g7`H92Yv4Ixcct?6}f#mE%UoO2C>4jvpL9I(~Be<~Z&+;Z!>{POa1Cv^yP6r_<&1 zIuo2doqe1>XQH#Ov!AoSbAWT8Gv8V49Of)>mO95dXFC1Pa%Y9J(mC51bS`i%bS`pU z=Dgf_g>$*{O6LmaP0qWVcRTNKu6J&5KInYN`LOd5=hMz@&KI0-I^S~ca_)BSalY&P z#QCXnzw?0epz{~!ug>3`N1eYr|8fx*?^3zcE~CrjGP}I4I9E4UcUQctr|W!IA6L37 z!gLr@H&P`?>qOhq{a1!`#E& zBiv)$6WwL*nQp&(p1al^bl15ra5uUybT4&Z=Dys0g?pv@Cil(mTimz0?{qi2*Sj~k zA9O$Ee%k$vdyD&7cZ>T~_jdPd?%nP^?!E5M-22?0yT5RM=|12-?EcMt)cw1M_ozH- zkH(|*7(7-_tjFt#^PKBB&vU+~kH_ap@nm~)JbgX+o&ryyXN+g8r^Hk08RwbgDf7(o z%=T1!8a?wp3p@)wi#$s`mwK-8tnggxxx;g(=Pu9Po_jpao(DYZJ&$-E^*rWj@oe+F z;Ca#Wl4rZ;Ezf(N_dOqYzV__*9Pk|UeB=4v^NZ(K&vDNQ&&gPQtRYs6HO87^t+Afi z9`k$&Vw+-{V^_zniM>B|W9*Z$PsKhR`*Q3nv9HE%k9{rn zjo7ziKaTw*_S4vJW50_%6#ISb;n<&Ik9m<7d$nGJSM+R?5?;Y$N;vMQ8;Vto&ddGREd8d14c+0#qy#a5vH|Py{8@!i$ukbGS zUg^Ecd$so(?+WjY-j&{)ytjMr@ZRaY%e%_E*1OKT!TX^1A@64IlisJiPkZ0+zUh6- zyUV-VyT`lN`?mKT@4MdjyzhHI@P6q1%KNowmctf=vaLd~4W86_-{X3osTNIXR$DXGldGqa#@ zP}<=9Y+p`FW|1#FBRSodlT}dU8*Lxl3;2GkX@kEZQ0Q;)mzldm)j<^v5S3}g5xOV{ z);81!Yia`ZWoCEVsKH=Oc{>2h%mdpG6y2_{s30r5U{H=PGc`5Em!6-W?90zC$nd2X zqe^0EL3LF_nc31F{|KSYJptLw%#@5&UrKsfvM)U~ zC)1ZdC_T+rP*{{!ls!0oFyIK7LtBNN+Irq=GRIhKj;@)x$tr1^?7%|iy)Ji*C)Nu9 zjw&s!s1F2cNB9>78ym)tFD@)?s0Vfc0Hcdas}~1kwq)#|UzCzlRFv-MnY!YYuHFNq8CDs4iGr8K|E+sLjd_IEj}uW)tYL7&8Z<+KX}^NE-txE&&3wsazH}0z$HN5PZD>LaT2;;Pem# zO;19gREq>;Kt>3bI#DWwLW?07IubP?30;P+N4KN<(FXJw+JfFg$IzeXI64WT%p{zS z3m|AY98bbiA!KoiQ^^{BaS>lFPzfE&W~et;Xu<#Ku4ATFOP;0n1SZm?vLtddQ#OAg5?xg@vbd4L-V`hOTV z94I%E8wD0&j1&tt;75ukQB*-u6-5_-SkIEur-NoFs;mZOJ*YkaI@%1MOJ@fcjPlQ~ zp5=$v@~hU5ZMBMPLv;{pR~lMJ2Id9p7Y(WR*Uc^rlsC?r#T0s<_DU;CX%_}U)w60@ zccq|f8<@_U#(uQ5RX`cvPz@ET1EDgrV^AmrTLAvr1{vm%%#sR)rg5{l-s`#P+zhUa zo5}gPa;}1_9q;IZyfZz)4+ z09wt0zn4fKNP;~;!1#} zx~e)*KaG7-d7P|w-OyMWnA}RtguIKjVL6gz=XUOnXcfxc&h=G*xQknL z3J^`e@2jO0n735sdYQtclNpi`AR(_ZuU+@|a}R)OiiqK$`g;GO)!hBudaf@h%`tCn>&R|-Z?a8I!go|Lki zxTmEYDSaH%(n{%b+%|^q^W0XhMd~Z{llrgbUI6ZWNg4qBTF>x3H)^=B`&A0UTsuql z#1z28@??*$8>j(+4pf4bi+VpK5S$lis9z*=!|UA6CT@o`P#U8E^(OZ&b4=gjc5%D8 zJ=|XIZSEZ@SIUzHN%>NNR45g#`x$n3`(om^b8YT^2!yV?1a6fQA zN+YDPQi)W`X2Me%Zdm{_F5{FK3R4(HE;A>bT3Er{;4t2a!K$iI0Gz(FPFt&{x)#j7 z_mnynFyi1~O(jgaJZHbNIXfnel*Y)P|KfJ8;f`}B*ner1G&=l$jQLx$PUiOYNY%__ zAR(`(Y|+fyBlsg7GH{k=FuZzcoHV`}iO48TkS0n=je@Nme= z?OY{|iRn@E4j5_|r$=t&L9xh-;!rnk3{wV5qhLi?am{F(nKAx`+2I=VKn&Vmv$X>F zDho$fDQ(-zq&do^mJ*)Y20`-A0{w(D`_xs z096}%%WibIn=$_C`eu~Q_5GVV5nxaz%0h|KOvx|J7{?Y6W}=kzM+2awLaLNzOen1g z)CNLkq?F}zW1y@G^u~-CrC?IQdIjoz<6z}x=9D@^!*!}Vsk0Z2gozx5Mx!xk>{Mme zL3}1RRL_Gx{PXIhxl)b9m6;b-fq3^#N=h0Z0z;KF4`wvb7^<%>4^-C&la%=jB~2l%E=`Jt>6DLQY?2td;UAqXnq*p!L*qfD!QLn%jfikrGn&9i+*y&_auS*> zFL0xHr)|ojHBvL0!n$J%;(t^hCO7Q+G04v;>pMG8J!^IY;8PM@FsPyLxn*WwEAI}k zZb+0>h=N1nn7}N5s4>(g`+Lz0n2<6w7WvU=wx%ohhXUZMC)NjQK&a*iz|X!wnk!>g zi2~zcAy6`+8C7z9Wu~76N&?N6LJ~-1`=xSnayBfL({h$BeH+!Fd8ihK3BoWJAaL+3 z^}%3+Y}%N^GYW*Q%o&@O}HI?;&+6i@j_}MVEg7sV5z)VJ&IbLDFt|n({u)bPxi(sT> z5|!q+*G3niWwJJsE|M0=%0s5grA!rEhAu}}pylXFX`!@8S}ZM*F6^KRWXV^=rky}4 zui8nX@~WKxDzEMe%iGewlQ&tiqG@#>P-_Wfgp5UlB?(ZZ64+vJ-_UwCuNMGuLHWaC z1U-y4mYL56E^XC*QI2`^WHzHsjH&-=b$NtG(4%1B{=o>%=rPv&KdGwNpC{1MT<>P| zB)C|YN}0{*8MH;ZOu8IaGGW(sOfUp%ge(6{J2bO?PfT_dfKu9dD^gN~pd zK+XRoT`%1XivE`Wl!JkeF&_Ivx*_6VpyS|RpcCjMI)RaNqqGwK-z1GO8_bF3)P%e~ zvQrVk7;CXU>{4I>T#8%4rNAP%6t_u99h`|6es?>O#TIM@ksS+b+a~D_5Lr%=y&df0 zb~a--_DFY1_q2McI1YCQ#~OE&?rOsE(%sB6x73DLxe*Vtj0KwDWx?z~#oY4X!h%3e zjqCy{fcC;?vo3l|_cq~kq*YS-lG9Yl?l$no7;G-MskUu$ur%puW07b_QhgsUV!BJhWjBUUo%< z9HScnFJ`McCsCXA!9JLZ3#8_-q~L6j6r3ZilfdDzwFO`^lG7qaMIr70JgB4OVbGAc zPLNa za3v1lay(1gEIlf1lAd8=>Xzp_PzfOt2z|9Vjj%rNUYtL4QF(oJWvd4o?a06cv~tUs z`rv$EIIy~o;`{=C?R*xKZyzd_DPGGc6qFv3#!Shsp5Uu2_dzUJ0Xu{jaJ^UK2Hc3} zOOHv9OHZuE3-KbnSb9==N_v_R!&#gUbIsNk(Y>?niG1)s=5~DT9^nr)46h9?sBPD7 zVs&N1Y-LmlQ?B zjX>qNVBLto{6I})5(|f0apAaND+)4Q6*Dr@Uk4qq!d6SsHVj*q1m;(Rr2AQf zmF=S>_C8-#!YP6nx&Uu+Nwt-`)bmBfx1?1TZ`94=#{%mrdNASxB)*HabEUH+uJ!Wcr&+i zEq(-|n~&kg@e}w-={0GG^oI1Nv`gCE>cHShVW;DD=5zo`QA%K8b$P@!!CS*iiJfdI zF-fVTxGkCCvYD(*slGkj>07MR=}|gIX>+RggLjA9>|t#>tVk67_-3>x} z0%>6Fpim+{tRCZ;Xq1_gqa62+8l|Hr&y-3#?fGt4d%i6*#pjGEzK}lX+9y{eYCryt z>%9gazz6X+_*>~C>0{{=>C-j%5dIzwz(=Idq_1Im4om5iMg*$D;a2eS!9{Bg__f9r zr^p^4i$_i_VQUhGlrqe3_)j*>QT#hThX0WENuNt!NMEjDA!dAn>lqFze+BVB&?B)E z{Poo=a1+*2EDjke@h_O*uW4kVTu*dqB=l5T5e&QYQH5;$(qKJAK0_7t)pa1?(B2VM zCEPn(3WUi<)Zu_b1ZD{5>%nXjLE7I$4AKDxTMR4*TQP47brLg#I!O$%NC&0wT75fW zC+?0>M&jXm60h_Pp!%(p)JoHYJSjdbpUT*0kzS`X?F~)Okq$xA@1>+R5+~$cv?;2s zk0dd;6Qv_f;N(EC9^i)6R47;zfPfh&I5tJfK{S%yVz z7o}nTYBgtp%GR#S%yC^bDGr5zR}>6~lM=8DWCR&WMv>8E3>ho^E*+Epkp7hZl8&z> zrDPl#&vhpg!7`knNT3j+GEfvF2k_a}deOo<7UZZ5PdHnyvTg5(<}QKIryML+tTn43 z2VhDIMzXM6V@M`Dgw={_8Dj&sY=ff}lc@gl169HL$V5R4xwo^RI*bJ7Nm{7uN z_MJFO6DgNYHjzq-IOa&OP_`^TgF>u7rS5Dp7uGkhK{baWL=kR=eX4mB5sG+-ACCz_ zSS~u4qJ(Zqh|Fg#YfwH^m#SF9h2e&(R$EP$kY(U9p#EejsgYpwNDUQM6Nyk#Ly?9e zEo%y#V=is1s{=6wWa9y=wu!r(TqzHd$!gAIgFs7w4w@+_TuW{U*CE%3OLS3{rnE+E zLGar-k*QfJed05-Q&b(xq`y?rL>{8Z)K;>IJitqK-4vKm*QoAo`4Ad_g<7c@V zpa(*2d-~I>!kPi1rtn_bHXysmJD|16ZnB5$C2v#Yq{u~)nFMN zk(Z)4Hi9Fvj|7t$*2x94gF%Sifjq#@a6^$lv}jzg7fVQux_fDT>vqzDQw+V8HRF7xHt?7MLj6$rjQG&ce~}!3odk57$1KS>7PX=%p7qeZ%$!>q z@WTc@xOzhaesIE>?yU*IQZDLkBC}QDA_%)Rh5~KAemF8hej`UakU&Ns#%w0PvsehT z$*uHhE$r~Vjc&EUTCjN#)**k9<7MV)Q2J;MTrz8t>L{qq)qYNDN3d& zjUkcFFbL<)unp}f?Jftc3L5KKEOLau5g4>o9nTrNB(wrE(@Uu^s0KD+D;F`QsD)_vsKA0T zevlMc0D~%#QOo1cY32tp(FPt|nSN4Qy9E*&%a1^D z{3w1j6XpRD*v9@86~XMZIv!ErCKfFWR5UUrR#ZD5_9$vu8lJpmBo9*p;Vr(DAIFd9 zCr~tyqCCnhXhG|mil5AuG8E;qwG22_$?@TZLVj>zVgrjL1VTm35rMG(0!XLpdv0V= z#Lr;cN)!!Z+enkf&1RH}Pf-fbmitU$eJbx}$?po~aeDNxWSklwl36hxJdpTk!VR=8 zJ1PI^!jhWtKkxw+hN#xcekFM-x|av4lx%nyn4uAByT0ez>5Odi1pV2 zQ-=K*uw?Du4XF<{)Nor{CpdK`znei$`bG6?`&owu1wF}{Jr3$@b^$Oxrv8rQy2ly0%5BM z%>r7gK2WK|BwIbK;zBv=gI~ifzn{O4U(2uK@8=)j*Yg|r2Pv9L(KL#tQ#6C3GKywW zQ7An?<+~LWgw$aLrqta{fvF8SpUqr}(ES0znHjGx1|`7Pfg|9%eRsM8H2c zP^p;L?vqMdOClzDaD8xI>qe5oc-wgJXXO<){}M&8bd|aFRc`reemnmf|2jppDVj@B zZR;wVe}muMaj6WufdAx_Za#%>_EA*B zx|s)=NlfZmlim{Yu9MoYyZNvAZ%*mqThL91C<-z?RHp#anwcg8QkNIi&5!)gO!|JJ zsJ;mzBXUfnm3)z9C-WC0GOrNtcNK;_KmHj12mdGk7k`{T!JkxdDp=ToJK9Lme2NxO z1k1EV6fLF*6zzo%a6MJLN~Kb(G%Br1rxH|<@=eiFs`-j)4p7anR2xIJ7OJ&Tt({G< zEgwwF+&UH@4TV#(!S=#x))Pr6lZhjHVql|TpExuvTrE%vwu>n>oBR>j3!*aM(S_4C zKqy(Ll*w2UH& zB1+N46kS5mr4(Iuzv?Vi4^@Jyr>d8#x9V&axVo29d?m%7Q~Vtz2FhPTHS4Kn2cx5+ zgbIr~*`jB2t4OK>SDO-&oBUmHuoPl1i^_wLRtTH0QR*cc-^4NOZUp&VnYr(2Ys#4e zqk^?eYn3j7bc=ayX#^c{`a1w2dig)iRA{9^7|JxzP3+EwNc7;8=qStIQR;M5u^ngt z*`a|3urdCc;4EeG(^N%V?~UddRk|uem8r^7Wvg;jeO3Kb{Z#{0168@IJk=mozN$b~ zNYND(T}jc^6s@4>I*M+fXeC8AQ*wD0+>ePbm6f-) zB)4xkQ*LJWW+t8ntQ<(~}PfwZdh%BY5S$qk!N->@pDvLd-Es$rAdaLs8O z=A@VVQ?s+88m^Tau03tT%4B~wU#s?0^b|#~`<#&blR9gTxkdIDRo}ASzEd4ieXlx9(K8f1OVRTb zwJ50n$jW8Ze{F~Q76$*>yU&ep1qdVxZtHE7?Ma|a~eM`|1g_c*b@~hR?s8^`3rRZ~tzM$w! zioRlW*fZtNRRCzhz)kBXNbF(j;dLLuZ=l1>W24!FJjTtek6YBYs&7++-vh#VfTDvG zeZ%N**Yez%tOcWG9(&kI?Uokykk_lvLHHf%V-@S8N!_eotzJXXcN86>=zEF|GdK>f zxlCd$fR>Z!|N7PSr&Wul~pJpWdkzyQKe5#*i z5Iv`UUcFV_LJ=&>j#Bg&h5R%*DPH{|D}PD-vicP@h~Cc>{X!9FmERb|M^1hmhHv23 zH$Tq<_!4p#?ENGBu=Uuno8d(S;x}0zZ>e{wcdLN~f2ZgeMSoEAC!^f#l9??~F(LQ6 z%O|V~KkO?>-NznUCiT^{z=MqS2ds||)gP%pR)ez$>gohVCn@Gw9}O2R&0{UL?kg#p z$sVAy?C?Wg-<7sJcq8}m74*?L8D z9$HF1xPd){>7cQ(KI|HY#;I{p97C~%Vk^Zq*2ndH)jrl@>&F$lTG&JGp$A`!XAgNP z>n*F`LGGhF^wBvjBP7)H)||`rZg1N)=V{KT*h#Ugqo&s|1*}Qdq-at#X%xFDj-}X3 zaa@FQny>;6t8Y!;Hcb!7i~#XF4d%R7um;Ltg{yX==`}?P*ifSrO|KcDl%Jxg6tqe; z6FQ(ZQ8S6+?iBJTI~Xv{G=|o6%?wSMW+ugFQJg?=Pl|gfXjQP$WVB|rL#xLrXw8+u z>JqJb1?(=+TBMYBiI$|fqyt))YA&PrYzjG@9r#>xCG@7bN^`a58qErd&!rfqwGV|1 zM_FfRu4kjkXx-Eft@9XK`*yt4(mGqW$zXMf*1ZbYU7)pADen@khcw_|c4C(`k7^!c za-2kQUPKjYo`l{sPidakJfqn{aWcgj6!)b#S3&D}R=!o!qS>Z-f#MX3Qz-^+O$W4c z_g}Op9?(h{IQaMO;fLJ)FJw#XO-t%(-70vH#pX5E$LpFMnw^?AD9)rfi{fkwsi4ru zb5~g7S&Q5wD_6j8kiqAYn!*oxS^eIZ;7RV|ZPv#-ns+ttY2K%}AI1GC9zZdiJxkcS zztI_Pk^9mMx$?vQ)SL6*DWN6*l`GhT+{b6oN9W=T%CkrRue4evxk+^uVN1^{;P(-Zy9tgfj+dnR;5*I zL4_7mJdEPu6pvu&A9%AzxW(2l^JC(nMZ(rSxA|tWhrEgkyb2z|aB7XL50locjR7@) zM^QYQ;xV8PSRbGNkRQ)lrS<&rL`&KQFlqXho>Ab8E}8^h^o-WYkLCa zv}c7~89XlH%4mCOduu_i##20j;)zoFM0T+SYt>Qz)KF@w5n0wdo9^uncLl+lkv`hRnVliFvJ{_m@HMO5C&s3TmB;n|7E|-j%p% z$7;uShVcaLL@mHQgW@uZXM#S->-WQi_{6uiL_7T2=`etHhPF&QQ|qS~{#8(1NpV2I zw2}cJV+w(CaI`nEe~@Sln6@_q+8P{8(H~E?M>R7wYN}QP4OIx=Tck)XyqP0 z_(?oWV8Zij2YlVa9&&eGzcl>NGFCjA2XADKzMJ)NkM>^eDs2d7jCVo4O@!w)-lXfx^XMH@NU9a7seURc1#SIiUQb>u0K6WL%HIud2 zx^qWrJbTDJ+|2~PK{_uucPx7&_wgw7(S>5k!_#{|dGgy<@z|n$o{Mr2v|F_;6fdTD zNk@~TeTjkgvi242tJ>`pUr6yq6fdJ#Qb@Ri4J&g7tdUwdV<`i@y~)w;mEr4>Gg_DG zU2q2Eo_2wsBJ~HgpfB6|J=#Os? zFC%FE)ef!8WVG5uTgROqEuBUIyK}U3Od)nYZ4tC|b{*u1+^2KsoI01zt@BWP6~)(3 zd@aS-Q+(rnI2Nr| z1$jw{?8+T^ub^GHQg@yV#)>j?R$^Gi;89$Y6&V_?aOW1OLSngHc$+P^&yHMW;}DDPSR1vGY?a|k>bt&Ydo`DcNOEAD=FUe zPk2Vb`#Rk%j8(4J-JrWsw^DbL4n*P+iXWx;F^V6j_z8-iT&ufPcbo2Z-5t6+8LK=+ z@zWGPL-Df|KldMEmG34EcsA$pOJOHZuLixmPrsC%dj#@MWb2;FHI<7wS9 z5ysd`aZ78mwC*|G){Zl!4ECb#^?xuMJ9ImBZ|L6Cy~So@8^y5td6D9mDSm~`1_XPq zyMx=X{SQV6Uv^GnW*S^b26wZ;Ij!s*5Sg5m#5B03EIB75Jv|F{j#>%v4kN_76tja` z3l`@1CYSpvbA~IheW?4W3qpLRgMANnV9>AoB79&F1YtXz7}R}@%XJ5I2Pu9{0uO%& z#XFgJ{1X)^&&(kP5V&2h13<-NOMU);Z}hlQ1)v{wEDHrZ+b0x;S4xiRP5>FZJZYyp zDR2T3us|3A-=O$Sir=Dm55;?B0v_CZJx=Tf$DPhu0()JFaK0@)19VP$MruY{PM`Rc zOi)A_sp-k7$!S2vtmJH&lLUzCH4B2Er+62|a13oqMPZ$9XuYpuc;S?S+FIZE3g4Kz zNf9Uovk=ocK?S?u>58+2Slxv}oY0Npcfva7J&NCtEK!8BfLuZkir*r9sW73qv^al6Q3=$NtDM?L(WEhh;BGvn zk5ewf$jr`&oXQk`N^EgOU-GE7IxV)R25 zpymZD8^brbl(H)+6Gv8uDsn4oAW6%&04^P#t|JP+Ny=So;TXwEv z02`z?8>7)bD=BJ!N)xlLWp#gA@N=2{Kt-!jTpp^Ky`XO1 zyoOnelftL|lOU(55-t=9K{qT>r@C%7oYM$Z&ufIMSc3Hc%zqB1q(L?Qd9Vhm5Bw*g z8yQ^W|4#x2w`Rhnd=bu@9X=ZLA7;BVDFflmK{%Pkj);X4Ya!PZ?(6CxONr&|l8nx! zr1Pq>hzH@Do#4_0=y&!!f87}t?tcfd=yMuAI343_@Yl}@H27q$`hOQye@%@K&at)A z+yDEBpI(6{Ro7P3z@?REnDPDws8$W$rppssZDEppY%%oT0-34xB=+OK4ydf=ljL9j z>%jgy8YtrO$lg^bX<>F|S!Vhf=9e>pS;Sa}D(4R9;FzVPCZiD8d5a;!pG7+fSk2ErO)nIH*NfZdWG zDgKG#pDF%jjc}=OnQ*xPJ0rhR{5!?RDBQ9Ei=F?>U82IZZ2f#4#gG>zFM8OXp0JV| z!~Roz6b_QJA8_9%KR6-JC5H)P_)G=)yM%kgw|xosNaHB}6R!IbnxqL7|8>fJUvL$8 zw@RhiT44jD**f8V;Q;}*TuxAYk`j&*v_^PPcu06y*hmScL_>*|65W4`W=}AhJxK{s zX!Z=F*%skh`2Rd5JSD2|Pc=}@ag$kVwkG76Bb0M2Q%LZN@S04y?LavqG{cg32P}w* zz7xvvQ->(cb_oaB2?(dKTi7G)72X!!5#ANv6W$j-5Iz(>5mn!q+FYUdyRxSKVJgiMh;t#lI0s z=>QAtf`MtRhok3k44BWfU4$TdN#vVFOVv!8eIcLUbFlvP<#eQ@~pV|J*{P*EE6aB%t=_Mg5Mec%#cA# zg`Jo)#y_AV87N)q$qE@JSOlIasc%(AU5VLj8KlfJC-tXQLi1#B;QQ0glqG4ivK=K( z&Y{xR=^J6WsvDrMhb*da4i)JePNQNuRQd(FJpCfJbc2-k+bDs&{J*~mII^76FV$1n z9@Sr@Uk0g9q(3E)5P!#N{l)rAAPI^Lq$D?z3iUs{$5-k9NGTH|aN1GL({HN`_G~e2xB5{bTyg`X?wELCGk1L&-QcC8tYk z`@es2v;H}T8H5AiYg#(N>;?TRY~EkgzodVe5}4{Sl#E@ie^tMo&3g$YrT^dN9nkDD zXHMaXxAeQBSzxdJ?dTWp=|2UY(7&($K>wlsBmKwvPbe8r$plI!QZk8>$&^f4tJ

    B3(ei(& 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 String { - var text = number.replacingOccurrences(of: "(", with: "") - text = text.replacingOccurrences(of: ")", with: "") - text = text.replacingOccurrences(of: "-", with: "") - text = text.replacingOccurrences(of: " ", with: "") - - let textLenght = text.count - - switch textLenght { - case 1, 2: - return "(\(text)" - case 3, 4, 5, 6, 7: - return "(\(text.prefix(2))) \(text.suffix(textLenght - 2))" - case 8, 9: - let start = text.index(text.startIndex, offsetBy: 2) - let end = text.index(text.endIndex, offsetBy: 7 - textLenght) - let range = start.. String? { + var text = self.replacingOccurrences(of: "(", with: "") + text = text.replacingOccurrences(of: ")", with: "") + text = text.replacingOccurrences(of: "-", with: "") + text = text.replacingOccurrences(of: " ", with: "") + + let numberPredicate = NSPredicate(format: "SELF MATCHES %@", "^[0-9]*$") + + guard numberPredicate.evaluate(with: text) else { return nil } + + let textLenght = text.count + + switch textLenght { + case 1, 2: + return "(\(text)" + case 3, 4, 5, 6, 7: + return "(\(text.prefix(2))) \(text.suffix(textLenght - 2))" + case 8, 9: + let start = text.index(text.startIndex, offsetBy: 2) + let end = text.index(text.endIndex, offsetBy: 7 - textLenght) + let range = start.. Date: Mon, 20 May 2019 10:50:09 -0400 Subject: [PATCH 32/39] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20dos=20testes=20?= =?UTF-8?q?unit=C3=A1rios?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Santander-Test.xcodeproj/project.pbxproj | 4 + .../UserInterfaceState.xcuserstate | Bin 109669 -> 113206 bytes .../FieldValidationTests.swift | 92 ++++++++++++++++++ 3 files changed, 96 insertions(+) create mode 100644 Santander-Test/Santander-TestTests/FieldValidationTests.swift diff --git a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj index 24b8449e..8ed6c79f 100644 --- a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj +++ b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj @@ -71,6 +71,7 @@ 965C2FED2292614600015140 /* UIViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FEC2292614600015140 /* UIViewExtensions.swift */; }; 965C2FEF2292BA6C00015140 /* CheckBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FEE2292BA6C00015140 /* CheckBox.swift */; }; 965C302B2292ED7800015140 /* StringExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C302A2292ED7800015140 /* StringExtensions.swift */; }; + 965C30342292F51100015140 /* FieldValidationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C30332292F51100015140 /* FieldValidationTests.swift */; }; 973161DFBDDB30BB534A86DA /* Pods_Santander_TestUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 878E0A16E793237D34137EC7 /* Pods_Santander_TestUITests.framework */; }; C4FCFE13C06111F180515DFA /* Pods_Santander_Test.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F563E135B794CADBF7401F8 /* Pods_Santander_Test.framework */; }; /* End PBXBuildFile section */ @@ -170,6 +171,7 @@ 965C2FEC2292614600015140 /* UIViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIViewExtensions.swift; sourceTree = ""; }; 965C2FEE2292BA6C00015140 /* CheckBox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckBox.swift; sourceTree = ""; }; 965C302A2292ED7800015140 /* StringExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringExtensions.swift; sourceTree = ""; }; + 965C30332292F51100015140 /* FieldValidationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FieldValidationTests.swift; sourceTree = ""; }; A512F1F10FEC63C067350139 /* Pods-Santander-Test.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Santander-Test.debug.xcconfig"; path = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -253,6 +255,7 @@ children = ( 965C2F1B22895E2800015140 /* Santander_TestTests.swift */, 965C2F1D22895E2800015140 /* Info.plist */, + 965C30332292F51100015140 /* FieldValidationTests.swift */, ); path = "Santander-TestTests"; sourceTree = ""; @@ -819,6 +822,7 @@ buildActionMask = 2147483647; files = ( 965C2F1C22895E2800015140 /* Santander_TestTests.swift in Sources */, + 965C30342292F51100015140 /* FieldValidationTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index ff42bf8f1e28dfdfb4b6d4732aeb3c1f0f9018d2..6636b80e792144fc0671d4d1e3ba99dd474685bc 100644 GIT binary patch literal 113206 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�w|qNOv=me@S`ThsJ2sHGY`(NEVuM%XV1 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

    >ILg?BpOB93_)eT;>`# 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

    UzB@M?!`2wGmGDu&qDrX1*=)h1~%bF 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 CD4mc1 diff --git a/Santander-Test/Santander-TestTests/FieldValidationTests.swift b/Santander-Test/Santander-TestTests/FieldValidationTests.swift new file mode 100644 index 00000000..9662e24b --- /dev/null +++ b/Santander-Test/Santander-TestTests/FieldValidationTests.swift @@ -0,0 +1,92 @@ +// +// FieldValidationTests.swift +// Santander-TestTests +// +// Created by Matheus Ribeiro on 20/05/19. +// Copyright © 2019 Matheus Ribeiro. All rights reserved. +// + +import XCTest +@testable import Santander_Test + +class FieldValidationTests: XCTestCase { + + func testCorrectPhoneNumberValidation() { + let numbersList = ["(99) 99123-5232", "(92) 8485-2719", "(91) 8456-2345", "(92) 99340-9876", "(93) 8558-0950"] + + for number in numbersList { + let isValidNumber = FieldValidation.isValid(phoneNumber: number) + XCTAssertTrue(isValidNumber, number) + } + } + + func testWrongPhoneNumberValidation() { + let numbersList = [ + "(9) 99123-5232", "(92)8485-2719", "(91) 456-2345", + "(92) 9934-09876", "9385580950", "(92) 991199239", + "23) 9119-3949", "(92) 9138-2847" + ] + + for number in numbersList { + let isValidNumber = FieldValidation.isValid(phoneNumber: number) + XCTAssertFalse(isValidNumber, number) + } + } + + func testCorrectEmailValidation() { + let emailList = ["name@mail.com", "name@mail.com.br", "name@mailmail.com.br", "namename@mail.com.br.br"] + + for email in emailList { + let isValidEmail = FieldValidation.isValid(email: email) + XCTAssertTrue(isValidEmail, email) + } + } + + func testWrongEmailValidation() { + + let emailList = ["wrong@mail", "wrong@mail.", "wrong@mail.c", "@mail.com", "wrong.mail"] + + for email in emailList { + let isValidEmail = FieldValidation.isValid(email: email) + XCTAssertFalse(isValidEmail, email) + } + } + + func testConvertToPhoneNumberFormat() { + + var textFormatted = "1".convertToPhoneNumberFormat() + XCTAssertEqual(textFormatted, "(1") + + textFormatted = "12".convertToPhoneNumberFormat() + XCTAssertEqual(textFormatted, "(12") + + textFormatted = "123".convertToPhoneNumberFormat() + XCTAssertEqual(textFormatted, "(12) 3") + + textFormatted = "1234".convertToPhoneNumberFormat() + XCTAssertEqual(textFormatted, "(12) 34") + + textFormatted = "12345".convertToPhoneNumberFormat() + XCTAssertEqual(textFormatted, "(12) 345") + + textFormatted = "123456".convertToPhoneNumberFormat() + XCTAssertEqual(textFormatted, "(12) 3456") + + textFormatted = "1234567".convertToPhoneNumberFormat() + XCTAssertEqual(textFormatted, "(12) 34567") + + textFormatted = "12345678".convertToPhoneNumberFormat() + XCTAssertEqual(textFormatted, "(12) 34567-8") + + textFormatted = "123456789".convertToPhoneNumberFormat() + XCTAssertEqual(textFormatted, "(12) 34567-89") + + textFormatted = "1234567890".convertToPhoneNumberFormat() + XCTAssertEqual(textFormatted, "(12) 3456-7890") + + textFormatted = "12345678901".convertToPhoneNumberFormat() + XCTAssertEqual(textFormatted, "(12) 34567-8901") + + } + +} From 1c92d28c4436a91af774ed77e3c5e25467c77ca7 Mon Sep 17 00:00:00 2001 From: Matheus Ribeiro Date: Mon, 20 May 2019 11:30:34 -0400 Subject: [PATCH 33/39] =?UTF-8?q?Implementa=C3=A7=C3=A3o=20do=20FloatExten?= =?UTF-8?q?sions=20para=20convers=C3=A3o=20de=20dados?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Santander-Test.xcodeproj/project.pbxproj | 8 ++++ .../UserInterfaceState.xcuserstate | Bin 113206 -> 114917 bytes .../Fund/DownInfo/FundDownInfoCell.xib | 6 +-- .../Fund/MoreInfo/FundMoreInfoCell.swift | 36 ++++++++++++------ .../GenericScenes/Fund/Risk/FundRisk.xib | 12 +++--- .../Extensions/FloatExtensions.swift | 24 ++++++++++++ .../FloatExtensionsTests.swift | 36 ++++++++++++++++++ 7 files changed, 101 insertions(+), 21 deletions(-) create mode 100644 Santander-Test/Santander-Test/Supporting Files/Extensions/FloatExtensions.swift create mode 100644 Santander-Test/Santander-TestTests/FloatExtensionsTests.swift diff --git a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj index 8ed6c79f..66f7ea42 100644 --- a/Santander-Test/Santander-Test.xcodeproj/project.pbxproj +++ b/Santander-Test/Santander-Test.xcodeproj/project.pbxproj @@ -72,6 +72,8 @@ 965C2FEF2292BA6C00015140 /* CheckBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C2FEE2292BA6C00015140 /* CheckBox.swift */; }; 965C302B2292ED7800015140 /* StringExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C302A2292ED7800015140 /* StringExtensions.swift */; }; 965C30342292F51100015140 /* FieldValidationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C30332292F51100015140 /* FieldValidationTests.swift */; }; + 965C30362292F81300015140 /* FloatExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C30352292F81300015140 /* FloatExtensions.swift */; }; + 965C30382292F8E000015140 /* FloatExtensionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 965C30372292F8E000015140 /* FloatExtensionsTests.swift */; }; 973161DFBDDB30BB534A86DA /* Pods_Santander_TestUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 878E0A16E793237D34137EC7 /* Pods_Santander_TestUITests.framework */; }; C4FCFE13C06111F180515DFA /* Pods_Santander_Test.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8F563E135B794CADBF7401F8 /* Pods_Santander_Test.framework */; }; /* End PBXBuildFile section */ @@ -172,6 +174,8 @@ 965C2FEE2292BA6C00015140 /* CheckBox.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckBox.swift; sourceTree = ""; }; 965C302A2292ED7800015140 /* StringExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StringExtensions.swift; sourceTree = ""; }; 965C30332292F51100015140 /* FieldValidationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FieldValidationTests.swift; sourceTree = ""; }; + 965C30352292F81300015140 /* FloatExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FloatExtensions.swift; sourceTree = ""; }; + 965C30372292F8E000015140 /* FloatExtensionsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FloatExtensionsTests.swift; sourceTree = ""; }; A512F1F10FEC63C067350139 /* Pods-Santander-Test.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Santander-Test.debug.xcconfig"; path = "Target Support Files/Pods-Santander-Test/Pods-Santander-Test.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -256,6 +260,7 @@ 965C2F1B22895E2800015140 /* Santander_TestTests.swift */, 965C2F1D22895E2800015140 /* Info.plist */, 965C30332292F51100015140 /* FieldValidationTests.swift */, + 965C30372292F8E000015140 /* FloatExtensionsTests.swift */, ); path = "Santander-TestTests"; sourceTree = ""; @@ -369,6 +374,7 @@ 965C2FE6228EE8CC00015140 /* UIViewControllerExtensions.swift */, 965C2FEC2292614600015140 /* UIViewExtensions.swift */, 965C302A2292ED7800015140 /* StringExtensions.swift */, + 965C30352292F81300015140 /* FloatExtensions.swift */, ); path = Extensions; sourceTree = ""; @@ -803,6 +809,7 @@ 965C2FAB228DF72A00015140 /* SendButton.swift in Sources */, 965C2F78228BBDB300015140 /* UIColorExtensions.swift in Sources */, 965C2F66228A9DFC00015140 /* FieldCell.swift in Sources */, + 965C30362292F81300015140 /* FloatExtensions.swift in Sources */, 965C2FE5228EACD400015140 /* FundDownInfoCell.swift in Sources */, 965C2FDB228E9D5A00015140 /* FundMoreInfoCell.swift in Sources */, 965C2FC2228E128E00015140 /* FundDetailModels.swift in Sources */, @@ -822,6 +829,7 @@ buildActionMask = 2147483647; files = ( 965C2F1C22895E2800015140 /* Santander_TestTests.swift in Sources */, + 965C30382292F8E000015140 /* FloatExtensionsTests.swift in Sources */, 965C30342292F51100015140 /* FieldValidationTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate b/Santander-Test/Santander-Test.xcworkspace/xcuserdata/matheusribeiro.xcuserdatad/UserInterfaceState.xcuserstate index 6636b80e792144fc0671d4d1e3ba99dd474685bc..927078fc10df8aa0cc606b335d578324fa5975bd 100644 GIT binary patch literal 114917 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

    mSy$5!r9;Mdn*F-;(*(SHx7$qq~c`ES)dbs^8 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�w|qNOv=me@S`ThsJ2sHGY`(NEVuM%XV1 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

    >ILg?BpOB93_)eT;>`# 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 - +