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

org.mellowtech.gapi.config.GApiConfig.scala Maven / Gradle / Ivy

The newest version!
package org.mellowtech.gapi.config

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

trait GApiConfig {

  //Config for web server based auth:
  def httpHost: Option[String]
  def httpPort: Option[Int]

  def authUri: Option[String]
  def tokenUri: Option[String]
  def redirectUri: Option[String]
  def accessType: Option[String]
  def authPath: Option[String]
  def authCallbackPath: Option[String]

  def clientIdInstalled: Option[String]
  def clientSecretInstalled: Option[String]

  def clientId: String
  def clientSecret: String
  def applicationName: String
  def scopes: Seq[String]

  def slick: Option[Config]
  //db for storing stuff
  //def slickConfig: Option[Config]
  /*def dbProfile: Option[String]
  def dbUrl: Option[String]
  def dbUser: Option[String]
  def dbPassword: Option[String]
  */
  /*db {
    url = "jdbc:postgresql://localhost/testdb"
    user = "test"
    password = "12test34"
  }*/
}

object GApiConfig {
  def apply(): GApiConfig = new GApiConfigTypeSafeConfig {}
}

trait GApiConfigTypeSafeConfig extends GApiConfig{

  import scala.collection.JavaConverters._


  val config = ConfigFactory.load()

  private val httpConfig = config.getConfig("http")
  private val google = config.getConfig("google")
  val slick: Option[Config] = Some(config.getConfig("slick"))

  val httpHost = Option(httpConfig.getString("host"))
  val httpPort = Option(httpConfig.getInt("port"))


  val authUri = Option(google.getString("authUri"))
  val tokenUri = Option(google.getString("tokenUri"))
  val clientId = google.getString("client_id")
  val clientSecret = google.getString("client_secret")
  val applicationName = google.getString("applicationName")
  val redirectUri = Option(google.getString("redirect_uri"))
  val accessType = Option(google.getString("access_type"))

  val scopes = Option(google.getStringList("scopes")) match {
    case None => Seq()
    case Some(l) => l.asScala
  }

  val authPath = Option(google.getString("authPath"))
  val authCallbackPath = Option(google.getString("authCallbackPath"))

  //installed app
  val clientIdInstalled = Option(google.getConfig("installed")) match {
    case Some(c) => Some(c.getString("client_id"))
    case None => None
  }

  val clientSecretInstalled = Option(google.getConfig("installed")) match {
    case Some(c) => Some(c.getString("client_secret"))
    case None => None
  }

  //db stuff
  /*val dbProfile = Option(slick.getString("profile"))
  val dbUrl = Option(slick.getString("url"))
  val dbUser = Option(slick.getString("user"))
  val dbPassword = Option(slick.getString("password"))
  */

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy