old_contents: # Copyright (C) 2017  The Software Heritage developers
  # See the AUTHORS file at the top-level directory of this distribution
  # License: GNU General Public License version 3, or any later version
  # See top-level LICENSE file for more information
  
  from swh.core import config
  from swh.storage import get_storage
  
  DEFAULT_CONFIG = {
      'storage': ('dict', {
          'cls': 'remote',
          'args': {
              'url': 'http://127.0.0.1:5002/',
          },
      }),
      'log_dir': ('string', '/tmp/swh/log'),
      'debug': ('bool', False),
      'host': ('string', '127.0.0.1'),
      'port': ('int', 8000),
      'secret_key': ('string', 'development key'),
      'limiters': ('dict', {
          'swh_api': {
              'cache_uri': None,
              'limits': [{
                  'limiter_rate': '60/min',
                  'exempted_networks': ['127.0.0.0/8']
              }]
          }
      })
  }
  
  swhweb_config = None
  
  
  def get_config(config_file='webapp'):
      """Read the configuration file `config_file`, update the app with
         parameters (secret_key, conf) and return the parsed configuration as a
         dict. If no configuration file is provided, return a default
         configuration."""
  
      global swhweb_config
      if not swhweb_config:
          swhweb_config = config.load_named_config(config_file, DEFAULT_CONFIG)
          config.prepare_folders(swhweb_config, 'log_dir')
          swhweb_config['storage'] = get_storage(**swhweb_config['storage'])
      return swhweb_config
  
  
  def storage():
      """Return the current application's SWH storage.
  
      """
      return get_config()['storage']
  
new_contents: # Copyright (C) 2017  The Software Heritage developers
  # See the AUTHORS file at the top-level directory of this distribution
  # License: GNU General Public License version 3, or any later version
  # See top-level LICENSE file for more information
  
  from swh.core import config
  from swh.storage import get_storage
  
  DEFAULT_CONFIG = {
      'storage': ('dict', {
          'cls': 'remote',
          'args': {
              'url': 'http://127.0.0.1:5002/',
          },
      }),
      'log_dir': ('string', '/tmp/swh/log'),
      'debug': ('bool', False),
      'host': ('string', '127.0.0.1'),
      'port': ('int', 8000),
      'secret_key': ('string', 'development key'),
      'limiters': ('dict', {
          'cache_uri': None,  # production: memcached as cache (127.0.0.1:11211)
                              # development: in-memory cache so None
          'limits': {
              'swh_api': [{
                  'limiter_rate': '120/h',
                  'exempted_networks': ['127.0.0.0/8']
              }]
          }
      })
  }
  
  swhweb_config = None
  
  
  def get_config(config_file='webapp'):
      """Read the configuration file `config_file`, update the app with
         parameters (secret_key, conf) and return the parsed configuration as a
         dict. If no configuration file is provided, return a default
         configuration."""
  
      global swhweb_config
      if not swhweb_config:
          swhweb_config = config.load_named_config(config_file, DEFAULT_CONFIG)
          config.prepare_folders(swhweb_config, 'log_dir')
          swhweb_config['storage'] = get_storage(**swhweb_config['storage'])
      return swhweb_config
  
  
  def storage():
      """Return the current application's SWH storage.
  
      """
      return get_config()['storage']
  
subject: Fix cache_uri and limits to the right level