コード例 #1
0
        private async Task <HttpResponseMessage> ExecuteActualRequest(HttpControllerContext controllerContext, CancellationToken cancellationToken,
                                                                      MixedModeRequestAuthorizer authorizer)
        {
            HttpResponseMessage authMsg;

            if (authorizer.TryAuthorize(this, out authMsg) == false)
            {
                return(authMsg);
            }

            if (IsInternalRequest == false)
            {
                RequestManager.IncrementRequestCount();
            }

            var fileSystemInternal = await FileSystemsLandlord.GetFileSystemInternal(FileSystemName);

            if (fileSystemInternal == null)
            {
                var msg = "Could not find a file system named: " + FileSystemName;
                return(GetMessageWithObject(new { Error = msg }, HttpStatusCode.ServiceUnavailable));
            }

            var sp = Stopwatch.StartNew();

            var result = await base.ExecuteAsync(controllerContext, cancellationToken);

            sp.Stop();
            AddRavenHeader(result, sp);

            return(result);
        }
コード例 #2
0
        private async Task <HttpResponseMessage> ExecuteActualRequest(HttpControllerContext controllerContext, CancellationToken cancellationToken,
                                                                      MixedModeRequestAuthorizer authorizer)
        {
            HttpResponseMessage authMsg;

            if (authorizer.TryAuthorize(this, out authMsg) == false)
            {
                return(authMsg);
            }

            var internalHeader = GetHeader("Raven-internal-request");

            if (internalHeader == null || internalHeader != "true")
            {
                RequestManager.IncrementRequestCount();
            }

            if (DatabaseName != null && await DatabasesLandlord.GetDatabaseInternal(DatabaseName) == null)
            {
                var msg = "Could not find a database named: " + DatabaseName;
                return(GetMessageWithObject(new { Error = msg }, HttpStatusCode.ServiceUnavailable));
            }

            var sp = Stopwatch.StartNew();

            var result = await base.ExecuteAsync(controllerContext, cancellationToken);

            sp.Stop();
            AddRavenHeader(result, sp);

            return(result);
        }
コード例 #3
0
        private async Task <HttpResponseMessage> ExecuteActualRequest(HttpControllerContext controllerContext, CancellationToken cancellationToken, MixedModeRequestAuthorizer authorizer)
        {
            if (SkipAuthorizationSinceThisIsMultiGetRequestAlreadyAuthorized == false)
            {
                HttpResponseMessage authMsg;
                if (authorizer.TryAuthorize(this, out authMsg) == false)
                {
                    return(authMsg);
                }
            }

            if (IsInternalRequest == false)
            {
                RequestManager.IncrementRequestCount();
            }

            if (ResourceName != null && await ResourceLandlord.GetResourceInternal(ResourceName).ConfigureAwait(false) == null)
            {
                var msg = "Could not find a resource named: " + ResourceName;
                return(GetMessageWithObject(new { Error = msg }, HttpStatusCode.ServiceUnavailable));
            }

            var sp = Stopwatch.StartNew();

            controllerContext.Request.Properties["timer"] = sp;
            controllerContext.RequestContext.Principal    = CurrentOperationContext.User.Value;
            var result = await base.ExecuteAsync(controllerContext, cancellationToken).ConfigureAwait(false);

            sp.Stop();
            AddRavenHeader(result, sp);

            return(result);
        }