├── .swiftlint.yml ├── OpenMarket-MVVM-Rx.xcodeproj ├── project.pbxproj └── xcshareddata │ └── xcschemes │ └── OpenMarket-MVVM-Rx.xcscheme ├── OpenMarket-MVVM-Rx ├── App │ ├── AppDelegate.swift │ └── SceneDelegate.swift ├── Extension │ ├── DateFormatter+DateFormat.swift │ ├── Double+DecimalFormat.swift │ ├── UIImageView+Load+Cache.swift │ ├── UILabel+Style.swift │ ├── UIStackView+Style.swift │ └── URLRequest+Initializer.swift ├── Info.plist ├── Model │ ├── Currency.swift │ ├── DetailViewProduct.swift │ ├── Product.swift │ ├── ProductImage.swift │ ├── ProductPage.swift │ └── UniqueProduct.swift ├── Network │ ├── MultipartFormData.swift │ ├── NetworkProvider.swift │ └── OpenMarketURL.swift ├── Presentation │ ├── FlowCoordinator.swift │ ├── ProductDetailView │ │ ├── View │ │ │ ├── ProductDetailImageCell.swift │ │ │ └── ProductDetailViewController.swift │ │ └── ViewModel │ │ │ └── ProductDetailViewModel.swift │ └── ProductListView │ │ ├── View │ │ ├── BannerCell.swift │ │ ├── FooterView.swift │ │ ├── GridListCell.swift │ │ ├── HeaderView.swift │ │ ├── ProductListViewController.swift │ │ ├── TableListCell.swift │ │ └── UnderlinedMenuBar.swift │ │ └── ViewModel │ │ ├── ProductListViewModel.swift │ │ ├── ProductListViewModelAction.swift │ │ └── UnderlinedMenuBarViewModel.swift ├── Protocol │ ├── APIProtocol.swift │ ├── BaseURLProtocol.swift │ └── URLSessionProtocol.swift ├── Resource │ ├── Assets.xcassets │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ └── Base.lproj │ │ └── LaunchScreen.storyboard └── Utility │ ├── AlertFactory.swift │ ├── CustomColor.swift │ ├── ImageCacheManager.swift │ └── JSONParser.swift ├── OpenMarket-MVVM-RxTests ├── JSONParserTests.swift ├── Mock │ ├── MockProduct.json │ ├── MockProductPage.json │ └── MockURLSession.swift ├── MockNetworkProviderTests.swift ├── NetworkProviderTests.swift └── ProductListViewModelTests.swift └── README.md /.swiftlint.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/.swiftlint.yml -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx.xcodeproj/project.pbxproj -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx.xcodeproj/xcshareddata/xcschemes/OpenMarket-MVVM-Rx.xcscheme: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx.xcodeproj/xcshareddata/xcschemes/OpenMarket-MVVM-Rx.xcscheme -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/App/AppDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/App/AppDelegate.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/App/SceneDelegate.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/App/SceneDelegate.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Extension/DateFormatter+DateFormat.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Extension/DateFormatter+DateFormat.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Extension/Double+DecimalFormat.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Extension/Double+DecimalFormat.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Extension/UIImageView+Load+Cache.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Extension/UIImageView+Load+Cache.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Extension/UILabel+Style.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Extension/UILabel+Style.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Extension/UIStackView+Style.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Extension/UIStackView+Style.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Extension/URLRequest+Initializer.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Extension/URLRequest+Initializer.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Info.plist -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Model/Currency.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Model/Currency.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Model/DetailViewProduct.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Model/DetailViewProduct.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Model/Product.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Model/Product.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Model/ProductImage.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Model/ProductImage.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Model/ProductPage.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Model/ProductPage.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Model/UniqueProduct.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Model/UniqueProduct.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Network/MultipartFormData.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Network/MultipartFormData.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Network/NetworkProvider.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Network/NetworkProvider.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Network/OpenMarketURL.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Network/OpenMarketURL.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Presentation/FlowCoordinator.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Presentation/FlowCoordinator.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Presentation/ProductDetailView/View/ProductDetailImageCell.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Presentation/ProductDetailView/View/ProductDetailImageCell.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Presentation/ProductDetailView/View/ProductDetailViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Presentation/ProductDetailView/View/ProductDetailViewController.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Presentation/ProductDetailView/ViewModel/ProductDetailViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Presentation/ProductDetailView/ViewModel/ProductDetailViewModel.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Presentation/ProductListView/View/BannerCell.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Presentation/ProductListView/View/BannerCell.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Presentation/ProductListView/View/FooterView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Presentation/ProductListView/View/FooterView.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Presentation/ProductListView/View/GridListCell.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Presentation/ProductListView/View/GridListCell.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Presentation/ProductListView/View/HeaderView.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Presentation/ProductListView/View/HeaderView.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Presentation/ProductListView/View/ProductListViewController.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Presentation/ProductListView/View/ProductListViewController.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Presentation/ProductListView/View/TableListCell.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Presentation/ProductListView/View/TableListCell.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Presentation/ProductListView/View/UnderlinedMenuBar.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Presentation/ProductListView/View/UnderlinedMenuBar.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Presentation/ProductListView/ViewModel/ProductListViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Presentation/ProductListView/ViewModel/ProductListViewModel.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Presentation/ProductListView/ViewModel/ProductListViewModelAction.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Presentation/ProductListView/ViewModel/ProductListViewModelAction.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Presentation/ProductListView/ViewModel/UnderlinedMenuBarViewModel.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Presentation/ProductListView/ViewModel/UnderlinedMenuBarViewModel.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Protocol/APIProtocol.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Protocol/APIProtocol.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Protocol/BaseURLProtocol.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Protocol/BaseURLProtocol.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Protocol/URLSessionProtocol.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Protocol/URLSessionProtocol.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Resource/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Resource/Assets.xcassets/AccentColor.colorset/Contents.json -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Resource/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Resource/Assets.xcassets/Contents.json -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Resource/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Resource/Base.lproj/LaunchScreen.storyboard -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Utility/AlertFactory.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Utility/AlertFactory.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Utility/CustomColor.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Utility/CustomColor.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Utility/ImageCacheManager.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Utility/ImageCacheManager.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-Rx/Utility/JSONParser.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-Rx/Utility/JSONParser.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-RxTests/JSONParserTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-RxTests/JSONParserTests.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-RxTests/Mock/MockProduct.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-RxTests/Mock/MockProduct.json -------------------------------------------------------------------------------- /OpenMarket-MVVM-RxTests/Mock/MockProductPage.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-RxTests/Mock/MockProductPage.json -------------------------------------------------------------------------------- /OpenMarket-MVVM-RxTests/Mock/MockURLSession.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-RxTests/Mock/MockURLSession.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-RxTests/MockNetworkProviderTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-RxTests/MockNetworkProviderTests.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-RxTests/NetworkProviderTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-RxTests/NetworkProviderTests.swift -------------------------------------------------------------------------------- /OpenMarket-MVVM-RxTests/ProductListViewModelTests.swift: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/OpenMarket-MVVM-RxTests/ProductListViewModelTests.swift -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/just1103/MVVM-RX-OpenMarket/HEAD/README.md --------------------------------------------------------------------------------