public async Task <IActionResult> PostResource(NamedResourceVm namedResourceVm) { Parameters parameters = _parametersProcessorService.ProcessParameters(Request.RouteValues, Request.QueryString); string?query = _sparqlFactoryService.GetFinalPostQueryForResource(parameters, namedResourceVm); if (query != null) { bool successful = await _endpointService.ExecuteUpdateSparqlQueryAsync( parameters.RouteParameters.Endpoint, parameters.RouteParameters.Graph, query); if (successful) { return(Created(new Uri(Request.GetEncodedUrl() + "/" + namedResourceVm.ResourceCurie), namedResourceVm)); } } return(BadRequest(new ValidationErrorVm() { CustomError = new CustomErrorVm() { CustomErrorMessage = $"Resource could not have been created! Check selected endpoint configuration at {UrlHelperClass.GetEndpointUrl(Request.GetEncodedUrl())}.", GeneratedQuery = query } })); }
public string?GetFinalPostQueryForResource(Parameters parameters, NamedResourceVm namedResourceVm) { string resourceCurie = namedResourceVm.ResourceCurie; if (_namespaceFactoryService.GetAbsoluteUriFromQname(resourceCurie, out string resourceAbsoluteUri)) { string?insertQuery = ConstructInsertResourceQueryString(namedResourceVm, resourceAbsoluteUri); if (string.IsNullOrEmpty(insertQuery)) { return(null); } insertQuery = ImplementFromGraphClauseToInsertDeleteQuery(insertQuery, parameters); return(insertQuery); } return(null); }