public OAuthHttpHandler(IOptions <OAuthHttpHandlerOptions> options, IRequestSigner signer)
 {
     if (options == null)
     {
         throw new ArgumentNullException(nameof(options));
     }
     _options = options.Value;
     _signer  = signer;
 }
 private static void ValidateOptions(OAuthHttpHandlerOptions options)
 {
     Validator.ValidateObject(options, new ValidationContext(options), true);
     if (string.IsNullOrWhiteSpace(options.ClientCredentials.Key))
     {
         throw new ArgumentNullException($"{nameof(options.ClientCredentials)}.{nameof(options.ClientCredentials.Key)}");
     }
     if (string.IsNullOrWhiteSpace(options.ClientCredentials.Secret))
     {
         throw new ArgumentNullException($"{nameof(options.ClientCredentials)}.{nameof(options.ClientCredentials.Secret)}");
     }
     if (string.IsNullOrWhiteSpace(options.TokenCredentials.Key))
     {
         throw new ArgumentNullException($"{nameof(options.TokenCredentials)}.{nameof(options.TokenCredentials.Key)}");
     }
     if (string.IsNullOrWhiteSpace(options.TokenCredentials.Secret))
     {
         throw new ArgumentNullException($"{nameof(options.TokenCredentials)}.{nameof(options.TokenCredentials.Secret)}");
     }
 }