示例#1
0
        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));
        }
示例#2
0
        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);
        }
示例#3
0
        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));
        }