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));