public MetricsExporter(
            MetricsOptions options,
            IMetricsRecorder recorder,
            ILogger <MetricsExporter> logger)
        {
            _options  = options ?? throw new ArgumentNullException(nameof(options));
            _recorder = recorder ?? throw new ArgumentNullException(nameof(recorder));
            _logger   = logger ?? throw new ArgumentNullException(nameof(logger));

            var credential = string.IsNullOrEmpty(options.JsonPath)
                ? GoogleCredential.GetApplicationDefault()
                : GoogleCredential
                             .FromFile(options.JsonPath)
                             .CreateScoped(MetricServiceClient.DefaultScopes);

            var channel = new Channel(
                MetricServiceClient.DefaultEndpoint.Host,
                MetricServiceClient.DefaultEndpoint.Port,
                credential.ToChannelCredentials());

            _client = MetricServiceClient.Create(channel);
        }
 public MetricsRecordingGeolocator(IGeolocator inner, IMetricsRecorder metricsRecorder)
 {
     _inner           = inner ?? throw new ArgumentNullException(nameof(inner));
     _metricsRecorder = metricsRecorder ?? throw new ArgumentNullException(nameof(metricsRecorder));
 }