Пример #1
0
        /// <summary>
        /// Get Named User Visit
        /// </summary>
        /// <param name="token"></param>
        /// <returns></returns>
        public NamedOrAuthEndpointVisit GetVisit(string token, string username, string password)
        {
            NamedOrAuthEndpointVisit visit = GetVisit <NamedOrAuthEndpointVisit>();

            visit.Token       = token;
            visit.AuthMethod  = _defaultAuthMethod;
            visit.Credentials = new AuthenticationCredentials(username, password, null);
            return(visit);
        }
Пример #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);
        }
 public virtual void ValidateVisitIsAuthenticated(NamedOrAuthEndpointVisit visit)
 {
     if (string.IsNullOrEmpty(visit.Token))
     {
         AuthEndpointVisit authEndpointVisit = new AuthEndpointVisit(visit);
         try
         {
             visit.Token = Authenticate(authEndpointVisit);
         }
         catch (Exception ex)
         {
             throw new AuthenticationException("Authentication failed.", ex);
         }
     }
 }
        protected virtual NamedOrAuthEndpointVisit GetNamedOrAuthEndpointVisit(BaseAuthenticationParameters baseAuthenticationParameters)
        {
            // NOTE: The NAASCredentialsRequiredAttribute (on base class) ensures that either (in this order):
            // 1) baseAuthenticationParameters.HasUsernameAndPasswordOrToken returns true
            // OR
            // 2) HttpBasicAuthorizationParameters.HasUsernameAndPasswordOrToken returns true
            ExceptionUtils.ThrowIfNull(baseAuthenticationParameters);
            if (!baseAuthenticationParameters.HasUsernameAndPasswordOrToken)
            {
                ExceptionUtils.ThrowIfNull(HttpBasicAuthorizationParameters);
                ExceptionUtils.ThrowIfFalse(HttpBasicAuthorizationParameters.HasUsernameAndPasswordOrToken);
                baseAuthenticationParameters = HttpBasicAuthorizationParameters;
            }
            NamedOrAuthEndpointVisit visit =
                ServiceProvider.VisitProvider.GetVisit(baseAuthenticationParameters.Token, baseAuthenticationParameters.Username,
                                                       baseAuthenticationParameters.Password);

            return(visit);
        }
Пример #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);
        }
Пример #6
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.");
             }
         }
     }
 }