All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.greenfossil.thorium.Configuration.scala Maven / Gradle / Ivy

/*
 * Copyright 2022 Greenfossil Pte Ltd
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.greenfossil.thorium

import com.typesafe.config.{Config, ConfigFactory}

object Configuration:

  def apply(): Configuration = from(getClass.getClassLoader)

  def usingPort(port: Int): Configuration =
    val configuration = from(getClass.getClassLoader)
    configuration.copy(httpConfiguration = configuration.httpConfiguration.copy(httpPort = port))

  def from(classLoader: ClassLoader): Configuration =
    from(ConfigFactory.load(classLoader))

  def from(config: Config): Configuration =
    val env = Environment.from(config)
    new Configuration(config, env, HttpConfiguration.from(config, env))

case class Configuration(config: Config, environment: Environment, httpConfiguration: HttpConfiguration) :
  def httpPort: Int = httpConfiguration.httpPort

  def maxRequestLength = httpConfiguration.maxRequestLength

  def maxNumConnectionOpt = httpConfiguration.maxNumConnectionOpt

  def requestTimeout = httpConfiguration.requestTimeout

  def isProd: Boolean = environment.isProd

  def isDev: Boolean = environment.isDev

  def isDemo: Boolean = environment.isDemo

  def isTest: Boolean = environment.isTest

  def mode: Mode = environment.mode




© 2015 - 2024 Weber Informatics LLC | Privacy Policy