Пример #1
0
        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);
        }
Пример #2
0
        /// <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));
        }