diff --git a/VersionOne.VisualStudio.DataLayer/Settings/VersionOneSettings.cs b/VersionOne.VisualStudio.DataLayer/Settings/VersionOneSettings.cs index 7d17a5b..c2f4ca1 100644 --- a/VersionOne.VisualStudio.DataLayer/Settings/VersionOneSettings.cs +++ b/VersionOne.VisualStudio.DataLayer/Settings/VersionOneSettings.cs @@ -1,12 +1,22 @@ 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() { + public VersionOneSettings() + { + OAuth2 = true; ProxySettings = new ProxyConnectionSettings(); } } 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/VersionOneConnector.cs b/VersionOne.VisualStudio.DataLayer/VersionOneConnector.cs index abcb079..e5ffab2 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) { @@ -66,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 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..c6d0509 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 @@ -66,6 +72,10 @@ 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 @@ -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 + + + +