public async Task <WitResult> QueryAsync(IDialogContext context, IWitRequest request, CancellationToken token) { IWitModel model = _model; if (_modelProvider != null) { model = await _modelProvider.GetWitModelAsync(context); } var httpRequest = BuildRequest(request, model); return(await QueryAsync(httpRequest, token)); }
public HttpRequestMessage BuildRequest(IWitRequest witRequest) { return(witRequest.BuildRequest(this.model)); }
public Task <WitResult> QueryAsync(IWitRequest request, CancellationToken token) { var httpRequest = this.BuildRequest(request); return(this.QueryAsync(httpRequest, token)); }
public async Task <TResponse> SendRequestAsync <TResponse>( IWitRequest <TResponse> request, CancellationToken cancellationToken = default ) { var httpRequest = request.GetHttpRequestMessage(); bool hasQueryString = httpRequest.RequestUri.OriginalString.Contains("?"); if (hasQueryString) { bool hasVersionParam = httpRequest.RequestUri.OriginalString.Contains("v="); if (!hasVersionParam) { var absoluteUrl = new Uri($"{BaseUrl}{httpRequest.RequestUri}", UriKind.Absolute); var query = HttpUtility.ParseQueryString(absoluteUrl.Query); query["v"] = ApiVersion; string relativeUrl = httpRequest.RequestUri.OriginalString.Substring( 0, httpRequest.RequestUri.OriginalString.IndexOf("?", StringComparison.Ordinal) ); httpRequest.RequestUri = new Uri($"{relativeUrl}?{query}", UriKind.Relative); } } else { httpRequest.RequestUri = new Uri( $"{httpRequest.RequestUri.OriginalString}?v={ApiVersion}", UriKind.Relative ); } httpRequest.Headers.Add("Accept", "application/json"); if (request.AccessToken == null) { httpRequest.Headers.Add("Authorization", $"Bearer {_token}"); } var httpResponse = await _httpClient.SendAsync(httpRequest, cancellationToken) .ConfigureAwait(false); string responseText; using (httpResponse) { responseText = await httpResponse.Content.ReadAsStringAsync() .ConfigureAwait(false); } TResponse response; if (httpResponse.IsSuccessStatusCode) { response = JsonConvert.DeserializeObject <TResponse>(responseText); } else if (responseText.Trim().StartsWith("{")) { var error = JsonConvert.DeserializeObject <WitError>(responseText); throw new Exception(error.ToString()); } else { throw new Exception(responseText); } return(response); }
public HttpRequestMessage BuildRequest(IWitRequest witRequest, IWitModel model) { return(witRequest.BuildRequest(model)); }