# This is the base configuration file for Kalamar.
# Further configurations can override these values.
# To define a new configuration, create a file in the
# root folder of your application with the name like
#
#   kalamar.[MYNAME].conf
#
# To load the configuration, start your application with
# the environment variable
#
#   MOJO_MODE=[MYNAME]
#
# Further typical configurations in this file include
#
# - hypnotoad
#     See Mojo::Server::Hypnotoad
# - MailException
#     See Mojolicious::Plugin::MailException
# - TagHelpers-Pagination
#     See Mojolicious::Plugin::TagHelpers::Pagination
# - Localize
#     See Mojolicious::Plugin::Localize
# - TagHelpers-ContentBlock
#     See Mojolicious::Plugin::TagHelpers::ContentBlock
# - CHI
#     See Mojolicious::Plugin::CHI

# For Plugins,
# - Piwik
#     See Mojolicious::Plugin::Piwik

# The default Kustvakt api endpoint
my $api = 'https://korap.ids-mannheim.de/api/';
{
  Kalamar => {
    # Backend server path
    api_path => $ENV{'KALAMAR_API'} // $api,

    ## Backend API version
    # api_version => '1.0',

    ## If the application is run behind a proxy, ignore the forwarded host
    # proxy_host => 0,

    ## Run the application in a subfolder behind a proxy:
    # proxy_prefix => '/korap',

    ## The name of the base corpus,
    ## for query examples (see kalamar.queries.dict)
    # examplecorpus => 'dereko',

    ## For further Plugins, add them
    ## to this array:
    # plugins => [],
    ## Currently bundled: Piwik, Auth

    ## Require everything to be send via https only:
    # https_only => 1,

    ## Override default content security policy
    # cs_policy => "default-src '*';"

    ## Set proxy timeouts
    # proxy_inactivity_timeout => 120,
    # proxy_connect_timeout => 120,
  },

  # See Mojolicious::Plugin::TagHelpers::MailToChiffre
  'TagHelpers-MailToChiffre' => {
    method_name => 'PArok',
    pattern_rotate => 673
  }
}
