diff --git a/src/main/resources/reference.conf b/src/main/resources/reference.conf index 1abb474..cd9062a 100644 --- a/src/main/resources/reference.conf +++ b/src/main/resources/reference.conf @@ -5,7 +5,7 @@ me.arcanis.ffxivbis { # xivapi base url, string, required xivapi-url = "https://xivapi.com" # xivapi developer key, string, optional - # xivapi-key = "abcdef" + #xivapi-key = "abcdef" } database { @@ -54,6 +54,8 @@ me.arcanis.ffxivbis { host = "127.0.0.1" # port to bind, int, required port = 8000 + # hostname to use in docs, if not set host:port will be used + #hostname = "127.0.0.1:8000" # rate limits limits { diff --git a/src/main/scala/me/arcanis/ffxivbis/http/RootEndpoint.scala b/src/main/scala/me/arcanis/ffxivbis/http/RootEndpoint.scala index dba534f..a9fbe6c 100644 --- a/src/main/scala/me/arcanis/ffxivbis/http/RootEndpoint.scala +++ b/src/main/scala/me/arcanis/ffxivbis/http/RootEndpoint.scala @@ -29,6 +29,7 @@ class RootEndpoint(system: ActorSystem, storage: ActorRef, ariyala: ActorRef) private val rootApiV1Endpoint: RootApiV1Endpoint = new RootApiV1Endpoint(storage, ariyala, config) private val rootView: RootView = new RootView(storage, ariyala) + private val swagger: Swagger = new Swagger(config) private val httpLogger = Logger("http") private val withHttpLog: Directive0 = @@ -43,7 +44,7 @@ class RootEndpoint(system: ActorSystem, storage: ActorRef, ariyala: ActorRef) def route: Route = withHttpLog { - apiRoute ~ htmlRoute ~ Swagger.routes ~ swaggerUIRoute + apiRoute ~ htmlRoute ~ swagger.routes ~ swaggerUIRoute } private def apiRoute: Route = diff --git a/src/main/scala/me/arcanis/ffxivbis/http/Swagger.scala b/src/main/scala/me/arcanis/ffxivbis/http/Swagger.scala index 09d2dee..1ad7581 100644 --- a/src/main/scala/me/arcanis/ffxivbis/http/Swagger.scala +++ b/src/main/scala/me/arcanis/ffxivbis/http/Swagger.scala @@ -10,11 +10,12 @@ package me.arcanis.ffxivbis.http import com.github.swagger.akka.SwaggerHttpService import com.github.swagger.akka.model.{Info, License} +import com.typesafe.config.Config import io.swagger.v3.oas.models.security.SecurityScheme import scala.io.Source -object Swagger extends SwaggerHttpService { +class Swagger(config: Config) extends SwaggerHttpService { override val apiClasses: Set[Class[_]] = Set( classOf[api.v1.BiSEndpoint], classOf[api.v1.LootEndpoint], classOf[api.v1.PlayerEndpoint], classOf[api.v1.TypesEndpoint], @@ -28,12 +29,16 @@ object Swagger extends SwaggerHttpService { license = Some(License("BSD", "https://raw.githubusercontent.com/arcan1s/ffxivbis/master/LICENSE")) ) + override val host: String = + if (config.hasPath("me.arcanis.ffxivbis.web.hostname")) config.getString("me.arcanis.ffxivbis.web.hostname") + else s"${config.getString("me.arcanis.ffxivbis.web.host")}:${config.getString("me.arcanis.ffxivbis.web.port")}" + private val basicAuth = new SecurityScheme() .description("basic http auth") .`type`(SecurityScheme.Type.HTTP) .in(SecurityScheme.In.HEADER) .scheme("bearer") - override def securitySchemes: Map[String, SecurityScheme] = Map("basic auth" -> basicAuth) + override val securitySchemes: Map[String, SecurityScheme] = Map("basic auth" -> basicAuth) override val unwantedDefinitions: Seq[String] = Seq("Function1", "Function1RequestContextFutureRouteResult") diff --git a/version.sbt b/version.sbt index b23ee21..16513ba 100644 --- a/version.sbt +++ b/version.sbt @@ -1 +1 @@ -version := "0.9.5" +version := "0.9.6"