예제 #1
0
        public async Task InvokeAsync(PipelineContext context, PipelineDelegate next)
        {
            if (context.GetFirst(out HttpResponseMessage responseMessage))
            {
                if (responseMessage.IsSuccessStatusCode)
                {
                    var response = await responseMessage.Content.ReadAsStringAsync();

                    if (string.Compare("Exception:", response.Substring(0, 10), true) == 0)
                    {
                        context.AddNotification(this, response);
                        return;
                    }
                }
                else
                {
                    context.AddNotification(this, $"Unsuccessful Response: {responseMessage.StatusCode}");
                }

                await next.Invoke();
            }
            else
            {
                throw new PipelineDependencyException <HttpRequestMessage>(this);
            }
        }
예제 #2
0
        public async Task InvokeAsync(PipelineContext context, PipelineDelegate next)
        {
            if (_queryParameters.Any())
            {
                if (!context.GetFirst(out Uri uri))
                {
                    throw new PipelineDependencyException <Uri>(this);
                }

                var keyValuePairs = NameValueToKeyValuePairs(HttpUtility.ParseQueryString(uri.Query));
                foreach (var queryParameter in _queryParameters)
                {
                    if (context.Get(queryParameter.ContextVariableName, out string contextParameterValue) && !string.IsNullOrEmpty(contextParameterValue))
                    {
                        keyValuePairs.Add(new KeyValuePair <string, string>(queryParameter.ContextVariableName, contextParameterValue));
                    }
                    else
                    if (!queryParameter.Optional)
                    {
                        context.AddNotification(this, $"Context variable '{queryParameter.ContextVariableName}' was not found or does not contain a value and is not optional");
                        return;
                    }
                }

                var          ub = new UriBuilder(uri);
                QueryBuilder qb = new QueryBuilder(keyValuePairs);
                ub.Query = qb.ToString();
                context.AddOrReplace(ub.Uri);

                await next.Invoke();
            }
        }
예제 #3
0
 public async Task InvokeAsync(PipelineContext context, PipelineDelegate next)
 {
     if (context.Get("endpoint", out string endPoint))
     {
         if (BaseUrl == null)
         {
             context.AddNotification(this, "Missing BaseUrl value");
             return;
         }
         var uri = BaseUrl.Append(endPoint);
         context.Add(uri);
         await next.Invoke();
     }
     else
     {
         context.AddNotification(this, "Missing endpoint information");
     }
 }
예제 #4
0
        public async Task InvokeAsync(PipelineContext context, PipelineDelegate next)
        {
            if (context.GetFirst(out Uri uri))
            {
                var response = await HttpClientRequest
                               .Get()
                               .Uri(uri)
                               .InvokeAsync();

                if (response.IsSuccessStatusCode)
                {
                    context.Add(response);
                    await next.Invoke();
                }
                ;
            }
            else
            {
                context.AddNotification(this, "No URI specified");
            }
        }