private DadataApiClientOptions Configure() { var directoryInfo = Directory.GetParent(Environment.CurrentDirectory).Parent?.Parent?.Parent; DadataApiClientOptions options; var path = Path.Combine(directoryInfo?.FullName ?? "./", "appsettings.json"); if (File.Exists(path)) { options = JsonConvert.DeserializeObject <DadataApiClientOptions>(File.ReadAllText(path)); } else { options = new DadataApiClientOptions(); var variables = Environment.GetEnvironmentVariables(); if (variables.Contains("TOKEN")) { options.Token = Environment.GetEnvironmentVariable("TOKEN"); } if (variables.Contains("SECRET")) { options.Secret = Environment.GetEnvironmentVariable("SECRET"); } } return(options); }
/// <summary> /// Implementation IDadataApiClient /// </summary> /// <param name="options">Authentication options (Token required!)</param> /// <exception cref="InvalidTokenException">Throw if one from tokens is invalid</exception> public DadataApiClient(DadataApiClientOptions options) { if (string.IsNullOrEmpty(options.Token)) { throw new InvalidTokenException(); } Options = options; if (Options.LimitQueries != null && Options.LimitQueries <= 0) { throw new InvalidLimitQueriesException(Options.LimitQueries); } _limitQueries = Options.LimitQueries ?? (int)DefaultOptions.QueriesLimit; HttpClient = new HttpClient(new HttpClientHandler { AutomaticDecompression = DecompressionMethods.GZip }); HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Token", Options.Token); HttpClient.DefaultRequestHeaders.Accept.Add(MediaTypeWithQualityHeaderValue.Parse("application/json")); HttpClient.DefaultRequestHeaders.Add("X-Secret", Options.Secret); //Reset count of messages per second (timer) ResetCountMessagesTimer = new Timer(ResetCounter, null, TimeSpan.Zero, TimeSpan.FromSeconds(1)); }