mirror of
https://github.com/arcan1s/ffxivbis.git
synced 2025-07-15 06:45:49 +00:00
identify url in runtime
This commit is contained in:
@ -1,7 +1,5 @@
|
||||
me.arcanis.ffxivbis {
|
||||
bis-provider {
|
||||
# either use ariyala or etro
|
||||
use-etro = no
|
||||
# xivapi base url, string, required
|
||||
xivapi-url = "https://xivapi.com"
|
||||
# xivapi developer key, string, optional
|
||||
|
@ -34,9 +34,7 @@ class Application extends Actor with StrictLogging {
|
||||
|
||||
Migration(config).onComplete {
|
||||
case Success(_) =>
|
||||
val useEtro = config.getBoolean("me.arcanis.ffxivbis.bis-provider.use-etro")
|
||||
|
||||
val bisProvider = context.system.actorOf(BisProvider.props(useEtro), "bis-provider")
|
||||
val bisProvider = context.system.actorOf(BisProvider.props, "bis-provider")
|
||||
val storage = context.system.actorOf(DatabaseImpl.props, "storage")
|
||||
val party = context.system.actorOf(PartyService.props(storage), "party")
|
||||
val http = new RootEndpoint(context.system, party, bisProvider)
|
||||
|
@ -14,7 +14,7 @@ import spray.json.{JsNumber, JsObject, JsString, deserializationError}
|
||||
|
||||
import scala.concurrent.{ExecutionContext, Future}
|
||||
|
||||
trait Ariyala {
|
||||
object Ariyala {
|
||||
|
||||
def idParser(job: Job.Job, js: JsObject)
|
||||
(implicit executionContext: ExecutionContext): Future[Map[String, Long]] =
|
||||
|
@ -19,11 +19,7 @@ import spray.json._
|
||||
|
||||
import scala.concurrent.{ExecutionContext, Future}
|
||||
|
||||
abstract class BisProvider extends Actor with XivApi with StrictLogging {
|
||||
|
||||
def idParser(job: Job.Job, js: JsObject)
|
||||
(implicit executionContext: ExecutionContext): Future[Map[String, Long]]
|
||||
def uri(root: Uri, id: String): Uri
|
||||
class BisProvider extends Actor with XivApi with StrictLogging {
|
||||
|
||||
override def receive: Receive = {
|
||||
case BisProvider.GetBiS(link, job) =>
|
||||
@ -40,15 +36,20 @@ abstract class BisProvider extends Actor with XivApi with StrictLogging {
|
||||
val url = Uri(link)
|
||||
val id = Paths.get(link).normalize.getFileName.toString
|
||||
|
||||
sendRequest(uri(url, id), BisProvider.parseBisJsonToPieces(job, idParser, getPieceType))
|
||||
val (idParser, uri) =
|
||||
if (url.authority.host.address().contains("etro")) {
|
||||
(Etro.idParser(_, _), Etro.uri(url, id))
|
||||
} else {
|
||||
(Ariyala.idParser(_, _), Ariyala.uri(url, id))
|
||||
}
|
||||
|
||||
sendRequest(uri, BisProvider.parseBisJsonToPieces(job, idParser, getPieceType))
|
||||
}
|
||||
}
|
||||
|
||||
object BisProvider {
|
||||
|
||||
def props(useEtro: Boolean): Props =
|
||||
if (useEtro) Props(new BisProvider with Etro)
|
||||
else Props(new BisProvider with Ariyala)
|
||||
def props: Props = Props(new BisProvider)
|
||||
|
||||
case class GetBiS(link: String, job: Job.Job)
|
||||
|
||||
|
@ -14,7 +14,7 @@ import spray.json.{JsNumber, JsObject}
|
||||
|
||||
import scala.concurrent.{ExecutionContext, Future}
|
||||
|
||||
trait Etro {
|
||||
object Etro {
|
||||
|
||||
def idParser(job: Job.Job, js: JsObject)
|
||||
(implicit executionContext: ExecutionContext): Future[Map[String, Long]] =
|
||||
|
Reference in New Issue
Block a user