Esempio n. 1
0
        /// <summary>
        /// Gets the specified scope.
        /// </summary>
        /// <param name="settings">The settings.</param>
        /// <param name="scopes">The scopes.</param>
        /// <returns></returns>
        public async Task <ResponseBody> GetAsync(RequestHeader settings, Scope scopes)
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }

            var scopeFlags = string.Join(",", scopes.GetFlags());
            var qs         = $"api-version={Constants.ApiVersion}&scope={scopeFlags.Replace(",All", "")}";

            // Not the best, but for now it will do.
            if (_cachedFullScopes != null)
            {
                return(_cachedFullScopes); // TODO use a memory cache, or other cache.
            }
            using (var request = new HttpRequestMessage(HttpMethod.Get, $"{UriExtensionPath}?{qs}"))
            {
                request.Headers.AcceptLanguage.TryParseAdd(settings.AcceptLanguage.Name);
                if (settings.ClientTraceId.HasValue)
                {
                    request.Headers.Add("X-ClientTraceId", settings.ClientTraceId.Value.ToString());
                }

                using (var response = await _httpClient.SendAsync(request).ConfigureAwait(false))
                {
                    if (response.IsSuccessStatusCode)
                    {
                        response.Headers.TryGetValues("ETag", out var etag);
                        response.Headers.TryGetValues("X-RequestId", out var xRequestId);

                        var responseBody = await response.Content.ReadAsStringAsync();

                        var result = JsonConvert.DeserializeObject <ResponseBody>(responseBody);

                        if (scopes == Scope.All)
                        {
                            _cachedFullScopes = result;
                        }

                        return(result);
                    }
                    else
                    {
                        string errorBody = $"Problem happened while contacting the Language API. " +
                                           $"Status code: {response.StatusCode}, Reason: {response.ReasonPhrase}";
                        {
                            var message = $"Problem happened during translation. " +
                                          $"Status code: {response.StatusCode}, " +
                                          $"Reason: {response.ReasonPhrase}";

                            var exception = new LanguageException(message);
                            exception.ParseResponseError(response);
                            throw exception;
                        }
                    }
                }
            }
        }
Esempio n. 2
0
 internal static String GetCurrentLanguageString(String name, String resource, int counter)
 {
     try
     {
         ResourceManager resourceManager = ResourceManager.CreateFileBasedResourceManager(GetReallyShortCulture(), Path.Combine(ConstantUtil.ApplicationExecutionPath(), "Languages"), null);
         return(resourceManager.GetString(counter == 1 ? String.Format("{0}_{1}One", resource, name) : String.Format("{0}_{1}More", resource, name)));
     }
     catch (Exception exception)
     {
         LanguageException languageException = new LanguageException(String.Format("Error during language resource reading: {0}", exception.Message));
         throw languageException;
     }
 }