Esempio n. 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="urls"></param>
        /// <param name="lookupURL"></param>
        /// <param name="token"></param>
        /// <param name="apiKey"></param>
        /// <param name="backendId"></param>
        /// <returns>todo: insert docstring</returns>
        /// <exception cref="HfException" >if Could not perform lookup and silentFailure is false</exception>
        public async Task <GenericLookupResult> RetrieveURLsWithUserToken(IList <Bo4eUri> urls, Uri lookupURL, string token, string apiKey, BOBackendId backendId)
        {
            GenericLookupQuery urlObject = new GenericLookupQuery()
            {
                Uris = urls
            };
            string requestBody = JsonConvert.SerializeObject(urlObject);
            var    request     = new HttpRequestMessage()
            {
                Content    = new StringContent(requestBody, System.Text.UTF8Encoding.UTF8, MIME_TYPE_JSON),
                Method     = HttpMethod.Post,
                RequestUri = lookupURL
            };
            var responseMessage = await httpClient.SendAsync(request);

            string responseContent = await responseMessage.Content.ReadAsStringAsync();

            if (!responseMessage.IsSuccessStatusCode)
            {
                _logger.LogCritical($"Could not perform lookup: {responseMessage.ReasonPhrase} / {responseContent}; The original request was: {requestBody} POSTed to {lookupURL}");
                _logger.LogDebug($"Returning null from lookup helper because of negative response code '{responseMessage.StatusCode}'");
                if (_silentFailure)
                {
                    return(null);
                }
                else
                {
                    throw new HfException(responseMessage);
                }
            }
            GenericLookupResult resultObject = DeserializeObjectAndLog <GenericLookupResult>(responseContent);

            return(resultObject);
        }
Esempio n. 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="urls"></param>
        /// <param name="lookupURL"></param>
        /// <param name="clientCertString"></param>
        /// <param name="apiKey"></param>
        /// <param name="backendId"></param>
        /// <returns></returns>
        /// <exception cref="HfException" >if Could not perform lookup and silentFailure is false</exception>

        public async Task <GenericLookupResult> RetrieveURLs(IList <Bo4eUri> urls, Uri lookupURL, string clientCertString, string apiKey, BOBackendId backendId, string correlationId = null)
        {
            if (string.IsNullOrWhiteSpace(clientCertString))
            {
                _logger.LogWarning($"{nameof(clientCertString)} is initial: '{clientCertString}'");
            }
            if (lookupURL == null)
            {
                _logger.LogCritical($"{nameof(lookupURL)} is null!");
            }

            GenericLookupQuery urlObject = new GenericLookupQuery()
            {
                Uris = urls
            };
            string requestBody = JsonConvert.SerializeObject(urlObject, new StringEnumConverter());
            var    request     = new HttpRequestMessage()
            {
                Content    = new StringContent(requestBody, System.Text.UTF8Encoding.UTF8, MIME_TYPE_JSON),
                RequestUri = lookupURL,
                Method     = HttpMethod.Post
            };

            if (request.Headers.Contains(HeaderNames.Auth.XArrClientCert))
            {
                _logger.LogDebug($"Removing header '{HeaderNames.Auth.XArrClientCert}'");
                request.Headers.Remove(HeaderNames.Auth.XArrClientCert);
            }

            request.Headers.Add(HeaderNames.Auth.XArrClientCert, clientCertString);
            if (request.Headers.Contains(HeaderNames.Azure.SUBSCRIPTION_KEY))
            {
                _logger.LogDebug($"Removing header '{HeaderNames.Azure.SUBSCRIPTION_KEY}'");
                request.Headers.Remove(HeaderNames.Azure.SUBSCRIPTION_KEY);
            }
            if (!string.IsNullOrEmpty(apiKey))
            {
                _logger.LogDebug($"Adding {HeaderNames.Azure.SUBSCRIPTION_KEY} header");
                request.Headers.Add(HeaderNames.Azure.SUBSCRIPTION_KEY, apiKey);
            }
            else
            {
                _logger.LogWarning($"{nameof(apiKey)} is initial: '{apiKey}'");
            }
            if (request.Headers.Contains(HeaderNames.BACKEND_ID))
            {
                _logger.LogDebug($"Removing {HeaderNames.BACKEND_ID} header");
                request.Headers.Remove(HeaderNames.BACKEND_ID);
            }
            request.Headers.Add(HeaderNames.BACKEND_ID, backendId.ToString());

            if (request.Headers.Contains("x-correlation-id"))
            {
                _logger.LogDebug($"Removing header 'x-correlation-id'");
                request.Headers.Remove("x-correlation-id");
            }
            if (!string.IsNullOrEmpty(correlationId))
            {
                _logger.LogDebug($"Adding x-correlation-id header");
                request.Headers.Add("x-correlation-id", correlationId);
            }

            var responseMessage = await httpClient.SendAsync(request);

            if (!responseMessage.IsSuccessStatusCode)
            {
                string responseContentPost = await responseMessage.Content.ReadAsStringAsync();

                _logger.LogCritical($"Could not perform lookup: {responseMessage.ReasonPhrase} / {responseContentPost}; The original request was: {requestBody} POSTed to {lookupURL}");
                if (_silentFailure)
                {
                    return(null);
                }
                else
                {
                    throw new HfException(responseMessage);
                }
            }

            string responseContent = await responseMessage.Content.ReadAsStringAsync();

            GenericLookupResult resultObject = DeserializeObjectAndLog <GenericLookupResult>(responseContent);

            return(resultObject);
        }