public override Task <IActionResult> GetAll(UrlQueryParametersRequest urlQueryParametersRequest, SchoolsNullReadRequest specification = null) { return(Task.FromResult <IActionResult>( StatusCode(StatusCodes.Status405MethodNotAllowed, ErrorTranslator .GetErrorMessage("The allowed methods for this resource with the 'Test-Profile-Resource-WriteOnly' profile are PUT, POST, DELETE and OPTIONS.")))); }
public IHttpActionResult Get(string schema, string resource, [FromUri] UrlQueryParametersRequest urlQueryParametersRequest) { var queryParameter = new QueryParameters(urlQueryParametersRequest); var result = _getDeletedResourceIdsRepository.Execute(schema, resource, queryParameter); return(Json(result)); }
public virtual async Task <IHttpActionResult> GetAll( [FromUri] UrlQueryParametersRequest urlQueryParametersRequest, [FromUri] TGetByExampleRequest request = default(TGetByExampleRequest)) { var defaultPageSizeLimit = defaultPageSizeLimitProvider.GetDefaultPageSizeLimit(); //respond quickly to DOS style requests (should we catch these earlier? e.g. attribute filter?) if (urlQueryParametersRequest.Limit != null && (urlQueryParametersRequest.Limit <= 0 || urlQueryParametersRequest.Limit > defaultPageSizeLimit)) { return(BadRequest($"Limit must be omitted or set to a value between 1 and max value defined in configuration file (defaultPageSizeLimit).")); } var internalRequestAsResource = new TResourceReadModel(); var internalRequest = internalRequestAsResource as TEntityInterface; if (request != null) { MapAll(request, internalRequest); } //TODO: Add support for If-None-Match; current implementation cannot verify value without going to the db // Read the incoming ETag header, if present TryGetRequestHeader("If-None-Match", out string etagValue); var queryParameters = new QueryParameters(urlQueryParametersRequest); // Execute the pipeline (synchronously) var result = await getManyPipeline.Value .ProcessAsync( new GetManyContext <TResourceReadModel, TAggregateRoot>(internalRequestAsResource, queryParameters), new CancellationToken()); // Handle exception result if (result.Exception != null) { Logger.Error("GetAllRequest", result.Exception); return(CreateActionResultFromException(result.Exception)); } var response = Request.CreateResponse(HttpStatusCode.OK, result.Resources); // Return multiple results if (queryParameters.TotalCount) { response.Headers.Add("Total-Count", result.ResultMetadata.TotalCount.ToString()); } return(new ResponseMessageResult(response).WithContentType(GetReadContentType())); }
public virtual async Task <IActionResult> GetAll( [FromQuery] UrlQueryParametersRequest urlQueryParametersRequest, [FromQuery] TGetByExampleRequest request = default(TGetByExampleRequest)) { //respond quickly to DOS style requests (should we catch these earlier? e.g. attribute filter?) if (urlQueryParametersRequest.Limit != null && (urlQueryParametersRequest.Limit < 0 || urlQueryParametersRequest.Limit > _defaultPageLimitSize)) { return(BadRequest( ErrorTranslator.GetErrorMessage( "Limit must be omitted or set to a value between 1 and max value defined in configuration file (defaultPageSizeLimit)."))); } var internalRequestAsResource = new TResourceReadModel(); var internalRequest = internalRequestAsResource as TEntityInterface; if (request != null) { MapAll(request, internalRequest); } //TODO: Add support for If-None-Match; current implementation cannot verify value without going to the db // Read the incoming ETag header, if present Request.TryGetRequestHeader(HeaderConstants.IfNoneMatch, out string etagValue); var queryParameters = new QueryParameters(urlQueryParametersRequest); // Execute the pipeline (synchronously) var result = await GetManyPipeline.Value .ProcessAsync( new GetManyContext <TResourceReadModel, TAggregateRoot>(internalRequestAsResource, queryParameters), new CancellationToken()); // Handle exception result if (result.Exception != null) { Logger.Error(GetAllRequest, result.Exception); return(CreateActionResultFromException(result.Exception)); } // Return multiple results if (queryParameters.TotalCount) { Response.Headers.Add(HeaderConstants.TotalCount, result.ResultMetadata.TotalCount.ToString()); } Response.GetTypedHeaders().ContentType = new MediaTypeHeaderValue(GetReadContentType()); return(Ok(result.Resources)); }
public virtual async Task <IHttpActionResult> GetAll( [FromUri] UrlQueryParametersRequest urlQueryParametersRequest, [FromUri] TGetByExampleRequest request = default(TGetByExampleRequest)) { short schoolYearFromRoute = Convert.ToInt16(RequestContext.RouteData.Values["schoolYearFromRoute"]); var v2RequestAsReadModel = new TResourceReadModel(); MapAll(request, v2RequestAsReadModel as TEntityInterface); var v3RequestAsReadModel = MapV2ReadModelToV3ReadModel(v2RequestAsReadModel, schoolYearFromRoute); var upstreamQueryParams = MapReadModelToQueryParameters(v3RequestAsReadModel); var response = await UpstreamEdFiApiInvoker.Get( _v3TypeForV2Type.Value, Request.Headers, upstreamQueryParams, schoolYearFromRoute); if (response.Status == HttpStatusCode.OK) { IList v3Models = (IList)DeserializeFromV3Stream(response.ResponseStream, isCollection: true); var v2Models = new List <TResourceReadModel>(); foreach (var v3Model in v3Models) { var v2Model = WebApiApplication.Mapper.Map <TResourceReadModel>( v3Model, opts => { opts.Items.Add("Invoker", UpstreamEdFiApiInvoker); opts.Items.Add("Headers", Request.Headers); opts.Items.Add("SchoolYear", schoolYearFromRoute); }); v2Models.Add(v2Model); } return(Ok(v2Models)); } var httpResponseMessage = CreateResponseMessage(response); return(new ResponseMessageResult(httpResponseMessage)); }
public async Task <IActionResult> GetAll([FromQuery] UrlQueryParametersRequest urlQueryParametersRequest) { if (!_isEnabled) { _logger.Debug($"{nameof(SnapshotsController)} was matched to handle the request, but the '{ApiFeature.ChangeQueries}' feature is disabled."); // Not Found return(new ObjectResult(null) { StatusCode = (int)HttpStatusCode.NotFound, }); } var snapshots = await _getSnapshots.GetAllAsync(new QueryParameters(urlQueryParametersRequest)); return(Ok(snapshots)); }
public IActionResult Get(string schema, string resource, [FromQuery] UrlQueryParametersRequest urlQueryParametersRequest) { if (!_isEnabled) { _logger.Debug("ChangeQueries is not enabled."); return(NotFound()); } var queryParameter = new QueryParameters(urlQueryParametersRequest); var result = _getDeletedResourceIdsRepository.Execute(schema, resource, queryParameter); // Explicitly serialize the response to remain backwards compatible with pre .net core return(new ContentResult { Content = JsonConvert.SerializeObject(result), ContentType = MediaTypeNames.Application.Json, StatusCode = StatusCodes.Status200OK }); }
public override Task <IHttpActionResult> GetAll(UrlQueryParametersRequest urlQueryParametersRequest, SchoolsNullReadRequest specification = null) { return(Task.FromResult(new StatusCodeResult(HttpStatusCode.MethodNotAllowed, this) .WithError("The allowed methods for this resource with the 'Test-Profile-Resource-WriteOnly' profile are PUT, POST, DELETE and OPTIONS."))); }