コード例 #1
0
        public async Task <T> ConvertAsync(FunctionsHttpClientAttribute input, CancellationToken cancellationToken)
        {
            if (string.IsNullOrWhiteSpace(input?.RequestUrl))
            {
                throw new InvalidOperationException($"{nameof(input.RequestUrl)} cannot be null");
            }
            T result = null;

            switch (input.RequestMethod)
            {
            case RequestMethod.Get:
                result = await _functionsHttpClient.GetTAsync <T>(input.RequestUrl, input.Headers, CancellationToken.None);

                break;

            case RequestMethod.Post:
                result = await _functionsHttpClient.PostTAsync <T>(input.RequestUrl, input.Body, input.Headers, CancellationToken.None);

                break;

            case RequestMethod.Put:
                result = await _functionsHttpClient.PutTAsync <T>(input.RequestUrl, input.Body, input.Headers, CancellationToken.None);

                break;

            case RequestMethod.Delete:
                result = await _functionsHttpClient.DeleteTAsync <T>(input.RequestUrl, input.Headers, CancellationToken.None);

                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(input.RequestMethod));
            }
            return(result);
        }
 internal FunctionsHttpClientContext CreateContext(FunctionsHttpClientAttribute attribute)
 {
     return(new FunctionsHttpClientContext
     {
         FunctionsHttpClient = CreateClient(),
         TraceWriter = _trace,
         ResolvedAttribute = attribute,
     });
 }
        internal Task <IValueBinder> BindForItemAsync(FunctionsHttpClientAttribute attribute, Type type)
        {
            if (string.IsNullOrWhiteSpace(attribute?.RequestUrl))
            {
                throw new InvalidOperationException($"{nameof(attribute.RequestUrl)} cannot be null");
            }

            FunctionsHttpClientContext context = CreateContext(attribute);

            if (type == typeof(string))
            {
                return(Task.FromResult <IValueBinder>(new FunctionsHttpClientItemValueBinderString(CreateContext(attribute))));
            }

            Type         genericType = typeof(FunctionsHttpClientItemValueBinder <>).MakeGenericType(type);
            IValueBinder binder      = (IValueBinder)Activator.CreateInstance(genericType, context);

            return(Task.FromResult(binder));
        }
 public IAsyncCollector <T> Convert(FunctionsHttpClientAttribute input) => new FunctionsHttpClientCollectorBinder <T>(_config.CreateContext(input));