public SendGridAPIClient GetInstance(RestApiCredentialsRequest input)
        {
            var apiCredentials = _credentialsService.GetRestApiCredentials(input);
            var sg             = new SendGridAPIClient(apiCredentials.Key);

            return(sg);
        }
        protected RestApiCredentials GetFromEnv(RestApiCredentialsRequest input)
        {
            var apiKey = GetValueFromEnv(input.ApiKeyName, input.EnvTarget);
            var secret = GetValueFromEnv(input.SecretKeyName, input.EnvTarget);

            return(new RestApiCredentials()
            {
                Key = apiKey,
                Secret = secret
            });
        }
        protected RestApiCredentials GetFromWebConfig(RestApiCredentialsRequest input)
        {
            var apiKey = ConfigurationManager.AppSettings[input.ApiKeyName];
            var secret = ConfigurationManager.AppSettings[input.SecretKeyName];

            return(new RestApiCredentials()
            {
                Key = apiKey,
                Secret = secret
            });
        }
        public RestApiCredentials GetRestApiCredentials(RestApiCredentialsRequest input)
        {
            switch (input.Strategy)
            {
            case Strategy.WebConfig:

                return(GetFromWebConfig(input));

            case Strategy.EnvVar:
                return(GetFromEnv(input));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }