/// <summary> /// Sends a HTTP GET request with query params attached to the query. There is no need to include '?query-data' in the uri /// </summary> /// <typeparam name="TRequest"></typeparam> /// <typeparam name="TResult"></typeparam> /// <param name="queryParams"></param> /// <param name="uri"></param> /// <param name="requiredPermissions"></param> /// <param name="cancellationToken"></param> /// <returns></returns> protected async Task <TResult> GetAsync <TRequest, TResult>(TRequest queryParams, string uri, CancellationToken cancellationToken) where TRequest : BotRequest where TResult : BotResponse, new() { string requestQuery = ModelConverter.ToHttpQuery(queryParams); // if the query char (?) included, then don't add it again. string requestUri = uri.Contains('?') ? uri + requestQuery : $"{uri}?{requestQuery}"; using (var request = new HttpRequestMessage(HttpMethod.Get, requestUri)) { request.Content = new StringContent("", Encoding.UTF8, MediaType); return(await this.HandleResponse <TResult>(request, cancellationToken).ConfigureAwait(false)); } }