docstr: Configure Threat Intel Downloader from command line
  
  Args:
      options (argparse.Namespace): Parsed arguments
      config (CLIConfig): Loaded StreamAlert config
  
  Returns:
      bool: False if errors occurred, True otherwise
docstr_tok: ["Configure","Threat","Intel","Downloader","from","command","line","Args",":","options","(","argparse.Namespace",")",":","Parsed","arguments","config","(","CLIConfig",")",":","Loaded","StreamAlert","config","Returns",":","bool",":","False","if","errors","occurred",",","True","otherwise"]
code: def handler(cls, options, config):
      """Configure Threat Intel Downloader from command line
  
      Args:
          options (argparse.Namespace): Parsed arguments
          config (CLIConfig): Loaded StreamAlert config
  
      Returns:
          bool: False if errors occurred, True otherwise
      """
  
      def _validate_options(options):
          if not options.interval:
              LOGGER.error("Missing command line argument --interval")
              return False
  
          if not options.timeout:
              LOGGER.error("Missing command line argument --timeout")
              return False
  
          if not options.memory:
              LOGGER.error("Missing command line argument --memory")
              return False
  
          return True
  
      if not options:
          return False
  
      if options.subcommand == "enable":
          if not _validate_options(options):
              return False
          if config.add_threat_intel_downloader(vars(options)):
              return save_api_creds_info(
                  config["global"]["account"]["region"]
              )
      elif options.subcommand == "update-auth":
          return save_api_creds_info(
              config["global"]["account"]["region"], overwrite=True
          )
  
file_path: streamalert/streamalert_cli/threat_intel_downloader/handler.py
imports: import re
  from streamalert.shared.logger import get_logger
  from streamalert.threat_intel_downloader.main import ThreatStream
  from streamalert_cli.helpers import user_input, save_parameter
  from streamalert_cli.utils import add_memory_arg, add_schedule_expression_arg, add_timeout_arg, CLICommand, generate_subparser, UniqueSortedListAction
label_desc: Use image node_id 4 for calling the ThreatIntelDownloaderCommand obj's underlying member method code with example usage: obj.handler(cls, options, config) and returns: True, False, False, False, False, False, save_api_creds_info, save_api_creds_info