From 79e1d0fd57b9fd9dd875413b2cdb89da9f6678b1 Mon Sep 17 00:00:00 2001 From: Joe Koberg Date: Tue, 24 Sep 2013 11:04:32 -0400 Subject: [PATCH 1/5] Update V1 SDK API refs and to prep for OAuth2. --- .../VersionOne.VisualStudio.DataLayer.csproj | 17 ++++++++++++++-- .../packages.config | 6 ++++-- .../VersionOne.VisualStudio.Tests.csproj | 20 +++++++++++++++---- VersionOne.VisualStudio.Tests/packages.config | 8 +++++--- 4 files changed, 40 insertions(+), 11 deletions(-) diff --git a/VersionOne.VisualStudio.DataLayer/VersionOne.VisualStudio.DataLayer.csproj b/VersionOne.VisualStudio.DataLayer/VersionOne.VisualStudio.DataLayer.csproj index 96a3dc9..9ee21ec 100644 --- a/VersionOne.VisualStudio.DataLayer/VersionOne.VisualStudio.DataLayer.csproj +++ b/VersionOne.VisualStudio.DataLayer/VersionOne.VisualStudio.DataLayer.csproj @@ -42,19 +42,32 @@ ..\Common\SigningKey\VersionOne.snk + + False + ..\packages\TreeViewAdv.1.7.0.0\lib\net\Aga.Controls.dll + + + ..\packages\FSharp.Data.1.1.10\lib\net40\FSharp.Data.dll + + + ..\packages\FSharp.Data.1.1.10\lib\net40\FSharp.Data.DesignTime.dll + False ..\packages\Ninject.3.0.1.10\lib\net45-full\Ninject.dll + + ..\packages\OAuth2Client.1.4.13260.2514\lib\net45\OAuth2Client.dll + - + False - ..\packages\VersionOne.SDK.APIClient.12.5.0.181\lib\net40\VersionOne.SDK.APIClient.dll + ..\packages\VersionOne.SDK.APIClient.14.0.2.213\lib\net45\VersionOne.SDK.APIClient.dll diff --git a/VersionOne.VisualStudio.DataLayer/packages.config b/VersionOne.VisualStudio.DataLayer/packages.config index 401818f..e202120 100755 --- a/VersionOne.VisualStudio.DataLayer/packages.config +++ b/VersionOne.VisualStudio.DataLayer/packages.config @@ -1,5 +1,7 @@  + - - \ No newline at end of file + + + diff --git a/VersionOne.VisualStudio.Tests/VersionOne.VisualStudio.Tests.csproj b/VersionOne.VisualStudio.Tests/VersionOne.VisualStudio.Tests.csproj index c36e8fc..8e14204 100644 --- a/VersionOne.VisualStudio.Tests/VersionOne.VisualStudio.Tests.csproj +++ b/VersionOne.VisualStudio.Tests/VersionOne.VisualStudio.Tests.csproj @@ -43,6 +43,12 @@ False ..\packages\TreeViewAdv.1.7.0.0\lib\net\Aga.Controls.dll + + ..\packages\FSharp.Data.1.1.10\lib\net40\FSharp.Data.dll + + + ..\packages\FSharp.Data.1.1.10\lib\net40\FSharp.Data.DesignTime.dll + False @@ -67,6 +73,10 @@ ..\packages\NUnit.2.6.2\lib\nunit.framework.dll + + ..\packages\OAuth2Client.1.4.13260.2514\lib\net45\OAuth2Client.dll + + False ..\packages\RhinoMocks.3.6.1\lib\net\Rhino.Mocks.dll @@ -77,11 +87,13 @@ - - ..\packages\VersionOne.SDK.APIClient.12.5.0.181\lib\net40\VersionOne.SDK.APIClient.dll + + False + ..\packages\VersionOne.SDK.APIClient.14.0.2.213\lib\net45\VersionOne.SDK.APIClient.dll - - ..\packages\VersionOne.SDK.ObjectModel.13.0.0.815\lib\net40\VersionOne.SDK.ObjectModel.dll + + False + ..\packages\VersionOne.SDK.ObjectModel.14.0.1.866\lib\net45\VersionOne.SDK.ObjectModel.dll diff --git a/VersionOne.VisualStudio.Tests/packages.config b/VersionOne.VisualStudio.Tests/packages.config index 9aeb770..731f887 100755 --- a/VersionOne.VisualStudio.Tests/packages.config +++ b/VersionOne.VisualStudio.Tests/packages.config @@ -1,10 +1,12 @@  + - - - \ No newline at end of file + + + + From ce2316146fbb070dbe124862a5f6dcb1d2b508e0 Mon Sep 17 00:00:00 2001 From: Joe Koberg Date: Tue, 24 Sep 2013 12:23:16 -0400 Subject: [PATCH 2/5] Fix broken csproj merge --- .../VersionOne.VisualStudio.Tests.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/VersionOne.VisualStudio.Tests/VersionOne.VisualStudio.Tests.csproj b/VersionOne.VisualStudio.Tests/VersionOne.VisualStudio.Tests.csproj index 8e14204..c6d0509 100644 --- a/VersionOne.VisualStudio.Tests/VersionOne.VisualStudio.Tests.csproj +++ b/VersionOne.VisualStudio.Tests/VersionOne.VisualStudio.Tests.csproj @@ -72,11 +72,11 @@ False ..\packages\NUnit.2.6.2\lib\nunit.framework.dll - + False ..\packages\OAuth2Client.1.4.13260.2514\lib\net45\OAuth2Client.dll - + False ..\packages\RhinoMocks.3.6.1\lib\net\Rhino.Mocks.dll From 1238a6275c9e05f1d721b0702e6c602b6ec7e372 Mon Sep 17 00:00:00 2001 From: Joe Koberg Date: Tue, 24 Sep 2013 11:04:55 -0400 Subject: [PATCH 3/5] Skeleton OAuth2 support. Uses default storage (files from current dir or envars) --- .../Settings/VersionOneSettings.cs | 16 +++-- .../VersionOneConnector.cs | 64 ++++++++++++------- 2 files changed, 52 insertions(+), 28 deletions(-) diff --git a/VersionOne.VisualStudio.DataLayer/Settings/VersionOneSettings.cs b/VersionOne.VisualStudio.DataLayer/Settings/VersionOneSettings.cs index 7d17a5b..abafa6b 100644 --- a/VersionOne.VisualStudio.DataLayer/Settings/VersionOneSettings.cs +++ b/VersionOne.VisualStudio.DataLayer/Settings/VersionOneSettings.cs @@ -1,9 +1,17 @@ namespace VersionOne.VisualStudio.DataLayer.Settings { - public class VersionOneSettings { + public class VersionOneSettings + { + public string Path { get; set; } + + public string Username { get; set; } + public string Password { get; set; } + public bool Integrated { get; set; } - public string Path { get; set; } - public string Username { get; set; } - public string Password { get; set; } + + public bool OAuth2 { get; set; } + public string SecretsFile { get; set; } + public string CredsFile { get; set; } + public ProxyConnectionSettings ProxySettings { get; set; } public VersionOneSettings() { diff --git a/VersionOne.VisualStudio.DataLayer/VersionOneConnector.cs b/VersionOne.VisualStudio.DataLayer/VersionOneConnector.cs index abcb079..bd4069a 100644 --- a/VersionOne.VisualStudio.DataLayer/VersionOneConnector.cs +++ b/VersionOne.VisualStudio.DataLayer/VersionOneConnector.cs @@ -24,36 +24,52 @@ public string ApiVersion { public VersionOneSettings VersionOneSettings { get; private set; } - public void Connect(VersionOneSettings settings) { - var path = settings.Path; - var username = settings.Username; - var password = settings.Password; - var integrated = settings.Integrated; - var proxy = GetProxy(settings.ProxySettings); - VersionOneSettings = settings; - - var metaConnector = new V1APIConnector(path + MetaUrlSuffix, username, password, integrated, proxy); - MetaModel = new MetaModel(metaConnector); - - var localizerConnector = new V1APIConnector(path + LocalizerUrlSuffix, username, password, integrated, proxy); - Localizer = new Localizer(localizerConnector); - - var dataConnector = new V1APIConnector(path + DataUrlSuffix, username, password, integrated, proxy); - Services = new Services(MetaModel, dataConnector); - - V1Configuration = LoadV1Configuration(); - } + public void Connect(VersionOneSettings settings) + { + var path = settings.Path; + var username = settings.Username; + var password = settings.Password; + var integrated = settings.Integrated; + var proxy = GetProxy(settings.ProxySettings); + VersionOneSettings = settings; + + if (VersionOneSettings.OAuth2) + { + var storage = OAuth2Client.Storage.JsonFileStorage.Default; + var metaConnector = new V1OAuth2APIConnector(path + MetaUrlSuffix, storage, proxy); + MetaModel = new MetaModel(metaConnector); + + var localizerConnector = new V1OAuth2APIConnector(path + LocalizerUrlSuffix, storage, proxy); + Localizer = new Localizer(localizerConnector); + + var dataConnector = new V1OAuth2APIConnector(path + DataUrlSuffix, storage, proxy); + Services = new Services(MetaModel, dataConnector); + + } + else + { + var metaConnector = new V1APIConnector(path + MetaUrlSuffix, username, password, integrated, proxy); + MetaModel = new MetaModel(metaConnector); + + var localizerConnector = new V1APIConnector(path + LocalizerUrlSuffix, username, password, integrated, proxy); + Localizer = new Localizer(localizerConnector); + + var dataConnector = new V1APIConnector(path + DataUrlSuffix, username, password, integrated, proxy); + Services = new Services(MetaModel, dataConnector); + + } + V1Configuration = LoadV1Configuration(); + } public IV1Configuration LoadV1Configuration() { + // This V1 API endpoint does not require authentication if (VersionOneSettings == null) { throw new InvalidOperationException("Connection is needed for configuration loading."); } - var path = VersionOneSettings.Path; - var integrated = VersionOneSettings.Integrated; - var proxy = GetProxy(VersionOneSettings.ProxySettings); - - return new V1Configuration(new V1APIConnector(path + ConfigUrlSuffix, null, null, integrated, proxy)); + var integrated = VersionOneSettings.Integrated; + var proxy = GetProxy(VersionOneSettings.ProxySettings); + return new V1Configuration(new V1APIConnector(path + ConfigUrlSuffix, null, null, integrated, proxy)); } private static ProxyProvider GetProxy(ProxyConnectionSettings settings) { From c6ac7b26e8ee7726f8ab3df0ac9035637aed29ca Mon Sep 17 00:00:00 2001 From: Joe Koberg Date: Tue, 24 Sep 2013 11:08:45 -0400 Subject: [PATCH 4/5] default OAuth2 to ON --- .../Settings/VersionOneSettings.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/VersionOne.VisualStudio.DataLayer/Settings/VersionOneSettings.cs b/VersionOne.VisualStudio.DataLayer/Settings/VersionOneSettings.cs index abafa6b..c2f4ca1 100644 --- a/VersionOne.VisualStudio.DataLayer/Settings/VersionOneSettings.cs +++ b/VersionOne.VisualStudio.DataLayer/Settings/VersionOneSettings.cs @@ -14,7 +14,9 @@ public class VersionOneSettings public ProxyConnectionSettings ProxySettings { get; set; } - public VersionOneSettings() { + public VersionOneSettings() + { + OAuth2 = true; ProxySettings = new ProxyConnectionSettings(); } } From 5bc8595d2cec61d3738e26662502801305a35b99 Mon Sep 17 00:00:00 2001 From: Joe Koberg Date: Tue, 24 Sep 2013 11:39:53 -0400 Subject: [PATCH 5/5] Stub out connection checking for OAuth2 --- .../VersionOneConnector.cs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/VersionOne.VisualStudio.DataLayer/VersionOneConnector.cs b/VersionOne.VisualStudio.DataLayer/VersionOneConnector.cs index bd4069a..e5ffab2 100644 --- a/VersionOne.VisualStudio.DataLayer/VersionOneConnector.cs +++ b/VersionOne.VisualStudio.DataLayer/VersionOneConnector.cs @@ -82,8 +82,16 @@ private static ProxyProvider GetProxy(ProxyConnectionSettings settings) { } public void CheckConnection(VersionOneSettings settings) { - var connectionValidator = new V1ConnectionValidator(settings.Path, settings.Username, settings.Password, settings.Integrated, GetProxy(settings.ProxySettings)); - connectionValidator.Test(ApiVersion); + if (settings.OAuth2) + { + return; + } + else + { + var connectionValidator = new V1ConnectionValidator(settings.Path, settings.Username, settings.Password, + settings.Integrated, GetProxy(settings.ProxySettings)); + connectionValidator.Test(ApiVersion); + } } } } \ No newline at end of file