├── .gitignore
├── .travis.yml
├── Example
├── FireTVKit.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── xcschemes
│ │ ├── FireTVKit-Example.xcscheme
│ │ └── UnitTests.xcscheme
├── FireTVKit.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── FireTVKit
│ ├── AppDelegate.swift
│ ├── Base.lproj
│ │ ├── LaunchScreen.xib
│ │ └── Main.storyboard
│ ├── FireTVManagerExampleViewController.swift
│ ├── Images.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ ├── Info.plist
│ └── ViewController.swift
├── Podfile
├── Podfile.lock
├── Pods
│ ├── Local Podspecs
│ │ └── FireTVKit.podspec.json
│ ├── Manifest.lock
│ ├── Nimble
│ │ ├── Carthage
│ │ │ └── Checkouts
│ │ │ │ ├── CwlCatchException
│ │ │ │ └── Sources
│ │ │ │ │ ├── CwlCatchException
│ │ │ │ │ └── CwlCatchException.swift
│ │ │ │ │ └── CwlCatchExceptionSupport
│ │ │ │ │ ├── CwlCatchException.m
│ │ │ │ │ └── include
│ │ │ │ │ └── CwlCatchException.h
│ │ │ │ └── CwlPreconditionTesting
│ │ │ │ └── Sources
│ │ │ │ ├── CwlMachBadInstructionHandler
│ │ │ │ ├── CwlMachBadInstructionHandler.m
│ │ │ │ ├── include
│ │ │ │ │ └── CwlMachBadInstructionHandler.h
│ │ │ │ ├── mach_excServer.c
│ │ │ │ └── mach_excServer.h
│ │ │ │ └── CwlPreconditionTesting
│ │ │ │ ├── CwlBadInstructionException.swift
│ │ │ │ ├── CwlCatchBadInstruction.swift
│ │ │ │ ├── CwlDarwinDefinitions.swift
│ │ │ │ └── Mach
│ │ │ │ └── CwlPreconditionTesting.h
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── Sources
│ │ │ ├── Nimble
│ │ │ ├── Adapters
│ │ │ │ ├── AdapterProtocols.swift
│ │ │ │ ├── AssertionDispatcher.swift
│ │ │ │ ├── AssertionRecorder.swift
│ │ │ │ ├── NMBExpectation.swift
│ │ │ │ ├── NMBObjCMatcher.swift
│ │ │ │ ├── NimbleEnvironment.swift
│ │ │ │ └── NimbleXCTestHandler.swift
│ │ │ ├── DSL+Wait.swift
│ │ │ ├── DSL.swift
│ │ │ ├── Expectation.swift
│ │ │ ├── ExpectationMessage.swift
│ │ │ ├── Expression.swift
│ │ │ ├── FailureMessage.swift
│ │ │ ├── Matchers
│ │ │ │ ├── AllPass.swift
│ │ │ │ ├── Async.swift
│ │ │ │ ├── BeAKindOf.swift
│ │ │ │ ├── BeAnInstanceOf.swift
│ │ │ │ ├── BeCloseTo.swift
│ │ │ │ ├── BeEmpty.swift
│ │ │ │ ├── BeGreaterThan.swift
│ │ │ │ ├── BeGreaterThanOrEqualTo.swift
│ │ │ │ ├── BeIdenticalTo.swift
│ │ │ │ ├── BeLessThan.swift
│ │ │ │ ├── BeLessThanOrEqual.swift
│ │ │ │ ├── BeLogical.swift
│ │ │ │ ├── BeNil.swift
│ │ │ │ ├── BeVoid.swift
│ │ │ │ ├── BeginWith.swift
│ │ │ │ ├── Contain.swift
│ │ │ │ ├── ContainElementSatisfying.swift
│ │ │ │ ├── EndWith.swift
│ │ │ │ ├── Equal.swift
│ │ │ │ ├── HaveCount.swift
│ │ │ │ ├── Match.swift
│ │ │ │ ├── MatchError.swift
│ │ │ │ ├── MatcherFunc.swift
│ │ │ │ ├── MatcherProtocols.swift
│ │ │ │ ├── PostNotification.swift
│ │ │ │ ├── Predicate.swift
│ │ │ │ ├── RaisesException.swift
│ │ │ │ ├── SatisfyAllOf.swift
│ │ │ │ ├── SatisfyAnyOf.swift
│ │ │ │ ├── ThrowAssertion.swift
│ │ │ │ ├── ThrowError.swift
│ │ │ │ └── ToSucceed.swift
│ │ │ ├── Nimble.h
│ │ │ └── Utils
│ │ │ │ ├── Await.swift
│ │ │ │ ├── Errors.swift
│ │ │ │ ├── Functional.swift
│ │ │ │ ├── SourceLocation.swift
│ │ │ │ └── Stringers.swift
│ │ │ └── NimbleObjectiveC
│ │ │ ├── DSL.h
│ │ │ ├── DSL.m
│ │ │ ├── NMBExceptionCapture.h
│ │ │ ├── NMBExceptionCapture.m
│ │ │ ├── NMBStringify.h
│ │ │ ├── NMBStringify.m
│ │ │ └── XCTestObservationCenter+Register.m
│ ├── Pods.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ └── FireTVKit.xcscheme
│ ├── Quick
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── Sources
│ │ │ ├── Quick
│ │ │ ├── Behavior.swift
│ │ │ ├── Callsite.swift
│ │ │ ├── Configuration
│ │ │ │ └── Configuration.swift
│ │ │ ├── DSL
│ │ │ │ ├── DSL.swift
│ │ │ │ └── World+DSL.swift
│ │ │ ├── ErrorUtility.swift
│ │ │ ├── Example.swift
│ │ │ ├── ExampleGroup.swift
│ │ │ ├── ExampleMetadata.swift
│ │ │ ├── Filter.swift
│ │ │ ├── Hooks
│ │ │ │ ├── Closures.swift
│ │ │ │ ├── ExampleHooks.swift
│ │ │ │ ├── HooksPhase.swift
│ │ │ │ └── SuiteHooks.swift
│ │ │ ├── NSBundle+CurrentTestBundle.swift
│ │ │ ├── NSString+C99ExtendedIdentifier.swift
│ │ │ ├── QuickSelectedTestSuiteBuilder.swift
│ │ │ ├── QuickTestSuite.swift
│ │ │ ├── URL+FileName.swift
│ │ │ └── World.swift
│ │ │ ├── QuickObjectiveC
│ │ │ ├── Configuration
│ │ │ │ ├── QuickConfiguration.h
│ │ │ │ └── QuickConfiguration.m
│ │ │ ├── DSL
│ │ │ │ ├── QCKDSL.h
│ │ │ │ └── QCKDSL.m
│ │ │ ├── Quick.h
│ │ │ ├── QuickSpec.h
│ │ │ ├── QuickSpec.m
│ │ │ └── XCTestSuite+QuickTestSuiteBuilder.m
│ │ │ └── QuickSpecBase
│ │ │ ├── QuickSpecBase.m
│ │ │ └── include
│ │ │ └── QuickSpecBase.h
│ ├── ReachabilitySwift
│ │ ├── LICENSE
│ │ ├── README.md
│ │ └── Sources
│ │ │ └── Reachability.swift
│ ├── RxCocoa
│ │ ├── LICENSE.md
│ │ ├── Platform
│ │ │ ├── DataStructures
│ │ │ │ ├── Bag.swift
│ │ │ │ ├── InfiniteSequence.swift
│ │ │ │ ├── PriorityQueue.swift
│ │ │ │ └── Queue.swift
│ │ │ ├── DeprecationWarner.swift
│ │ │ ├── DispatchQueue+Extensions.swift
│ │ │ ├── Platform.Darwin.swift
│ │ │ ├── Platform.Linux.swift
│ │ │ └── RecursiveLock.swift
│ │ ├── README.md
│ │ └── RxCocoa
│ │ │ ├── Common
│ │ │ ├── Binder.swift
│ │ │ ├── ControlTarget.swift
│ │ │ ├── DelegateProxy.swift
│ │ │ ├── DelegateProxyType.swift
│ │ │ ├── KeyPathBinder.swift
│ │ │ ├── NSLayoutConstraint+Rx.swift
│ │ │ ├── Observable+Bind.swift
│ │ │ ├── RxCocoaObjCRuntimeError+Extensions.swift
│ │ │ ├── RxTarget.swift
│ │ │ ├── SectionedViewDataSourceType.swift
│ │ │ └── TextInput.swift
│ │ │ ├── Deprecated.swift
│ │ │ ├── Foundation
│ │ │ ├── KVORepresentable+CoreGraphics.swift
│ │ │ ├── KVORepresentable+Swift.swift
│ │ │ ├── KVORepresentable.swift
│ │ │ ├── Logging.swift
│ │ │ ├── NSObject+Rx+KVORepresentable.swift
│ │ │ ├── NSObject+Rx+RawRepresentable.swift
│ │ │ ├── NSObject+Rx.swift
│ │ │ ├── NotificationCenter+Rx.swift
│ │ │ └── URLSession+Rx.swift
│ │ │ ├── Runtime
│ │ │ ├── _RX.m
│ │ │ ├── _RXDelegateProxy.m
│ │ │ ├── _RXKVOObserver.m
│ │ │ ├── _RXObjCRuntime.m
│ │ │ └── include
│ │ │ │ ├── RxCocoaRuntime.h
│ │ │ │ ├── _RX.h
│ │ │ │ ├── _RXDelegateProxy.h
│ │ │ │ ├── _RXKVOObserver.h
│ │ │ │ └── _RXObjCRuntime.h
│ │ │ ├── RxCocoa.h
│ │ │ ├── RxCocoa.swift
│ │ │ ├── Traits
│ │ │ ├── BehaviorRelay.swift
│ │ │ ├── ControlEvent.swift
│ │ │ ├── ControlProperty.swift
│ │ │ ├── Driver
│ │ │ │ ├── BehaviorRelay+Driver.swift
│ │ │ │ ├── ControlEvent+Driver.swift
│ │ │ │ ├── ControlProperty+Driver.swift
│ │ │ │ ├── Driver+Subscription.swift
│ │ │ │ ├── Driver.swift
│ │ │ │ └── ObservableConvertibleType+Driver.swift
│ │ │ ├── PublishRelay.swift
│ │ │ ├── SharedSequence
│ │ │ │ ├── ObservableConvertibleType+SharedSequence.swift
│ │ │ │ ├── SchedulerType+SharedSequence.swift
│ │ │ │ ├── SharedSequence+Operators+arity.swift
│ │ │ │ ├── SharedSequence+Operators.swift
│ │ │ │ └── SharedSequence.swift
│ │ │ └── Signal
│ │ │ │ ├── ControlEvent+Signal.swift
│ │ │ │ ├── ObservableConvertibleType+Signal.swift
│ │ │ │ ├── PublishRelay+Signal.swift
│ │ │ │ ├── Signal+Subscription.swift
│ │ │ │ └── Signal.swift
│ │ │ ├── iOS
│ │ │ ├── DataSources
│ │ │ │ ├── RxCollectionViewReactiveArrayDataSource.swift
│ │ │ │ ├── RxPickerViewAdapter.swift
│ │ │ │ └── RxTableViewReactiveArrayDataSource.swift
│ │ │ ├── Events
│ │ │ │ └── ItemEvents.swift
│ │ │ ├── NSTextStorage+Rx.swift
│ │ │ ├── Protocols
│ │ │ │ ├── RxCollectionViewDataSourceType.swift
│ │ │ │ ├── RxPickerViewDataSourceType.swift
│ │ │ │ └── RxTableViewDataSourceType.swift
│ │ │ ├── Proxies
│ │ │ │ ├── RxCollectionViewDataSourcePrefetchingProxy.swift
│ │ │ │ ├── RxCollectionViewDataSourceProxy.swift
│ │ │ │ ├── RxCollectionViewDelegateProxy.swift
│ │ │ │ ├── RxNavigationControllerDelegateProxy.swift
│ │ │ │ ├── RxPickerViewDataSourceProxy.swift
│ │ │ │ ├── RxPickerViewDelegateProxy.swift
│ │ │ │ ├── RxScrollViewDelegateProxy.swift
│ │ │ │ ├── RxSearchBarDelegateProxy.swift
│ │ │ │ ├── RxSearchControllerDelegateProxy.swift
│ │ │ │ ├── RxTabBarControllerDelegateProxy.swift
│ │ │ │ ├── RxTabBarDelegateProxy.swift
│ │ │ │ ├── RxTableViewDataSourcePrefetchingProxy.swift
│ │ │ │ ├── RxTableViewDataSourceProxy.swift
│ │ │ │ ├── RxTableViewDelegateProxy.swift
│ │ │ │ ├── RxTextStorageDelegateProxy.swift
│ │ │ │ ├── RxTextViewDelegateProxy.swift
│ │ │ │ └── RxWebViewDelegateProxy.swift
│ │ │ ├── UIActivityIndicatorView+Rx.swift
│ │ │ ├── UIAlertAction+Rx.swift
│ │ │ ├── UIApplication+Rx.swift
│ │ │ ├── UIBarButtonItem+Rx.swift
│ │ │ ├── UIButton+Rx.swift
│ │ │ ├── UICollectionView+Rx.swift
│ │ │ ├── UIControl+Rx.swift
│ │ │ ├── UIDatePicker+Rx.swift
│ │ │ ├── UIGestureRecognizer+Rx.swift
│ │ │ ├── UIImageView+Rx.swift
│ │ │ ├── UILabel+Rx.swift
│ │ │ ├── UINavigationController+Rx.swift
│ │ │ ├── UINavigationItem+Rx.swift
│ │ │ ├── UIPageControl+Rx.swift
│ │ │ ├── UIPickerView+Rx.swift
│ │ │ ├── UIProgressView+Rx.swift
│ │ │ ├── UIRefreshControl+Rx.swift
│ │ │ ├── UIScrollView+Rx.swift
│ │ │ ├── UISearchBar+Rx.swift
│ │ │ ├── UISearchController+Rx.swift
│ │ │ ├── UISegmentedControl+Rx.swift
│ │ │ ├── UISlider+Rx.swift
│ │ │ ├── UIStepper+Rx.swift
│ │ │ ├── UISwitch+Rx.swift
│ │ │ ├── UITabBar+Rx.swift
│ │ │ ├── UITabBarController+Rx.swift
│ │ │ ├── UITabBarItem+Rx.swift
│ │ │ ├── UITableView+Rx.swift
│ │ │ ├── UITextField+Rx.swift
│ │ │ ├── UITextView+Rx.swift
│ │ │ ├── UIView+Rx.swift
│ │ │ ├── UIViewController+Rx.swift
│ │ │ └── UIWebView+Rx.swift
│ │ │ └── macOS
│ │ │ ├── NSButton+Rx.swift
│ │ │ ├── NSControl+Rx.swift
│ │ │ ├── NSImageView+Rx.swift
│ │ │ ├── NSSlider+Rx.swift
│ │ │ ├── NSTextField+Rx.swift
│ │ │ ├── NSTextView+Rx.swift
│ │ │ └── NSView+Rx.swift
│ ├── RxSwift
│ │ ├── LICENSE.md
│ │ ├── Platform
│ │ │ ├── AtomicInt.swift
│ │ │ ├── DataStructures
│ │ │ │ ├── Bag.swift
│ │ │ │ ├── InfiniteSequence.swift
│ │ │ │ ├── PriorityQueue.swift
│ │ │ │ └── Queue.swift
│ │ │ ├── DeprecationWarner.swift
│ │ │ ├── DispatchQueue+Extensions.swift
│ │ │ ├── Platform.Darwin.swift
│ │ │ ├── Platform.Linux.swift
│ │ │ └── RecursiveLock.swift
│ │ ├── README.md
│ │ └── RxSwift
│ │ │ ├── AnyObserver.swift
│ │ │ ├── Cancelable.swift
│ │ │ ├── Concurrency
│ │ │ ├── AsyncLock.swift
│ │ │ ├── Lock.swift
│ │ │ ├── LockOwnerType.swift
│ │ │ ├── SynchronizedDisposeType.swift
│ │ │ ├── SynchronizedOnType.swift
│ │ │ └── SynchronizedUnsubscribeType.swift
│ │ │ ├── ConnectableObservableType.swift
│ │ │ ├── Deprecated.swift
│ │ │ ├── Disposable.swift
│ │ │ ├── Disposables
│ │ │ ├── AnonymousDisposable.swift
│ │ │ ├── BinaryDisposable.swift
│ │ │ ├── BooleanDisposable.swift
│ │ │ ├── CompositeDisposable.swift
│ │ │ ├── Disposables.swift
│ │ │ ├── DisposeBag.swift
│ │ │ ├── DisposeBase.swift
│ │ │ ├── NopDisposable.swift
│ │ │ ├── RefCountDisposable.swift
│ │ │ ├── ScheduledDisposable.swift
│ │ │ ├── SerialDisposable.swift
│ │ │ ├── SingleAssignmentDisposable.swift
│ │ │ └── SubscriptionDisposable.swift
│ │ │ ├── Errors.swift
│ │ │ ├── Event.swift
│ │ │ ├── Extensions
│ │ │ ├── Bag+Rx.swift
│ │ │ └── String+Rx.swift
│ │ │ ├── GroupedObservable.swift
│ │ │ ├── ImmediateSchedulerType.swift
│ │ │ ├── Observable.swift
│ │ │ ├── ObservableConvertibleType.swift
│ │ │ ├── ObservableType+Extensions.swift
│ │ │ ├── ObservableType.swift
│ │ │ ├── Observables
│ │ │ ├── AddRef.swift
│ │ │ ├── Amb.swift
│ │ │ ├── AsMaybe.swift
│ │ │ ├── AsSingle.swift
│ │ │ ├── Buffer.swift
│ │ │ ├── Catch.swift
│ │ │ ├── CombineLatest+Collection.swift
│ │ │ ├── CombineLatest+arity.swift
│ │ │ ├── CombineLatest.swift
│ │ │ ├── Concat.swift
│ │ │ ├── Create.swift
│ │ │ ├── Debounce.swift
│ │ │ ├── Debug.swift
│ │ │ ├── DefaultIfEmpty.swift
│ │ │ ├── Deferred.swift
│ │ │ ├── Delay.swift
│ │ │ ├── DelaySubscription.swift
│ │ │ ├── Dematerialize.swift
│ │ │ ├── DistinctUntilChanged.swift
│ │ │ ├── Do.swift
│ │ │ ├── ElementAt.swift
│ │ │ ├── Empty.swift
│ │ │ ├── Enumerated.swift
│ │ │ ├── Error.swift
│ │ │ ├── Filter.swift
│ │ │ ├── First.swift
│ │ │ ├── Generate.swift
│ │ │ ├── GroupBy.swift
│ │ │ ├── Just.swift
│ │ │ ├── Map.swift
│ │ │ ├── Materialize.swift
│ │ │ ├── Merge.swift
│ │ │ ├── Multicast.swift
│ │ │ ├── Never.swift
│ │ │ ├── ObserveOn.swift
│ │ │ ├── Optional.swift
│ │ │ ├── Producer.swift
│ │ │ ├── Range.swift
│ │ │ ├── Reduce.swift
│ │ │ ├── Repeat.swift
│ │ │ ├── RetryWhen.swift
│ │ │ ├── Sample.swift
│ │ │ ├── Scan.swift
│ │ │ ├── Sequence.swift
│ │ │ ├── ShareReplayScope.swift
│ │ │ ├── SingleAsync.swift
│ │ │ ├── Sink.swift
│ │ │ ├── Skip.swift
│ │ │ ├── SkipUntil.swift
│ │ │ ├── SkipWhile.swift
│ │ │ ├── StartWith.swift
│ │ │ ├── SubscribeOn.swift
│ │ │ ├── Switch.swift
│ │ │ ├── SwitchIfEmpty.swift
│ │ │ ├── Take.swift
│ │ │ ├── TakeLast.swift
│ │ │ ├── TakeUntil.swift
│ │ │ ├── TakeWhile.swift
│ │ │ ├── Throttle.swift
│ │ │ ├── Timeout.swift
│ │ │ ├── Timer.swift
│ │ │ ├── ToArray.swift
│ │ │ ├── Using.swift
│ │ │ ├── Window.swift
│ │ │ ├── WithLatestFrom.swift
│ │ │ ├── Zip+Collection.swift
│ │ │ ├── Zip+arity.swift
│ │ │ └── Zip.swift
│ │ │ ├── ObserverType.swift
│ │ │ ├── Observers
│ │ │ ├── AnonymousObserver.swift
│ │ │ ├── ObserverBase.swift
│ │ │ └── TailRecursiveSink.swift
│ │ │ ├── Reactive.swift
│ │ │ ├── Rx.swift
│ │ │ ├── RxMutableBox.swift
│ │ │ ├── SchedulerType.swift
│ │ │ ├── Schedulers
│ │ │ ├── ConcurrentDispatchQueueScheduler.swift
│ │ │ ├── ConcurrentMainScheduler.swift
│ │ │ ├── CurrentThreadScheduler.swift
│ │ │ ├── HistoricalScheduler.swift
│ │ │ ├── HistoricalSchedulerTimeConverter.swift
│ │ │ ├── Internal
│ │ │ │ ├── DispatchQueueConfiguration.swift
│ │ │ │ ├── InvocableScheduledItem.swift
│ │ │ │ ├── InvocableType.swift
│ │ │ │ ├── ScheduledItem.swift
│ │ │ │ └── ScheduledItemType.swift
│ │ │ ├── MainScheduler.swift
│ │ │ ├── OperationQueueScheduler.swift
│ │ │ ├── RecursiveScheduler.swift
│ │ │ ├── SchedulerServices+Emulation.swift
│ │ │ ├── SerialDispatchQueueScheduler.swift
│ │ │ ├── VirtualTimeConverterType.swift
│ │ │ └── VirtualTimeScheduler.swift
│ │ │ ├── Subjects
│ │ │ ├── AsyncSubject.swift
│ │ │ ├── BehaviorSubject.swift
│ │ │ ├── PublishSubject.swift
│ │ │ ├── ReplaySubject.swift
│ │ │ └── SubjectType.swift
│ │ │ ├── SwiftSupport
│ │ │ └── SwiftSupport.swift
│ │ │ └── Traits
│ │ │ ├── Completable+AndThen.swift
│ │ │ ├── Completable.swift
│ │ │ ├── Maybe.swift
│ │ │ ├── ObservableType+PrimitiveSequence.swift
│ │ │ ├── PrimitiveSequence+Zip+arity.swift
│ │ │ ├── PrimitiveSequence.swift
│ │ │ └── Single.swift
│ └── Target Support Files
│ │ ├── AmazonFling
│ │ └── AmazonFling.xcconfig
│ │ ├── FireTVKit
│ │ ├── FireTVKit-Info.plist
│ │ ├── FireTVKit-dummy.m
│ │ ├── FireTVKit-prefix.pch
│ │ ├── FireTVKit-umbrella.h
│ │ ├── FireTVKit.modulemap
│ │ ├── FireTVKit.xcconfig
│ │ ├── Info.plist
│ │ ├── ResourceBundle-FireTVKit-FireTVKit-Info.plist
│ │ └── ResourceBundle-FireTVKit-Info.plist
│ │ ├── Nimble
│ │ ├── Info.plist
│ │ ├── Nimble-Info.plist
│ │ ├── Nimble-dummy.m
│ │ ├── Nimble-prefix.pch
│ │ ├── Nimble-umbrella.h
│ │ ├── Nimble.modulemap
│ │ └── Nimble.xcconfig
│ │ ├── Pods-FireTVKit_Example
│ │ ├── Info.plist
│ │ ├── Pods-FireTVKit_Example-Info.plist
│ │ ├── Pods-FireTVKit_Example-acknowledgements.markdown
│ │ ├── Pods-FireTVKit_Example-acknowledgements.plist
│ │ ├── Pods-FireTVKit_Example-dummy.m
│ │ ├── Pods-FireTVKit_Example-frameworks.sh
│ │ ├── Pods-FireTVKit_Example-resources.sh
│ │ ├── Pods-FireTVKit_Example-umbrella.h
│ │ ├── Pods-FireTVKit_Example.debug.xcconfig
│ │ ├── Pods-FireTVKit_Example.modulemap
│ │ └── Pods-FireTVKit_Example.release.xcconfig
│ │ ├── Pods-FireTVKit_Tests
│ │ ├── Info.plist
│ │ ├── Pods-FireTVKit_Tests-Info.plist
│ │ ├── Pods-FireTVKit_Tests-acknowledgements.markdown
│ │ ├── Pods-FireTVKit_Tests-acknowledgements.plist
│ │ ├── Pods-FireTVKit_Tests-dummy.m
│ │ ├── Pods-FireTVKit_Tests-frameworks.sh
│ │ ├── Pods-FireTVKit_Tests-resources.sh
│ │ ├── Pods-FireTVKit_Tests-umbrella.h
│ │ ├── Pods-FireTVKit_Tests.debug.xcconfig
│ │ ├── Pods-FireTVKit_Tests.modulemap
│ │ └── Pods-FireTVKit_Tests.release.xcconfig
│ │ ├── Quick
│ │ ├── Info.plist
│ │ ├── Quick-Info.plist
│ │ ├── Quick-dummy.m
│ │ ├── Quick-prefix.pch
│ │ ├── Quick-umbrella.h
│ │ ├── Quick.modulemap
│ │ └── Quick.xcconfig
│ │ ├── ReachabilitySwift
│ │ ├── Info.plist
│ │ ├── ReachabilitySwift-Info.plist
│ │ ├── ReachabilitySwift-dummy.m
│ │ ├── ReachabilitySwift-prefix.pch
│ │ ├── ReachabilitySwift-umbrella.h
│ │ ├── ReachabilitySwift.modulemap
│ │ └── ReachabilitySwift.xcconfig
│ │ ├── RxCocoa
│ │ ├── Info.plist
│ │ ├── RxCocoa-Info.plist
│ │ ├── RxCocoa-dummy.m
│ │ ├── RxCocoa-prefix.pch
│ │ ├── RxCocoa-umbrella.h
│ │ ├── RxCocoa.modulemap
│ │ └── RxCocoa.xcconfig
│ │ └── RxSwift
│ │ ├── Info.plist
│ │ ├── RxSwift-Info.plist
│ │ ├── RxSwift-dummy.m
│ │ ├── RxSwift-prefix.pch
│ │ ├── RxSwift-umbrella.h
│ │ ├── RxSwift.modulemap
│ │ └── RxSwift.xcconfig
└── Tests
│ ├── Info.plist
│ └── UnitTests
│ ├── Models
│ ├── MetadataSpec.swift
│ ├── PlayerStatusSpec.swift
│ └── SubtitleSpec.swift
│ └── internal
│ ├── Extensions
│ └── UIAlertController+MakeAlertSpec.swift
│ ├── PlayerDiscovery
│ ├── DiscoveringInfoSpec.swift
│ └── PlayerDiscoveryServiceSpec.swift
│ └── Services
│ ├── PlayerServiceSpec.swift
│ ├── ReachabilityServiceSpec.swift
│ └── TimeStringFactorySpec.swift
├── FireTVKit.podspec
├── FireTVKit
├── Assets
│ ├── .gitkeep
│ └── Assets.xcassets
│ │ ├── Contents.json
│ │ ├── close.imageset
│ │ ├── Contents.json
│ │ ├── close@1x.png
│ │ ├── close@2x.png
│ │ └── close@3x.png
│ │ ├── fast-forward-10s
│ │ ├── Contents.json
│ │ ├── ic_jump_forward_10_default_dark_48dp.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_jump_forward_10_default_dark_48dp-1.png
│ │ │ ├── ic_jump_forward_10_default_dark_48dp-2.png
│ │ │ └── ic_jump_forward_10_default_dark_48dp.png
│ │ ├── ic_jump_forward_10_default_light_48dp.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_jump_forward_10_default_light_48dp-1.png
│ │ │ ├── ic_jump_forward_10_default_light_48dp-2.png
│ │ │ └── ic_jump_forward_10_default_light_48dp.png
│ │ ├── ic_jump_forward_10_disabled_dark_48dp.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_jump_forward_10_disabled_dark_48dp-1.png
│ │ │ ├── ic_jump_forward_10_disabled_dark_48dp-2.png
│ │ │ └── ic_jump_forward_10_disabled_dark_48dp.png
│ │ └── ic_jump_forward_10_disabled_light_48dp.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_jump_forward_10_disabled_light_48dp-1.png
│ │ │ ├── ic_jump_forward_10_disabled_light_48dp-2.png
│ │ │ └── ic_jump_forward_10_disabled_light_48dp.png
│ │ ├── pause
│ │ ├── Contents.json
│ │ ├── ic_pause_default_dark_48dp.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_pause_default_dark_48dp-1.png
│ │ │ ├── ic_pause_default_dark_48dp-2.png
│ │ │ └── ic_pause_default_dark_48dp.png
│ │ ├── ic_pause_default_light_48dp.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_pause_default_light_48dp-1.png
│ │ │ ├── ic_pause_default_light_48dp-2.png
│ │ │ └── ic_pause_default_light_48dp.png
│ │ ├── ic_pause_disabled_dark_48dp.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_pause_disabled_dark_48dp-1.png
│ │ │ ├── ic_pause_disabled_dark_48dp-2.png
│ │ │ └── ic_pause_disabled_dark_48dp.png
│ │ └── ic_pause_disabled_light_48dp.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_pause_disabled_light_48dp-1.png
│ │ │ ├── ic_pause_disabled_light_48dp-2.png
│ │ │ └── ic_pause_disabled_light_48dp.png
│ │ ├── play
│ │ ├── Contents.json
│ │ ├── ic_play_default_dark_48dp.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_play_default_dark_48dp-1.png
│ │ │ ├── ic_play_default_dark_48dp-2.png
│ │ │ └── ic_play_default_dark_48dp.png
│ │ ├── ic_play_default_light_48dp.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_play_default_light_48dp-1.png
│ │ │ ├── ic_play_default_light_48dp-2.png
│ │ │ └── ic_play_default_light_48dp.png
│ │ ├── ic_play_disabled_dark_48dp.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_play_disabled_dark_48dp-1.png
│ │ │ ├── ic_play_disabled_dark_48dp-2.png
│ │ │ └── ic_play_disabled_dark_48dp.png
│ │ └── ic_play_disabled_light_48dp.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_play_disabled_light_48dp-1.png
│ │ │ ├── ic_play_disabled_light_48dp-2.png
│ │ │ └── ic_play_disabled_light_48dp.png
│ │ ├── rewind-10s
│ │ ├── Contents.json
│ │ ├── ic_jump_back_10_default_dark_48dp.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_jump_back_10_default_dark_48dp-1.png
│ │ │ ├── ic_jump_back_10_default_dark_48dp-2.png
│ │ │ └── ic_jump_back_10_default_dark_48dp.png
│ │ ├── ic_jump_back_10_default_light_48dp.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_jump_back_10_default_light_48dp-1.png
│ │ │ ├── ic_jump_back_10_default_light_48dp-2.png
│ │ │ └── ic_jump_back_10_default_light_48dp.png
│ │ ├── ic_jump_back_10_disabled_dark_48dp.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_jump_back_10_disabled_dark_48dp-1.png
│ │ │ ├── ic_jump_back_10_disabled_dark_48dp-2.png
│ │ │ └── ic_jump_back_10_disabled_dark_48dp.png
│ │ └── ic_jump_back_10_disabled_light_48dp.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_jump_back_10_disabled_light_48dp-1.png
│ │ │ ├── ic_jump_back_10_disabled_light_48dp-2.png
│ │ │ └── ic_jump_back_10_disabled_light_48dp.png
│ │ ├── stop
│ │ ├── Contents.json
│ │ ├── ic_stop_default_dark_48dp.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_stop_default_dark_48dp-1.png
│ │ │ ├── ic_stop_default_dark_48dp-2.png
│ │ │ └── ic_stop_default_dark_48dp.png
│ │ ├── ic_stop_default_light_48dp.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_stop_default_light_48dp-1.png
│ │ │ ├── ic_stop_default_light_48dp-2.png
│ │ │ └── ic_stop_default_light_48dp.png
│ │ ├── ic_stop_disabled_dark_48dp.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_stop_disabled_dark_48dp-1.png
│ │ │ ├── ic_stop_disabled_dark_48dp-2.png
│ │ │ └── ic_stop_disabled_dark_48dp.png
│ │ └── ic_stop_disabled_light_48dp.imageset
│ │ │ ├── Contents.json
│ │ │ ├── ic_stop_disabled_light_48dp-1.png
│ │ │ ├── ic_stop_disabled_light_48dp-2.png
│ │ │ └── ic_stop_disabled_light_48dp.png
│ │ └── whisperplay
│ │ ├── Contents.json
│ │ ├── ic_whisperplay_default_blue_light_48dp.imageset
│ │ ├── Contents.json
│ │ ├── ic_whisperplay_default_blue_light_48dp-1.png
│ │ ├── ic_whisperplay_default_blue_light_48dp-2.png
│ │ └── ic_whisperplay_default_blue_light_48dp.png
│ │ └── ic_whisperplay_default_light_48dp.imageset
│ │ ├── Contents.json
│ │ ├── ic_whisperplay_default_light_48dp-1.png
│ │ ├── ic_whisperplay_default_light_48dp-2.png
│ │ └── ic_whisperplay_default_light_48dp.png
└── Classes
│ ├── Enums
│ ├── FireTVKitUserDefaultsKeys.swift
│ ├── PlayerServiceError.swift
│ └── ServiceFactoryError.swift
│ ├── FireTVManager.swift
│ ├── FireTVPlayer
│ ├── FireTVPlayerDelegateProtocol.swift
│ ├── FireTVPlayerPresenterProtocol.swift
│ ├── FireTVPlayerViewController.swift
│ ├── FireTVPlayerViewProtocol.swift
│ ├── FireTVPlayerWireframe.swift
│ ├── FireTVPlayerWireframeError.swift
│ ├── MockFireTVPlayerWireframe.swift
│ ├── Models
│ │ └── DummyPlayer.swift
│ ├── Theme
│ │ ├── FireTVPlayerDarkTheme.swift
│ │ ├── FireTVPlayerLightTheme.swift
│ │ └── FireTVPlayerThemeProtocol.swift
│ ├── ViewModels
│ │ └── FireTVPlayerViewViewModel.swift
│ └── internal
│ │ ├── FireTVPlayer.storyboard
│ │ ├── FireTVPlayerInteractor.swift
│ │ ├── FireTVPlayerInteractorDependencies.swift
│ │ ├── FireTVPlayerInteractorError.swift
│ │ ├── FireTVPlayerPresenter.swift
│ │ ├── FireTVPlayerPresenterDependencies.swift
│ │ ├── FireTVPlayerPresenterState.swift
│ │ ├── FireTVPlayerRouter.swift
│ │ ├── FireTVPlayerWireframeProtocol.swift
│ │ └── MockFireTVPlayerInteractorDependencies.swift
│ ├── FireTVSelection
│ ├── FireTVSelectionDelegateProtocol.swift
│ ├── FireTVSelectionPresenterProtocol.swift
│ ├── FireTVSelectionViewController.swift
│ ├── FireTVSelectionViewControllerDependenciesProtocol.swift
│ ├── FireTVSelectionViewProtocol.swift
│ ├── FireTVSelectionWireframe.swift
│ ├── FireTVSelectionWireframeError.swift
│ ├── MockFireTVSelectionWireframe.swift
│ ├── Models
│ │ └── FireTVMedia.swift
│ ├── Theme
│ │ ├── FireTVSelectionDarkTheme.swift
│ │ ├── FireTVSelectionLightTheme.swift
│ │ └── FireTVSelectionThemeProtocol.swift
│ ├── ViewModels
│ │ └── FireTVSelectionViewViewModel.swift
│ └── internal
│ │ ├── FireTVSelection.storyboard
│ │ ├── FireTVSelectionInteractor.swift
│ │ ├── FireTVSelectionInteractorDependencies.swift
│ │ ├── FireTVSelectionPresenter.swift
│ │ ├── FireTVSelectionPresenterDependencies.swift
│ │ ├── FireTVSelectionRouter.swift
│ │ ├── FireTVSelectionViewControllerDependencies.swift
│ │ ├── FireTVSelectionWireframeProtocol.swift
│ │ ├── MockFireTVSelectionInteractorDependencies.swift
│ │ ├── ViewModels
│ │ ├── FireTVSelectionPresenterState.swift
│ │ └── PlayerViewModel.swift
│ │ └── Views
│ │ └── FireTVSelectionTableViewCell.swift
│ ├── Models
│ ├── LogEvent.swift
│ ├── Metadata.swift
│ ├── MetadataType.swift
│ ├── PlayerData.swift
│ ├── PlayerStatus.swift
│ ├── Subtitle.swift
│ └── SubtitleKind.swift
│ ├── Protocols
│ ├── LoggerProtocol.swift
│ ├── LoggerProvider.swift
│ ├── PlayerServiceDependenciesProtocol.swift
│ └── PlayerServiceProtocol.swift
│ ├── ServiceFactory.swift
│ └── internal
│ ├── Constants
│ ├── IdentifierConstants.swift
│ ├── MetricConstants.swift
│ ├── StringConstants.swift
│ └── StubConstants.swift
│ ├── Extensions
│ ├── UIAlertController+MakeAlert.swift
│ └── UIColor+Colors.swift
│ ├── PlayerDiscovery
│ ├── Controller
│ │ ├── MockPlayerDiscoveryController.swift
│ │ ├── PlayerDiscoveryController.swift
│ │ ├── PlayerDiscoveryControllerDelegateProtocol.swift
│ │ ├── PlayerDiscoveryControllerDependencies.swift
│ │ └── PlayerDiscoveryControllerProtocol.swift
│ ├── Models
│ │ ├── DiscoveringInfo.swift
│ │ ├── DiscoveringInfoStatus.swift
│ │ └── DiscoveringStatus.swift
│ └── Service
│ │ ├── MockPlayerDiscoveryService.swift
│ │ ├── MockPlayerDiscoveryServiceDependencies.swift
│ │ ├── PlayerDiscoveryService.swift
│ │ └── PlayerDiscoveryServiceDependencies.swift
│ ├── RemoteMediaPlayerProtocol.swift
│ └── Services
│ ├── FireTVManager
│ ├── FireTVManagerDependencies.swift
│ └── FireTVManagerProtocol.swift
│ ├── Logger
│ ├── Date+StringValue.swift
│ └── Logger.swift
│ ├── MockServiceFactory.swift
│ ├── Player
│ ├── MockPlayerService.swift
│ ├── MockPlayerServiceDependencies.swift
│ ├── PlayerService.swift
│ └── PlayerServiceDependencies.swift
│ ├── Reachability
│ ├── MockReachabilityService.swift
│ ├── ReachabilityService.swift
│ └── ReachabilityServiceProtocol.swift
│ ├── ServiceFactoryProtocol.swift
│ └── TimeStringFactory.swift
├── LICENSE
├── README.md
├── _Pods.xcodeproj
├── docs
├── Classes.html
├── Classes
│ ├── DummyPlayer.html
│ ├── FireTVManager.html
│ ├── FireTVPlayerViewController.html
│ ├── FireTVSelectionViewController.html
│ └── ServiceFactory.html
├── Enums.html
├── Enums
│ ├── FireTVKitUserDefaultsKeys.html
│ ├── FireTVPlayerWireframeError.html
│ ├── FireTVSelectionWireframeError.html
│ ├── LogEvent.html
│ ├── MetadataType.html
│ ├── PlayerServiceError.html
│ ├── PlayerStatus.html
│ ├── ServiceFactoryError.html
│ └── SubtitleKind.html
├── Extensions.html
├── Extensions
│ ├── FireTVPlayerWireframeProtocol.html
│ └── FireTVSelectionWireframeProtocol.html
├── Protocols.html
├── Protocols
│ ├── FireTVPlayerDelegateProtocol.html
│ ├── FireTVPlayerPresenterProtocol.html
│ ├── FireTVPlayerThemeProtocol.html
│ ├── FireTVPlayerViewProtocol.html
│ ├── FireTVSelectionDelegateProtocol.html
│ ├── FireTVSelectionPresenterProtocol.html
│ ├── FireTVSelectionThemeProtocol.html
│ ├── FireTVSelectionViewProtocol.html
│ ├── LoggerProtocol.html
│ ├── LoggerProvider.html
│ └── PlayerServiceProtocol.html
├── Structs.html
├── Structs
│ ├── FireTVMedia.html
│ ├── FireTVPlayerDarkTheme.html
│ ├── FireTVPlayerLightTheme.html
│ ├── FireTVPlayerWireframe.html
│ ├── FireTVSelectionDarkTheme.html
│ ├── FireTVSelectionLightTheme.html
│ ├── FireTVSelectionWireframe.html
│ ├── Metadata.html
│ ├── MockFireTVPlayerWireframe.html
│ ├── MockFireTVSelectionWireframe.html
│ ├── PlayerData.html
│ └── Subtitle.html
├── badge.svg
├── css
│ ├── highlight.css
│ └── jazzy.css
├── docsets
│ ├── FireTVKit.docset
│ │ └── Contents
│ │ │ ├── Info.plist
│ │ │ └── Resources
│ │ │ ├── Documents
│ │ │ ├── Classes.html
│ │ │ ├── Classes
│ │ │ │ ├── DummyPlayer.html
│ │ │ │ ├── FireTVManager.html
│ │ │ │ ├── FireTVPlayerViewController.html
│ │ │ │ ├── FireTVSelectionViewController.html
│ │ │ │ └── ServiceFactory.html
│ │ │ ├── Enums.html
│ │ │ ├── Enums
│ │ │ │ ├── FireTVKitUserDefaultsKeys.html
│ │ │ │ ├── FireTVPlayerWireframeError.html
│ │ │ │ ├── FireTVSelectionWireframeError.html
│ │ │ │ ├── LogEvent.html
│ │ │ │ ├── MetadataType.html
│ │ │ │ ├── PlayerServiceError.html
│ │ │ │ ├── PlayerStatus.html
│ │ │ │ ├── ServiceFactoryError.html
│ │ │ │ └── SubtitleKind.html
│ │ │ ├── Extensions.html
│ │ │ ├── Extensions
│ │ │ │ ├── FireTVPlayerWireframeProtocol.html
│ │ │ │ └── FireTVSelectionWireframeProtocol.html
│ │ │ ├── Protocols.html
│ │ │ ├── Protocols
│ │ │ │ ├── FireTVPlayerDelegateProtocol.html
│ │ │ │ ├── FireTVPlayerPresenterProtocol.html
│ │ │ │ ├── FireTVPlayerThemeProtocol.html
│ │ │ │ ├── FireTVPlayerViewProtocol.html
│ │ │ │ ├── FireTVSelectionDelegateProtocol.html
│ │ │ │ ├── FireTVSelectionPresenterProtocol.html
│ │ │ │ ├── FireTVSelectionThemeProtocol.html
│ │ │ │ ├── FireTVSelectionViewProtocol.html
│ │ │ │ ├── LoggerProtocol.html
│ │ │ │ ├── LoggerProvider.html
│ │ │ │ └── PlayerServiceProtocol.html
│ │ │ ├── Structs.html
│ │ │ ├── Structs
│ │ │ │ ├── FireTVMedia.html
│ │ │ │ ├── FireTVPlayerDarkTheme.html
│ │ │ │ ├── FireTVPlayerLightTheme.html
│ │ │ │ ├── FireTVPlayerWireframe.html
│ │ │ │ ├── FireTVSelectionDarkTheme.html
│ │ │ │ ├── FireTVSelectionLightTheme.html
│ │ │ │ ├── FireTVSelectionWireframe.html
│ │ │ │ ├── Metadata.html
│ │ │ │ ├── MockFireTVPlayerWireframe.html
│ │ │ │ ├── MockFireTVSelectionWireframe.html
│ │ │ │ ├── PlayerData.html
│ │ │ │ └── Subtitle.html
│ │ │ ├── badge.svg
│ │ │ ├── css
│ │ │ │ ├── highlight.css
│ │ │ │ └── jazzy.css
│ │ │ ├── img
│ │ │ │ ├── carat.png
│ │ │ │ ├── dash.png
│ │ │ │ └── gh.png
│ │ │ ├── index.html
│ │ │ ├── js
│ │ │ │ ├── jazzy.js
│ │ │ │ └── jquery.min.js
│ │ │ ├── search.json
│ │ │ └── undocumented.json
│ │ │ └── docSet.dsidx
│ └── FireTVKit.tgz
├── img
│ ├── carat.png
│ ├── dash.png
│ └── gh.png
├── index.html
├── js
│ ├── jazzy.js
│ └── jquery.min.js
├── search.json
└── undocumented.json
├── fastlane
└── Fastfile
├── images
├── dark mock player selection in no devices state.gif
├── dark mock player selection in no wifi state.gif
├── dark mock player selection.gif
├── dark mock player.gif
└── light mock player.gif
└── jazzy.yaml
/.travis.yml:
--------------------------------------------------------------------------------
1 | # references:
2 | # * http://www.objc.io/issue-6/travis-ci.html
3 | # * https://github.com/supermarin/xcpretty#usage
4 |
5 | osx_image: xcode7.3
6 | language: objective-c
7 | # cache: cocoapods
8 | # podfile: Example/Podfile
9 | # before_install:
10 | # - gem install cocoapods # Since Travis is not always on latest version
11 | # - pod install --project-directory=Example
12 | script:
13 | - set -o pipefail && xcodebuild test -enableCodeCoverage YES -workspace Example/FireTVKit.xcworkspace -scheme FireTVKit-Example -sdk iphonesimulator9.3 ONLY_ACTIVE_ARCH=NO | xcpretty
14 | - pod lib lint
15 |
--------------------------------------------------------------------------------
/Example/FireTVKit.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Example/FireTVKit.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
12 |
13 |
15 |
16 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Example/FireTVKit.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Example/FireTVKit/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "20x20",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "20x20",
11 | "scale" : "3x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "29x29",
16 | "scale" : "2x"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "size" : "29x29",
21 | "scale" : "3x"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "size" : "40x40",
26 | "scale" : "2x"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "size" : "40x40",
31 | "scale" : "3x"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "size" : "60x60",
36 | "scale" : "2x"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "size" : "60x60",
41 | "scale" : "3x"
42 | },
43 | {
44 | "idiom" : "ios-marketing",
45 | "size" : "1024x1024",
46 | "scale" : "1x"
47 | }
48 | ],
49 | "info" : {
50 | "version" : 1,
51 | "author" : "xcode"
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/Example/Podfile:
--------------------------------------------------------------------------------
1 | platform :ios, '9.0'
2 | use_frameworks!
3 |
4 | target 'FireTVKit_Example' do
5 | pod 'FireTVKit', :path => '../'
6 |
7 | target 'FireTVKit_Tests' do
8 | inherit! :search_paths
9 |
10 | pod 'Nimble', '~> 7.3'
11 | pod 'Quick', '~> 1.3'
12 | end
13 | end
14 |
15 | pre_install do |installer|
16 | # workaround for https://github.com/CocoaPods/CocoaPods/issues/3289
17 | Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {}
18 | end
19 |
--------------------------------------------------------------------------------
/Example/Pods/Nimble/Sources/Nimble/Adapters/AdapterProtocols.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | /// Protocol for the assertion handler that Nimble uses for all expectations.
4 | public protocol AssertionHandler {
5 | func assert(_ assertion: Bool, message: FailureMessage, location: SourceLocation)
6 | }
7 |
8 | /// Global backing interface for assertions that Nimble creates.
9 | /// Defaults to a private test handler that passes through to XCTest.
10 | ///
11 | /// If XCTest is not available, you must assign your own assertion handler
12 | /// before using any matchers, otherwise Nimble will abort the program.
13 | ///
14 | /// @see AssertionHandler
15 | public var NimbleAssertionHandler: AssertionHandler = { () -> AssertionHandler in
16 | return isXCTestAvailable() ? NimbleXCTestHandler() : NimbleXCTestUnavailableHandler()
17 | }()
18 |
--------------------------------------------------------------------------------
/Example/Pods/Nimble/Sources/Nimble/Adapters/AssertionDispatcher.swift:
--------------------------------------------------------------------------------
1 | /// AssertionDispatcher allows multiple AssertionHandlers to receive
2 | /// assertion messages.
3 | ///
4 | /// @warning Does not fully dispatch if one of the handlers raises an exception.
5 | /// This is possible with XCTest-based assertion handlers.
6 | ///
7 | public class AssertionDispatcher: AssertionHandler {
8 | let handlers: [AssertionHandler]
9 |
10 | public init(handlers: [AssertionHandler]) {
11 | self.handlers = handlers
12 | }
13 |
14 | public func assert(_ assertion: Bool, message: FailureMessage, location: SourceLocation) {
15 | for handler in handlers {
16 | handler.assert(assertion, message: message, location: location)
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Example/Pods/Nimble/Sources/Nimble/Matchers/BeNil.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | /// A Nimble matcher that succeeds when the actual value is nil.
4 | public func beNil() -> Predicate {
5 | return Predicate.simpleNilable("be nil") { actualExpression in
6 | let actualValue = try actualExpression.evaluate()
7 | return PredicateStatus(bool: actualValue == nil)
8 | }
9 | }
10 |
11 | #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS)
12 | extension NMBObjCMatcher {
13 | @objc public class func beNilMatcher() -> NMBObjCMatcher {
14 | return NMBObjCMatcher { actualExpression, failureMessage in
15 | return try beNil().matches(actualExpression, failureMessage: failureMessage)
16 | }
17 | }
18 | }
19 | #endif
20 |
--------------------------------------------------------------------------------
/Example/Pods/Nimble/Sources/Nimble/Matchers/BeVoid.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | /// A Nimble matcher that succeeds when the actual value is Void.
4 | public func beVoid() -> Predicate<()> {
5 | return Predicate.simpleNilable("be void") { actualExpression in
6 | let actualValue: ()? = try actualExpression.evaluate()
7 | return PredicateStatus(bool: actualValue != nil)
8 | }
9 | }
10 |
11 | public func == (lhs: Expectation<()>, rhs: ()) {
12 | lhs.to(beVoid())
13 | }
14 |
15 | public func != (lhs: Expectation<()>, rhs: ()) {
16 | lhs.toNot(beVoid())
17 | }
18 |
--------------------------------------------------------------------------------
/Example/Pods/Nimble/Sources/Nimble/Matchers/Match.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | /// A Nimble matcher that succeeds when the actual string satisfies the regular expression
4 | /// described by the expected string.
5 | public func match(_ expectedValue: String?) -> Predicate {
6 | return Predicate.simple("match <\(stringify(expectedValue))>") { actualExpression in
7 | if let actual = try actualExpression.evaluate() {
8 | if let regexp = expectedValue {
9 | let bool = actual.range(of: regexp, options: .regularExpression) != nil
10 | return PredicateStatus(bool: bool)
11 | }
12 | }
13 |
14 | return .fail
15 | }
16 | }
17 |
18 | #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS)
19 |
20 | extension NMBObjCMatcher {
21 | @objc public class func matchMatcher(_ expected: NSString) -> NMBMatcher {
22 | return NMBPredicate { actualExpression in
23 | let actual = actualExpression.cast { $0 as? String }
24 | return try match(expected.description).satisfies(actual).toObjectiveC()
25 | }
26 | }
27 | }
28 |
29 | #endif
30 |
--------------------------------------------------------------------------------
/Example/Pods/Nimble/Sources/Nimble/Nimble.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import "NMBExceptionCapture.h"
3 | #import "NMBStringify.h"
4 | #import "DSL.h"
5 |
6 | #if TARGET_OS_TV
7 | #import "CwlPreconditionTesting_POSIX.h"
8 | #else
9 | #import "CwlPreconditionTesting.h"
10 | #endif
11 |
12 | FOUNDATION_EXPORT double NimbleVersionNumber;
13 | FOUNDATION_EXPORT const unsigned char NimbleVersionString[];
14 |
--------------------------------------------------------------------------------
/Example/Pods/Nimble/Sources/Nimble/Utils/Functional.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | extension Sequence {
4 | internal func all(_ fn: (Iterator.Element) -> Bool) -> Bool {
5 | for item in self {
6 | if !fn(item) {
7 | return false
8 | }
9 | }
10 | return true
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Example/Pods/Nimble/Sources/Nimble/Utils/SourceLocation.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | // Ideally we would always use `StaticString` as the type for tracking the file name
4 | // that expectations originate from, for consistency with `assert` etc. from the
5 | // stdlib, and because recent versions of the XCTest overlay require `StaticString`
6 | // when calling `XCTFail`. Under the Objective-C runtime (i.e. building on Mac), we
7 | // have to use `String` instead because StaticString can't be generated from Objective-C
8 | #if SWIFT_PACKAGE
9 | public typealias FileString = StaticString
10 | #else
11 | public typealias FileString = String
12 | #endif
13 |
14 | public final class SourceLocation: NSObject {
15 | public let file: FileString
16 | public let line: UInt
17 |
18 | override init() {
19 | file = "Unknown File"
20 | line = 0
21 | }
22 |
23 | init(file: FileString, line: UInt) {
24 | self.file = file
25 | self.line = line
26 | }
27 |
28 | override public var description: String {
29 | return "\(file):\(line)"
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBExceptionCapture.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 |
4 | @interface NMBExceptionCapture : NSObject
5 |
6 | - (nonnull instancetype)initWithHandler:(void(^ _Nullable)(NSException * _Nonnull))handler finally:(void(^ _Nullable)(void))finally;
7 | - (void)tryBlock:(__attribute__((noescape)) void(^ _Nonnull)(void))unsafeBlock NS_SWIFT_NAME(tryBlock(_:));
8 |
9 | @end
10 |
11 | typedef void(^NMBSourceCallbackBlock)(BOOL successful);
12 |
--------------------------------------------------------------------------------
/Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBExceptionCapture.m:
--------------------------------------------------------------------------------
1 | #import "NMBExceptionCapture.h"
2 |
3 | @interface NMBExceptionCapture ()
4 | @property (nonatomic, copy) void(^ _Nullable handler)(NSException * _Nullable);
5 | @property (nonatomic, copy) void(^ _Nullable finally)(void);
6 | @end
7 |
8 | @implementation NMBExceptionCapture
9 |
10 | - (nonnull instancetype)initWithHandler:(void(^ _Nullable)(NSException * _Nonnull))handler finally:(void(^ _Nullable)(void))finally {
11 | self = [super init];
12 | if (self) {
13 | self.handler = handler;
14 | self.finally = finally;
15 | }
16 | return self;
17 | }
18 |
19 | - (void)tryBlock:(__attribute__((noescape)) void(^ _Nonnull)(void))unsafeBlock {
20 | @try {
21 | unsafeBlock();
22 | }
23 | @catch (NSException *exception) {
24 | if (self.handler) {
25 | self.handler(exception);
26 | }
27 | }
28 | @finally {
29 | if (self.finally) {
30 | self.finally();
31 | }
32 | }
33 | }
34 |
35 | @end
36 |
--------------------------------------------------------------------------------
/Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBStringify.h:
--------------------------------------------------------------------------------
1 | @class NSString;
2 |
3 | /**
4 | * Returns a string appropriate for displaying in test output
5 | * from the provided value.
6 | *
7 | * @param anyObject A value that will show up in a test's output.
8 | *
9 | * @return The string that is returned can be
10 | * customized per type by conforming a type to the `TestOutputStringConvertible`
11 | * protocol. When stringifying a non-`TestOutputStringConvertible` type, this
12 | * function will return the value's debug description and then its
13 | * normal description if available and in that order. Otherwise it
14 | * will return the result of constructing a string from the value.
15 | *
16 | * @see `TestOutputStringConvertible`
17 | */
18 | extern NSString *_Nonnull NMBStringify(id _Nullable anyObject) __attribute__((warn_unused_result));
19 |
--------------------------------------------------------------------------------
/Example/Pods/Nimble/Sources/NimbleObjectiveC/NMBStringify.m:
--------------------------------------------------------------------------------
1 | #import "NMBStringify.h"
2 |
3 | #if __has_include("Nimble-Swift.h")
4 | #import "Nimble-Swift.h"
5 | #else
6 | #import
7 | #endif
8 |
9 | NSString *_Nonnull NMBStringify(id _Nullable anyObject) {
10 | return [NMBStringer stringify:anyObject];
11 | }
12 |
--------------------------------------------------------------------------------
/Example/Pods/Quick/Sources/Quick/Behavior.swift:
--------------------------------------------------------------------------------
1 | /**
2 | A `Behavior` encapsulates a set of examples that can be re-used in several locations using the `itBehavesLike` function with a context instance of the generic type.
3 | */
4 |
5 | open class Behavior {
6 |
7 | public static var name: String { return String(describing: self) }
8 | /**
9 | override this method in your behavior to define a set of reusable examples.
10 |
11 | This behaves just like an example group defines using `describe` or `context`--it may contain any number of `beforeEach`
12 | and `afterEach` closures, as well as any number of examples (defined using `it`).
13 |
14 | - parameter aContext: A closure that, when evaluated, returns a `Context` instance that provide the information on the subject.
15 | */
16 | open class func spec(_ aContext: @escaping () -> Context) {}
17 | }
18 |
--------------------------------------------------------------------------------
/Example/Pods/Quick/Sources/Quick/ErrorUtility.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | internal func raiseError(_ message: String) -> Never {
4 | #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS)
5 | NSException(name: .internalInconsistencyException, reason: message, userInfo: nil).raise()
6 | #endif
7 |
8 | // This won't be reached when ObjC is available and the exception above is raisd
9 | fatalError(message)
10 | }
11 |
--------------------------------------------------------------------------------
/Example/Pods/Quick/Sources/Quick/Hooks/HooksPhase.swift:
--------------------------------------------------------------------------------
1 | /**
2 | A description of the execution cycle of the current example with
3 | respect to the hooks of that example.
4 | */
5 | internal enum HooksPhase {
6 | case nothingExecuted
7 | case beforesExecuting
8 | case beforesFinished
9 | case aftersExecuting
10 | case aftersFinished
11 | }
12 |
--------------------------------------------------------------------------------
/Example/Pods/Quick/Sources/Quick/Hooks/SuiteHooks.swift:
--------------------------------------------------------------------------------
1 | /**
2 | A container for closures to be executed before and after all examples.
3 | */
4 | final internal class SuiteHooks {
5 | internal var befores: [BeforeSuiteClosure] = []
6 | internal var afters: [AfterSuiteClosure] = []
7 | internal var phase: HooksPhase = .nothingExecuted
8 |
9 | internal func appendBefore(_ closure: @escaping BeforeSuiteClosure) {
10 | befores.append(closure)
11 | }
12 |
13 | internal func appendAfter(_ closure: @escaping AfterSuiteClosure) {
14 | afters.append(closure)
15 | }
16 |
17 | internal func executeBefores() {
18 | phase = .beforesExecuting
19 | for before in befores {
20 | before()
21 | }
22 | phase = .beforesFinished
23 | }
24 |
25 | internal func executeAfters() {
26 | phase = .aftersExecuting
27 | for after in afters {
28 | after()
29 | }
30 | phase = .aftersFinished
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Example/Pods/Quick/Sources/Quick/NSBundle+CurrentTestBundle.swift:
--------------------------------------------------------------------------------
1 | #if os(macOS) || os(iOS) || os(watchOS) || os(tvOS)
2 |
3 | import Foundation
4 |
5 | extension Bundle {
6 |
7 | /**
8 | Locates the first bundle with a '.xctest' file extension.
9 | */
10 | internal static var currentTestBundle: Bundle? {
11 | return allBundles.first { $0.bundlePath.hasSuffix(".xctest") }
12 | }
13 |
14 | /**
15 | Return the module name of the bundle.
16 | Uses the bundle filename and transform it to match Xcode's transformation.
17 | Module name has to be a valid "C99 extended identifier".
18 | */
19 | internal var moduleName: String {
20 | let fileName = bundleURL.fileName as NSString
21 | return fileName.c99ExtendedIdentifier
22 | }
23 | }
24 |
25 | #endif
26 |
--------------------------------------------------------------------------------
/Example/Pods/Quick/Sources/Quick/URL+FileName.swift:
--------------------------------------------------------------------------------
1 | import Foundation
2 |
3 | extension URL {
4 |
5 | /**
6 | Returns the path file name without file extension.
7 | */
8 | var fileName: String {
9 | return self.deletingPathExtension().lastPathComponent
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/Example/Pods/Quick/Sources/QuickObjectiveC/Quick.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | //! Project version number for Quick.
4 | FOUNDATION_EXPORT double QuickVersionNumber;
5 |
6 | //! Project version string for Quick.
7 | FOUNDATION_EXPORT const unsigned char QuickVersionString[];
8 |
9 | #import "QuickSpec.h"
10 | #import "QCKDSL.h"
11 | #import "QuickConfiguration.h"
12 |
--------------------------------------------------------------------------------
/Example/Pods/Quick/Sources/QuickSpecBase/include/QuickSpecBase.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 |
4 | @interface _QuickSelectorWrapper : NSObject
5 | - (instancetype)initWithSelector:(SEL)selector;
6 | @end
7 |
8 | @interface _QuickSpecBase : XCTestCase
9 | + (NSArray<_QuickSelectorWrapper *> *)_qck_testMethodSelectors;
10 | - (instancetype)init NS_DESIGNATED_INITIALIZER;
11 | @end
12 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/LICENSE.md:
--------------------------------------------------------------------------------
1 | **The MIT License**
2 | **Copyright © 2015 Krunoslav Zaher**
3 | **All rights reserved.**
4 |
5 | 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:
6 |
7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8 |
9 | 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.
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/Platform/DataStructures/InfiniteSequence.swift:
--------------------------------------------------------------------------------
1 | //
2 | // InfiniteSequence.swift
3 | // Platform
4 | //
5 | // Created by Krunoslav Zaher on 6/13/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Sequence that repeats `repeatedValue` infinite number of times.
10 | struct InfiniteSequence : Sequence {
11 | typealias Element = E
12 | typealias Iterator = AnyIterator
13 |
14 | private let _repeatedValue: E
15 |
16 | init(repeatedValue: E) {
17 | _repeatedValue = repeatedValue
18 | }
19 |
20 | func makeIterator() -> Iterator {
21 | let repeatedValue = _repeatedValue
22 | return AnyIterator {
23 | return repeatedValue
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/Platform/DispatchQueue+Extensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DispatchQueue+Extensions.swift
3 | // Platform
4 | //
5 | // Created by Krunoslav Zaher on 10/22/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import Dispatch
10 |
11 | extension DispatchQueue {
12 | private static var token: DispatchSpecificKey<()> = {
13 | let key = DispatchSpecificKey<()>()
14 | DispatchQueue.main.setSpecific(key: key, value: ())
15 | return key
16 | }()
17 |
18 | static var isMain: Bool {
19 | return DispatchQueue.getSpecific(key: token) != nil
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/Platform/RecursiveLock.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RecursiveLock.swift
3 | // Platform
4 | //
5 | // Created by Krunoslav Zaher on 12/18/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import class Foundation.NSRecursiveLock
10 |
11 | #if TRACE_RESOURCES
12 | class RecursiveLock: NSRecursiveLock {
13 | override init() {
14 | _ = Resources.incrementTotal()
15 | super.init()
16 | }
17 |
18 | override func lock() {
19 | super.lock()
20 | _ = Resources.incrementTotal()
21 | }
22 |
23 | override func unlock() {
24 | super.unlock()
25 | _ = Resources.decrementTotal()
26 | }
27 |
28 | deinit {
29 | _ = Resources.decrementTotal()
30 | }
31 | }
32 | #else
33 | typealias RecursiveLock = NSRecursiveLock
34 | #endif
35 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/Common/NSLayoutConstraint+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NSLayoutConstraint+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 12/6/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if !os(Linux)
10 |
11 | #if os(macOS)
12 | import Cocoa
13 | #else
14 | import UIKit
15 | #endif
16 |
17 | import RxSwift
18 |
19 | #if os(iOS) || os(macOS) || os(tvOS)
20 | extension Reactive where Base: NSLayoutConstraint {
21 | /// Bindable sink for `constant` property.
22 | public var constant: Binder {
23 | return Binder(self.base) { constraint, constant in
24 | constraint.constant = constant
25 | }
26 | }
27 |
28 | /// Bindable sink for `active` property.
29 | @available(iOS 8, OSX 10.10, *)
30 | public var active: Binder {
31 | return Binder(self.base) { constraint, value in
32 | constraint.isActive = value
33 | }
34 | }
35 | }
36 |
37 | #endif
38 |
39 | #endif
40 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/Common/RxTarget.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxTarget.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 7/12/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import class Foundation.NSObject
10 |
11 | import RxSwift
12 |
13 | class RxTarget : NSObject
14 | , Disposable {
15 |
16 | private var retainSelf: RxTarget?
17 |
18 | override init() {
19 | super.init()
20 | self.retainSelf = self
21 |
22 | #if TRACE_RESOURCES
23 | _ = Resources.incrementTotal()
24 | #endif
25 |
26 | #if DEBUG
27 | MainScheduler.ensureRunningOnMainThread()
28 | #endif
29 | }
30 |
31 | func dispose() {
32 | #if DEBUG
33 | MainScheduler.ensureRunningOnMainThread()
34 | #endif
35 | self.retainSelf = nil
36 | }
37 |
38 | #if TRACE_RESOURCES
39 | deinit {
40 | _ = Resources.decrementTotal()
41 | }
42 | #endif
43 | }
44 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/Common/SectionedViewDataSourceType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SectionedViewDataSourceType.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 1/10/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import struct Foundation.IndexPath
10 |
11 | /// Data source with access to underlying sectioned model.
12 | public protocol SectionedViewDataSourceType {
13 | /// Returns model at index path.
14 | ///
15 | /// In case data source doesn't contain any sections when this method is being called, `RxCocoaError.ItemsNotYetBound(object: self)` is thrown.
16 |
17 | /// - parameter indexPath: Model index path
18 | /// - returns: Model at index path.
19 | func model(at indexPath: IndexPath) throws -> Any
20 | }
21 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/Foundation/KVORepresentable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // KVORepresentable.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 11/14/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Type that is KVO representable (KVO mechanism can be used to observe it).
10 | public protocol KVORepresentable {
11 | /// Associated KVO type.
12 | associatedtype KVOType
13 |
14 | /// Constructs `Self` using KVO value.
15 | init?(KVOValue: KVOType)
16 | }
17 |
18 | extension KVORepresentable {
19 | /// Initializes `KVORepresentable` with optional value.
20 | init?(KVOValue: KVOType?) {
21 | guard let KVOValue = KVOValue else {
22 | return nil
23 | }
24 |
25 | self.init(KVOValue: KVOValue)
26 | }
27 | }
28 |
29 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/Foundation/Logging.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Logging.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 4/3/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import struct Foundation.URLRequest
10 |
11 | /// Simple logging settings for RxCocoa library.
12 | public struct Logging {
13 | public typealias LogURLRequest = (URLRequest) -> Bool
14 |
15 | /// Log URL requests to standard output in curl format.
16 | public static var URLRequests: LogURLRequest = { _ in
17 | #if DEBUG
18 | return true
19 | #else
20 | return false
21 | #endif
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/Runtime/_RX.m:
--------------------------------------------------------------------------------
1 | //
2 | // _RX.m
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 7/12/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #import "include/_RX.h"
10 |
11 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/Runtime/include/RxCocoaRuntime.h:
--------------------------------------------------------------------------------
1 | //
2 | // RxCocoaRuntime.h
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 2/21/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "_RX.h"
11 | #import "_RXDelegateProxy.h"
12 | #import "_RXKVOObserver.h"
13 | #import "_RXObjCRuntime.h"
14 |
15 | //! Project version number for RxCocoa.
16 | FOUNDATION_EXPORT double RxCocoaVersionNumber;
17 |
18 | //! Project version string for RxCocoa.
19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[];
20 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/Runtime/include/_RXDelegateProxy.h:
--------------------------------------------------------------------------------
1 | //
2 | // _RXDelegateProxy.h
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 7/4/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface _RXDelegateProxy : NSObject
14 |
15 | @property (nonatomic, weak, readonly) id _forwardToDelegate;
16 |
17 | -(void)_setForwardToDelegate:(id __nullable)forwardToDelegate retainDelegate:(BOOL)retainDelegate NS_SWIFT_NAME(_setForwardToDelegate(_:retainDelegate:)) ;
18 |
19 | -(BOOL)hasWiredImplementationForSelector:(SEL)selector;
20 | -(BOOL)voidDelegateMethodsContain:(SEL)selector;
21 |
22 | -(void)_sentMessage:(SEL)selector withArguments:(NSArray*)arguments;
23 | -(void)_methodInvoked:(SEL)selector withArguments:(NSArray*)arguments;
24 |
25 | @end
26 |
27 | NS_ASSUME_NONNULL_END
28 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/Runtime/include/_RXKVOObserver.h:
--------------------------------------------------------------------------------
1 | //
2 | // _RXKVOObserver.h
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 7/11/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | /**
12 | ################################################################################
13 | This file is part of RX private API
14 | ################################################################################
15 | */
16 |
17 | // Exists because if written in Swift, reading unowned is disabled during dealloc process
18 | @interface _RXKVOObserver : NSObject
19 |
20 | -(instancetype)initWithTarget:(id)target
21 | retainTarget:(BOOL)retainTarget
22 | keyPath:(NSString*)keyPath
23 | options:(NSKeyValueObservingOptions)options
24 | callback:(void (^)(id))callback;
25 |
26 | -(void)dispose;
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/RxCocoa.h:
--------------------------------------------------------------------------------
1 | //
2 | // RxCocoa.h
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 2/21/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "_RX.h"
11 | #import "_RXDelegateProxy.h"
12 | #import "_RXKVOObserver.h"
13 | #import "_RXObjCRuntime.h"
14 |
15 | //! Project version number for RxCocoa.
16 | FOUNDATION_EXPORT double RxCocoaVersionNumber;
17 |
18 | //! Project version string for RxCocoa.
19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[];
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/Traits/Driver/BehaviorRelay+Driver.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BehaviorRelay+Driver.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 10/7/17.
6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import RxSwift
10 |
11 | extension BehaviorRelay {
12 | /// Converts `BehaviorRelay` to `Driver`.
13 | ///
14 | /// - returns: Observable sequence.
15 | public func asDriver() -> Driver {
16 | let source = self.asObservable()
17 | .observeOn(DriverSharingStrategy.scheduler)
18 | return SharedSequence(source)
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/Traits/Driver/ControlEvent+Driver.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ControlEvent+Driver.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 9/19/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import RxSwift
10 |
11 | extension ControlEvent {
12 | /// Converts `ControlEvent` to `Driver` trait.
13 | ///
14 | /// `ControlEvent` already can't fail, so no special case needs to be handled.
15 | public func asDriver() -> Driver {
16 | return self.asDriver { _ -> Driver in
17 | #if DEBUG
18 | rxFatalError("Somehow driver received error from a source that shouldn't fail.")
19 | #else
20 | return Driver.empty()
21 | #endif
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/Traits/Driver/ControlProperty+Driver.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ControlProperty+Driver.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 9/19/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import RxSwift
10 |
11 | extension ControlProperty {
12 | /// Converts `ControlProperty` to `Driver` trait.
13 | ///
14 | /// `ControlProperty` already can't fail, so no special case needs to be handled.
15 | public func asDriver() -> Driver {
16 | return self.asDriver { _ -> Driver in
17 | #if DEBUG
18 | rxFatalError("Somehow driver received error from a source that shouldn't fail.")
19 | #else
20 | return Driver.empty()
21 | #endif
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/Traits/Signal/ControlEvent+Signal.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ControlEvent+Signal.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 11/1/17.
6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import RxSwift
10 |
11 | extension ControlEvent {
12 | /// Converts `ControlEvent` to `Signal` trait.
13 | ///
14 | /// `ControlEvent` already can't fail, so no special case needs to be handled.
15 | public func asSignal() -> Signal {
16 | return self.asSignal { _ -> Signal in
17 | #if DEBUG
18 | rxFatalError("Somehow signal received error from a source that shouldn't fail.")
19 | #else
20 | return Signal.empty()
21 | #endif
22 | }
23 | }
24 | }
25 |
26 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/Traits/Signal/PublishRelay+Signal.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PublishRelay+Signal.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 12/28/15.
6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import RxSwift
10 |
11 | extension PublishRelay {
12 | /// Converts `PublishRelay` to `Signal`.
13 | ///
14 | /// - returns: Observable sequence.
15 | public func asSignal() -> Signal {
16 | let source = self.asObservable()
17 | .observeOn(SignalSharingStrategy.scheduler)
18 | return SharedSequence(source)
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/Events/ItemEvents.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ItemEvents.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 6/20/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 | import UIKit
11 |
12 | public typealias ItemMovedEvent = (sourceIndex: IndexPath, destinationIndex: IndexPath)
13 | public typealias WillDisplayCellEvent = (cell: UITableViewCell, indexPath: IndexPath)
14 | public typealias DidEndDisplayingCellEvent = (cell: UITableViewCell, indexPath: IndexPath)
15 | #endif
16 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/Protocols/RxCollectionViewDataSourceType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxCollectionViewDataSourceType.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 6/29/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | /// Marks data source as `UICollectionView` reactive data source enabling it to be used with one of the `bindTo` methods.
15 | public protocol RxCollectionViewDataSourceType /*: UICollectionViewDataSource*/ {
16 |
17 | /// Type of elements that can be bound to collection view.
18 | associatedtype Element
19 |
20 | /// New observable sequence event observed.
21 | ///
22 | /// - parameter collectionView: Bound collection view.
23 | /// - parameter observedEvent: Event
24 | func collectionView(_ collectionView: UICollectionView, observedEvent: Event)
25 | }
26 |
27 | #endif
28 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/Protocols/RxPickerViewDataSourceType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxPickerViewDataSourceType.swift
3 | // RxCocoa
4 | //
5 | // Created by Sergey Shulga on 05/07/2017.
6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | /// Marks data source as `UIPickerView` reactive data source enabling it to be used with one of the `bindTo` methods.
15 | public protocol RxPickerViewDataSourceType {
16 | /// Type of elements that can be bound to picker view.
17 | associatedtype Element
18 |
19 | /// New observable sequence event observed.
20 | ///
21 | /// - parameter pickerView: Bound picker view.
22 | /// - parameter observedEvent: Event
23 | func pickerView(_ pickerView: UIPickerView, observedEvent: Event)
24 | }
25 |
26 | #endif
27 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/Protocols/RxTableViewDataSourceType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxTableViewDataSourceType.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 6/26/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | /// Marks data source as `UITableView` reactive data source enabling it to be used with one of the `bindTo` methods.
15 | public protocol RxTableViewDataSourceType /*: UITableViewDataSource*/ {
16 |
17 | /// Type of elements that can be bound to table view.
18 | associatedtype Element
19 |
20 | /// New observable sequence event observed.
21 | ///
22 | /// - parameter tableView: Bound table view.
23 | /// - parameter observedEvent: Event
24 | func tableView(_ tableView: UITableView, observedEvent: Event)
25 | }
26 |
27 | #endif
28 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxCollectionViewDelegateProxy.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxCollectionViewDelegateProxy.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 6/29/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | /// For more information take a look at `DelegateProxyType`.
15 | open class RxCollectionViewDelegateProxy
16 | : RxScrollViewDelegateProxy
17 | , UICollectionViewDelegate
18 | , UICollectionViewDelegateFlowLayout {
19 |
20 | /// Typed parent object.
21 | public weak private(set) var collectionView: UICollectionView?
22 |
23 | /// Initializes `RxCollectionViewDelegateProxy`
24 | ///
25 | /// - parameter collectionView: Parent object for delegate proxy.
26 | public init(collectionView: UICollectionView) {
27 | self.collectionView = collectionView
28 | super.init(scrollView: collectionView)
29 | }
30 | }
31 |
32 | #endif
33 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTableViewDelegateProxy.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxTableViewDelegateProxy.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 6/15/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | /// For more information take a look at `DelegateProxyType`.
15 | open class RxTableViewDelegateProxy
16 | : RxScrollViewDelegateProxy
17 | , UITableViewDelegate {
18 |
19 | /// Typed parent object.
20 | public weak private(set) var tableView: UITableView?
21 |
22 | /// - parameter tableView: Parent object for delegate proxy.
23 | public init(tableView: UITableView) {
24 | self.tableView = tableView
25 | super.init(scrollView: tableView)
26 | }
27 |
28 | }
29 |
30 | #endif
31 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/Proxies/RxWebViewDelegateProxy.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxWebViewDelegateProxy.swift
3 | // RxCocoa
4 | //
5 | // Created by Andrew Breckenridge on 9/26/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | extension UIWebView: HasDelegate {
15 | public typealias Delegate = UIWebViewDelegate
16 | }
17 |
18 | open class RxWebViewDelegateProxy
19 | : DelegateProxy
20 | , DelegateProxyType
21 | , UIWebViewDelegate {
22 |
23 | /// Typed parent object.
24 | public weak private(set) var webView: UIWebView?
25 |
26 | /// - parameter webView: Parent object for delegate proxy.
27 | public init(webView: ParentObject) {
28 | self.webView = webView
29 | super.init(parentObject: webView, delegateProxy: RxWebViewDelegateProxy.self)
30 | }
31 |
32 | // Register known implementations
33 | public static func registerKnownImplementations() {
34 | self.register { RxWebViewDelegateProxy(webView: $0) }
35 | }
36 | }
37 |
38 | #endif
39 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/UIActivityIndicatorView+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIActivityIndicatorView+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Ivan Persidskiy on 02/12/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | extension Reactive where Base: UIActivityIndicatorView {
15 |
16 | /// Bindable sink for `startAnimating()`, `stopAnimating()` methods.
17 | public var isAnimating: Binder {
18 | return Binder(self.base) { activityIndicator, active in
19 | if active {
20 | activityIndicator.startAnimating()
21 | } else {
22 | activityIndicator.stopAnimating()
23 | }
24 | }
25 | }
26 |
27 | }
28 |
29 | #endif
30 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/UIAlertAction+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIAlertAction+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Andrew Breckenridge on 5/7/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | extension Reactive where Base: UIAlertAction {
15 |
16 | /// Bindable sink for `enabled` property.
17 | public var isEnabled: Binder {
18 | return Binder(self.base) { alertAction, value in
19 | alertAction.isEnabled = value
20 | }
21 | }
22 |
23 | }
24 |
25 | #endif
26 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/UIApplication+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIApplication+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Mads Bøgeskov on 18/01/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | extension Reactive where Base: UIApplication {
15 |
16 | /// Bindable sink for `networkActivityIndicatorVisible`.
17 | public var isNetworkActivityIndicatorVisible: Binder {
18 | return Binder(self.base) { application, active in
19 | application.isNetworkActivityIndicatorVisible = active
20 | }
21 | }
22 | }
23 | #endif
24 |
25 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/UIImageView+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIImageView+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 4/1/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import RxSwift
12 | import UIKit
13 |
14 | extension Reactive where Base: UIImageView {
15 |
16 | /// Bindable sink for `image` property.
17 | public var image: Binder {
18 | return Binder(base) { imageView, image in
19 | imageView.image = image
20 | }
21 | }
22 | }
23 |
24 | #endif
25 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/UILabel+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UILabel+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 4/1/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import RxSwift
12 | import UIKit
13 |
14 | extension Reactive where Base: UILabel {
15 |
16 | /// Bindable sink for `text` property.
17 | public var text: Binder {
18 | return Binder(self.base) { label, text in
19 | label.text = text
20 | }
21 | }
22 |
23 | /// Bindable sink for `attributedText` property.
24 | public var attributedText: Binder {
25 | return Binder(self.base) { label, text in
26 | label.attributedText = text
27 | }
28 | }
29 |
30 | }
31 |
32 | #endif
33 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/UINavigationItem+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UINavigationItem+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by kumapo on 2016/05/09.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | extension Reactive where Base: UINavigationItem {
15 |
16 | /// Bindable sink for `title` property.
17 | public var title: Binder {
18 | return Binder(self.base) { navigationItem, text in
19 | navigationItem.title = text
20 | }
21 | }
22 |
23 | }
24 |
25 | #endif
26 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/UIPageControl+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIPageControl+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Francesco Puntillo on 14/04/2016.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import RxSwift
12 | import UIKit
13 |
14 | extension Reactive where Base: UIPageControl {
15 |
16 | /// Bindable sink for `currentPage` property.
17 | public var currentPage: Binder {
18 | return Binder(self.base) { controller, page in
19 | controller.currentPage = page
20 | }
21 | }
22 |
23 | /// Bindable sink for `numberOfPages` property.
24 | public var numberOfPages: Binder {
25 | return Binder(self.base) { controller, page in
26 | controller.numberOfPages = page
27 | }
28 | }
29 |
30 | }
31 |
32 | #endif
33 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/UIProgressView+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIProgressView+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Samuel Bae on 2/27/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import RxSwift
12 | import UIKit
13 |
14 | extension Reactive where Base: UIProgressView {
15 |
16 | /// Bindable sink for `progress` property
17 | public var progress: Binder {
18 | return Binder(self.base) { progressView, progress in
19 | progressView.progress = progress
20 | }
21 | }
22 |
23 | }
24 |
25 | #endif
26 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/UIRefreshControl+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIRefreshControl+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Yosuke Ishikawa on 1/31/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | extension Reactive where Base: UIRefreshControl {
15 | /// Bindable sink for `beginRefreshing()`, `endRefreshing()` methods.
16 | public var isRefreshing: Binder {
17 | return Binder(self.base) { refreshControl, refresh in
18 | if refresh {
19 | refreshControl.beginRefreshing()
20 | } else {
21 | refreshControl.endRefreshing()
22 | }
23 | }
24 | }
25 |
26 | }
27 |
28 | #endif
29 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/UISlider+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UISlider+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Alexander van der Werff on 28/05/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS)
10 |
11 | import RxSwift
12 | import UIKit
13 |
14 | extension Reactive where Base: UISlider {
15 |
16 | /// Reactive wrapper for `value` property.
17 | public var value: ControlProperty {
18 | return base.rx.controlPropertyWithDefaultEvents(
19 | getter: { slider in
20 | slider.value
21 | }, setter: { slider, value in
22 | slider.value = value
23 | }
24 | )
25 | }
26 |
27 | }
28 |
29 | #endif
30 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/UIStepper+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIStepper+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Yuta ToKoRo on 9/1/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | extension Reactive where Base: UIStepper {
15 |
16 | /// Reactive wrapper for `value` property.
17 | public var value: ControlProperty {
18 | return base.rx.controlPropertyWithDefaultEvents(
19 | getter: { stepper in
20 | stepper.value
21 | }, setter: { stepper, value in
22 | stepper.value = value
23 | }
24 | )
25 | }
26 |
27 | /// Reactive wrapper for `stepValue` property.
28 | public var stepValue: Binder {
29 | return Binder(self.base) { stepper, value in
30 | stepper.stepValue = value
31 | }
32 | }
33 |
34 | }
35 |
36 | #endif
37 |
38 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/UISwitch+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UISwitch+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Carlos García on 8/7/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | extension Reactive where Base: UISwitch {
15 |
16 | /// Reactive wrapper for `isOn` property.
17 | public var isOn: ControlProperty {
18 | return value
19 | }
20 |
21 | /// Reactive wrapper for `isOn` property.
22 | ///
23 | /// ⚠️ Versions prior to iOS 10.2 were leaking `UISwitch`'s, so on those versions
24 | /// underlying observable sequence won't complete when nothing holds a strong reference
25 | /// to `UISwitch`.
26 | public var value: ControlProperty {
27 | return base.rx.controlPropertyWithDefaultEvents(
28 | getter: { uiSwitch in
29 | uiSwitch.isOn
30 | }, setter: { uiSwitch, value in
31 | uiSwitch.isOn = value
32 | }
33 | )
34 | }
35 |
36 | }
37 |
38 | #endif
39 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/UITabBarItem+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UITabBarItem+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Mateusz Derks on 04/03/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | extension Reactive where Base: UITabBarItem {
15 |
16 | /// Bindable sink for `badgeValue` property.
17 | public var badgeValue: Binder {
18 | return Binder(self.base) { tabBarItem, badgeValue in
19 | tabBarItem.badgeValue = badgeValue
20 | }
21 | }
22 |
23 | }
24 |
25 | #endif
26 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/iOS/UIViewController+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIViewController+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Kyle Fuller on 27/05/2016.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(iOS) || os(tvOS)
10 |
11 | import UIKit
12 | import RxSwift
13 |
14 | extension Reactive where Base: UIViewController {
15 |
16 | /// Bindable sink for `title`.
17 | public var title: Binder {
18 | return Binder(self.base) { viewController, title in
19 | viewController.title = title
20 | }
21 | }
22 |
23 | }
24 | #endif
25 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/macOS/NSButton+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NSButton+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 5/17/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(macOS)
10 |
11 | import RxSwift
12 | import Cocoa
13 |
14 | extension Reactive where Base: NSButton {
15 |
16 | /// Reactive wrapper for control event.
17 | public var tap: ControlEvent {
18 | return self.controlEvent
19 | }
20 |
21 | /// Reactive wrapper for `state` property`.
22 | public var state: ControlProperty {
23 | return self.base.rx.controlProperty(
24 | getter: { control in
25 | return control.state
26 | }, setter: { (control: NSButton, state: NSControl.StateValue) in
27 | control.state = state
28 | }
29 | )
30 | }
31 | }
32 |
33 | #endif
34 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/macOS/NSImageView+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NSImageView+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 5/17/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(macOS)
10 |
11 | import RxSwift
12 | import Cocoa
13 |
14 | extension Reactive where Base: NSImageView {
15 |
16 | /// Bindable sink for `image` property.
17 | public var image: Binder {
18 | return Binder(self.base) { imageView, image in
19 | imageView.image = image
20 | }
21 | }
22 | }
23 |
24 | #endif
25 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/macOS/NSSlider+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NSSlider+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Junior B. on 24/05/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(macOS)
10 |
11 | import RxSwift
12 | import Cocoa
13 |
14 | extension Reactive where Base: NSSlider {
15 |
16 | /// Reactive wrapper for `value` property.
17 | public var value: ControlProperty {
18 | return self.base.rx.controlProperty(
19 | getter: { control in
20 | return control.doubleValue
21 | },
22 | setter: { control, value in
23 | control.doubleValue = value
24 | }
25 | )
26 | }
27 |
28 | }
29 |
30 | #endif
31 |
--------------------------------------------------------------------------------
/Example/Pods/RxCocoa/RxCocoa/macOS/NSView+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NSView+Rx.swift
3 | // RxCocoa
4 | //
5 | // Created by Krunoslav Zaher on 12/6/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | #if os(macOS)
10 |
11 | import Cocoa
12 | import RxSwift
13 |
14 | extension Reactive where Base: NSView {
15 | /// Bindable sink for `hidden` property.
16 | public var isHidden: Binder {
17 | return Binder(self.base) { view, value in
18 | view.isHidden = value
19 | }
20 | }
21 |
22 | /// Bindable sink for `alphaValue` property.
23 | public var alpha: Binder {
24 | return Binder(self.base) { view, value in
25 | view.alphaValue = value
26 | }
27 | }
28 | }
29 |
30 | #endif
31 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/LICENSE.md:
--------------------------------------------------------------------------------
1 | **The MIT License**
2 | **Copyright © 2015 Krunoslav Zaher**
3 | **All rights reserved.**
4 |
5 | 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:
6 |
7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8 |
9 | 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.
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/Platform/DataStructures/InfiniteSequence.swift:
--------------------------------------------------------------------------------
1 | //
2 | // InfiniteSequence.swift
3 | // Platform
4 | //
5 | // Created by Krunoslav Zaher on 6/13/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Sequence that repeats `repeatedValue` infinite number of times.
10 | struct InfiniteSequence : Sequence {
11 | typealias Element = E
12 | typealias Iterator = AnyIterator
13 |
14 | private let _repeatedValue: E
15 |
16 | init(repeatedValue: E) {
17 | _repeatedValue = repeatedValue
18 | }
19 |
20 | func makeIterator() -> Iterator {
21 | let repeatedValue = _repeatedValue
22 | return AnyIterator {
23 | return repeatedValue
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/Platform/DispatchQueue+Extensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DispatchQueue+Extensions.swift
3 | // Platform
4 | //
5 | // Created by Krunoslav Zaher on 10/22/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import Dispatch
10 |
11 | extension DispatchQueue {
12 | private static var token: DispatchSpecificKey<()> = {
13 | let key = DispatchSpecificKey<()>()
14 | DispatchQueue.main.setSpecific(key: key, value: ())
15 | return key
16 | }()
17 |
18 | static var isMain: Bool {
19 | return DispatchQueue.getSpecific(key: token) != nil
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/Platform/RecursiveLock.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RecursiveLock.swift
3 | // Platform
4 | //
5 | // Created by Krunoslav Zaher on 12/18/16.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import class Foundation.NSRecursiveLock
10 |
11 | #if TRACE_RESOURCES
12 | class RecursiveLock: NSRecursiveLock {
13 | override init() {
14 | _ = Resources.incrementTotal()
15 | super.init()
16 | }
17 |
18 | override func lock() {
19 | super.lock()
20 | _ = Resources.incrementTotal()
21 | }
22 |
23 | override func unlock() {
24 | super.unlock()
25 | _ = Resources.decrementTotal()
26 | }
27 |
28 | deinit {
29 | _ = Resources.decrementTotal()
30 | }
31 | }
32 | #else
33 | typealias RecursiveLock = NSRecursiveLock
34 | #endif
35 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Cancelable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Cancelable.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 3/12/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Represents disposable resource with state tracking.
10 | public protocol Cancelable : Disposable {
11 | /// Was resource disposed.
12 | var isDisposed: Bool { get }
13 | }
14 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Concurrency/Lock.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Lock.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 3/31/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | protocol Lock {
10 | func lock()
11 | func unlock()
12 | }
13 |
14 | // https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20151214/000321.html
15 | typealias SpinLock = RecursiveLock
16 |
17 | extension RecursiveLock : Lock {
18 | @inline(__always)
19 | final func performLocked(_ action: () -> Void) {
20 | self.lock(); defer { self.unlock() }
21 | action()
22 | }
23 |
24 | @inline(__always)
25 | final func calculateLocked(_ action: () -> T) -> T {
26 | self.lock(); defer { self.unlock() }
27 | return action()
28 | }
29 |
30 | @inline(__always)
31 | final func calculateLockedOrFail(_ action: () throws -> T) throws -> T {
32 | self.lock(); defer { self.unlock() }
33 | let result = try action()
34 | return result
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Concurrency/LockOwnerType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LockOwnerType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 10/25/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | protocol LockOwnerType : class, Lock {
10 | var _lock: RecursiveLock { get }
11 | }
12 |
13 | extension LockOwnerType {
14 | func lock() {
15 | self._lock.lock()
16 | }
17 |
18 | func unlock() {
19 | self._lock.unlock()
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Concurrency/SynchronizedDisposeType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SynchronizedDisposeType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 10/25/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | protocol SynchronizedDisposeType : class, Disposable, Lock {
10 | func _synchronized_dispose()
11 | }
12 |
13 | extension SynchronizedDisposeType {
14 | func synchronizedDispose() {
15 | self.lock(); defer { self.unlock() }
16 | self._synchronized_dispose()
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Concurrency/SynchronizedOnType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SynchronizedOnType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 10/25/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | protocol SynchronizedOnType : class, ObserverType, Lock {
10 | func _synchronized_on(_ event: Event)
11 | }
12 |
13 | extension SynchronizedOnType {
14 | func synchronizedOn(_ event: Event) {
15 | self.lock(); defer { self.unlock() }
16 | self._synchronized_on(event)
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Concurrency/SynchronizedUnsubscribeType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SynchronizedUnsubscribeType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 10/25/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | protocol SynchronizedUnsubscribeType : class {
10 | associatedtype DisposeKey
11 |
12 | func synchronizedUnsubscribe(_ disposeKey: DisposeKey)
13 | }
14 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/ConnectableObservableType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ConnectableObservableType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 3/1/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /**
10 | Represents an observable sequence wrapper that can be connected and disconnected from its underlying observable sequence.
11 | */
12 | public protocol ConnectableObservableType : ObservableType {
13 | /**
14 | Connects the observable wrapper to its source. All subscribed observers will receive values from the underlying observable sequence as long as the connection is established.
15 |
16 | - returns: Disposable used to disconnect the observable wrapper from its source, causing subscribed observer to stop receiving values from the underlying observable sequence.
17 | */
18 | func connect() -> Disposable
19 | }
20 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Disposable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Disposable.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 2/8/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Represents a disposable resource.
10 | public protocol Disposable {
11 | /// Dispose resource.
12 | func dispose()
13 | }
14 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Disposables/BooleanDisposable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BooleanDisposable.swift
3 | // RxSwift
4 | //
5 | // Created by Junior B. on 10/29/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Represents a disposable resource that can be checked for disposal status.
10 | public final class BooleanDisposable : Cancelable {
11 |
12 | internal static let BooleanDisposableTrue = BooleanDisposable(isDisposed: true)
13 | private var _isDisposed = false
14 |
15 | /// Initializes a new instance of the `BooleanDisposable` class
16 | public init() {
17 | }
18 |
19 | /// Initializes a new instance of the `BooleanDisposable` class with given value
20 | public init(isDisposed: Bool) {
21 | self._isDisposed = isDisposed
22 | }
23 |
24 | /// - returns: Was resource disposed.
25 | public var isDisposed: Bool {
26 | return self._isDisposed
27 | }
28 |
29 | /// Sets the status to disposed, which can be observer through the `isDisposed` property.
30 | public func dispose() {
31 | self._isDisposed = true
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Disposables/Disposables.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Disposables.swift
3 | // RxSwift
4 | //
5 | // Created by Mohsen Ramezanpoor on 01/08/2016.
6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// A collection of utility methods for common disposable operations.
10 | public struct Disposables {
11 | private init() {}
12 | }
13 |
14 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Disposables/DisposeBase.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DisposeBase.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 4/4/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Base class for all disposables.
10 | public class DisposeBase {
11 | init() {
12 | #if TRACE_RESOURCES
13 | _ = Resources.incrementTotal()
14 | #endif
15 | }
16 |
17 | deinit {
18 | #if TRACE_RESOURCES
19 | _ = Resources.decrementTotal()
20 | #endif
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Disposables/NopDisposable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NopDisposable.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 2/15/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Represents a disposable that does nothing on disposal.
10 | ///
11 | /// Nop = No Operation
12 | fileprivate struct NopDisposable : Disposable {
13 |
14 | fileprivate static let noOp: Disposable = NopDisposable()
15 |
16 | fileprivate init() {
17 |
18 | }
19 |
20 | /// Does nothing.
21 | public func dispose() {
22 | }
23 | }
24 |
25 | extension Disposables {
26 | /**
27 | Creates a disposable that does nothing on disposal.
28 | */
29 | static public func create() -> Disposable {
30 | return NopDisposable.noOp
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Disposables/SubscriptionDisposable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SubscriptionDisposable.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 10/25/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | struct SubscriptionDisposable : Disposable {
10 | private let _key: T.DisposeKey
11 | private weak var _owner: T?
12 |
13 | init(owner: T, key: T.DisposeKey) {
14 | self._owner = owner
15 | self._key = key
16 | }
17 |
18 | func dispose() {
19 | self._owner?.synchronizedUnsubscribe(self._key)
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Extensions/String+Rx.swift:
--------------------------------------------------------------------------------
1 | //
2 | // String+Rx.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 12/25/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | extension String {
10 | /// This is needed because on Linux Swift doesn't have `rangeOfString(..., options: .BackwardsSearch)`
11 | func lastIndexOf(_ character: Character) -> Index? {
12 | var index = self.endIndex
13 | while index > self.startIndex {
14 | index = self.index(before: index)
15 | if self[index] == character {
16 | return index
17 | }
18 | }
19 |
20 | return nil
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/ObservableConvertibleType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ObservableConvertibleType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 9/17/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Type that can be converted to observable sequence (`Observable`).
10 | public protocol ObservableConvertibleType {
11 | /// Type of elements in sequence.
12 | associatedtype E
13 |
14 | /// Converts `self` to `Observable` sequence.
15 | ///
16 | /// - returns: Observable sequence that represents `self`.
17 | func asObservable() -> Observable
18 | }
19 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Observables/Empty.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Empty.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 8/30/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | extension ObservableType {
10 | /**
11 | Returns an empty observable sequence, using the specified scheduler to send out the single `Completed` message.
12 |
13 | - seealso: [empty operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html)
14 |
15 | - returns: An observable sequence with no elements.
16 | */
17 | public static func empty() -> Observable {
18 | return EmptyProducer()
19 | }
20 | }
21 |
22 | final private class EmptyProducer: Producer {
23 | override func subscribe(_ observer: O) -> Disposable where O.E == Element {
24 | observer.on(.completed)
25 | return Disposables.create()
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Observables/Error.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Error.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 8/30/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | extension ObservableType {
10 | /**
11 | Returns an observable sequence that terminates with an `error`.
12 |
13 | - seealso: [throw operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html)
14 |
15 | - returns: The observable sequence that terminates with specified error.
16 | */
17 | public static func error(_ error: Swift.Error) -> Observable {
18 | return ErrorProducer(error: error)
19 | }
20 | }
21 |
22 | final private class ErrorProducer: Producer {
23 | private let _error: Swift.Error
24 |
25 | init(error: Swift.Error) {
26 | self._error = error
27 | }
28 |
29 | override func subscribe(_ observer: O) -> Disposable where O.E == Element {
30 | observer.on(.error(self._error))
31 | return Disposables.create()
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Observables/Never.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Never.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 8/30/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | extension ObservableType {
10 |
11 | /**
12 | Returns a non-terminating observable sequence, which can be used to denote an infinite duration.
13 |
14 | - seealso: [never operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html)
15 |
16 | - returns: An observable sequence whose observers will never get called.
17 | */
18 | public static func never() -> Observable {
19 | return NeverProducer()
20 | }
21 | }
22 |
23 | final private class NeverProducer: Producer {
24 | override func subscribe(_ observer: O) -> Disposable where O.E == Element {
25 | return Disposables.create()
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Observers/AnonymousObserver.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AnonymousObserver.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 2/8/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | final class AnonymousObserver : ObserverBase {
10 | typealias Element = ElementType
11 |
12 | typealias EventHandler = (Event) -> Void
13 |
14 | private let _eventHandler : EventHandler
15 |
16 | init(_ eventHandler: @escaping EventHandler) {
17 | #if TRACE_RESOURCES
18 | _ = Resources.incrementTotal()
19 | #endif
20 | self._eventHandler = eventHandler
21 | }
22 |
23 | override func onCore(_ event: Event) {
24 | return self._eventHandler(event)
25 | }
26 |
27 | #if TRACE_RESOURCES
28 | deinit {
29 | _ = Resources.decrementTotal()
30 | }
31 | #endif
32 | }
33 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Observers/ObserverBase.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ObserverBase.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 2/15/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | class ObserverBase : Disposable, ObserverType {
10 | typealias E = ElementType
11 |
12 | private let _isStopped = AtomicInt(0)
13 |
14 | func on(_ event: Event) {
15 | switch event {
16 | case .next:
17 | if load(self._isStopped) == 0 {
18 | self.onCore(event)
19 | }
20 | case .error, .completed:
21 | if fetchOr(self._isStopped, 1) == 0 {
22 | self.onCore(event)
23 | }
24 | }
25 | }
26 |
27 | func onCore(_ event: Event) {
28 | rxAbstractMethod()
29 | }
30 |
31 | func dispose() {
32 | fetchOr(self._isStopped, 1)
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/RxMutableBox.swift:
--------------------------------------------------------------------------------
1 | //
2 | // RxMutableBox.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 5/22/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Creates mutable reference wrapper for any type.
10 | final class RxMutableBox : CustomDebugStringConvertible {
11 | /// Wrapped value
12 | var value : T
13 |
14 | /// Creates reference wrapper for `value`.
15 | ///
16 | /// - parameter value: Value to wrap.
17 | init (_ value: T) {
18 | self.value = value
19 | }
20 | }
21 |
22 | extension RxMutableBox {
23 | /// - returns: Box description.
24 | var debugDescription: String {
25 | return "MutatingBox(\(self.value))"
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Schedulers/HistoricalScheduler.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HistoricalScheduler.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 12/27/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import struct Foundation.Date
10 |
11 | /// Provides a virtual time scheduler that uses `Date` for absolute time and `NSTimeInterval` for relative time.
12 | public class HistoricalScheduler : VirtualTimeScheduler {
13 |
14 | /**
15 | Creates a new historical scheduler with initial clock value.
16 |
17 | - parameter initialClock: Initial value for virtual clock.
18 | */
19 | public init(initialClock: RxTime = Date(timeIntervalSince1970: 0)) {
20 | super.init(initialClock: initialClock, converter: HistoricalSchedulerTimeConverter())
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableScheduledItem.swift:
--------------------------------------------------------------------------------
1 | //
2 | // InvocableScheduledItem.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 11/7/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | struct InvocableScheduledItem : InvocableType {
10 |
11 | let _invocable: I
12 | let _state: I.Value
13 |
14 | init(invocable: I, state: I.Value) {
15 | self._invocable = invocable
16 | self._state = state
17 | }
18 |
19 | func invoke() {
20 | self._invocable.invoke(self._state)
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // InvocableType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 11/7/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | protocol InvocableType {
10 | func invoke()
11 | }
12 |
13 | protocol InvocableWithValueType {
14 | associatedtype Value
15 |
16 | func invoke(_ value: Value)
17 | }
18 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItem.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ScheduledItem.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 9/2/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | struct ScheduledItem
10 | : ScheduledItemType
11 | , InvocableType {
12 | typealias Action = (T) -> Disposable
13 |
14 | private let _action: Action
15 | private let _state: T
16 |
17 | private let _disposable = SingleAssignmentDisposable()
18 |
19 | var isDisposed: Bool {
20 | return self._disposable.isDisposed
21 | }
22 |
23 | init(action: @escaping Action, state: T) {
24 | self._action = action
25 | self._state = state
26 | }
27 |
28 | func invoke() {
29 | self._disposable.setDisposable(self._action(self._state))
30 | }
31 |
32 | func dispose() {
33 | self._disposable.dispose()
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItemType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ScheduledItemType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 11/7/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | protocol ScheduledItemType
10 | : Cancelable
11 | , InvocableType {
12 | func invoke()
13 | }
14 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/Subjects/SubjectType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SubjectType.swift
3 | // RxSwift
4 | //
5 | // Created by Krunoslav Zaher on 3/1/15.
6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | /// Represents an object that is both an observable sequence as well as an observer.
10 | public protocol SubjectType : ObservableType {
11 | /// The type of the observer that represents this subject.
12 | ///
13 | /// Usually this type is type of subject itself, but it doesn't have to be.
14 | associatedtype SubjectObserverType : ObserverType
15 |
16 | /// Returns observer interface for subject.
17 | ///
18 | /// - returns: Observer interface for subject.
19 | func asObserver() -> SubjectObserverType
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/Example/Pods/RxSwift/RxSwift/SwiftSupport/SwiftSupport.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SwiftSupport.swift
3 | // RxSwift
4 | //
5 | // Created by Volodymyr Gorbenko on 3/6/17.
6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | typealias IntMax = Int64
12 | public typealias RxAbstractInteger = FixedWidthInteger
13 |
14 | extension SignedInteger {
15 | func toIntMax() -> IntMax {
16 | return IntMax(self)
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/AmazonFling/AmazonFling.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/AmazonFling
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/AmazonFling/Frameworks"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | OTHER_LDFLAGS = $(inherited) -framework "CFNetwork" -framework "Security" -framework "SystemConfiguration"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/AmazonFling
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/FireTVKit/FireTVKit-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/FireTVKit/FireTVKit-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_FireTVKit : NSObject
3 | @end
4 | @implementation PodsDummy_FireTVKit
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/FireTVKit/FireTVKit-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/FireTVKit/FireTVKit-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double FireTVKitVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char FireTVKitVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/FireTVKit/FireTVKit.modulemap:
--------------------------------------------------------------------------------
1 | framework module FireTVKit {
2 | umbrella header "FireTVKit-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/FireTVKit/FireTVKit.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FireTVKit
2 | ENABLE_BITCODE = NO
3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" "${PODS_ROOT}/AmazonFling/Frameworks" $(inherited) $(PODS_ROOT)/AmazonFling
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | OTHER_LDFLAGS = $(inherited) -undefined dynamic_lookup -framework "UIKit"
6 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
7 | PODS_BUILD_DIR = ${BUILD_DIR}
8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
9 | PODS_ROOT = ${SRCROOT}
10 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../..
11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
12 | SKIP_INSTALL = YES
13 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/FireTVKit/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/FireTVKit/ResourceBundle-FireTVKit-FireTVKit-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleIdentifier
8 | ${PRODUCT_BUNDLE_IDENTIFIER}
9 | CFBundleInfoDictionaryVersion
10 | 6.0
11 | CFBundleName
12 | ${PRODUCT_NAME}
13 | CFBundlePackageType
14 | BNDL
15 | CFBundleShortVersionString
16 | 1.0.0
17 | CFBundleSignature
18 | ????
19 | CFBundleVersion
20 | 1
21 | NSPrincipalClass
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/FireTVKit/ResourceBundle-FireTVKit-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleIdentifier
8 | ${PRODUCT_BUNDLE_IDENTIFIER}
9 | CFBundleInfoDictionaryVersion
10 | 6.0
11 | CFBundleName
12 | ${PRODUCT_NAME}
13 | CFBundlePackageType
14 | BNDL
15 | CFBundleShortVersionString
16 | 1.0.0
17 | CFBundleSignature
18 | ????
19 | CFBundleVersion
20 | 1
21 | NSPrincipalClass
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Nimble/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 7.0.3
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Nimble/Nimble-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 7.3.4
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Nimble/Nimble-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Nimble : NSObject
3 | @end
4 | @implementation PodsDummy_Nimble
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Nimble/Nimble-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Nimble/Nimble-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "Nimble.h"
14 | #import "DSL.h"
15 | #import "NMBExceptionCapture.h"
16 | #import "NMBStringify.h"
17 | #import "CwlCatchException.h"
18 | #import "CwlMachBadInstructionHandler.h"
19 | #import "mach_excServer.h"
20 | #import "CwlPreconditionTesting.h"
21 |
22 | FOUNDATION_EXPORT double NimbleVersionNumber;
23 | FOUNDATION_EXPORT const unsigned char NimbleVersionString[];
24 |
25 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Nimble/Nimble.modulemap:
--------------------------------------------------------------------------------
1 | framework module Nimble {
2 | umbrella header "Nimble-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Nimble/Nimble.xcconfig:
--------------------------------------------------------------------------------
1 | APPLICATION_EXTENSION_API_ONLY = YES
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Nimble
3 | ENABLE_BITCODE = NO
4 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks"
5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
6 | OTHER_LDFLAGS = $(inherited) -Xlinker -no_application_extension -weak-lswiftXCTest -weak_framework "XCTest"
7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS $(inherited) -suppress-warnings
8 | PODS_BUILD_DIR = ${BUILD_DIR}
9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
10 | PODS_ROOT = ${SRCROOT}
11 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Nimble
12 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
13 | SKIP_INSTALL = YES
14 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-FireTVKit_Example/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-FireTVKit_Example/Pods-FireTVKit_Example-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-FireTVKit_Example/Pods-FireTVKit_Example-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_FireTVKit_Example : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_FireTVKit_Example
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-FireTVKit_Example/Pods-FireTVKit_Example-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_FireTVKit_ExampleVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_FireTVKit_ExampleVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-FireTVKit_Example/Pods-FireTVKit_Example.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_FireTVKit_Example {
2 | umbrella header "Pods-FireTVKit_Example-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-FireTVKit_Tests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-FireTVKit_Tests/Pods-FireTVKit_Tests-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-FireTVKit_Tests/Pods-FireTVKit_Tests-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_FireTVKit_Tests : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_FireTVKit_Tests
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-FireTVKit_Tests/Pods-FireTVKit_Tests-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_FireTVKit_TestsVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_FireTVKit_TestsVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Pods-FireTVKit_Tests/Pods-FireTVKit_Tests.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_FireTVKit_Tests {
2 | umbrella header "Pods-FireTVKit_Tests-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Quick/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.2.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Quick/Quick-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.3.4
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Quick/Quick-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Quick : NSObject
3 | @end
4 | @implementation PodsDummy_Quick
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Quick/Quick-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Quick/Quick-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "QuickConfiguration.h"
14 | #import "QCKDSL.h"
15 | #import "Quick.h"
16 | #import "QuickSpec.h"
17 |
18 | FOUNDATION_EXPORT double QuickVersionNumber;
19 | FOUNDATION_EXPORT const unsigned char QuickVersionString[];
20 |
21 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Quick/Quick.modulemap:
--------------------------------------------------------------------------------
1 | framework module Quick {
2 | umbrella header "Quick-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/Quick/Quick.xcconfig:
--------------------------------------------------------------------------------
1 | APPLICATION_EXTENSION_API_ONLY = YES
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Quick
3 | ENABLE_BITCODE = NO
4 | FRAMEWORK_SEARCH_PATHS = $(inherited) "$(PLATFORM_DIR)/Developer/Library/Frameworks"
5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
6 | OTHER_LDFLAGS = $(inherited) -Xlinker -no_application_extension -framework "XCTest"
7 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
8 | PODS_BUILD_DIR = ${BUILD_DIR}
9 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
10 | PODS_ROOT = ${SRCROOT}
11 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Quick
12 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
13 | SKIP_INSTALL = YES
14 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/ReachabilitySwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 4.1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/ReachabilitySwift/ReachabilitySwift-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 4.3.1
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/ReachabilitySwift/ReachabilitySwift-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_ReachabilitySwift : NSObject
3 | @end
4 | @implementation PodsDummy_ReachabilitySwift
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/ReachabilitySwift/ReachabilitySwift-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/ReachabilitySwift/ReachabilitySwift-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double ReachabilityVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char ReachabilityVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/ReachabilitySwift/ReachabilitySwift.modulemap:
--------------------------------------------------------------------------------
1 | framework module Reachability {
2 | umbrella header "ReachabilitySwift-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/ReachabilitySwift/ReachabilitySwift.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ReachabilitySwift
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | OTHER_LDFLAGS = $(inherited) -framework "CoreTelephony" -framework "SystemConfiguration"
4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/ReachabilitySwift
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/RxCocoa/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 4.1.2
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/RxCocoa/RxCocoa-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 4.5.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/RxCocoa/RxCocoa-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_RxCocoa : NSObject
3 | @end
4 | @implementation PodsDummy_RxCocoa
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/RxCocoa/RxCocoa-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/RxCocoa/RxCocoa-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "RxCocoaRuntime.h"
14 | #import "_RX.h"
15 | #import "_RXDelegateProxy.h"
16 | #import "_RXKVOObserver.h"
17 | #import "_RXObjCRuntime.h"
18 | #import "RxCocoa.h"
19 |
20 | FOUNDATION_EXPORT double RxCocoaVersionNumber;
21 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[];
22 |
23 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/RxCocoa/RxCocoa.modulemap:
--------------------------------------------------------------------------------
1 | framework module RxCocoa {
2 | umbrella header "RxCocoa-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/RxCocoa/RxCocoa.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxCocoa
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/RxSwift/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 4.1.2
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/RxSwift/RxSwift-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 4.5.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/RxSwift/RxSwift-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_RxSwift : NSObject
3 | @end
4 | @implementation PodsDummy_RxSwift
5 | @end
6 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/RxSwift/RxSwift-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/RxSwift/RxSwift-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double RxSwiftVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char RxSwiftVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/RxSwift/RxSwift.modulemap:
--------------------------------------------------------------------------------
1 | framework module RxSwift {
2 | umbrella header "RxSwift-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Example/Pods/Target Support Files/RxSwift/RxSwift.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxSwift
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxSwift
8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
9 | SKIP_INSTALL = YES
10 |
--------------------------------------------------------------------------------
/Example/Tests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Example/Tests/UnitTests/internal/PlayerDiscovery/DiscoveringInfoSpec.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DiscoveringInfoSpec.swift
3 | // FireTVKit-Tests
4 | //
5 | // Created by crelies on 28.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | @testable import FireTVKit
10 | import Foundation
11 | import Nimble
12 | import Quick
13 |
14 | final class DiscoveringInfoSpec: QuickSpec {
15 | override func spec() {
16 | describe("DiscoveringInfo") {
17 | context("when initialized with device") {
18 | let player = DummyPlayer()
19 | let discoveringInfo = DiscoveringInfo(device: player)
20 |
21 | it("should have status deviceDiscovered") {
22 | expect(discoveringInfo.status) == .deviceDiscovered
23 | }
24 | }
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/FireTVKit/Assets/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/.gitkeep
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/close.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "close@1x.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "close@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "close@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/close.imageset/close@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/close.imageset/close@1x.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/close.imageset/close@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/close.imageset/close@2x.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/close.imageset/close@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/close.imageset/close@3x.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_default_dark_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_jump_forward_10_default_dark_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_jump_forward_10_default_dark_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_jump_forward_10_default_dark_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_default_dark_48dp.imageset/ic_jump_forward_10_default_dark_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_default_dark_48dp.imageset/ic_jump_forward_10_default_dark_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_default_dark_48dp.imageset/ic_jump_forward_10_default_dark_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_default_dark_48dp.imageset/ic_jump_forward_10_default_dark_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_default_dark_48dp.imageset/ic_jump_forward_10_default_dark_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_default_dark_48dp.imageset/ic_jump_forward_10_default_dark_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_default_light_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_jump_forward_10_default_light_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_jump_forward_10_default_light_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_jump_forward_10_default_light_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_default_light_48dp.imageset/ic_jump_forward_10_default_light_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_default_light_48dp.imageset/ic_jump_forward_10_default_light_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_default_light_48dp.imageset/ic_jump_forward_10_default_light_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_default_light_48dp.imageset/ic_jump_forward_10_default_light_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_default_light_48dp.imageset/ic_jump_forward_10_default_light_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_default_light_48dp.imageset/ic_jump_forward_10_default_light_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_disabled_dark_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_jump_forward_10_disabled_dark_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_jump_forward_10_disabled_dark_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_jump_forward_10_disabled_dark_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_disabled_dark_48dp.imageset/ic_jump_forward_10_disabled_dark_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_disabled_dark_48dp.imageset/ic_jump_forward_10_disabled_dark_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_disabled_dark_48dp.imageset/ic_jump_forward_10_disabled_dark_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_disabled_dark_48dp.imageset/ic_jump_forward_10_disabled_dark_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_disabled_dark_48dp.imageset/ic_jump_forward_10_disabled_dark_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_disabled_dark_48dp.imageset/ic_jump_forward_10_disabled_dark_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_disabled_light_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_jump_forward_10_disabled_light_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_jump_forward_10_disabled_light_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_jump_forward_10_disabled_light_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_disabled_light_48dp.imageset/ic_jump_forward_10_disabled_light_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_disabled_light_48dp.imageset/ic_jump_forward_10_disabled_light_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_disabled_light_48dp.imageset/ic_jump_forward_10_disabled_light_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_disabled_light_48dp.imageset/ic_jump_forward_10_disabled_light_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_disabled_light_48dp.imageset/ic_jump_forward_10_disabled_light_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/fast-forward-10s/ic_jump_forward_10_disabled_light_48dp.imageset/ic_jump_forward_10_disabled_light_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/pause/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_default_dark_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_pause_default_dark_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_pause_default_dark_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_pause_default_dark_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_default_dark_48dp.imageset/ic_pause_default_dark_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_default_dark_48dp.imageset/ic_pause_default_dark_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_default_dark_48dp.imageset/ic_pause_default_dark_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_default_dark_48dp.imageset/ic_pause_default_dark_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_default_dark_48dp.imageset/ic_pause_default_dark_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_default_dark_48dp.imageset/ic_pause_default_dark_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_default_light_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_pause_default_light_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_pause_default_light_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_pause_default_light_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_default_light_48dp.imageset/ic_pause_default_light_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_default_light_48dp.imageset/ic_pause_default_light_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_default_light_48dp.imageset/ic_pause_default_light_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_default_light_48dp.imageset/ic_pause_default_light_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_default_light_48dp.imageset/ic_pause_default_light_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_default_light_48dp.imageset/ic_pause_default_light_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_disabled_dark_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_pause_disabled_dark_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_pause_disabled_dark_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_pause_disabled_dark_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_disabled_dark_48dp.imageset/ic_pause_disabled_dark_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_disabled_dark_48dp.imageset/ic_pause_disabled_dark_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_disabled_dark_48dp.imageset/ic_pause_disabled_dark_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_disabled_dark_48dp.imageset/ic_pause_disabled_dark_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_disabled_dark_48dp.imageset/ic_pause_disabled_dark_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_disabled_dark_48dp.imageset/ic_pause_disabled_dark_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_disabled_light_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_pause_disabled_light_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_pause_disabled_light_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_pause_disabled_light_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_disabled_light_48dp.imageset/ic_pause_disabled_light_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_disabled_light_48dp.imageset/ic_pause_disabled_light_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_disabled_light_48dp.imageset/ic_pause_disabled_light_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_disabled_light_48dp.imageset/ic_pause_disabled_light_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_disabled_light_48dp.imageset/ic_pause_disabled_light_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/pause/ic_pause_disabled_light_48dp.imageset/ic_pause_disabled_light_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/play/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/play/ic_play_default_dark_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_play_default_dark_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_play_default_dark_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_play_default_dark_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/play/ic_play_default_dark_48dp.imageset/ic_play_default_dark_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/play/ic_play_default_dark_48dp.imageset/ic_play_default_dark_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/play/ic_play_default_dark_48dp.imageset/ic_play_default_dark_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/play/ic_play_default_dark_48dp.imageset/ic_play_default_dark_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/play/ic_play_default_dark_48dp.imageset/ic_play_default_dark_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/play/ic_play_default_dark_48dp.imageset/ic_play_default_dark_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/play/ic_play_default_light_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_play_default_light_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_play_default_light_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_play_default_light_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/play/ic_play_default_light_48dp.imageset/ic_play_default_light_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/play/ic_play_default_light_48dp.imageset/ic_play_default_light_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/play/ic_play_default_light_48dp.imageset/ic_play_default_light_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/play/ic_play_default_light_48dp.imageset/ic_play_default_light_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/play/ic_play_default_light_48dp.imageset/ic_play_default_light_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/play/ic_play_default_light_48dp.imageset/ic_play_default_light_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/play/ic_play_disabled_dark_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_play_disabled_dark_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_play_disabled_dark_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_play_disabled_dark_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/play/ic_play_disabled_dark_48dp.imageset/ic_play_disabled_dark_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/play/ic_play_disabled_dark_48dp.imageset/ic_play_disabled_dark_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/play/ic_play_disabled_dark_48dp.imageset/ic_play_disabled_dark_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/play/ic_play_disabled_dark_48dp.imageset/ic_play_disabled_dark_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/play/ic_play_disabled_dark_48dp.imageset/ic_play_disabled_dark_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/play/ic_play_disabled_dark_48dp.imageset/ic_play_disabled_dark_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/play/ic_play_disabled_light_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_play_disabled_light_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_play_disabled_light_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_play_disabled_light_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/play/ic_play_disabled_light_48dp.imageset/ic_play_disabled_light_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/play/ic_play_disabled_light_48dp.imageset/ic_play_disabled_light_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/play/ic_play_disabled_light_48dp.imageset/ic_play_disabled_light_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/play/ic_play_disabled_light_48dp.imageset/ic_play_disabled_light_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/play/ic_play_disabled_light_48dp.imageset/ic_play_disabled_light_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/play/ic_play_disabled_light_48dp.imageset/ic_play_disabled_light_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/rewind-10s/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_default_dark_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_jump_back_10_default_dark_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_jump_back_10_default_dark_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_jump_back_10_default_dark_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_default_dark_48dp.imageset/ic_jump_back_10_default_dark_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_default_dark_48dp.imageset/ic_jump_back_10_default_dark_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_default_dark_48dp.imageset/ic_jump_back_10_default_dark_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_default_dark_48dp.imageset/ic_jump_back_10_default_dark_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_default_dark_48dp.imageset/ic_jump_back_10_default_dark_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_default_dark_48dp.imageset/ic_jump_back_10_default_dark_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_default_light_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_jump_back_10_default_light_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_jump_back_10_default_light_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_jump_back_10_default_light_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_default_light_48dp.imageset/ic_jump_back_10_default_light_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_default_light_48dp.imageset/ic_jump_back_10_default_light_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_default_light_48dp.imageset/ic_jump_back_10_default_light_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_default_light_48dp.imageset/ic_jump_back_10_default_light_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_default_light_48dp.imageset/ic_jump_back_10_default_light_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_default_light_48dp.imageset/ic_jump_back_10_default_light_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_disabled_dark_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_jump_back_10_disabled_dark_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_jump_back_10_disabled_dark_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_jump_back_10_disabled_dark_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_disabled_dark_48dp.imageset/ic_jump_back_10_disabled_dark_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_disabled_dark_48dp.imageset/ic_jump_back_10_disabled_dark_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_disabled_dark_48dp.imageset/ic_jump_back_10_disabled_dark_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_disabled_dark_48dp.imageset/ic_jump_back_10_disabled_dark_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_disabled_dark_48dp.imageset/ic_jump_back_10_disabled_dark_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_disabled_dark_48dp.imageset/ic_jump_back_10_disabled_dark_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_disabled_light_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_jump_back_10_disabled_light_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_jump_back_10_disabled_light_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_jump_back_10_disabled_light_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_disabled_light_48dp.imageset/ic_jump_back_10_disabled_light_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_disabled_light_48dp.imageset/ic_jump_back_10_disabled_light_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_disabled_light_48dp.imageset/ic_jump_back_10_disabled_light_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_disabled_light_48dp.imageset/ic_jump_back_10_disabled_light_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_disabled_light_48dp.imageset/ic_jump_back_10_disabled_light_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/rewind-10s/ic_jump_back_10_disabled_light_48dp.imageset/ic_jump_back_10_disabled_light_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/stop/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_default_dark_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_stop_default_dark_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_stop_default_dark_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_stop_default_dark_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_default_dark_48dp.imageset/ic_stop_default_dark_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_default_dark_48dp.imageset/ic_stop_default_dark_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_default_dark_48dp.imageset/ic_stop_default_dark_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_default_dark_48dp.imageset/ic_stop_default_dark_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_default_dark_48dp.imageset/ic_stop_default_dark_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_default_dark_48dp.imageset/ic_stop_default_dark_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_default_light_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_stop_default_light_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_stop_default_light_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_stop_default_light_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_default_light_48dp.imageset/ic_stop_default_light_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_default_light_48dp.imageset/ic_stop_default_light_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_default_light_48dp.imageset/ic_stop_default_light_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_default_light_48dp.imageset/ic_stop_default_light_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_default_light_48dp.imageset/ic_stop_default_light_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_default_light_48dp.imageset/ic_stop_default_light_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_disabled_dark_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_stop_disabled_dark_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_stop_disabled_dark_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_stop_disabled_dark_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_disabled_dark_48dp.imageset/ic_stop_disabled_dark_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_disabled_dark_48dp.imageset/ic_stop_disabled_dark_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_disabled_dark_48dp.imageset/ic_stop_disabled_dark_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_disabled_dark_48dp.imageset/ic_stop_disabled_dark_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_disabled_dark_48dp.imageset/ic_stop_disabled_dark_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_disabled_dark_48dp.imageset/ic_stop_disabled_dark_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_disabled_light_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_stop_disabled_light_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_stop_disabled_light_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_stop_disabled_light_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_disabled_light_48dp.imageset/ic_stop_disabled_light_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_disabled_light_48dp.imageset/ic_stop_disabled_light_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_disabled_light_48dp.imageset/ic_stop_disabled_light_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_disabled_light_48dp.imageset/ic_stop_disabled_light_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_disabled_light_48dp.imageset/ic_stop_disabled_light_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/stop/ic_stop_disabled_light_48dp.imageset/ic_stop_disabled_light_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/whisperplay/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/whisperplay/ic_whisperplay_default_blue_light_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_whisperplay_default_blue_light_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_whisperplay_default_blue_light_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_whisperplay_default_blue_light_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/whisperplay/ic_whisperplay_default_blue_light_48dp.imageset/ic_whisperplay_default_blue_light_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/whisperplay/ic_whisperplay_default_blue_light_48dp.imageset/ic_whisperplay_default_blue_light_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/whisperplay/ic_whisperplay_default_blue_light_48dp.imageset/ic_whisperplay_default_blue_light_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/whisperplay/ic_whisperplay_default_blue_light_48dp.imageset/ic_whisperplay_default_blue_light_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/whisperplay/ic_whisperplay_default_blue_light_48dp.imageset/ic_whisperplay_default_blue_light_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/whisperplay/ic_whisperplay_default_blue_light_48dp.imageset/ic_whisperplay_default_blue_light_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/whisperplay/ic_whisperplay_default_light_48dp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_whisperplay_default_light_48dp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_whisperplay_default_light_48dp-1.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_whisperplay_default_light_48dp-2.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/whisperplay/ic_whisperplay_default_light_48dp.imageset/ic_whisperplay_default_light_48dp-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/whisperplay/ic_whisperplay_default_light_48dp.imageset/ic_whisperplay_default_light_48dp-1.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/whisperplay/ic_whisperplay_default_light_48dp.imageset/ic_whisperplay_default_light_48dp-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/whisperplay/ic_whisperplay_default_light_48dp.imageset/ic_whisperplay_default_light_48dp-2.png
--------------------------------------------------------------------------------
/FireTVKit/Assets/Assets.xcassets/whisperplay/ic_whisperplay_default_light_48dp.imageset/ic_whisperplay_default_light_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/FireTVKit/Assets/Assets.xcassets/whisperplay/ic_whisperplay_default_light_48dp.imageset/ic_whisperplay_default_light_48dp.png
--------------------------------------------------------------------------------
/FireTVKit/Classes/Enums/FireTVKitUserDefaultsKeys.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FireTVKitUserDefaultsKeys.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 06.06.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | /// String enum used for storing data in UserDefaults
12 | ///
13 | /// - fireTVKitLogging: boolean value which specifies if logging is enabled for the FireTVKit
14 | /// - fireTVKitLogEvent: string value describing which specific event type should be logged
15 | ///
16 | public enum FireTVKitUserDefaultsKeys: String {
17 | case fireTVKitLogging
18 | case fireTVKitLogEvent
19 | }
20 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/Enums/ServiceFactoryError.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ServiceFactoryError.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 27.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | /// Enum of possible errors thrown by the `ServiceFactory`
12 | ///
13 | /// - couldNotCreateReachabilityService: thrown if a `ReachabilityService` instance could not be created
14 | ///
15 | public enum ServiceFactoryError: Error {
16 | case couldNotCreateReachabilityService
17 | }
18 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/FireTVPlayer/FireTVPlayerDelegateProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FireTVPlayerDelegateProtocol.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 08.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | /// Protocol describing the delegate methods of a fire tv player
12 | ///
13 | public protocol FireTVPlayerDelegateProtocol: class {
14 | /// Will be called if the close button of a `FireTVPlayerViewProtocol` is tapped
15 | ///
16 | /// - Parameter fireTVPlayerViewController: the corresponding view controller instance
17 | ///
18 | func didPressCloseButton(_ fireTVPlayerViewController: FireTVPlayerViewController)
19 | }
20 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/FireTVPlayer/FireTVPlayerWireframeError.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FireTVPlayerWireframeError.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 05.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | /// Enum for the possible errors thrown by the `FireTVPlayerWireframe`
12 | ///
13 | /// - couldNotFindResourceBundle: thrown if the resource bundle wasn't found
14 | /// - couldNotInstantiateInitialViewController: thrown if the initial view controller couldn't be instantiated
15 | ///
16 | public enum FireTVPlayerWireframeError: Error {
17 | case couldNotFindResourceBundle
18 | case couldNotInstantiateInitialViewController
19 | }
20 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/FireTVPlayer/Theme/FireTVPlayerThemeProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FireTVPlayerThemeProtocol.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 12.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | /// Protocol describing the requirements of a fire tv player theme
12 | ///
13 | public protocol FireTVPlayerThemeProtocol {
14 | /// Color for the background of the view
15 | ///
16 | var backgroundColor: UIColor { get }
17 | /// Tint color for the close button of the player view
18 | ///
19 | var closeButtonTintColor: UIColor { get }
20 | /// Color to be used for labels
21 | ///
22 | var labelColor: UIColor { get }
23 | /// Tint color for a position slider if used
24 | ///
25 | var positionSliderTintColor: UIColor { get }
26 | /// Tint color for the control buttons, like play and pause
27 | ///
28 | var controlButtonTintColor: UIColor { get }
29 | /// Color of the activity indicator view
30 | ///
31 | var activityIndicatorViewColor: UIColor { get }
32 | }
33 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/FireTVPlayer/internal/FireTVPlayerInteractorDependencies.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FireTVPlayerInteractorDependencies.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 05.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol FireTVPlayerInteractorDependenciesProtocol: PlayerDiscoveryControllerProvider, PlayerServiceProvider {
12 |
13 | }
14 |
15 | struct FireTVPlayerInteractorDependencies: FireTVPlayerInteractorDependenciesProtocol {
16 | let playerDiscoveryController: PlayerDiscoveryControllerProtocol
17 | let playerService: PlayerServiceProtocol
18 |
19 | init() {
20 | playerDiscoveryController = ServiceFactory.makePlayerDiscoveryController()
21 | playerService = ServiceFactory.makePlayerService()
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/FireTVPlayer/internal/FireTVPlayerInteractorError.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FireTVPlayerInteractorError.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 28.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | enum FireTVPlayerInteractorError: Error {
12 | case couldNotCreateDataFromString
13 | }
14 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/FireTVPlayer/internal/FireTVPlayerPresenterDependencies.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FireTVPlayerPresenterDependencies.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 05.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol FireTVPlayerPresenterDependenciesProtocol: TimeStringFactoryProvider, LoggerProvider, ReachabilityServiceProvider {
12 |
13 | }
14 |
15 | struct FireTVPlayerPresenterDependencies: FireTVPlayerPresenterDependenciesProtocol {
16 | let timeStringFactory: TimeStringFactoryProtocol
17 | let logger: LoggerProtocol
18 | let reachabilityService: ReachabilityServiceProtocol
19 |
20 | init() throws {
21 | timeStringFactory = ServiceFactory.makeTimeStringFactory()
22 | logger = ServiceFactory.makeLogger()
23 | reachabilityService = try ServiceFactory.makeReachabilityService()
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/FireTVPlayer/internal/FireTVPlayerPresenterState.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FireTVPlayerPresenterState.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 05.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | enum FireTVPlayerPresenterState {
12 | case connected
13 | case disconnected
14 | case loading
15 | case error(Error)
16 | }
17 |
18 | extension FireTVPlayerPresenterState: Equatable {
19 | static func == (lhs: FireTVPlayerPresenterState, rhs: FireTVPlayerPresenterState) -> Bool {
20 | switch (lhs, rhs) {
21 | case (.connected, .connected), (.disconnected, .disconnected), (.loading, .loading):
22 | return true
23 | case (.error(let lhsError), .error(let rhsError)):
24 | let lhsErr = lhsError as NSError
25 | let rhsErr = rhsError as NSError
26 | return lhsErr == rhsErr
27 | default:
28 | return false
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/FireTVPlayer/internal/FireTVPlayerRouter.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FireTVPlayerRouter.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 05.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol FireTVPlayerRouterProtocol {
12 | func showNoWifiAlert(fromViewController viewController: UIViewController, title: String, message: String, buttonColor: UIColor, _ confirmHandler: @escaping () -> Void)
13 | }
14 |
15 | final class FireTVPlayerRouter: FireTVPlayerRouterProtocol {
16 | func showNoWifiAlert(fromViewController viewController: UIViewController, title: String, message: String, buttonColor: UIColor, _ confirmHandler: @escaping () -> Void) {
17 | let alertController = UIAlertController.makeErrorAlert(title: title, message: message, buttonColor: buttonColor, confirmHandler)
18 | viewController.present(alertController, animated: true, completion: nil)
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/FireTVPlayer/internal/MockFireTVPlayerInteractorDependencies.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MockFireTVPlayerInteractorDependencies.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 17.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct MockFireTVPlayerInteractorDependencies: FireTVPlayerInteractorDependenciesProtocol {
12 | let playerDiscoveryController: PlayerDiscoveryControllerProtocol
13 | let playerService: PlayerServiceProtocol
14 |
15 | init() {
16 | playerDiscoveryController = MockServiceFactory.makePlayerDiscoveryController()
17 | playerService = MockServiceFactory.makePlayerService()
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/FireTVSelection/FireTVSelectionViewControllerDependenciesProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FireTVSelectionViewControllerDependenciesProtocol.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 26.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | /// Protocol for the dependencies of a `FireTVSelectionViewController`
12 | /// Currently the only dependency is a `LoggerService` instance
13 | ///
14 | public protocol FireTVSelectionViewControllerDependenciesProtocol: LoggerProvider {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/FireTVSelection/FireTVSelectionWireframeError.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FireTVSelectionWireframeError.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 02.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | /// Enum representing errors thrown by the `FireTVSelectionWireframe`
12 | ///
13 | /// - couldNotFindResourceBundle: thrown if the resource bundle wasn't found
14 | /// - couldNotInstantiateInitialViewController: thrown if the initial view controller couldn't be instantiated
15 | /// - noViewControllersInNavigationController: thrown if outer navigation controller has no view controllers
16 | ///
17 | public enum FireTVSelectionWireframeError: Error {
18 | case couldNotFindResourceBundle
19 | case couldNotInstantiateInitialViewController
20 | case noViewControllersInNavigationController
21 | }
22 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/FireTVSelection/Models/FireTVMedia.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FireTVMedia.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 12.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | /// Represents the media which can be played
12 | /// on the built-in receiver app of a FireTV
13 | ///
14 | public struct FireTVMedia {
15 | let metadata: Metadata
16 | let url: URL
17 |
18 | /// Initializes the media
19 | ///
20 | /// - Parameters:
21 | /// - metadata: metadata describing the media
22 | /// - url: url of the media
23 | ///
24 | public init(metadata: Metadata, url: URL) {
25 | self.metadata = metadata
26 | self.url = url
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/FireTVSelection/ViewModels/FireTVSelectionViewViewModel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FireTVSelectionViewViewModel.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 23.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | /// Represents the view model for the fire tv selection view
12 | ///
13 | public struct FireTVSelectionViewViewModel {
14 | /// Declares if the close button is hidden
15 | ///
16 | let isCloseButtonHidden: Bool
17 | /// Specifies if the table view is hidden
18 | ///
19 | let isTableViewHidden: Bool
20 | /// Defines if the no devices label is hidden
21 | ///
22 | let isNoDevicesLabelHidden: Bool
23 | /// Specifies if the activity indicator is hidden
24 | ///
25 | let isActivityIndicatorViewHidden: Bool
26 | }
27 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/FireTVSelection/internal/FireTVSelectionInteractorDependencies.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FireTVSelectionInteractorDependencies.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 05.04.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol FireTVSelectionInteractorDependenciesProtocol: PlayerDiscoveryControllerProvider, PlayerDiscoveryServiceProvider, PlayerServiceProvider, LoggerProvider {
12 |
13 | }
14 |
15 | struct FireTVSelectionInteractorDependencies: FireTVSelectionInteractorDependenciesProtocol {
16 | let playerDiscoveryController: PlayerDiscoveryControllerProtocol
17 | let playerDiscoveryService: PlayerDiscoveryServiceProtocol
18 | let playerService: PlayerServiceProtocol
19 | let logger: LoggerProtocol
20 |
21 | init() {
22 | playerDiscoveryController = ServiceFactory.makePlayerDiscoveryController()
23 | playerDiscoveryService = ServiceFactory.makePlayerDiscoveryService()
24 | playerService = ServiceFactory.makePlayerService()
25 | logger = ServiceFactory.makeLogger()
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/FireTVSelection/internal/FireTVSelectionPresenterDependencies.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FireTVSelectionPresenterDependencies.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 05.04.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol FireTVSelectionPresenterDependenciesProtocol: LoggerProvider, ReachabilityServiceProvider {
12 |
13 | }
14 |
15 | struct FireTVSelectionPresenterDependencies: FireTVSelectionPresenterDependenciesProtocol {
16 | let logger: LoggerProtocol
17 | let reachabilityService: ReachabilityServiceProtocol
18 |
19 | init() throws {
20 | logger = ServiceFactory.makeLogger()
21 | reachabilityService = try ServiceFactory.makeReachabilityService()
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/FireTVSelection/internal/FireTVSelectionViewControllerDependencies.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FireTVSelectionViewControllerDependencies.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 25.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct FireTVSelectionViewControllerDependencies: FireTVSelectionViewControllerDependenciesProtocol {
12 | let logger: LoggerProtocol
13 |
14 | init() {
15 | logger = ServiceFactory.makeLogger()
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/FireTVSelection/internal/MockFireTVSelectionInteractorDependencies.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MockFireTVSelectionInteractorDependencies.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 17.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct MockFireTVSelectionInteractorDependencies: FireTVSelectionInteractorDependenciesProtocol {
12 | let playerDiscoveryController: PlayerDiscoveryControllerProtocol
13 | let playerDiscoveryService: PlayerDiscoveryServiceProtocol
14 | let playerService: PlayerServiceProtocol
15 | let logger: LoggerProtocol
16 |
17 | init() {
18 | playerDiscoveryController = MockServiceFactory.makePlayerDiscoveryController()
19 | playerDiscoveryService = MockServiceFactory.makePlayerDiscoveryService()
20 | playerService = MockServiceFactory.makePlayerService()
21 | logger = MockServiceFactory.makeLogger()
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/FireTVSelection/internal/ViewModels/FireTVSelectionPresenterState.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FireTVSelectionPresenterState.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 23.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | enum FireTVSelectionPresenterState {
12 | case loading
13 | case devicesFound
14 | case noDevices
15 | }
16 |
17 | extension FireTVSelectionPresenterState: Equatable {
18 | static func == (lhs: FireTVSelectionPresenterState, rhs: FireTVSelectionPresenterState) -> Bool {
19 | switch (lhs, rhs) {
20 | case (.loading, .loading):
21 | return true
22 | case (.devicesFound, .devicesFound):
23 | return true
24 | case (.noDevices, .noDevices):
25 | return true
26 | default:
27 | return false
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/FireTVSelection/internal/ViewModels/PlayerViewModel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PlayerViewModel.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 02.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct PlayerViewModel {
12 | let name: String
13 | }
14 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/Models/LogEvent.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LogEvent.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 25.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | /// Enum describing the log event types
12 | ///
13 | public enum LogEvent: String {
14 | case error
15 | case info
16 | case debug
17 | case verbose
18 | case warning
19 | case severe
20 |
21 | var displayString: String {
22 | switch self {
23 | case .error:
24 | return "[‼️]"
25 | case .info:
26 | return "[ℹ️]"
27 | case .debug:
28 | return "[💬]"
29 | case .verbose:
30 | return "[🔬]"
31 | case .warning:
32 | return "[⚠️]"
33 | case .severe:
34 | return "[🔥]"
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/Models/MetadataType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MetadataType.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 26.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | /// Enum for the possible metadata types
12 | ///
13 | /// - audio: the media is audio
14 | /// - drm: the media is drm
15 | /// - image: the media is an image
16 | /// - video: the media is a video
17 | ///
18 | public enum MetadataType: String, Codable {
19 | case audio
20 | case drm
21 | case image
22 | case video
23 | }
24 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/Models/PlayerData.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PlayerData.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 28.11.2017.
6 | // Copyright © 2017 Christian Elies. All rights reserved.
7 | //
8 |
9 | import AmazonFling
10 | import Foundation
11 |
12 | /// Represents data of player, like the current media position and status
13 | ///
14 | public struct PlayerData {
15 | var position: Int64?
16 | var status: PlayerStatus?
17 |
18 | init(status: MediaPlayerStatus, position: Int64) {
19 | self.status = PlayerStatus(rawValue: status.state().rawValue)
20 | self.position = position
21 | }
22 | }
23 |
24 | extension PlayerData: CustomStringConvertible {
25 | public var description: String {
26 | return "PlayerData(status: \(String(describing: status)), position: \(String(describing: position)))"
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/Models/PlayerStatus.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PlayerStatus.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 04.04.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | /// Enum describing all possible status of a player
12 | ///
13 | public enum PlayerStatus: UInt32 {
14 | /// Player currently has no media
15 | ///
16 | case noMedia = 0
17 | /// Player is preparing media for playback
18 | ///
19 | case preparingMedia
20 | /// Player is ready to play media
21 | ///
22 | case readyToPlay
23 | /// Player is playing media
24 | ///
25 | case playing
26 | /// Player playback is paused
27 | ///
28 | case paused
29 | /// Player is seeking
30 | ///
31 | case seeking
32 | /// Player playback has finished
33 | ///
34 | case finished
35 | /// Player has an error
36 | ///
37 | case error
38 |
39 | /// Returns a string representation of the status
40 | ///
41 | public var stringValue: String {
42 | return String(describing: self)
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/Models/SubtitleKind.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SubtitleKind.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 26.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | /// Enum for all possible subtitle types
12 | ///
13 | /// - subtitles: type for subtitles
14 | ///
15 | public enum SubtitleKind: String, Codable {
16 | case subtitles
17 | }
18 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/Protocols/LoggerProvider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // LoggerProvider.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 25.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | /// Protocol stating the use of a logger
12 | ///
13 | public protocol LoggerProvider {
14 | var logger: LoggerProtocol { get }
15 | }
16 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/Protocols/PlayerServiceDependenciesProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PlayerServiceDependenciesProtocol.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 25.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | /// Protocol declaring the dependencies for a `PlayerService` instance
12 | /// Currently only a logger is required
13 | ///
14 | public protocol PlayerServiceDependenciesProtocol: LoggerProvider {
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/Constants/MetricConstants.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MetricConstants.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 26.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct MetricConstants {
12 | struct ContentInsets {
13 | struct CloseButton {
14 | static let bottom: CGFloat = 0
15 | static let left: CGFloat = 40
16 | static let right: CGFloat = 0
17 | static let top: CGFloat = 0
18 | }
19 | }
20 |
21 | struct ImageInsets {
22 | struct BarButtonItemImage {
23 | static let bottom: CGFloat = -8
24 | static let left: CGFloat = 0
25 | static let right: CGFloat = -8
26 | static let top: CGFloat = 0
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/Constants/StringConstants.swift:
--------------------------------------------------------------------------------
1 | //
2 | // StringConstants.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 26.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct StringConstants {
12 | struct Alert {
13 | struct Title {
14 | static let error = "Error"
15 | }
16 |
17 | struct Message {
18 | static let discoveryFailure = "A discovery failure occurred. View will be closed."
19 | static let noWifi = "You are not connected to a wifi network. The connection is required."
20 | }
21 | }
22 |
23 | struct FireTVSelection {
24 | static let noDevices = "No devices found"
25 | }
26 |
27 | struct Labels {
28 | static let ok = "OK"
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/Extensions/UIAlertController+MakeAlert.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIAlertController+MakeAlert.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 28.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | extension UIAlertController {
12 | static func makeErrorAlert(title: String, message: String, buttonColor: UIColor, _ handler: @escaping () -> Void) -> UIAlertController {
13 | let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
14 |
15 | let okAction = UIAlertAction(title: StringConstants.Labels.ok, style: .default) { _ in
16 | handler()
17 | }
18 | alertController.addAction(okAction)
19 |
20 | alertController.view.tintColor = buttonColor
21 |
22 | return alertController
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/Extensions/UIColor+Colors.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIColor+Colors.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 16.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | extension UIColor {
12 | static var autumnFoliage: UIColor {
13 | return .init(red: 118/255.0, green: 54/255.0, blue: 38/255.0, alpha: 1)
14 | }
15 |
16 | static var deepAqua: UIColor {
17 | return .init(red: 0/255.0, green: 59/255.0, blue: 70/255.0, alpha: 1)
18 | }
19 |
20 | static var ocean: UIColor {
21 | return .init(red: 0/255.0, green: 59/255.0, blue: 70/255.0, alpha: 1)
22 | }
23 |
24 | static var seafoam: UIColor {
25 | return .init(red: 196/255.0, green: 223/255.0, blue: 230/255.0, alpha: 1)
26 | }
27 |
28 | static var shadow: UIColor {
29 | return .init(red: 42/255.0, green: 49/255.0, blue: 50/255.0, alpha: 1)
30 | }
31 |
32 | static var stone: UIColor {
33 | return .init(red: 51/255.0, green: 107/255.0, blue: 135/255.0, alpha: 1)
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/PlayerDiscovery/Controller/PlayerDiscoveryControllerDelegateProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PlayerDiscoveryControllerDelegateProtocol.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 04.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import AmazonFling
10 | import Foundation
11 |
12 | protocol PlayerDiscoveryControllerDelegateProtocol: class {
13 | func deviceDiscovered(_ discoveryController: PlayerDiscoveryControllerProtocol, device: RemoteMediaPlayer)
14 | func deviceLost(_ discoveryController: PlayerDiscoveryControllerProtocol, device: RemoteMediaPlayer)
15 | func discoveryFailure(_ discoveryController: PlayerDiscoveryControllerProtocol)
16 | }
17 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/PlayerDiscovery/Controller/PlayerDiscoveryControllerDependencies.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PlayerDiscoveryControllerDependencies.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 26.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol PlayerDiscoveryControllerDependenciesProtocol: LoggerProvider {
12 |
13 | }
14 |
15 | struct PlayerDiscoveryControllerDependencies: PlayerDiscoveryControllerDependenciesProtocol {
16 | let logger: LoggerProtocol
17 |
18 | init() {
19 | logger = ServiceFactory.makeLogger()
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/PlayerDiscovery/Controller/PlayerDiscoveryControllerProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PlayerDiscoveryControllerProtocol.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 06.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import AmazonFling
10 | import Foundation
11 |
12 | protocol PlayerDiscoveryControllerProtocol {
13 | var dependencies: PlayerDiscoveryControllerDependenciesProtocol? { get set }
14 | var devices: [RemoteMediaPlayer] { get }
15 | var delegate: PlayerDiscoveryControllerDelegateProtocol? { get set }
16 | func startSearch(forPlayerId playerId: String?)
17 | func stopSearch()
18 | }
19 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/PlayerDiscovery/Models/DiscoveringInfo.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DiscoveringInfo.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 28.03.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import AmazonFling
10 | import Foundation
11 |
12 | struct DiscoveringInfo {
13 | let status: DiscoveringInfoStatus
14 | var device: RemoteMediaPlayer?
15 |
16 | init(device: RemoteMediaPlayer) {
17 | status = .deviceDiscovered
18 | self.device = device
19 | }
20 |
21 | init(status: DiscoveringInfoStatus) {
22 | self.status = status
23 | }
24 |
25 | init(status: DiscoveringInfoStatus, device: RemoteMediaPlayer) {
26 | self.status = status
27 | self.device = device
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/PlayerDiscovery/Models/DiscoveringInfoStatus.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DiscoveringInfoStatus.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 28.03.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | enum DiscoveringInfoStatus {
12 | case deviceDiscovered
13 | case deviceLost
14 | case discoveryFailure
15 | }
16 |
17 | extension DiscoveringInfoStatus: Equatable {
18 | static func == (lhs: DiscoveringInfoStatus, rhs: DiscoveringInfoStatus) -> Bool {
19 | switch (lhs, rhs) {
20 | case (.deviceDiscovered, .deviceDiscovered):
21 | return true
22 | case (.deviceLost, .deviceLost):
23 | return true
24 | case (.discoveryFailure, .discoveryFailure):
25 | return true
26 | default:
27 | return false
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/PlayerDiscovery/Models/DiscoveringStatus.swift:
--------------------------------------------------------------------------------
1 | //
2 | // DiscoveringStatus.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 28.03.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | enum DiscoveringStatus {
12 | case ready
13 | case started
14 | case stopped
15 | }
16 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/PlayerDiscovery/Service/MockPlayerDiscoveryServiceDependencies.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MockPlayerDiscoveryServiceDependencies.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 17.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct MockPlayerDiscoveryServiceDependencies: PlayerDiscoveryServiceDependenciesProtocol {
12 | let playerDiscoveryController: PlayerDiscoveryControllerProtocol
13 | let logger: LoggerProtocol
14 |
15 | init() {
16 | playerDiscoveryController = MockServiceFactory.makePlayerDiscoveryController()
17 | logger = MockServiceFactory.makeLogger()
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/PlayerDiscovery/Service/PlayerDiscoveryServiceDependencies.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PlayerDiscoveryServiceDependencies.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 17.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol PlayerDiscoveryServiceDependenciesProtocol: PlayerDiscoveryControllerProvider, LoggerProvider {
12 |
13 | }
14 |
15 | struct PlayerDiscoveryServiceDependencies: PlayerDiscoveryServiceDependenciesProtocol {
16 | let playerDiscoveryController: PlayerDiscoveryControllerProtocol
17 | let logger: LoggerProtocol
18 |
19 | init() {
20 | playerDiscoveryController = ServiceFactory.makePlayerDiscoveryController()
21 | logger = ServiceFactory.makeLogger()
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/Services/FireTVManager/FireTVManagerDependencies.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FireTVManagerDependencies.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 30.03.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol FireTVManagerDependenciesProtocol: PlayerDiscoveryControllerProvider, PlayerDiscoveryServiceProvider, ReachabilityServiceProvider {
12 |
13 | }
14 |
15 | struct FireTVManagerDependencies: FireTVManagerDependenciesProtocol {
16 | let playerDiscoveryController: PlayerDiscoveryControllerProtocol
17 | let playerDiscoveryService: PlayerDiscoveryServiceProtocol
18 | let reachabilityService: ReachabilityServiceProtocol
19 |
20 | init() throws {
21 | playerDiscoveryController = ServiceFactory.makePlayerDiscoveryController()
22 | playerDiscoveryService = ServiceFactory.makePlayerDiscoveryService()
23 | reachabilityService = try ServiceFactory.makeReachabilityService()
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/Services/FireTVManager/FireTVManagerProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FireTVManagerProtocol.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 30.03.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import AmazonFling
10 | import Foundation
11 | import RxSwift
12 |
13 | protocol FireTVManagerProtocol {
14 | var devicesObservable: Observable<[RemoteMediaPlayer]> { get }
15 | var devices: [RemoteMediaPlayer] { get }
16 |
17 | func startDiscovery(forPlayerID playerID: String) throws
18 | func stopDiscovery()
19 | }
20 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/Services/Logger/Date+StringValue.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Date+StringValue.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 25.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | extension Date {
12 | var stringValue: String {
13 | return Logger.dateFormatter.string(from: self)
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/Services/Player/MockPlayerServiceDependencies.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MockPlayerServiceDependencies.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 25.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct MockPlayerServiceDependencies: PlayerServiceDependenciesProtocol {
12 | let logger: LoggerProtocol
13 |
14 | init() {
15 | logger = MockServiceFactory.makeLogger()
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/Services/Player/PlayerServiceDependencies.swift:
--------------------------------------------------------------------------------
1 | //
2 | // PlayerServiceDependencies.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 25.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct PlayerServiceDependencies: PlayerServiceDependenciesProtocol {
12 | let logger: LoggerProtocol
13 |
14 | init() {
15 | logger = ServiceFactory.makeLogger()
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/Services/Reachability/MockReachabilityService.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MockReachabilityService.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 27.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import Reachability
11 | import RxSwift
12 |
13 | final class MockReachabilityService: ReachabilityServiceProtocol {
14 | var reachability: Reachability
15 | var reachabilityObservable: Observable
16 | var listeningReachability: Bool
17 |
18 | init?() {
19 | guard let reachability = Reachability() else {
20 | return nil
21 | }
22 |
23 | self.reachability = reachability
24 | reachabilityObservable = Observable.just(reachability)
25 | listeningReachability = false
26 | }
27 |
28 | func startListening() throws {
29 |
30 | }
31 |
32 | func stopListening() {
33 |
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/Services/Reachability/ReachabilityServiceProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ReachabilityServiceProtocol.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 30.03.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import Reachability
11 | import RxSwift
12 |
13 | protocol ReachabilityServiceProtocol {
14 | var reachability: Reachability { get }
15 | var reachabilityObservable: Observable { get }
16 | var listeningReachability: Bool { get }
17 |
18 | init?()
19 | func startListening() throws
20 | func stopListening()
21 | }
22 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/Services/ServiceFactoryProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ServiceFactoryProtocol.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 30.03.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import AmazonFling
10 | import Foundation
11 |
12 | protocol ServiceFactoryProtocol {
13 | static func makePlayerDiscoveryController() -> PlayerDiscoveryControllerProtocol
14 | static func makePlayerDiscoveryService() -> PlayerDiscoveryServiceProtocol
15 | static func makePlayerService() -> PlayerServiceProtocol
16 | static func makePlayerService(withPlayer player: RemoteMediaPlayer) -> PlayerServiceProtocol
17 | static func makeTimeStringFactory() -> TimeStringFactoryProtocol
18 | static func makeLogger() -> LoggerProtocol
19 | static func makeReachabilityService() throws -> ReachabilityServiceProtocol
20 | }
21 |
--------------------------------------------------------------------------------
/FireTVKit/Classes/internal/Services/TimeStringFactory.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TimeStringFactory.swift
3 | // FireTVKit
4 | //
5 | // Created by crelies on 09.05.2018.
6 | // Copyright © 2018 Christian Elies. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | protocol TimeStringFactoryProvider {
12 | var timeStringFactory: TimeStringFactoryProtocol { get }
13 | }
14 |
15 | protocol TimeStringFactoryProtocol {
16 | func makeTimeString(fromMilliseconds milliseconds: Float) -> String
17 | }
18 |
19 | final class TimeStringFactory: TimeStringFactoryProtocol {
20 | func makeTimeString(fromMilliseconds milliseconds: Float) -> String {
21 | let valueInSeconds = Int(milliseconds / 1000)
22 | let hours = Int(valueInSeconds / 60 / 60)
23 | let minutes = Int(valueInSeconds / 60) - (hours * 60)
24 | let seconds = Int(valueInSeconds) - (hours * 60 * 60) - (minutes * 60)
25 |
26 | return String(format: "%02d:%02d:%02d", hours, minutes, seconds)
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/_Pods.xcodeproj:
--------------------------------------------------------------------------------
1 | Example/Pods/Pods.xcodeproj
--------------------------------------------------------------------------------
/docs/docsets/FireTVKit.docset/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleIdentifier
6 | com.jazzy.firetvkit
7 | CFBundleName
8 | FireTVKit
9 | DocSetPlatformFamily
10 | firetvkit
11 | isDashDocset
12 |
13 | dashIndexFilePath
14 | index.html
15 | isJavaScriptEnabled
16 |
17 | DashDocSetFamily
18 | dashtoc
19 |
20 |
21 |
--------------------------------------------------------------------------------
/docs/docsets/FireTVKit.docset/Contents/Resources/Documents/img/carat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/docs/docsets/FireTVKit.docset/Contents/Resources/Documents/img/carat.png
--------------------------------------------------------------------------------
/docs/docsets/FireTVKit.docset/Contents/Resources/Documents/img/dash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/docs/docsets/FireTVKit.docset/Contents/Resources/Documents/img/dash.png
--------------------------------------------------------------------------------
/docs/docsets/FireTVKit.docset/Contents/Resources/Documents/img/gh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/docs/docsets/FireTVKit.docset/Contents/Resources/Documents/img/gh.png
--------------------------------------------------------------------------------
/docs/docsets/FireTVKit.docset/Contents/Resources/Documents/undocumented.json:
--------------------------------------------------------------------------------
1 | {
2 | "warnings": [
3 |
4 | ],
5 | "source_directory": "/Users/crelies/dev/public/mobile/FireTVKit/Example/Pods"
6 | }
--------------------------------------------------------------------------------
/docs/docsets/FireTVKit.docset/Contents/Resources/docSet.dsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/docs/docsets/FireTVKit.docset/Contents/Resources/docSet.dsidx
--------------------------------------------------------------------------------
/docs/docsets/FireTVKit.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/docs/docsets/FireTVKit.tgz
--------------------------------------------------------------------------------
/docs/img/carat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/docs/img/carat.png
--------------------------------------------------------------------------------
/docs/img/dash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/docs/img/dash.png
--------------------------------------------------------------------------------
/docs/img/gh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/docs/img/gh.png
--------------------------------------------------------------------------------
/docs/undocumented.json:
--------------------------------------------------------------------------------
1 | {
2 | "warnings": [
3 |
4 | ],
5 | "source_directory": "/Users/crelies/dev/public/mobile/FireTVKit/Example/Pods"
6 | }
--------------------------------------------------------------------------------
/images/dark mock player selection in no devices state.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/images/dark mock player selection in no devices state.gif
--------------------------------------------------------------------------------
/images/dark mock player selection in no wifi state.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/images/dark mock player selection in no wifi state.gif
--------------------------------------------------------------------------------
/images/dark mock player selection.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/images/dark mock player selection.gif
--------------------------------------------------------------------------------
/images/dark mock player.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/images/dark mock player.gif
--------------------------------------------------------------------------------
/images/light mock player.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/chris-swift-dev/FireTVKit/6d62ac6e4c2c2b5c505fad5f7de5efedeaef5f77/images/light mock player.gif
--------------------------------------------------------------------------------
/jazzy.yaml:
--------------------------------------------------------------------------------
1 | author: Christian Elies
2 |
3 | min_acl: public
4 |
5 | source_directory: ./Example/Pods
6 |
7 | include: ["./FireTVKit/Classes/**"]
8 |
9 | theme: apple
10 |
11 | github_url: https://github.com/crelies/FireTVKit
12 |
13 | readme: ./README.md
14 |
15 | copyright: Copyright (c) 2018 Christian Elies
16 |
17 | module: FireTVKit
18 |
19 | sdk: iphone
20 |
21 | xcodebuild_arguments: [-scheme, FireTVKit]
22 |
23 | output: ./docs
24 |
--------------------------------------------------------------------------------