protected virtual string GetFileNameForRequestContent(FormattedPaginatedContentRequest request, PaginatedContentResult result) { StringBuilder sb = new StringBuilder(); if (!string.IsNullOrEmpty(request.FlowName)) { if (sb.Length > 0) { sb.Append("_"); } sb.Append(request.FlowName); } if (!string.IsNullOrEmpty(request.OperationName)) { if (sb.Length > 0) { sb.Append("_"); } sb.Append(request.OperationName); } if (sb.Length > 0) { sb.Append("_"); } sb.Append("Results"); sb.Append(CommonContentAndFormatProvider.GetFileExtension(result.Content.Type)); return(FileUtils.ReplaceInvalidFilenameChars(sb.ToString(), '_')); }
public PaginatedContentResult QueryEx(FormattedPaginatedContentRequest request, NamedOrAuthEndpointVisit visit) { SecurityService.ValidateVisitIsAuthenticated(visit); PaginatedContentResult result = Query(request, visit); result = TransformQueryResult(request, result); ValidateQueryResult(result, request, visit); return(result); }
protected virtual void ValidateQueryResult(PaginatedContentResult result, FormattedPaginatedContentRequest request, NamedOrAuthEndpointVisit visit) { if ((result != null) && result.HasContent) { if (MaxRestQueryResponseKilobytes > 0) { if (result.Content.Content.Length > (MaxRestQueryResponseKilobytes * 1024L)) { throw FaultProvider.GetFault(visit.Version, ENExceptionCodeType.E_QueryReturnSetTooBig, "The requested data result set is too large. Please modify the query parameters so that a smaller data result set is returned."); } } } }
protected virtual bool CheckToCompressContent(FormattedPaginatedContentRequest request, PaginatedContentResult result) { if ((result == null) || !result.HasContent) { return(false); } if (request.ZipResults.HasValue && request.ZipResults.Value) { byte[] content = result.Content.Content; if (!CompressionHelper.IsCompressed(content)) { string fileName = GetFileNameForRequestContent(request, result); result.Content.Content = CompressionHelper.Compress(fileName, content); result.Content.Type = CommonContentType.ZIP; return(true); } } return(false); }
public virtual HttpResponseMessage Get([FromUri] QueryParameters parameters) { NamedOrAuthEndpointVisit visit = GetNamedOrAuthEndpointVisit(parameters); FormattedPaginatedContentRequest request = new FormattedPaginatedContentRequest(); request.FlowName = parameters.Dataflow; request.OperationName = parameters.Request; request.Paging = new PaginationIndicator(); request.Paging.Start = parameters.RowId.HasValue ? parameters.RowId.Value : 0; request.Paging.Count = parameters.MaxRows.HasValue ? parameters.MaxRows.Value : -1; request.Parameters = parameters.ParseParams(); request.ZipResults = parameters.ZipResults; PaginatedContentResult resultSet = ServiceProvider.TransactionService.QueryEx(request, visit); if ((resultSet == null) || !resultSet.HasContent) { return(this.Request.CreateBadRequestResponse("No data was returned from the query.")); } HttpResponseMessage responseMessage = new HttpResponseMessage(); switch (resultSet.Content.Type) { case CommonContentType.XML: case CommonContentType.Flat: case CommonContentType.HTML: responseMessage.Content = new StringContent(resultSet.ConvertContentBytesToString()); break; default: responseMessage.Content = new ByteArrayContent(resultSet.Content.Content); break; } responseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue(CommonContentAndFormatProvider.ConvertToMimeType(resultSet.Content.Type)); return(responseMessage); }
protected virtual PaginatedContentResult TransformQueryResult(FormattedPaginatedContentRequest request, PaginatedContentResult result) { CheckToCompressContent(request, result); return(result); }