private Task<IServiceFilterResponse> Log(IServiceFilterRequest request, IServiceFilterContinuation next)
 {
     //Test.Log("    >>> {0} {1} {2}", request.Method, request.Uri, request.Content);
     //IServiceFilterResponse response = await next.Handle(request).AsTask();
     //Test.Log("    <<< {0} {1} {2}", response.StatusCode, response.StatusDescription, response.Content);
     return next.Handle (request);;
 }
 public Task<IServiceFilterResponse> Handle(IServiceFilterRequest request, IServiceFilterContinuation continuation)
 {
     Request = request;
     var tcs = new TaskCompletionSource<IServiceFilterResponse>();
     tcs.SetResult (Response);
     return tcs.Task;
 }
 /// <summary>
 /// Initializes a new instance of the ComposedContinuation class.
 /// </summary>
 /// <param name="filter">The filter to compose.</param>
 /// <param name="next">The continuation to compose.</param>
 public ComposedContinuation(IServiceFilter filter, IServiceFilterContinuation next)
 {
     Debug.Assert(filter != null, "filter cannot be null!");
     Debug.Assert(next != null, "next cannot be null!");
     this.Filter = filter;
     this.Next = next;
 }
 public Task<IServiceFilterResponse> Handle(IServiceFilterRequest request, IServiceFilterContinuation continuation)
 {
     Request = request;
     //return Task.FromResult<IServiceFilterResponse>(Response).AsAsyncOperation();
     var tcs = new TaskCompletionSource<IServiceFilterResponse>();
     tcs.SetResult(Response);
     return tcs.Task;
 }
        /// <summary>
        /// Handle an HTTP request and its corresponding response by applying
        /// the first filter and then the second filter.
        /// </summary>
        /// <param name="request">The HTTP request.</param>
        /// <param name="next">
        /// The next operation in the HTTP pipeline to continue with.
        /// </param>
        /// <returns>The HTTP response.</returns>
        public IAsyncOperation<IServiceFilterResponse> Handle(IServiceFilterRequest request, IServiceFilterContinuation next)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }
            else if (next == null)
            {
                throw new ArgumentNullException("next");
            }

            // Second(First(next(request))
            return this.Second.Handle(request, new ComposedContinuation(this.First, next));
        }
        public IAsyncOperation<IServiceFilterResponse> Handle(IServiceFilterRequest request, IServiceFilterContinuation continuation)
        {
            // Add master key to the request's header to have admin level control
            request.Headers["X-ZUMO-MASTER"] = this.masterKey;

            if (this.disableScripts)
            {
                // Get the request's query and append noScript=true as the first query parameter
                var uriBuilder = new UriBuilder(request.Uri);
                var oldQuery = (uriBuilder.Query ?? string.Empty).Trim('?');

                uriBuilder.Query = ("noScript=true&" + oldQuery).Trim('&');

                request.Uri = uriBuilder.Uri;
            }

            return continuation.Handle(request);
        }
        public IAsyncOperation<IServiceFilterResponse> Handle(IServiceFilterRequest request, IServiceFilterContinuation continuation)
        {
            // Get previous uri query
            var uriBuilder = new UriBuilder(request.Uri);
            var oldQuery = (uriBuilder.Query ?? string.Empty).Trim('?');

            // Build new query starting with our custom parameters before old query
            var stringBuilder = new StringBuilder();
            foreach (var parameter in parameters)
            {
                // Currently using ToString on the value, an improvement will be to serialize the object properly
                stringBuilder.AppendFormat("{0}={1}&", parameter.Key, parameter.Value);
            }
            stringBuilder.Append(oldQuery);

            // Apply new query to request uri
            uriBuilder.Query = stringBuilder.ToString().Trim('&');
            request.Uri = uriBuilder.Uri;

            return continuation.Handle(request);
        }
        private async Task<IServiceFilterResponse> HandleAsync(IServiceFilterRequest request,
            IServiceFilterContinuation continuation)
        {
            int ic = _callCount;

            bool invokeBusy = false;

            lock (_countLock)
            {
                if (_callCount == 0)
                {
                    invokeBusy = true;
                }
                _callCount++;
            }
         
            if (invokeBusy)
            {
                _busyIndicator.Invoke(true);
            }

            IServiceFilterResponse response = await continuation.Handle(request).AsTask();

            bool invokeIdle = false;

            lock (_countLock)
            {
                if (_callCount == 1)
                {
                    invokeIdle = true;
                }
                _callCount--;
            }

            if (invokeIdle) {
                _busyIndicator.Invoke(false);
            }

            return response;
        }
 public Task<IServiceFilterResponse> Handle(IServiceFilterRequest request, IServiceFilterContinuation continuation)
 {
     return Log(request, continuation);
 }
            public async Task<IServiceFilterResponse> HandleRequest(IServiceFilterRequest request, IServiceFilterContinuation continuation)
            {
                IServiceFilterResponse response = null;
                try
                {
                    for (int i = 0; i < this.NumberOfRequests; i++)
                    {
                        response = await continuation.Handle(request);
                        test.AddLog("Sent the request number {0}", i + 1);
                        test.AddLog("Response: {0} - {1}", response.StatusCode, response.StatusDescription);
                        if (response.StatusCode >= 400)
                        {
                            test.AddLog("Invalid response. Content-Type: {0}", response.ContentType);
                            test.AddLog("Response content: {0}", response.Content);
                            throw new InvalidOperationException();
                        }
                    }
                }
                catch (Exception ex)
                {
                    test.AddLog("Exception while calling continuation: {0}", ex);
                    this.TestFailed = true;
                    throw;
                }

                return response;
            }
 public IAsyncOperation<IServiceFilterResponse> Handle(IServiceFilterRequest request, IServiceFilterContinuation continuation)
 {
     return this.HandleRequest(request, continuation).AsAsyncOperation();
 }
            public IAsyncOperation<IServiceFilterResponse> Handle(IServiceFilterRequest request, IServiceFilterContinuation continuation)
            {
                this.RequestHeaders.Clear();
                foreach (var reqHeader in request.Headers.Keys)
                {
                    this.RequestHeaders.Add(reqHeader, request.Headers[reqHeader]);
                }

                return continuation.Handle(request).AsTask().ContinueWith<IServiceFilterResponse>(t =>
                {
                    this.ResponseHeaders.Clear();
                    var response = t.Result;
                    foreach (var respHeader in response.Headers.Keys)
                    {
                        this.ResponseHeaders.Add(respHeader, response.Headers[respHeader]);
                    }

                    this.ResponseBody = response.Content;

                    return response;
                }).AsAsyncOperation();
            }
 public IAsyncOperation<IServiceFilterResponse> Handle(IServiceFilterRequest request, IServiceFilterContinuation continuation)
 {
     TaskCompletionSource<IServiceFilterResponse> tcs = new TaskCompletionSource<IServiceFilterResponse>();
     tcs.SetResult(new MyResponse(this.statusCode, this.statusDescription, this.contentType, this.content));
     return tcs.Task.AsAsyncOperation();
 }
 public IAsyncOperation <IServiceFilterResponse> Handle(IServiceFilterRequest request, IServiceFilterContinuation continuation)
 {
     Request = request;
     return(Task.FromResult <IServiceFilterResponse>(Response).AsAsyncOperation());
 }
 public IAsyncOperation<IServiceFilterResponse> Handle(IServiceFilterRequest request, IServiceFilterContinuation continuation)
 {
     request.Headers.Add("x-zumo-master", E2EZumoHelper.AppMasterKey);
     return continuation.Handle(request);
 }
 public IAsyncOperation<IServiceFilterResponse> Handle(IServiceFilterRequest request, IServiceFilterContinuation continuation)
 {
     Request = request;
     return Task.FromResult<IServiceFilterResponse>(Response).AsAsyncOperation();
 }
 public Windows.Foundation.IAsyncOperation <IServiceFilterResponse> Handle(IServiceFilterRequest request,
                                                                           IServiceFilterContinuation continuation)
 {
     return(HandleAsync(request, continuation).AsAsyncOperation());
 }
 public Windows.Foundation.IAsyncOperation<IServiceFilterResponse> Handle(IServiceFilterRequest request,
     IServiceFilterContinuation continuation)
 {
     return HandleAsync(request, continuation).AsAsyncOperation();
 }
        /// <summary>
        /// Handle an HTTP request and its corresponding response by applying
        /// the first filter and then the second filter.
        /// </summary>
        /// <param name="request">The HTTP request.</param>
        /// <param name="next">
        /// The next operation in the HTTP pipeline to continue with.
        /// </param>
        /// <returns>The HTTP response.</returns>
        public IAsyncOperation <IServiceFilterResponse> Handle(IServiceFilterRequest request, IServiceFilterContinuation next)
        {
            if (request == null)
            {
                throw new ArgumentNullException("request");
            }
            else if (next == null)
            {
                throw new ArgumentNullException("next");
            }

            // Second(First(next(request))
            return(this.Second.Handle(request, new ComposedContinuation(this.First, next)));
        }
        public IAsyncOperation <IServiceFilterResponse> Handle(IServiceFilterRequest request, IServiceFilterContinuation continuation)
        {
            // Add master key to the request's header to have admin level control
            request.Headers["X-ZUMO-MASTER"] = this.masterKey;

            if (this.disableScripts)
            {
                // Get the request's query and append noScript=true as the first query parameter
                var uriBuilder = new UriBuilder(request.Uri);
                var oldQuery   = (uriBuilder.Query ?? string.Empty).Trim('?');

                uriBuilder.Query = ("noScript=true&" + oldQuery).Trim('&');

                request.Uri = uriBuilder.Uri;
            }

            return(continuation.Handle(request));
        }
Exemple #21
0
        private async Task <IServiceFilterResponse> Log(IServiceFilterRequest request, IServiceFilterContinuation next)
        {
            Test.Log("    >>> {0} {1} {2}", request.Method, request.Uri, request.Content);
            IServiceFilterResponse response = await next.Handle(request).AsTask();

            Test.Log("    <<< {0} {1} {2}", response.StatusCode, response.StatusDescription, response.Content);
            return(response);
        }
Exemple #22
0
 public IAsyncOperation <IServiceFilterResponse> Handle(IServiceFilterRequest request, IServiceFilterContinuation continuation)
 {
     return(Log(request, continuation).AsAsyncOperation());
 }
 public IAsyncOperation <IServiceFilterResponse> Handle(IServiceFilterRequest request, IServiceFilterContinuation continuation)
 {
     throw new NotImplementedException();
 }
 public IAsyncOperation<IServiceFilterResponse> Handle(IServiceFilterRequest request, IServiceFilterContinuation continuation)
 {
     throw new NotImplementedException();
 }
            public IAsyncOperation <IServiceFilterResponse> Handle(IServiceFilterRequest request, IServiceFilterContinuation continuation)
            {
                TaskCompletionSource <IServiceFilterResponse> tcs = new TaskCompletionSource <IServiceFilterResponse>();

                tcs.SetResult(new MyResponse(this.statusCode, this.statusDescription, this.contentType, this.content));
                return(tcs.Task.AsAsyncOperation());
            }
Exemple #26
0
 public async Task <IServiceFilterResponse> Handle(IServiceFilterRequest request, IServiceFilterContinuation continuation)
 {
     return(await Log(request, continuation));
 }