public MonitoringClient(MonitoringConfig config, IHttpRequester httpRequester)
        {
            if (httpRequester == null)
            {
                throw new ArgumentNullException(nameof(httpRequester), "An httpRequester is required");
            }

            if (config == null)
            {
                throw new ArgumentNullException(nameof(config), "A config is required");
            }

            if (string.IsNullOrWhiteSpace(config.AppId))
            {
                throw new ArgumentNullException(nameof(config.AppId), "Application ID is required");
            }

            if (string.IsNullOrWhiteSpace(config.ApiKey))
            {
                throw new ArgumentNullException(nameof(config.ApiKey), "An API key is required");
            }

            _config    = config;
            _transport = new HttpTransport(config, httpRequester);
        }
 /// <summary>
 /// Initialize a client with custom config
 /// </summary>
 /// <param name="config">Algolia configuration</param>
 public MonitoringClient(MonitoringConfig config) : this(config, new AlgoliaHttpRequester())
 {
 }