use Mojo::File 'path';
use Mojo::ByteStream 'b';
my $api = 'http://10.0.10.51:9000/api/';
{
  Search => {
    engine => 'Kalamar::API'
  },
  'Kalamar-Auth' => {
    client_id => b(path('.client_id')->slurp)->trim,
    client_secret => b(path('.client_secret')->slurp)->trim,
    oauth2 => 1,
    experimental_client_registration => 1
  },
  Kalamar => {
    api_path => $api,
    secure_cookie => 1,
    https_only => 1,
    plugins => ['Auth', 'Piwik','Plugins'],
    experimental_proxy => 1,
    proxy_inactivity_timeout => 120,
    proxy_connect_timeout => 120,
    Piwik => {
      ping_requests => 1,
      ping_site_id => 13
    },
    navi_ext => [
      {
        "title" => "corpora",
        "id" => "corpus"
      },
      {
        "title" => "Privacy",
        "id" => "privacy"
      },
    ],
  },
  CSP => {
    'frame-src' => 'self',
    'frame-ancestors' => ['self','http://*.ids-mannheim.de/','https://*.ids-mannheim.de/','http://klinux10/']
  },
  'Kalamar-Plugins' => {
    default_plugins => 'default.plugins.json'
  },
  Piwik => {
    url => 'https://stats.ids-mannheim.de',
    token_auth => '8515ea786127a63a2974de25a0808b00',
    site_id => 8,
    embed => 1
  },
  hypnotoad => {
    listen => ['http://*:4348'],
    workers => 5,
    inactivity_timeout => 120,
    proxy => 1
  },
  MailException => {
    from => join('@', 'diewald', 'ids-mannheim.de'),
    to => join('@', 'diewald', 'ids-mannheim.de'),
    subject => '[KorAP] Kalamar crashed'
  },
  Localize => {
    dict => {
      de_loginExplanation => 'Anmeldung mit einem registrierten <%= link_to "Cosmas-II" => "https://perso.ids-mannheim.de/registration/", style => "white-space: nowrap" %>-Konto',
      en_loginExplanation => 'Login with a registered <%= link_to "Cosmas-II" => "https://perso.ids-mannheim.de/registration/", style => "white-space: nowrap" %> account',
      en_Nav_privacy => 'Privacy',
      de_Nav_privacy => 'Datenschutz',
      de_Nav_corpora => 'Korpora',
      en_Nav_corpora => 'Corpora',
      en_howToCite => 'Citation Help',
      de_howToCite => 'Zitierhilfe',
      en_recentCorpusPub => 'Recent publications to refer to DeReKo as linguistic research data',
      de_recentCorpusPub => 'Neuere Publikationen zu DeReKo als linguistische Forschungsdatengrundlage',
      en_recentToolPub => 'Recent publications to refer to KorAP as a tool for research',
      de_recentToolPub => 'Neuere Publikationen zu KorAP als Forschungswerkzeug',
    }
  },
  'TagHelpers-ContentBlock' => {
    footer => [
      {
        inline => '<%= link_to loc("about") => "https://www.ids-mannheim.de/digspra/kl/projekte/korap/" %>',  
        position => 70
      },
      {
        inline => '<%= link_to loc("howToCite") => url_for(doc => { page => "faq" })->fragment("howToCite") %>',
        position => 75
      },
      {
        inline => '<%= link_to loc("privacy") => "doc/privacy" %>',  
        position => 90
      },
      {
        inline => '<%= link_to loc("imprint") => "https://www.ids-mannheim.de/allgemein/impressum/" %>',  
        position => 80
      },
    ],
    faq => [
      {
        position => 50,
        inline => <<'HOWTOCITE'
<section>
  <h3 id="howToCite"><%= loc 'howToCite' %></h3>
%= include 'custom/partial/citation'
</section>
HOWTOCITE
      }
    ],
    loginInfo => [
      {
        inline => '<p><%== loc "loginExplanation" %></p>',
        position => 50
      }#,
#      {
#        inline => '<p class="announcement"><time datetime="2018-05-24">24.05.2018</time> Um weitere Anwendungen für die Nutzung von DeReKo anbieten zu können, haben wir die <%= link_to "Nutzungsvereinbarung", "https://www.ids-mannheim.de/cosmas2/projekt/registrierung/Nutzungsvereinbarung.html" %> angepasst!</p>',
#        position => 100
#      }
    ]
  },

  # See Mojolicious::Plugin::CHI
  CHI => {
    default => {
      driver => 'FastMmap',
      root_dir => app->home . '/cache/data',
      cache_size => '500m',
      max_size => '500m'
    },
    user => {
      l1_cache => {
      	driver => 'FastMmap',
	      root_dir => app->home . '/cache/usermap',
        	cache_size => '50m',
	        max_size => '50m'
      },
      driver => 'File',
      root_dir => app->home . '/cache/userfile',
      max_key_length => 64,
      max_size => '500m'
    }
  } 
};