/// <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; } } } } }
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; } }