Skip to content
Snippets Groups Projects

Chore: 1.1.0

Merged Benedikt Heinrichs requested to merge main into dev
5 files
+ 141
8
Compare changes
  • Side-by-side
  • Inline

Files

using AimsBackend.Model;
using AimsBackend.ReturnObjects;
using Microsoft.AspNetCore.Mvc;
using VDS.RDF;
using VDS.RDF.Parsing;
using VDS.RDF.Query;
using VDS.RDF.Storage;
using VDS.RDF.Update;
@@ -90,9 +91,18 @@ namespace AimsBackend.Controllers
/// <param name="applicationProfile"></param>
/// <param name="metadata"></param>
[HttpPost(Name = "PostMetadata")]
public IActionResult Post(string? applicationProfile, [FromBody] string? metadata)
[ProducesResponseType(StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<IActionResult> Post([FromQuery] string? applicationProfile, [FromBody] string? metadata)
{
if (metadata == null)
var contentType = Request.Headers.ContentType;
var mimeType = "application/n-triples";
if (string.IsNullOrWhiteSpace(contentType))
{
mimeType = contentType;
}
if (applicationProfile is null || metadata is null)
{
return BadRequest();
}
@@ -104,16 +114,60 @@ namespace AimsBackend.Controllers
BaseUri = graphUri
};
var nTriplesParser = new NTriplesParser();
nTriplesParser.Load(graph, new StringReader(metadata));
var parser = MimeTypesHelper.GetParser(mimeType);
parser.Load(graph, new StringReader(metadata));
if (graph.IsEmpty)
{
return BadRequest();
}
// TODO: Validate the metadata to an application profile (waiting for AIMS Api to be ready for it)
var validation = await ValidationModel.ValidateMetadata(applicationProfile, graph);
if (!validation.Valid)
{
return BadRequest();
}
ReadWriteSparqlConnector.SaveGraph(graph);
_logger.LogDebug($"Stored {graphUri}");
return Ok();
return Created(graphUri.AbsoluteUri, metadata);
}
/// <summary>
/// Validated metadata (application/n-triples) against a given application profile
/// </summary>
/// <param name="applicationProfile"></param>
/// <param name="metadata"></param>
[HttpPost("/validate", Name = "Validate")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
public async Task<ActionResult<ValidationReturnObject>> Validate([FromQuery] string? applicationProfile, [FromBody] string? metadata)
{
var contentType = Request.Headers.ContentType;
var mimeType = "application/n-triples";
if (string.IsNullOrWhiteSpace(contentType))
{
mimeType = contentType;
}
if (applicationProfile is null || metadata is null)
{
return BadRequest();
}
var graphUri = new Uri($"{_graphPrefix}{Guid.NewGuid()}");
var graph = new Graph
{
BaseUri = graphUri
};
var parser = MimeTypesHelper.GetParser(mimeType);
parser.Load(graph, new StringReader(metadata));
return Ok(await ValidationModel.ValidateMetadata(applicationProfile, graph));
}
}
}
\ No newline at end of file
Loading