Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
 public HttpRequestMessage BuildRequest(IWitRequest witRequest)
 {
     return(witRequest.BuildRequest(this.model));
 }
Ejemplo n.º 3
0
        public Task <WitResult> QueryAsync(IWitRequest request, CancellationToken token)
        {
            var httpRequest = this.BuildRequest(request);

            return(this.QueryAsync(httpRequest, token));
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
 public HttpRequestMessage BuildRequest(IWitRequest witRequest, IWitModel model)
 {
     return(witRequest.BuildRequest(model));
 }