Exemple #1
0
        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(), '_'));
        }
Exemple #2
0
        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);
        }
Exemple #3
0
 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.");
             }
         }
     }
 }
Exemple #4
0
 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);
 }
Exemple #5
0
        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);
        }
Exemple #6
0
        protected virtual PaginatedContentResult TransformQueryResult(FormattedPaginatedContentRequest request, PaginatedContentResult result)
        {
            CheckToCompressContent(request, result);

            return(result);
        }