protected async Task <TResponse> PutRequestAsync <TResponse>(string uri, Func <ApiResponse, TResponse> errorResponseFunc, object content = null, RequestOptionsBase options = null, CancellationToken cancellationToken = default) { uri = ModifyUriForOptionsValues(uri, options); byte[] contentBytes = content != null?GetContent(content, options?.ContentSerializationOptions?.CamelCasePropertyNames ?? true, options?.ContentSerializationOptions?.IgnoreNullValues ?? true) : new byte[0]; return(await DoRequestAsync(() => Transport.PutAsync(uri, contentBytes, cancellationToken), errorResponseFunc)); }
private string ModifyUriForOptionsValues(string uri, RequestOptionsBase options) { if (uri.Last() == '/') { uri = uri.Substring(0, uri.Length - 1); } IReadOnlyDictionary <string, string> queryStringValues = options?.ToQueryStringValues(); if (queryStringValues != null && queryStringValues.Any()) { uri = uri + "?" + string.Join("&", queryStringValues.Select(x => $"{x.Key}={WebUtility.UrlEncode(x.Value.ToLowerInvariant())}")); } return(uri); }
protected async Task <TResponse> GetRequestAsync <TResponse>(string uri, Func <ApiResponse, TResponse> errorResponseFunc, RequestOptionsBase options = null, CancellationToken cancellationToken = default) { uri = ModifyUriForOptionsValues(uri, options); return(await DoRequestAsync(() => Transport.GetAsync(uri, cancellationToken), errorResponseFunc)); }