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
                }
            }));
        }
Exemple #2
0
        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);
        }