From 3defa08c749cbc6b056bf7f05524b8c0f3c1bd2b Mon Sep 17 00:00:00 2001 From: David Britch Date: Mon, 3 Apr 2017 16:32:53 +0100 Subject: [PATCH 1/8] Replaced Unity with Autofac. --- .../eShopOnContainers.Core/App.xaml.cs | 3 +- .../ViewModels/Base/ViewModelLocator.cs | 70 ++++++++-------- .../ViewModels/SettingsViewModel.cs | 4 +- .../eShopOnContainers.Core.csproj | 82 +------------------ .../eShopOnContainers.Core/packages.config | 21 ----- .../eShopOnContainers.Core/project.json | 25 ++++++ .../eShopOnContainers.Droid.csproj | 13 +-- .../eShopOnContainers.Droid/packages.config | 1 - .../eShopOnContainers.Windows/project.json | 1 - .../eShopOnContainers.iOS.csproj | 4 - .../eShopOnContainers.iOS/packages.config | 1 - 11 files changed, 66 insertions(+), 159 deletions(-) mode change 100644 => 100755 src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs delete mode 100644 src/Mobile/eShopOnContainers/eShopOnContainers.Core/packages.config create mode 100644 src/Mobile/eShopOnContainers/eShopOnContainers.Core/project.json mode change 100644 => 100755 src/Mobile/eShopOnContainers/eShopOnContainers.Windows/project.json diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml.cs index f9c43afc0..70759cc03 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/App.xaml.cs @@ -27,8 +27,7 @@ namespace eShopOnContainers private void InitApp() { UseMockServices = Settings.UseMocks; - ViewModelLocator.Initialize(); - ViewModelLocator.UpdateDependencies(UseMockServices); + ViewModelLocator.RegisterDependencies(UseMockServices); } private Task InitNavigation() diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs old mode 100644 new mode 100755 index c9e253a2e..90abb8f09 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs @@ -1,4 +1,4 @@ -using Microsoft.Practices.Unity; +using Autofac; using eShopOnContainers.Services; using System; using System.Globalization; @@ -16,7 +16,7 @@ namespace eShopOnContainers.Core.ViewModels.Base { public static class ViewModelLocator { - private static readonly IUnityContainer _unityContainer = new UnityContainer(); + private static IContainer _container; public static readonly BindableProperty AutoWireViewModelProperty = BindableProperty.CreateAttached("AutoWireViewModel", typeof(bool), typeof(ViewModelLocator), default(bool), propertyChanged: OnAutoWireViewModelChanged); @@ -33,56 +33,56 @@ namespace eShopOnContainers.Core.ViewModels.Base public static bool UseMockService { get; set; } - public static void Initialize() + public static void RegisterDependencies(bool useMockServices) { - // Services - _unityContainer.RegisterType(); - _unityContainer.RegisterType(new ContainerControlledLifetimeManager()); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); + var builder = new ContainerBuilder(); // View models - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - _unityContainer.RegisterType(); - } + builder.RegisterType(); + builder.RegisterType(); + builder.RegisterType(); + builder.RegisterType(); + builder.RegisterType(); + builder.RegisterType(); + builder.RegisterType(); + builder.RegisterType(); + + // Services + builder.RegisterType().As().SingleInstance(); + builder.RegisterType().As(); + builder.RegisterType().As(); + builder.RegisterType().As(); + builder.RegisterType().As(); - public static void UpdateDependencies(bool useMockServices) - { - // Change injected dependencies if (useMockServices) { - _unityContainer.RegisterInstance(new CatalogMockService()); - _unityContainer.RegisterInstance(new BasketMockService()); - _unityContainer.RegisterInstance(new OrderMockService()); - _unityContainer.RegisterInstance(new UserMockService()); + builder.RegisterInstance(new CatalogMockService()).As(); + builder.RegisterInstance(new BasketMockService()).As(); + builder.RegisterInstance(new OrderMockService()).As(); + builder.RegisterInstance(new UserMockService()).As(); UseMockService = true; } else { - var requestProvider = Resolve(); - _unityContainer.RegisterInstance(new CatalogService(requestProvider)); - _unityContainer.RegisterInstance(new BasketService(requestProvider)); - _unityContainer.RegisterInstance(new OrderService(requestProvider)); - _unityContainer.RegisterInstance(new UserService(requestProvider)); + builder.RegisterType().As().SingleInstance(); + builder.RegisterType().As().SingleInstance(); + builder.RegisterType().As().SingleInstance(); + builder.RegisterType().As().SingleInstance(); UseMockService = false; } + + if (_container != null) + { + _container.Dispose(); + } + _container = builder.Build(); } public static T Resolve() { - return _unityContainer.Resolve(); + return _container.Resolve(); } private static void OnAutoWireViewModelChanged(BindableObject bindable, object oldValue, object newValue) @@ -103,7 +103,7 @@ namespace eShopOnContainers.Core.ViewModels.Base { return; } - var viewModel = _unityContainer.Resolve(viewModelType); + var viewModel = _container.Resolve(viewModelType); view.BindingContext = viewModel; } } diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs index c5a58b745..7d47e882a 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs @@ -71,16 +71,14 @@ namespace eShopOnContainers.Core.ViewModels private void MockServices() { - ViewModelLocator.UpdateDependencies(!UseAzureServices); + ViewModelLocator.RegisterDependencies(!UseAzureServices); UpdateInfo(); } public override Task InitializeAsync(object navigationData) { UpdateInfo(); - Endpoint = Settings.UrlBase; - return base.InitializeAsync(navigationData); } diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/eShopOnContainers.Core.csproj b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/eShopOnContainers.Core.csproj index c3211d837..37587b90a 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/eShopOnContainers.Core.csproj +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/eShopOnContainers.Core.csproj @@ -11,11 +11,11 @@ eShopOnContainers.Core eShopOnContainers.Core v4.5 - Profile259 512 {786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Profile111 true @@ -169,85 +169,7 @@ - - - - - ..\..\..\..\packages\Acr.UserDialogs.6.3.3\lib\portable-win+net45+wp8+win8+wpa81\Acr.UserDialogs.dll - True - - - ..\..\..\..\packages\Acr.UserDialogs.6.3.3\lib\portable-win+net45+wp8+win8+wpa81\Acr.UserDialogs.Interface.dll - True - - - ..\..\..\..\packages\Xamarin.FFImageLoading.2.2.6-pre-256\lib\portable-net45+win8+wpa81+wp8\FFImageLoading.dll - True - - - ..\..\..\..\packages\Xamarin.FFImageLoading.Forms.2.2.6-pre-256\lib\portable-net45+win8+wpa81+wp8\FFImageLoading.Forms.dll - True - - - ..\..\..\..\packages\Xamarin.FFImageLoading.2.2.6-pre-256\lib\portable-net45+win8+wpa81+wp8\FFImageLoading.Platform.dll - True - - - ..\..\..\..\packages\IdentityModel.1.3.1\lib\portable-net45+wp80+win8+wpa81\IdentityModel.Portable.dll - True - - - ..\..\..\..\packages\Unity.4.0.1\lib\portable-net45+wp80+win8+wpa81+MonoAndroid10+MonoTouch10\Microsoft.Practices.Unity.dll - True - - - ..\..\..\..\packages\Newtonsoft.Json.9.0.2-beta1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll - True - - - ..\..\..\..\packages\Xam.Plugins.Settings.2.6.0.12-beta\lib\portable-net45+wp80+win8+wpa81\Plugin.Settings.dll - True - - - ..\..\..\..\packages\Xam.Plugins.Settings.2.6.0.12-beta\lib\portable-net45+wp80+win8+wpa81\Plugin.Settings.Abstractions.dll - True - - - ..\..\..\..\packages\SlideOverKit.2.1.4\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+MonoTouch10+Xamarin.iOS10\SlideOverKit.dll - True - - - ..\..\..\..\packages\Splat.1.6.2\lib\Portable-net45+win+wpa81+wp80\Splat.dll - True - - - ..\..\..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.dll - True - - - ..\..\..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Extensions.dll - True - - - ..\..\..\..\packages\Microsoft.Net.Http.2.2.29\lib\portable-net40+sl4+win8+wp71+wpa81\System.Net.Http.Primitives.dll - True - - - ..\..\..\..\packages\Xamarin.Forms.2.3.3.175\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Core.dll - True - - - ..\..\..\..\packages\Xamarin.Forms.Pages.2.3.3.175\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10\Xamarin.Forms.Pages.dll - True - - - ..\..\..\..\packages\Xamarin.Forms.2.3.3.175\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Platform.dll - True - - - ..\..\..\..\packages\Xamarin.Forms.2.3.3.175\lib\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Xaml.dll - True - + diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/packages.config b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/packages.config deleted file mode 100644 index 5f01c8896..000000000 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/packages.config +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/project.json b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/project.json new file mode 100644 index 000000000..20f36e083 --- /dev/null +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/project.json @@ -0,0 +1,25 @@ +{ + "dependencies": { + "Acr.UserDialogs": "6.3.3", + "Autofac": "4.4.0", + "CommonServiceLocator": "1.3", + "IdentityModel": "1.3.1", + "Microsoft.Bcl": "1.1.10", + "Microsoft.Bcl.Build": "1.0.21", + "Microsoft.Net.Http": "2.2.29", + "modernhttpclient": "2.4.2", + "Newtonsoft.Json": "9.0.2-beta1", + "SlideOverKit": "2.1.4", + "Splat": "1.6.2", + "Xam.Plugins.Settings": "2.6.0.12-beta", + "Xamarin.FFImageLoading": "2.2.6-pre-256", + "Xamarin.FFImageLoading.Forms": "2.2.6-pre-256", + "Xamarin.Forms": "2.3.3.175", + "Xamarin.Forms.Pages": "2.3.3.175", + "Xamarin.Forms.Theme.Base": "1.0.0.43-pre1", + "Xamarin.Forms.Theme.Light": "1.0.0.43-pre1" + }, + "frameworks": { + ".NETPortable,Version=v4.5,Profile=Profile111": {} + } +} \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Droid/eShopOnContainers.Droid.csproj b/src/Mobile/eShopOnContainers/eShopOnContainers.Droid/eShopOnContainers.Droid.csproj index 7e9dbb852..0a02480c9 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Droid/eShopOnContainers.Droid.csproj +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Droid/eShopOnContainers.Droid.csproj @@ -21,10 +21,11 @@ armeabi,armeabi-v7a,x86 - + 1G + True @@ -37,14 +38,8 @@ True None False - False - False 1G Xamarin - False - False - False - False pdbonly @@ -102,10 +97,6 @@ ..\..\..\..\packages\CommonServiceLocator.1.3\lib\portable-net4+sl5+netcore45+wpa81+wp8\Microsoft.Practices.ServiceLocation.dll True - - ..\..\..\..\packages\Unity.4.0.1\lib\portable-net45+wp80+win8+wpa81+MonoAndroid10+MonoTouch10\Microsoft.Practices.Unity.dll - True - ..\..\..\..\packages\modernhttpclient.2.4.2\lib\MonoAndroid\ModernHttpClient.dll True diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Droid/packages.config b/src/Mobile/eShopOnContainers/eShopOnContainers.Droid/packages.config index 2f46c3e39..3d9f0c8a8 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Droid/packages.config +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Droid/packages.config @@ -35,7 +35,6 @@ - diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/project.json b/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/project.json old mode 100644 new mode 100755 index 42f8b9552..b6c67c002 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/project.json +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Windows/project.json @@ -5,7 +5,6 @@ "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0", "Newtonsoft.Json": "9.0.1", "SlideOverKit": "2.1.4", - "Unity": "4.0.1", "Xam.Plugins.Settings": "2.6.0.12-beta", "Xamarin.FFImageLoading": "2.2.6-pre-256", "Xamarin.FFImageLoading.Forms": "2.2.6-pre-256", diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.iOS/eShopOnContainers.iOS.csproj b/src/Mobile/eShopOnContainers/eShopOnContainers.iOS/eShopOnContainers.iOS.csproj index 99f033a1d..fa1114dd7 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.iOS/eShopOnContainers.iOS.csproj +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.iOS/eShopOnContainers.iOS.csproj @@ -166,10 +166,6 @@ ..\..\..\..\packages\CommonServiceLocator.1.3\lib\portable-net4+sl5+netcore45+wpa81+wp8\Microsoft.Practices.ServiceLocation.dll True - - ..\..\..\..\packages\Unity.4.0.1\lib\portable-net45+wp80+win8+wpa81+MonoAndroid10+MonoTouch10\Microsoft.Practices.Unity.dll - True - ..\..\..\..\packages\modernhttpclient.2.4.2\lib\Xamarin.iOS10\ModernHttpClient.dll True diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.iOS/packages.config b/src/Mobile/eShopOnContainers/eShopOnContainers.iOS/packages.config index 75be50fe1..de074af61 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.iOS/packages.config +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.iOS/packages.config @@ -11,7 +11,6 @@ - From 5563da46b5b6ca1a84f1392e83a1568adaeac7f1 Mon Sep 17 00:00:00 2001 From: David Britch Date: Wed, 5 Apr 2017 10:48:17 +0100 Subject: [PATCH 2/8] Unused namespace removed. --- .../eShopOnContainers.Core/Helpers/Settings.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Helpers/Settings.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Helpers/Settings.cs index 97223631e..24da4fd2b 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Helpers/Settings.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Helpers/Settings.cs @@ -1,4 +1,3 @@ -using eShopOnContainers.Core.ViewModels.Base; using Plugin.Settings; using Plugin.Settings.Abstractions; @@ -32,7 +31,6 @@ namespace eShopOnContainers.Core.Helpers #endregion - public static string AuthAccessToken { get @@ -57,7 +55,6 @@ namespace eShopOnContainers.Core.Helpers } } - public static bool UseMocks { get From 25aeb2f9aba280aded3b5648404eadedea875aba Mon Sep 17 00:00:00 2001 From: David Britch Date: Wed, 5 Apr 2017 12:38:34 +0100 Subject: [PATCH 3/8] Updated sentences displayed on SettingsView. --- .../eShopOnContainers.Core/ViewModels/SettingsViewModel.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs index 7d47e882a..b42e6445a 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/SettingsViewModel.cs @@ -87,12 +87,12 @@ namespace eShopOnContainers.Core.ViewModels if (!UseAzureServices) { Title = "Use Mock Services"; - Description = "Mock Services are simulated objects that mimic the behavior of real services in controlled ways"; + Description = "Mock Services are simulated objects that mimic the behavior of real services using a controlled approach."; } else { Title = "Use Microservices/Containers from eShopOnContainers"; - Description = "When enabling the use of microservices/containers the Xamarin.Forms app will try to use real services deployed as Docker containers in the specified base IP that will need to be reachable through the network"; + Description = "When enabling the use of microservices/containers, the app will attempt to use real services deployed as Docker containers at the specified base endpoint, which will must be reachable through the network."; } } From 5507460870671e7f9a4434457c2434b341a4ca64 Mon Sep 17 00:00:00 2001 From: David Britch Date: Wed, 12 Apr 2017 15:49:15 +0100 Subject: [PATCH 4/8] Formatting updates to the authorization classes. --- .../Services/Identity/IIdentityService.cs | 6 ++---- .../Services/Identity/IdentityService.cs | 9 ++++----- .../eShopOnContainers.Core/ViewModels/LoginViewModel.cs | 4 ++-- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IIdentityService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IIdentityService.cs index 118690002..5f4ef875d 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IIdentityService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IIdentityService.cs @@ -1,10 +1,8 @@ -using System.Threading.Tasks; - -namespace eShopOnContainers.Core.Services.Identity +namespace eShopOnContainers.Core.Services.Identity { public interface IIdentityService { - string CreateAuthorizeRequest(); + string CreateAuthorizationRequest(); string CreateLogoutRequest(string token); string DecodeToken(string token); } diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IdentityService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IdentityService.cs index bfb938b18..da97eee30 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IdentityService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IdentityService.cs @@ -9,11 +9,10 @@ namespace eShopOnContainers.Core.Services.Identity { public class IdentityService : IIdentityService { - public string CreateAuthorizeRequest() + public string CreateAuthorizationRequest() { - // Create URI to authorize endpoint - var authorizeRequest = - new AuthorizeRequest(GlobalSetting.Instance.IdentityEndpoint); + // Create URI to authorization endpoint + var authorizeRequest = new AuthorizeRequest(GlobalSetting.Instance.IdentityEndpoint); // Dictionary with values for the authorize request var dic = new Dictionary(); @@ -29,7 +28,6 @@ namespace eShopOnContainers.Core.Services.Identity dic.Add("state", currentCSRFToken); var authorizeUri = authorizeRequest.Create(dic); - return authorizeUri; } @@ -53,6 +51,7 @@ namespace eShopOnContainers.Core.Services.Identity string partToConvert = parts[1]; partToConvert = partToConvert.Replace('-', '+'); partToConvert = partToConvert.Replace('_', '/'); + switch (partToConvert.Length % 4) { case 0: diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/LoginViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/LoginViewModel.cs index aea19cbdf..89eb1fe66 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/LoginViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/LoginViewModel.cs @@ -188,7 +188,7 @@ namespace eShopOnContainers.Core.ViewModels await Task.Delay(500); - LoginUrl = _identityService.CreateAuthorizeRequest(); + LoginUrl = _identityService.CreateAuthorizationRequest(); IsValid = true; IsLogin = true; @@ -226,7 +226,7 @@ namespace eShopOnContainers.Core.ViewModels Settings.AuthAccessToken = string.Empty; Settings.AuthIdToken = string.Empty; IsLogin = false; - LoginUrl = _identityService.CreateAuthorizeRequest(); + LoginUrl = _identityService.CreateAuthorizationRequest(); } else if (url.Contains(GlobalSetting.Instance.IdentityCallback)) { From bdcde46b18cf4d67469d94d44b2b5e20df7b375d Mon Sep 17 00:00:00 2001 From: David Britch Date: Wed, 12 Apr 2017 16:01:13 +0100 Subject: [PATCH 5/8] Removed unused method from IdentityService. --- .../Services/Identity/IIdentityService.cs | 1 - .../Services/Identity/IdentityService.cs | 29 ------------------- 2 files changed, 30 deletions(-) diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IIdentityService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IIdentityService.cs index 5f4ef875d..cc3df9a4a 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IIdentityService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IIdentityService.cs @@ -4,6 +4,5 @@ { string CreateAuthorizationRequest(); string CreateLogoutRequest(string token); - string DecodeToken(string token); } } \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IdentityService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IdentityService.cs index da97eee30..de80cec93 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IdentityService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IdentityService.cs @@ -1,9 +1,6 @@ using IdentityModel.Client; -using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; -using System.Linq; -using System.Text; namespace eShopOnContainers.Core.Services.Identity { @@ -43,31 +40,5 @@ namespace eShopOnContainers.Core.Services.Identity token, GlobalSetting.Instance.LogoutCallback); } - - public string DecodeToken(string token) - { - var parts = token.Split('.'); - - string partToConvert = parts[1]; - partToConvert = partToConvert.Replace('-', '+'); - partToConvert = partToConvert.Replace('_', '/'); - - switch (partToConvert.Length % 4) - { - case 0: - break; - case 2: - partToConvert += "=="; - break; - case 3: - partToConvert += "="; - break; - } - - var partAsBytes = Convert.FromBase64String(partToConvert); - var partAsUTF8String = Encoding.UTF8.GetString(partAsBytes, 0, partAsBytes.Count()); - - return JObject.Parse(partAsUTF8String).ToString(); - } } } From d7fcf472fd6ee840b2e9abe6b049e3e1b07e0c30 Mon Sep 17 00:00:00 2001 From: David Britch Date: Wed, 12 Apr 2017 16:09:12 +0100 Subject: [PATCH 6/8] Unused namespace imports removed. --- .../eShopOnContainers.Core/ViewModels/OrderDetailViewModel.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/OrderDetailViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/OrderDetailViewModel.cs index 449c6ea98..0e90f9b0e 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/OrderDetailViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/OrderDetailViewModel.cs @@ -1,8 +1,6 @@ using System.Threading.Tasks; using eShopOnContainers.Core.Models.Orders; using eShopOnContainers.Core.ViewModels.Base; -using eShopOnContainers.Core.Services.Catalog; -using eShopOnContainers.Core.Services.Basket; using eShopOnContainers.Core.Services.Order; using System; using eShopOnContainers.Core.Helpers; From b56d6092510a09abbb862cd78f80fddbd70f7e9e Mon Sep 17 00:00:00 2001 From: David Britch Date: Wed, 12 Apr 2017 16:10:27 +0100 Subject: [PATCH 7/8] Formatting change. --- .../eShopOnContainers.Core/ViewModels/OrderDetailViewModel.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/OrderDetailViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/OrderDetailViewModel.cs index 0e90f9b0e..9f0d59676 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/OrderDetailViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/OrderDetailViewModel.cs @@ -9,9 +9,8 @@ namespace eShopOnContainers.Core.ViewModels { public class OrderDetailViewModel : ViewModelBase { - private Order _order; - private IOrderService _ordersService; + private Order _order; public OrderDetailViewModel(IOrderService ordersService) { From b07bf5b96c425e09dfda22a69d618a656d558b4c Mon Sep 17 00:00:00 2001 From: David Britch Date: Tue, 18 Apr 2017 16:25:54 +0100 Subject: [PATCH 8/8] Removed unused methods from RequestProvider class. --- .../RequestProvider/IRequestProvider.cs | 8 ---- .../RequestProvider/RequestProvider.cs | 48 +------------------ 2 files changed, 2 insertions(+), 54 deletions(-) diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/IRequestProvider.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/IRequestProvider.cs index 4bb899c90..67b8f8c59 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/IRequestProvider.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/IRequestProvider.cs @@ -6,16 +6,8 @@ namespace eShopOnContainers.Core.Services.RequestProvider { Task GetAsync(string uri, string token = ""); - Task PostAsync(string uri, TResult data, string token = ""); - Task PostAsync(string uri, TResult data, string token = "", string header = ""); - Task PostAsync(string uri, TRequest data, string token = ""); - - Task PutAsync(string uri, TResult data, string token = ""); - - Task PutAsync(string uri, TRequest data, string token = ""); - Task DeleteAsync(string uri, string token = ""); } } \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/RequestProvider.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/RequestProvider.cs index a63f2096c..f498532ca 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/RequestProvider.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/RequestProvider.cs @@ -5,7 +5,6 @@ using Newtonsoft.Json.Serialization; using System.Net; using System.Net.Http; using System.Net.Http.Headers; -using System.Text; using System.Threading.Tasks; using System; @@ -23,7 +22,6 @@ namespace eShopOnContainers.Core.Services.RequestProvider DateTimeZoneHandling = DateTimeZoneHandling.Utc, NullValueHandling = NullValueHandling.Ignore }; - _serializerSettings.Converters.Add(new StringEnumConverter()); } @@ -33,7 +31,6 @@ namespace eShopOnContainers.Core.Services.RequestProvider HttpResponseMessage response = await httpClient.GetAsync(uri); await HandleResponse(response); - string serialized = await response.Content.ReadAsStringAsync(); TResult result = await Task.Run(() => @@ -56,7 +53,6 @@ namespace eShopOnContainers.Core.Services.RequestProvider HttpResponseMessage response = await httpClient.PostAsync(uri, content); await HandleResponse(response); - string serialized = await response.Content.ReadAsStringAsync(); TResult result = await Task.Run(() => @@ -65,61 +61,21 @@ namespace eShopOnContainers.Core.Services.RequestProvider return result; } - public Task PostAsync(string uri, TResult data, string token = "") - { - return PostAsync(uri, data, token); - } - - public async Task PostAsync(string uri, TRequest data, string token = "") - { - HttpClient httpClient = CreateHttpClient(token); - string serialized = await Task.Run(() => JsonConvert.SerializeObject(data, _serializerSettings)); - var content = new StringContent(serialized, Encoding.UTF8, "application/json"); - HttpResponseMessage response = await httpClient.PostAsync(uri, content); - - await HandleResponse(response); - - string responseData = await response.Content.ReadAsStringAsync(); - - return await Task.Run(() => JsonConvert.DeserializeObject(responseData, _serializerSettings)); - } - - public Task PutAsync(string uri, TResult data, string token = "") - { - return PutAsync(uri, data, token); - } - - public async Task PutAsync(string uri, TRequest data, string token = "") - { - HttpClient httpClient = CreateHttpClient(token); - string serialized = await Task.Run(() => JsonConvert.SerializeObject(data, _serializerSettings)); - HttpResponseMessage response = await httpClient.PutAsync(uri, new StringContent(serialized, Encoding.UTF8, "application/json")); - - await HandleResponse(response); - - string responseData = await response.Content.ReadAsStringAsync(); - - return await Task.Run(() => JsonConvert.DeserializeObject(responseData, _serializerSettings)); - } - public async Task DeleteAsync(string uri, string token = "") { HttpClient httpClient = CreateHttpClient(token); - await httpClient.DeleteAsync(uri); } private HttpClient CreateHttpClient(string token = "") { var httpClient = new HttpClient(); - httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); if (!string.IsNullOrEmpty(token)) { httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token); } - return httpClient; } @@ -140,8 +96,8 @@ namespace eShopOnContainers.Core.Services.RequestProvider { var content = await response.Content.ReadAsStringAsync(); - if (response.StatusCode == HttpStatusCode.Forbidden - || response.StatusCode == HttpStatusCode.Unauthorized) + if (response.StatusCode == HttpStatusCode.Forbidden || + response.StatusCode == HttpStatusCode.Unauthorized) { throw new ServiceAuthenticationException(content); }