diff --git a/src/Project.Tests/DefaultControllerTests.cs b/src/Project.Tests/DefaultControllerTests.cs index 146d7570c8925290090f524c505333113217e9ac..23a03e8ecc96c23982af9dd2852cde5520bc1ff9 100644 --- a/src/Project.Tests/DefaultControllerTests.cs +++ b/src/Project.Tests/DefaultControllerTests.cs @@ -46,7 +46,8 @@ namespace Coscine.Api.Project.Tests DisciplineModel disciplineModel = new DisciplineModel(); Discipline = new Discipline() { - DisplayName = "TestDiscipline", + DisplayNameDe = "TestDiscipline", + DisplayNameEn = "TestDiscipline", Url = "http://rwth-aachen.de" }; disciplineModel.Insert(Discipline); diff --git a/src/Project.Tests/Project.Tests.csproj b/src/Project.Tests/Project.Tests.csproj index 9b8843fcb2c77d99a8d227d25ab6090331d32245..6df5275950f7a0fbb3ab7bf63c20f9703a64a2a3 100644 --- a/src/Project.Tests/Project.Tests.csproj +++ b/src/Project.Tests/Project.Tests.csproj @@ -56,17 +56,17 @@ <Reference Include="Consul, Version=0.7.2.6, Culture=neutral, PublicKeyToken=20a6ad9a81df1d95, processorArchitecture=MSIL"> <HintPath>..\packages\Consul.0.7.2.6\lib\net45\Consul.dll</HintPath> </Reference> - <Reference Include="Coscine.Action, Version=1.3.1.0, Culture=neutral, processorArchitecture=MSIL"> - <HintPath>..\packages\Coscine.Action.1.3.1\lib\net461\Coscine.Action.dll</HintPath> + <Reference Include="Coscine.Action, Version=1.6.0.0, Culture=neutral, processorArchitecture=AMD64"> + <HintPath>..\packages\Coscine.Action.1.6.0\lib\net461\Coscine.Action.dll</HintPath> </Reference> - <Reference Include="Coscine.ApiCommons, Version=1.2.1.0, Culture=neutral, PublicKeyToken=af4c1345df96546b, processorArchitecture=MSIL"> - <HintPath>..\packages\Coscine.ApiCommons.1.2.1\lib\net461\Coscine.ApiCommons.dll</HintPath> + <Reference Include="Coscine.ApiCommons, Version=1.2.2.0, Culture=neutral, PublicKeyToken=af4c1345df96546b, processorArchitecture=MSIL"> + <HintPath>..\packages\Coscine.ApiCommons.1.2.2\lib\net461\Coscine.ApiCommons.dll</HintPath> </Reference> <Reference Include="Coscine.Configuration, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ce3d7a32d7dc1e5a, processorArchitecture=MSIL"> <HintPath>..\packages\Coscine.Configuration.1.4.0\lib\net461\Coscine.Configuration.dll</HintPath> </Reference> - <Reference Include="Coscine.Database, Version=1.8.0.0, Culture=neutral, PublicKeyToken=767d77427707b70a, processorArchitecture=MSIL"> - <HintPath>..\packages\Coscine.Database.1.8.0\lib\net461\Coscine.Database.dll</HintPath> + <Reference Include="Coscine.Database, Version=1.9.0.0, Culture=neutral, PublicKeyToken=767d77427707b70a, processorArchitecture=MSIL"> + <HintPath>..\packages\Coscine.Database.1.9.0\lib\net461\Coscine.Database.dll</HintPath> </Reference> <Reference Include="Coscine.ProxyApi, Version=1.2.0.0, Culture=neutral, processorArchitecture=MSIL"> <HintPath>..\packages\Coscine.ProxyApi.1.2.0\lib\net461\Coscine.ProxyApi.dll</HintPath> @@ -362,14 +362,14 @@ <Reference Include="microsoft.identitymodel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\packages\Microsoft.IdentityModel.7.0.0\lib\net35\microsoft.identitymodel.dll</HintPath> </Reference> - <Reference Include="Microsoft.IdentityModel.JsonWebTokens, Version=5.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> - <HintPath>..\packages\Microsoft.IdentityModel.JsonWebTokens.5.5.0\lib\net461\Microsoft.IdentityModel.JsonWebTokens.dll</HintPath> + <Reference Include="Microsoft.IdentityModel.JsonWebTokens, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <HintPath>..\packages\Microsoft.IdentityModel.JsonWebTokens.5.6.0\lib\net461\Microsoft.IdentityModel.JsonWebTokens.dll</HintPath> </Reference> - <Reference Include="Microsoft.IdentityModel.Logging, Version=5.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> - <HintPath>..\packages\Microsoft.IdentityModel.Logging.5.5.0\lib\net461\Microsoft.IdentityModel.Logging.dll</HintPath> + <Reference Include="Microsoft.IdentityModel.Logging, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <HintPath>..\packages\Microsoft.IdentityModel.Logging.5.6.0\lib\net461\Microsoft.IdentityModel.Logging.dll</HintPath> </Reference> - <Reference Include="Microsoft.IdentityModel.Tokens, Version=5.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> - <HintPath>..\packages\Microsoft.IdentityModel.Tokens.5.5.0\lib\net461\Microsoft.IdentityModel.Tokens.dll</HintPath> + <Reference Include="Microsoft.IdentityModel.Tokens, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <HintPath>..\packages\Microsoft.IdentityModel.Tokens.5.6.0\lib\net461\Microsoft.IdentityModel.Tokens.dll</HintPath> </Reference> <Reference Include="Microsoft.Net.Http.Headers, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL"> <HintPath>..\packages\Microsoft.Net.Http.Headers.2.2.0\lib\netstandard2.0\Microsoft.Net.Http.Headers.dll</HintPath> @@ -428,8 +428,8 @@ <Private>True</Private> </Reference> <Reference Include="System.Drawing" /> - <Reference Include="System.IdentityModel.Tokens.Jwt, Version=5.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> - <HintPath>..\packages\System.IdentityModel.Tokens.Jwt.5.5.0\lib\net461\System.IdentityModel.Tokens.Jwt.dll</HintPath> + <Reference Include="System.IdentityModel.Tokens.Jwt, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <HintPath>..\packages\System.IdentityModel.Tokens.Jwt.5.6.0\lib\net461\System.IdentityModel.Tokens.Jwt.dll</HintPath> </Reference> <Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <HintPath>..\packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath> diff --git a/src/Project.Tests/ProjectControllerTests.cs b/src/Project.Tests/ProjectControllerTests.cs index d58925000986501d2e1309460d8766664cde61ec..d7792930d0b013539f663ba38f92307e765851e7 100644 --- a/src/Project.Tests/ProjectControllerTests.cs +++ b/src/Project.Tests/ProjectControllerTests.cs @@ -105,7 +105,7 @@ namespace Coscine.Api.Project.Tests public void TestControllerStore() { ProjectObject newProjectObject = new ProjectObject(Guid.NewGuid(), "NewProject", "NewDisplayName", DateTime.Now, DateTime.Now.AddYears(1), "test2;test3", "abc", "investigator", "grandId", - new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayName) }, + new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayNameDe, Discipline.DisplayNameEn) }, new List<InstituteObject>() { new InstituteObject(Institute.Id, Institute.IKZ, Institute.DisplayName) }, new VisibilityObject(Visibility.Id, Visibility.DisplayName)); @@ -140,7 +140,7 @@ namespace Coscine.Api.Project.Tests public void TestControllerDelete() { ProjectObject newProjectObject = new ProjectObject(Guid.NewGuid(), "NewProject", "NewDisplayName", DateTime.Now, DateTime.Now.AddYears(1), "test2;test3", "abc", "investigator", "grandId", - new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayName) }, + new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayNameDe, Discipline.DisplayNameEn) }, new List<InstituteObject>() { new InstituteObject(Institute.Id, Institute.IKZ, Institute.DisplayName) }, new VisibilityObject(Visibility.Id, Visibility.DisplayName)); @@ -174,7 +174,7 @@ namespace Coscine.Api.Project.Tests public void TestControllerDeleteWithSubProjects() { ProjectObject newProjectObject = new ProjectObject(Guid.NewGuid(), "NewProject", "NewDisplayName", DateTime.Now, DateTime.Now.AddYears(1), "test2;test3", "abc", "investigator", "grandId", - new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayName) }, + new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayNameDe, Discipline.DisplayNameEn) }, new List<InstituteObject>() { new InstituteObject(Institute.Id, Institute.IKZ, Institute.DisplayName) }, new VisibilityObject(Visibility.Id, Visibility.DisplayName)); @@ -189,7 +189,7 @@ namespace Coscine.Api.Project.Tests stream.Close(); newProjectObject = new ProjectObject(Guid.NewGuid(), "NewProject", "NewDisplayName", DateTime.Now, DateTime.Now.AddYears(1), "test2;test3", "abc", "investigator", "grandId", - new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayName) }, + new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayNameDe, Discipline.DisplayNameEn) }, new List<InstituteObject>() { new InstituteObject(Institute.Id, Institute.IKZ, Institute.DisplayName) }, new VisibilityObject(Visibility.Id, Visibility.DisplayName), createdProjectObject.Id); @@ -217,7 +217,7 @@ namespace Coscine.Api.Project.Tests public void TestControllerStoreWithSubProject() { ProjectObject newProjectObject = new ProjectObject(Guid.NewGuid(), "NewProject", "NewDisplayName", DateTime.Now, DateTime.Now.AddYears(1), "test2;test3", "abc", "investigator", "grandId", - new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayName) }, + new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayNameDe, Discipline.DisplayNameEn) }, new List<InstituteObject>() { new InstituteObject(Institute.Id, Institute.IKZ, Institute.DisplayName) }, new VisibilityObject(Visibility.Id, Visibility.DisplayName)); @@ -229,7 +229,7 @@ namespace Coscine.Api.Project.Tests ProjectObject createdProjectObject = (ProjectObject)okObjectResult.Value; ProjectObject newSubProjectObject = new ProjectObject(Guid.NewGuid(), "NewSubProject", "NewDisplayNameSub", DateTime.Now, DateTime.Now.AddYears(1), "test2;test3", "abc", "investigator", "grandId", - new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayName) }, + new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayNameDe, Discipline.DisplayNameEn) }, new List<InstituteObject>() { new InstituteObject(Institute.Id, Institute.IKZ, Institute.DisplayName) }, new VisibilityObject(Visibility.Id, Visibility.DisplayName), createdProjectObject.Id); diff --git a/src/Project.Tests/Properties/AssemblyInfo.cs b/src/Project.Tests/Properties/AssemblyInfo.cs index e217d1d7bf9764e873de8e9cfa945b4d808efd29..7a72ddf9c9a21948d51027cd1ad6e485f33a2eb2 100644 --- a/src/Project.Tests/Properties/AssemblyInfo.cs +++ b/src/Project.Tests/Properties/AssemblyInfo.cs @@ -9,8 +9,8 @@ using System.Reflection; [assembly: AssemblyDescription("Project.Tests is a part of the CoScInE group.")] [assembly: AssemblyCompany("IT Center, RWTH Aachen University")] [assembly: AssemblyProduct("Project.Tests")] -[assembly: AssemblyVersion("1.4.1.0")] -[assembly: AssemblyFileVersion("1.4.1.0")] -[assembly: AssemblyInformationalVersion("1.4.1.0")] +[assembly: AssemblyVersion("1.7.1.0")] +[assembly: AssemblyFileVersion("1.7.1.0")] +[assembly: AssemblyInformationalVersion("1.7.1.0")] [assembly: AssemblyCopyright("2019 IT Center, RWTH Aachen University")] diff --git a/src/Project.Tests/ResourceControllerTests.cs b/src/Project.Tests/ResourceControllerTests.cs index 8c5d692dc929b7513497e258ee73378b9d1f5622..70cff59f23f3593b8114a91b44ae63a128165425 100644 --- a/src/Project.Tests/ResourceControllerTests.cs +++ b/src/Project.Tests/ResourceControllerTests.cs @@ -90,10 +90,11 @@ namespace Coscine.Api.Project.Tests Guid.NewGuid(), "Test", "testR", + "testD", "keys", "usageR", new ResourceTypeObject(Resources[0].Type.Id, Resources[0].Type.DisplayName), - new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayName) }, + new List<DisciplineObject>() { new DisciplineObject(Discipline.Id, Discipline.Url, Discipline.DisplayNameDe, Discipline.DisplayNameEn) }, new VisibilityObject(Visibility.Id, Visibility.DisplayName), new LicenseObject(License.Id, License.DisplayName), JObject.FromObject(new RDSResourceTypeObject(Guid.NewGuid(), "PITLABTTEST", "accesskey", "secretkey")), diff --git a/src/Project.Tests/app.config b/src/Project.Tests/app.config index a4522c8ec90b9bf11d952ae9d3ae684788930732..f6dfb039b509aaf965b7964f472acb0b4be58c57 100644 --- a/src/Project.Tests/app.config +++ b/src/Project.Tests/app.config @@ -88,15 +88,15 @@ </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Coscine.Database" publicKeyToken="767d77427707b70a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-1.8.0.0" newVersion="1.8.0.0" /> + <bindingRedirect oldVersion="0.0.0.0-1.9.0.0" newVersion="1.9.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.IdentityModel.Tokens.Jwt" publicKeyToken="31bf3856ad364e35" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-5.5.0.0" newVersion="5.5.0.0" /> + <bindingRedirect oldVersion="0.0.0.0-5.6.0.0" newVersion="5.6.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.IdentityModel.Tokens" publicKeyToken="31bf3856ad364e35" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-5.5.0.0" newVersion="5.5.0.0" /> + <bindingRedirect oldVersion="0.0.0.0-5.6.0.0" newVersion="5.6.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Coscine.SharePoint.Webparts.Vue" publicKeyToken="0fe8d3e516df6d98" culture="neutral" /> diff --git a/src/Project.Tests/packages.config b/src/Project.Tests/packages.config index 65792be94db3206f7449256b9e651059387a9c3a..099b2ecc373f53b1e7de9c119bfc7c1dc5f16846 100644 --- a/src/Project.Tests/packages.config +++ b/src/Project.Tests/packages.config @@ -4,10 +4,10 @@ <package id="AutoMapper.Extensions.Microsoft.DependencyInjection" version="6.0.0" targetFramework="net472" /> <package id="Castle.Core" version="4.4.0" targetFramework="net472" /> <package id="Consul" version="0.7.2.6" targetFramework="net472" /> - <package id="Coscine.Action" version="1.3.1" targetFramework="net472" /> - <package id="Coscine.ApiCommons" version="1.2.1" targetFramework="net472" /> + <package id="Coscine.Action" version="1.6.0" targetFramework="net472" /> + <package id="Coscine.ApiCommons" version="1.2.2" targetFramework="net472" /> <package id="Coscine.Configuration" version="1.4.0" targetFramework="net472" /> - <package id="Coscine.Database" version="1.8.0" targetFramework="net472" /> + <package id="Coscine.Database" version="1.9.0" targetFramework="net472" /> <package id="Coscine.ProxyApi" version="1.2.0" targetFramework="net472" /> <package id="Coscine.SharePoint.Webparts.Vue" version="1.4.0" targetFramework="net472" /> <package id="dotNetRDF" version="2.2.1" targetFramework="net472" /> @@ -112,9 +112,9 @@ <package id="Microsoft.Extensions.Primitives" version="2.2.0" targetFramework="net472" /> <package id="Microsoft.Extensions.WebEncoders" version="2.2.0" targetFramework="net472" /> <package id="Microsoft.IdentityModel" version="7.0.0" targetFramework="net472" /> - <package id="Microsoft.IdentityModel.JsonWebTokens" version="5.5.0" targetFramework="net472" /> - <package id="Microsoft.IdentityModel.Logging" version="5.5.0" targetFramework="net472" /> - <package id="Microsoft.IdentityModel.Tokens" version="5.5.0" targetFramework="net472" /> + <package id="Microsoft.IdentityModel.JsonWebTokens" version="5.6.0" targetFramework="net472" /> + <package id="Microsoft.IdentityModel.Logging" version="5.6.0" targetFramework="net472" /> + <package id="Microsoft.IdentityModel.Tokens" version="5.6.0" targetFramework="net472" /> <package id="Microsoft.Net.Http.Headers" version="2.2.0" targetFramework="net472" /> <package id="Microsoft.Win32.Registry" version="4.5.0" targetFramework="net472" /> <package id="Moq" version="4.12.0" targetFramework="net472" /> @@ -134,7 +134,7 @@ <package id="System.Diagnostics.FileVersionInfo" version="4.3.0" targetFramework="net472" /> <package id="System.Diagnostics.StackTrace" version="4.3.0" targetFramework="net472" /> <package id="System.Dynamic.Runtime" version="4.3.0" targetFramework="net472" /> - <package id="System.IdentityModel.Tokens.Jwt" version="5.5.0" targetFramework="net472" /> + <package id="System.IdentityModel.Tokens.Jwt" version="5.6.0" targetFramework="net472" /> <package id="System.IO" version="4.3.0" targetFramework="net472" /> <package id="System.IO.Compression" version="4.3.0" targetFramework="net472" /> <package id="System.IO.FileSystem" version="4.3.0" targetFramework="net472" /> diff --git a/src/Project/App.config b/src/Project/App.config index 46cfafcc43a3efcd2492faefae8a1c06e2f2e0e4..0377893e70371aa9607fad0299905c9ec6f5cff9 100644 --- a/src/Project/App.config +++ b/src/Project/App.config @@ -91,15 +91,15 @@ </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Coscine.Database" publicKeyToken="767d77427707b70a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-1.8.0.0" newVersion="1.8.0.0" /> + <bindingRedirect oldVersion="0.0.0.0-1.9.0.0" newVersion="1.9.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.IdentityModel.Tokens.Jwt" publicKeyToken="31bf3856ad364e35" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-5.5.0.0" newVersion="5.5.0.0" /> + <bindingRedirect oldVersion="0.0.0.0-5.6.0.0" newVersion="5.6.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Microsoft.IdentityModel.Tokens" publicKeyToken="31bf3856ad364e35" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-5.5.0.0" newVersion="5.5.0.0" /> + <bindingRedirect oldVersion="0.0.0.0-5.6.0.0" newVersion="5.6.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Coscine.SharePoint.Webparts.Vue" publicKeyToken="0fe8d3e516df6d98" culture="neutral" /> diff --git a/src/Project/Controllers/DataSourceController.cs b/src/Project/Controllers/DataSourceController.cs index 112e4833a781ccae8be62a40feab9e21062b2173..3e3a1ed2882a27be2d0bb4044ada9b0e93d4501f 100644 --- a/src/Project/Controllers/DataSourceController.cs +++ b/src/Project/Controllers/DataSourceController.cs @@ -1,6 +1,7 @@ using Coscine.Api.Project.Models; using Coscine.Api.Project.ReturnObjects; using Coscine.ApiCommons; +using Coscine.ApiCommons.Factories; using Coscine.ApiCommons.Utils; using Coscine.Configuration; using Coscine.Database.Model; @@ -94,7 +95,7 @@ namespace Coscine.Api.Project.Controllers } else { - return FailedRequeset(response, path); + return FailedRequest(response, path); } } } @@ -137,15 +138,13 @@ namespace Coscine.Api.Project.Controllers } else { - return FailedRequeset(response, path); + return FailedRequest(response, path); } } catch (Exception e) { - Console.WriteLine(e); return BadRequest(e); - } } } @@ -188,15 +187,13 @@ namespace Coscine.Api.Project.Controllers } else { - return FailedRequeset(response, path); + return FailedRequest(response, path); } } catch (Exception e) { - Console.WriteLine(e); return BadRequest(e); - } } } @@ -233,7 +230,7 @@ namespace Coscine.Api.Project.Controllers else { // If the path is null, an empty string is added. - string url = $"{_configuration.GetString("coscine/global/waterbutler_url")}{resource.Type.DisplayName.ToLower()}/{path}"; + string url = $"{_configuration.GetString("coscine/global/waterbutler_url")}{resource.Type.DisplayName.ToLower()}{path}"; var request = new HttpRequestMessage(HttpMethod.Delete, url); request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", authHeader); @@ -248,26 +245,84 @@ namespace Coscine.Api.Project.Controllers } else { - return FailedRequeset(response, path); + return FailedRequest(response, path); } } catch (Exception e) { - Console.WriteLine(e); return BadRequest(e); } } } - private IActionResult FailedRequeset(HttpResponseMessage response, string path) + [HttpPost("[controller]/validate")] + public async Task<IActionResult> IsResourceValid() + { + var path = "/"; + + JToken resource = ObjectFactory<JToken>.DeserializeFromStream(Request.Body); + + + string authHeader = null; + if (resource["type"]["displayName"].ToString().ToLower() == "rds") + { + RDSResourceType rdsResourceType = new RDSResourceType(); + rdsResourceType.BucketName = resource["resourceTypeOption"]["BucketName"].ToString(); + rdsResourceType.AccessKey = resource["resourceTypeOption"]["AccessKey"].ToString(); + rdsResourceType.SecretKey = resource["resourceTypeOption"]["SecretKey"].ToString(); + authHeader = BuildRdsAuthHeader(rdsResourceType); + } + else if (resource["type"]["displayName"].ToString().ToLower() == "gitlab") + { + GitlabResourceType gitlabResourceType = new GitlabResourceType(); + gitlabResourceType.RepositoryNumber = (int)resource["resourceTypeOption"]["RepositoryNumber"]; + gitlabResourceType.RepositoryUrl = resource["resourceTypeOption"]["RepositoryUrl"].ToString(); + gitlabResourceType.Token = resource["resourceTypeOption"]["Token"].ToString(); + authHeader = BuildGitlabAuthHeader(gitlabResourceType); + } + + if (authHeader == null) + { + return BadRequest($"No provider for: \"{resource["type"]["displayName"].ToString()}\"."); + } + else + { + // If the path is null, an empty string is added. + string url = $"{_configuration.GetString("coscine/global/waterbutler_url")}{resource["type"]["displayName"].ToString().ToLower()}{path}"; + + var request = new HttpRequestMessage(HttpMethod.Get, url); + request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", authHeader); + + // Thread safe according to msdn and HttpCompletionOption sets it to get only headers first. + var response = await Client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead); + if (response.IsSuccessStatusCode) + { + if (response.Content.Headers.Contains("Content-Disposition")) + { + return File(await response.Content.ReadAsStreamAsync(), + response.Content.Headers.GetValues("Content-Type").First()); + } + else + { + var data = JObject.Parse(await response.Content.ReadAsStringAsync())["data"]; + return Ok(new WaterbutlerObject(path, data)); + } + } + else + { + return FailedRequest(response, path); + } + } + } + + private IActionResult FailedRequest(HttpResponseMessage response, string path) { if (response.StatusCode == System.Net.HttpStatusCode.NotFound) { return NotFound($"Could not find object for: \"{path}\"."); } - else - if (response.StatusCode == System.Net.HttpStatusCode.Forbidden) + else if (response.StatusCode == System.Net.HttpStatusCode.Forbidden) { return Forbid("Not allowed to access the datasource."); } @@ -292,24 +347,23 @@ namespace Coscine.Api.Project.Controllers return BadRequest($"Your path \"{path}\" contains bad chars. Only {@"^[0-9a-zA-Z_\-./ ]+"} are allowed as chars."); } - if (!Guid.TryParse(resourceId, out Guid resouceGuid)) + if (!Guid.TryParse(resourceId, out Guid resourceGuid)) { return BadRequest($"{resourceId} is not a guid."); } - - var user = _authenticator.GetUserFromToken(); - if (!_resourceModel.OwnsResource(user, resource)) - { - return Forbid($"The user does not own the resource {resourceId}"); - } - + try { - resource = _resourceModel.GetById(resouceGuid); + resource = _resourceModel.GetById(resourceGuid); if (resource == null) { return NotFound($"Could not find resource with id: {resourceId}"); } + var user = _authenticator.GetUserFromToken(); + if (!_resourceModel.OwnsResource(user, resource)) + { + return Forbid($"The user does not own the resource {resourceId}"); + } } catch (Exception) { @@ -400,9 +454,9 @@ namespace Coscine.Api.Project.Controllers var settings = new Dictionary<string, object> { - {"owner", "Tester"}, + { "owner", "Tester"}, { "repo", gitlabResourceType.RepositoryUrl}, - { "repo_id", gitlabResourceType.RepositoryNumber}, + { "repo_id", gitlabResourceType.RepositoryNumber.ToString()}, { "host", "https://git.rwth-aachen.de"} }; diff --git a/src/Project/Controllers/DisciplineController.cs b/src/Project/Controllers/DisciplineController.cs index ec9f932f55e398a0ed1b382419608f1374fdba8c..62c1ea0c994bbfb054171c03ae4986067e8a4198 100644 --- a/src/Project/Controllers/DisciplineController.cs +++ b/src/Project/Controllers/DisciplineController.cs @@ -26,7 +26,7 @@ namespace Coscine.Api.Project.Controllers { return Ok(_authenticator.ValidateAndExecute((user) => { - return _disciplineModel.GetAll().Select((discipline) => new DisciplineObject(discipline.Id, discipline.Url, discipline.DisplayName)); + return _disciplineModel.GetAll().OrderBy(discipline => discipline.DisplayNameDe.Substring(discipline.DisplayNameDe.Length - 3)).Select((discipline) => new DisciplineObject(discipline.Id, discipline.Url, discipline.DisplayNameDe, discipline.DisplayNameEn)); })); } } diff --git a/src/Project/Controllers/LicenseController.cs b/src/Project/Controllers/LicenseController.cs new file mode 100644 index 0000000000000000000000000000000000000000..88568555a35a52b99644f414926b96c1588db74f --- /dev/null +++ b/src/Project/Controllers/LicenseController.cs @@ -0,0 +1,33 @@ +using Coscine.Api.Project.Models; +using Coscine.Api.Project.ReturnObjects; +using Coscine.ApiCommons; +using Microsoft.AspNetCore.Mvc; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Coscine.Api.Project.Controllers +{ + public class LicenseController : Controller + { + private readonly Authenticator _authenticator; + private readonly LicenseModel _licenseModel; + + public LicenseController() + { + _authenticator = new Authenticator(this, Program.Configuration); + _licenseModel = new LicenseModel(); + } + + [Route("[controller]")] + public IActionResult Index() + { + return Ok(_authenticator.ValidateAndExecute((user) => + { + return _licenseModel.GetAll().Select((license) => new LicenseObject(license.Id, license.DisplayName)); + })); + } + } +} diff --git a/src/Project/Controllers/MetadataController.cs b/src/Project/Controllers/MetadataController.cs index c517da4f694cfe96db921cdc4567d946ad091c53..8d1f4060e92a80104770b3edfc396169d546906b 100644 --- a/src/Project/Controllers/MetadataController.cs +++ b/src/Project/Controllers/MetadataController.cs @@ -137,7 +137,6 @@ namespace Coscine.Api.Project.Controllers // Default values is not checked or added - Console.WriteLine(VDS.RDF.Writing.StringWriter.Write(graph, new RdfJsonWriter())); // validate the data if (_util.ValidateShacl(graph, graphNameUri)) { diff --git a/src/Project/Controllers/ProjectController.cs b/src/Project/Controllers/ProjectController.cs index 8ac5cbdaf020c022312ebb46d186d23def32b987..75b5cdd82bb4736833a0fbb32c4341a550ce24b6 100644 --- a/src/Project/Controllers/ProjectController.cs +++ b/src/Project/Controllers/ProjectController.cs @@ -11,24 +11,22 @@ using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; +using Coscine.Configuration; namespace Coscine.Api.Project.Controllers { public class ProjectController : Controller { private readonly Authenticator _authenticator; - private readonly List<IProjectAction> _projectActions; private readonly ProjectModel _projectModel; - + private readonly IConfiguration _configuration; + private readonly Emitter _emitter; public ProjectController() { _authenticator = new Authenticator(this, Program.Configuration); - _projectActions = new List<IProjectAction>() - { - new PIDAction(), - new SharePointSiteAction() - }; + _configuration = Program.Configuration; _projectModel = new ProjectModel(); + _emitter = new Emitter(this._configuration); } [Route("[controller]")] @@ -164,16 +162,9 @@ namespace Coscine.Api.Project.Controllers projectInstituteModel.Delete(projectInstitute); } - FireEvents((projectAction, projectEventArgs) => + _emitter.EmitProjectDelete(new ProjectEventArgs(_configuration) { - try - { - projectAction.OnProjectDelete(project, projectEventArgs); - } - catch (Exception) - { - // Filter exception, because sometimes the PID or SharePoint site might not be generated in e.g. tests - } + Project = project }); _projectModel.Delete(project); @@ -195,19 +186,14 @@ namespace Coscine.Api.Project.Controllers subProjectModel.LinkSubProject(projectObject.ParentId, project.Id); } - FireEvents((projectAction, projectEventArgs) => projectAction.OnProjectCreate(project, projectEventArgs)); + _emitter.EmitProjectCreate(new ProjectEventArgs(_configuration) + { + Project = project, + ProjectOwner = user + }); return _projectModel.CreateReturnObjectFromDatabaseObject(project); })); } - - private void FireEvents(Action<IProjectAction, ProjectEventArgs> eventAction) - { - ProjectEventArgs projectEventArgs = new ProjectEventArgs(Program.Configuration, new object[0]); - foreach (var projectAction in _projectActions) - { - eventAction(projectAction, projectEventArgs); - } - } } } diff --git a/src/Project/Controllers/ProjectRoleController.cs b/src/Project/Controllers/ProjectRoleController.cs index 8830979fdbb95b85f5c2f0c9c9a81f2599952271..f7638fdeeb9ba3ac0c90e482c0ac0e2d25c17d3d 100644 --- a/src/Project/Controllers/ProjectRoleController.cs +++ b/src/Project/Controllers/ProjectRoleController.cs @@ -1,4 +1,7 @@ -using Coscine.Api.Project.Models; +using Coscine.Action; +using Coscine.Action.EventArgs; +using Coscine.Action.Implementations.User; +using Coscine.Api.Project.Models; using Coscine.Api.Project.ReturnObjects; using Coscine.ApiCommons; using Coscine.ApiCommons.Exceptions; @@ -17,11 +20,15 @@ namespace Coscine.Api.Project.Controllers { private readonly Authenticator _authenticator; private readonly ProjectRoleModel _projectRoleModel; + private readonly Emitter _emitter; + private readonly Coscine.Configuration.IConfiguration _configuration; public ProjectRoleController() { + _emitter = new Emitter(Program.Configuration); _authenticator = new Authenticator(this, Program.Configuration); _projectRoleModel = new ProjectRoleModel(); + _configuration = Program.Configuration; } [Route("[controller]/{projectId}")] @@ -49,7 +56,7 @@ namespace Coscine.Api.Project.Controllers { role = roleModel.GetById(projectRole.RoleId); } - return new ProjectRoleObject(projectRole.ProjectId, new UserObject(userInst.Id, userInst.DisplayName, userInst.EmailAddress), new RoleObject(role.Id, role.DisplayName)); + return new ProjectRoleObject(projectRole.ProjectId, new UserObject(userInst.Id, userInst.DisplayName, userInst.Givenname, userInst.Surname, userInst.EmailAddress), new RoleObject(role.Id, role.DisplayName)); }); } else @@ -67,7 +74,7 @@ namespace Coscine.Api.Project.Controllers { RoleModel roleModel = new RoleModel(); Guid.TryParse(projectId, out Guid projectIdGuid); - UserObject userObject = new UserObject(user.Id, user.DisplayName, user.EmailAddress); + UserObject userObject = new UserObject(user.Id, user.DisplayName, user.Givenname, user.Surname, user.EmailAddress); return _projectRoleModel.GetAllWhere((projectRole) => (projectRole.UserId == user.Id && @@ -89,8 +96,19 @@ namespace Coscine.Api.Project.Controllers { ProjectRoleObject projectRoleObject = ObjectFactory<ProjectRoleObject>.DeserializeFromStream(Request.Body); ProjectModel projectModel = new ProjectModel(); - if (projectModel.OwnsProject(user, projectModel.GetById(projectRoleObject.ProjectId))) + var project = projectModel.GetById(projectRoleObject.ProjectId); + RoleModel roleModel = new RoleModel(); + var role = roleModel.GetById(projectRoleObject.Role.Id); + UserModel userModel = new UserModel(); + var userToAdd = userModel.GetById(projectRoleObject.User.Id); + if (projectModel.OwnsProject(user, project)) { + _emitter.EmitUserAdd(new UserEventArgs(this._configuration) + { + Project = project, + Role = role, + User = userToAdd + }); return _projectRoleModel.SetFromObject(projectRoleObject); } else @@ -110,6 +128,16 @@ namespace Coscine.Api.Project.Controllers { _projectRoleModel.CheckIfLastOwnerWillBeRemoved(roleId, projectId); + var project = projectModel.GetById(projectId); + UserModel userModel = new UserModel(); + var userToRemove = userModel.GetById(userId); + + _emitter.EmitUserRemove(new UserEventArgs(this._configuration) + { + Project = project, + User = userToRemove + }); + return _projectRoleModel.Delete(_projectRoleModel.GetWhere((projectRole) => projectRole.ProjectId == projectId && projectRole.UserId == userId diff --git a/src/Project/Models/ProjectModel.cs b/src/Project/Models/ProjectModel.cs index eb7680078e97f6bd03a2148b333c0a335cd317a9..97b533d40b1fb2f5f8f30922d00e65f0c11cc969 100644 --- a/src/Project/Models/ProjectModel.cs +++ b/src/Project/Models/ProjectModel.cs @@ -172,11 +172,11 @@ namespace Coscine.Api.Project.Models { DisciplineModel disciplineModel = new DisciplineModel(); disciplines = disciplineModel.GetAllWhere((discipline) => (from relation in discipline.ProjectDisciplineDisciplineIdIds where relation.ProjectId == project.Id select relation).Any()) - .Select((discipline) => new DisciplineObject(discipline.Id, discipline.Url, discipline.DisplayName)); + .Select((discipline) => new DisciplineObject(discipline.Id, discipline.Url, discipline.DisplayNameDe, discipline.DisplayNameEn)); } else { - disciplines = project.ProjectDisciplineProjectIdIds.Select((discipline) => new DisciplineObject(discipline.Discipline.Id, discipline.Discipline.Url, discipline.Discipline.DisplayName)); + disciplines = project.ProjectDisciplineProjectIdIds.Select((discipline) => new DisciplineObject(discipline.Discipline.Id, discipline.Discipline.Url, discipline.Discipline.DisplayNameDe, discipline.Discipline.DisplayNameEn)); } IEnumerable<InstituteObject> institutes = new List<InstituteObject>(); if (project.ProjectInstituteProjectIdIds == null) diff --git a/src/Project/Models/ResourceModel.cs b/src/Project/Models/ResourceModel.cs index 4516f24186dfc065590abedaed3baa1089aec43f..99c6643efb3c7d1feca482048e956bdbbea1d938 100644 --- a/src/Project/Models/ResourceModel.cs +++ b/src/Project/Models/ResourceModel.cs @@ -27,13 +27,18 @@ namespace Coscine.Api.Project.Models { DisplayName = resourceObject.DisplayName, ResourceName = resourceObject.ResourceName, + Description = resourceObject.Description, Keywords = resourceObject.Keywords, UsageRights = resourceObject.UsageRights, TypeId = resourceObject.Type.Id, Type = new ResourceTypeModel().GetById(resourceObject.Type.Id), VisibilityId = resourceObject.Visibility.Id, - LicenseId = resourceObject.License.Id + }; + if(resourceObject.License != null) + { + resource.LicenseId = resourceObject.License.Id; + } Insert(resource); try @@ -130,7 +135,7 @@ namespace Coscine.Api.Project.Models throw new ArgumentException("Not supported resource type!"); } } - + private void SetDisciplines(Resource resource, IEnumerable<DisciplineObject> disciplines) { ResourceDisciplineModel resourceDisciplineModel = new ResourceDisciplineModel(); @@ -176,12 +181,17 @@ namespace Coscine.Api.Project.Models resource.DisplayName = resourceObject.DisplayName; resource.ResourceName = resourceObject.ResourceName; + resource.Description = resourceObject.Description; resource.Keywords = resourceObject.Keywords; resource.UsageRights = resourceObject.UsageRights; resource.TypeId = resourceObject.Type.Id; resource.Type = new ResourceTypeModel().GetById(resourceObject.Type.Id); resource.VisibilityId = resourceObject.Visibility.Id; - resource.LicenseId = resourceObject.License.Id; + if(resourceObject.License != null) + { + resource.LicenseId = resourceObject.License.Id; + } + resource.ApplicationProfile = resourceObject.ApplicationProfile; resource.FixedValues = resourceObject.FixedValues.ToString(); @@ -225,7 +235,7 @@ namespace Coscine.Api.Project.Models (from relation in discipline.ResourceDisciplineDisciplineIdIds where relation.ResourceId == resource.Id select relation).Any()) - .Select((discipline) => new DisciplineObject(discipline.Id, discipline.Url, discipline.DisplayName)); + .Select((discipline) => new DisciplineObject(discipline.Id, discipline.Url, discipline.DisplayNameDe, discipline.DisplayNameEn)); if (resource.Visibility == null && resource.VisibilityId != null) { @@ -257,6 +267,7 @@ namespace Coscine.Api.Project.Models resource.Id, resource.DisplayName, resource.ResourceName, + resource.Description, resource.Keywords, resource.UsageRights, new ResourceTypeObject(resource.Type.Id, resource.Type.DisplayName), diff --git a/src/Project/Project.csproj b/src/Project/Project.csproj index 216ae1db39b2a2c87588c8cb22eca16620952f02..608699fb6997cd3a6c6e279432d78bc6327daf55 100644 --- a/src/Project/Project.csproj +++ b/src/Project/Project.csproj @@ -45,17 +45,17 @@ <Reference Include="Consul, Version=0.7.2.6, Culture=neutral, PublicKeyToken=20a6ad9a81df1d95, processorArchitecture=MSIL"> <HintPath>..\packages\Consul.0.7.2.6\lib\net45\Consul.dll</HintPath> </Reference> - <Reference Include="Coscine.Action, Version=1.3.1.0, Culture=neutral, processorArchitecture=MSIL"> - <HintPath>..\packages\Coscine.Action.1.3.1\lib\net461\Coscine.Action.dll</HintPath> + <Reference Include="Coscine.Action, Version=1.6.0.0, Culture=neutral, processorArchitecture=AMD64"> + <HintPath>..\packages\Coscine.Action.1.6.0\lib\net461\Coscine.Action.dll</HintPath> </Reference> - <Reference Include="Coscine.ApiCommons, Version=1.2.1.0, Culture=neutral, PublicKeyToken=af4c1345df96546b, processorArchitecture=MSIL"> - <HintPath>..\packages\Coscine.ApiCommons.1.2.1\lib\net461\Coscine.ApiCommons.dll</HintPath> + <Reference Include="Coscine.ApiCommons, Version=1.2.2.0, Culture=neutral, PublicKeyToken=af4c1345df96546b, processorArchitecture=MSIL"> + <HintPath>..\packages\Coscine.ApiCommons.1.2.2\lib\net461\Coscine.ApiCommons.dll</HintPath> </Reference> <Reference Include="Coscine.Configuration, Version=1.4.0.0, Culture=neutral, PublicKeyToken=ce3d7a32d7dc1e5a, processorArchitecture=MSIL"> <HintPath>..\packages\Coscine.Configuration.1.4.0\lib\net461\Coscine.Configuration.dll</HintPath> </Reference> - <Reference Include="Coscine.Database, Version=1.8.0.0, Culture=neutral, PublicKeyToken=767d77427707b70a, processorArchitecture=MSIL"> - <HintPath>..\packages\Coscine.Database.1.8.0\lib\net461\Coscine.Database.dll</HintPath> + <Reference Include="Coscine.Database, Version=1.9.0.0, Culture=neutral, PublicKeyToken=767d77427707b70a, processorArchitecture=MSIL"> + <HintPath>..\packages\Coscine.Database.1.9.0\lib\net461\Coscine.Database.dll</HintPath> </Reference> <Reference Include="Coscine.ProxyApi, Version=1.2.0.0, Culture=neutral, processorArchitecture=MSIL"> <HintPath>..\packages\Coscine.ProxyApi.1.2.0\lib\net461\Coscine.ProxyApi.dll</HintPath> @@ -356,14 +356,14 @@ <Reference Include="microsoft.identitymodel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\packages\Microsoft.IdentityModel.7.0.0\lib\net35\microsoft.identitymodel.dll</HintPath> </Reference> - <Reference Include="Microsoft.IdentityModel.JsonWebTokens, Version=5.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> - <HintPath>..\packages\Microsoft.IdentityModel.JsonWebTokens.5.5.0\lib\net461\Microsoft.IdentityModel.JsonWebTokens.dll</HintPath> + <Reference Include="Microsoft.IdentityModel.JsonWebTokens, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <HintPath>..\packages\Microsoft.IdentityModel.JsonWebTokens.5.6.0\lib\net461\Microsoft.IdentityModel.JsonWebTokens.dll</HintPath> </Reference> - <Reference Include="Microsoft.IdentityModel.Logging, Version=5.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> - <HintPath>..\packages\Microsoft.IdentityModel.Logging.5.5.0\lib\net461\Microsoft.IdentityModel.Logging.dll</HintPath> + <Reference Include="Microsoft.IdentityModel.Logging, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <HintPath>..\packages\Microsoft.IdentityModel.Logging.5.6.0\lib\net461\Microsoft.IdentityModel.Logging.dll</HintPath> </Reference> - <Reference Include="Microsoft.IdentityModel.Tokens, Version=5.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> - <HintPath>..\packages\Microsoft.IdentityModel.Tokens.5.5.0\lib\net461\Microsoft.IdentityModel.Tokens.dll</HintPath> + <Reference Include="Microsoft.IdentityModel.Tokens, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <HintPath>..\packages\Microsoft.IdentityModel.Tokens.5.6.0\lib\net461\Microsoft.IdentityModel.Tokens.dll</HintPath> </Reference> <Reference Include="Microsoft.Net.Http.Headers, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL"> <HintPath>..\packages\Microsoft.Net.Http.Headers.2.2.0\lib\netstandard2.0\Microsoft.Net.Http.Headers.dll</HintPath> @@ -418,8 +418,8 @@ <Private>True</Private> </Reference> <Reference Include="System.Drawing" /> - <Reference Include="System.IdentityModel.Tokens.Jwt, Version=5.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> - <HintPath>..\packages\System.IdentityModel.Tokens.Jwt.5.5.0\lib\net461\System.IdentityModel.Tokens.Jwt.dll</HintPath> + <Reference Include="System.IdentityModel.Tokens.Jwt, Version=5.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> + <HintPath>..\packages\System.IdentityModel.Tokens.Jwt.5.6.0\lib\net461\System.IdentityModel.Tokens.Jwt.dll</HintPath> </Reference> <Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> <HintPath>..\packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath> @@ -587,6 +587,7 @@ <ItemGroup> <Compile Include="Controllers\DataSourceController.cs" /> <Compile Include="Controllers\MetadataController.cs" /> + <Compile Include="Controllers\LicenseController.cs" /> <Compile Include="Controllers\VisibilityController.cs" /> <Compile Include="Controllers\InstituteController.cs" /> <Compile Include="Controllers\DisciplineController.cs" /> diff --git a/src/Project/Properties/AssemblyInfo.cs b/src/Project/Properties/AssemblyInfo.cs index bec7ae16ce5e6310075f8a134414ae1705473bf1..5538c3d3d05ad92fc7b77787e3040ec30c4eff5b 100644 --- a/src/Project/Properties/AssemblyInfo.cs +++ b/src/Project/Properties/AssemblyInfo.cs @@ -9,8 +9,8 @@ using System.Reflection; [assembly: AssemblyDescription("Project is a part of the CoScInE group.")] [assembly: AssemblyCompany("IT Center, RWTH Aachen University")] [assembly: AssemblyProduct("Project")] -[assembly: AssemblyVersion("1.4.1.0")] -[assembly: AssemblyFileVersion("1.4.1.0")] -[assembly: AssemblyInformationalVersion("1.4.1.0")] +[assembly: AssemblyVersion("1.7.1.0")] +[assembly: AssemblyFileVersion("1.7.1.0")] +[assembly: AssemblyInformationalVersion("1.7.1.0")] [assembly: AssemblyCopyright("2019 IT Center, RWTH Aachen University")] diff --git a/src/Project/ReturnObjects/DisciplineObject.cs b/src/Project/ReturnObjects/DisciplineObject.cs index 9352f5e840945dbb758fce21285da3a90e558fbf..5a2fed7b9ff54a4dbeed030401d239467f7f31d6 100644 --- a/src/Project/ReturnObjects/DisciplineObject.cs +++ b/src/Project/ReturnObjects/DisciplineObject.cs @@ -13,13 +13,16 @@ namespace Coscine.Api.Project.ReturnObjects public Guid Id { get; set; } public string Url { get; set; } - public string DisplayName { get; set; } + public string DisplayNameDe { get; set; } - public DisciplineObject(Guid id, string url, string displayName) + public string DisplayNameEn { get; set; } + + public DisciplineObject(Guid id, string url, string displayNameDe, string displayNameEn) { Id = id; Url = url; - DisplayName = displayName; + DisplayNameDe = displayNameDe; + DisplayNameEn = displayNameEn; } } } diff --git a/src/Project/ReturnObjects/ResourceObject.cs b/src/Project/ReturnObjects/ResourceObject.cs index 76e56ead7250e158f47ac107b1dbf8b86ab59001..9ffa57aeeba18ade02d3689845627a2176bad2b4 100644 --- a/src/Project/ReturnObjects/ResourceObject.cs +++ b/src/Project/ReturnObjects/ResourceObject.cs @@ -11,6 +11,7 @@ namespace Coscine.Api.Project.ReturnObjects public Guid Id { get; set; } public string DisplayName { get; set; } public string ResourceName { get; set; } + public string Description { get; set; } public string Keywords { get; set; } public string UsageRights { get; set; } public ResourceTypeObject Type { get; set; } @@ -21,12 +22,13 @@ namespace Coscine.Api.Project.ReturnObjects public string ApplicationProfile { get; set; } public JToken FixedValues { get; set; } - public ResourceObject(Guid id, string displayName, string resourceName, string keywords, string usageRights, ResourceTypeObject type, IEnumerable<DisciplineObject> disciplines, VisibilityObject visibility, LicenseObject license, JObject resourceTypeOption, string applicationProfile, JToken fixedValues) + public ResourceObject(Guid id, string displayName, string resourceName, string description, string keywords, string usageRights, ResourceTypeObject type, IEnumerable<DisciplineObject> disciplines, VisibilityObject visibility, LicenseObject license, JObject resourceTypeOption, string applicationProfile, JToken fixedValues) { Id = id; DisplayName = displayName; ResourceName = resourceName; + Description = description; Keywords = keywords; UsageRights = usageRights; diff --git a/src/Project/ReturnObjects/UserObject.cs b/src/Project/ReturnObjects/UserObject.cs index d8cd98f8de6645caf5c7e8fd97586524d676075c..13114f86363b2c4bdf19821627b18cf28a82ce49 100644 --- a/src/Project/ReturnObjects/UserObject.cs +++ b/src/Project/ReturnObjects/UserObject.cs @@ -9,12 +9,19 @@ namespace Coscine.Api.Project.ReturnObjects public Guid Id { get; set; } public string DisplayName { get; set; } + + public string Givenname { get; set; } + + public string Surname { get; set; } + public string EmailAddress { get; set; } - public UserObject(Guid id, string displayName, string emailAddress) + public UserObject(Guid id, string displayName, string givenname, string surname, string emailAddress) { Id = id; DisplayName = displayName; + Givenname = givenname; + Surname = surname; EmailAddress = emailAddress; } } diff --git a/src/Project/packages.config b/src/Project/packages.config index 8d10d75d55fb1d0f54e505dadbe6b6be0b664e37..ecbbf110e08cba77a12cb82f7de0d1554ff7205f 100644 --- a/src/Project/packages.config +++ b/src/Project/packages.config @@ -3,10 +3,10 @@ <package id="AutoMapper" version="8.0.0" targetFramework="net472" /> <package id="AutoMapper.Extensions.Microsoft.DependencyInjection" version="6.0.0" targetFramework="net472" /> <package id="Consul" version="0.7.2.6" targetFramework="net472" /> - <package id="Coscine.Action" version="1.3.1" targetFramework="net472" /> - <package id="Coscine.ApiCommons" version="1.2.1" targetFramework="net472" /> + <package id="Coscine.Action" version="1.6.0" targetFramework="net472" /> + <package id="Coscine.ApiCommons" version="1.2.2" targetFramework="net472" /> <package id="Coscine.Configuration" version="1.4.0" targetFramework="net472" /> - <package id="Coscine.Database" version="1.8.0" targetFramework="net472" /> + <package id="Coscine.Database" version="1.9.0" targetFramework="net472" /> <package id="Coscine.ProxyApi" version="1.2.0" targetFramework="net472" /> <package id="Coscine.SharePoint.Webparts.Vue" version="1.4.0" targetFramework="net472" /> <package id="dotNetRDF" version="2.2.1" targetFramework="net472" /> @@ -111,9 +111,9 @@ <package id="Microsoft.Extensions.Primitives" version="2.2.0" targetFramework="net472" /> <package id="Microsoft.Extensions.WebEncoders" version="2.2.0" targetFramework="net472" /> <package id="Microsoft.IdentityModel" version="7.0.0" targetFramework="net472" /> - <package id="Microsoft.IdentityModel.JsonWebTokens" version="5.5.0" targetFramework="net472" /> - <package id="Microsoft.IdentityModel.Logging" version="5.5.0" targetFramework="net472" /> - <package id="Microsoft.IdentityModel.Tokens" version="5.5.0" targetFramework="net472" /> + <package id="Microsoft.IdentityModel.JsonWebTokens" version="5.6.0" targetFramework="net472" /> + <package id="Microsoft.IdentityModel.Logging" version="5.6.0" targetFramework="net472" /> + <package id="Microsoft.IdentityModel.Tokens" version="5.6.0" targetFramework="net472" /> <package id="Microsoft.Net.Http.Headers" version="2.2.0" targetFramework="net472" /> <package id="Microsoft.Win32.Registry" version="4.5.0" targetFramework="net472" /> <package id="Newtonsoft.Json" version="12.0.2" targetFramework="net472" /> @@ -133,7 +133,7 @@ <package id="System.Diagnostics.Tools" version="4.3.0" targetFramework="net472" /> <package id="System.Dynamic.Runtime" version="4.3.0" targetFramework="net472" /> <package id="System.Globalization" version="4.3.0" targetFramework="net472" /> - <package id="System.IdentityModel.Tokens.Jwt" version="5.5.0" targetFramework="net472" /> + <package id="System.IdentityModel.Tokens.Jwt" version="5.6.0" targetFramework="net472" /> <package id="System.IO" version="4.3.0" targetFramework="net472" /> <package id="System.IO.Compression" version="4.3.0" targetFramework="net472" /> <package id="System.IO.FileSystem" version="4.3.0" targetFramework="net472" />