mirror of
https://github.com/arcan1s/ffxivbis.git
synced 2025-07-12 05:15:50 +00:00
Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
1c8aaea712 | |||
3c8e5f8da8 | |||
0bcda3233e | |||
c4be6f12f1 | |||
f3535f6e16 |
@ -2,7 +2,7 @@ organization := "me.arcanis"
|
|||||||
|
|
||||||
name := "ffxivbis"
|
name := "ffxivbis"
|
||||||
|
|
||||||
scalaVersion := "2.13.8"
|
scalaVersion := "2.13.12"
|
||||||
|
|
||||||
scalacOptions ++= Seq("-deprecation", "-feature")
|
scalacOptions ++= Seq("-deprecation", "-feature")
|
||||||
|
|
||||||
|
@ -1,26 +1,25 @@
|
|||||||
val AkkaVersion = "2.6.20"
|
val AkkaVersion = "2.8.6"
|
||||||
val AkkaHttpVersion = "10.2.10"
|
val AkkaHttpVersion = "10.5.3"
|
||||||
val ScalaTestVersion = "3.2.12"
|
val ScalaTestVersion = "3.2.19"
|
||||||
val SlickVersion = "3.3.3"
|
|
||||||
|
|
||||||
libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.2.11"
|
libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.5.6"
|
||||||
libraryDependencies += "com.typesafe.scala-logging" %% "scala-logging" % "3.9.5"
|
libraryDependencies += "com.typesafe.scala-logging" %% "scala-logging" % "3.9.5"
|
||||||
|
|
||||||
libraryDependencies += "com.typesafe.akka" %% "akka-http" % AkkaHttpVersion
|
libraryDependencies += "com.typesafe.akka" %% "akka-http" % AkkaHttpVersion
|
||||||
libraryDependencies += "com.typesafe.akka" %% "akka-http-spray-json" % AkkaHttpVersion
|
libraryDependencies += "com.typesafe.akka" %% "akka-http-spray-json" % AkkaHttpVersion
|
||||||
libraryDependencies += "com.typesafe.akka" %% "akka-actor-typed" % AkkaVersion
|
libraryDependencies += "com.typesafe.akka" %% "akka-actor-typed" % AkkaVersion
|
||||||
libraryDependencies += "com.typesafe.akka" %% "akka-stream" % AkkaVersion
|
libraryDependencies += "com.typesafe.akka" %% "akka-stream" % AkkaVersion
|
||||||
libraryDependencies += "com.github.swagger-akka-http" %% "swagger-akka-http" % "2.8.0"
|
libraryDependencies += "com.github.swagger-akka-http" %% "swagger-akka-http" % "2.11.0"
|
||||||
libraryDependencies += "jakarta.platform" % "jakarta.jakartaee-web-api" % "9.1.0"
|
libraryDependencies += "jakarta.platform" % "jakarta.jakartaee-web-api" % "10.0.0"
|
||||||
libraryDependencies += "ch.megard" %% "akka-http-cors" % "1.1.3"
|
libraryDependencies += "ch.megard" %% "akka-http-cors" % "1.2.0"
|
||||||
|
|
||||||
libraryDependencies += "io.spray" %% "spray-json" % "1.3.6"
|
libraryDependencies += "io.spray" %% "spray-json" % "1.3.6"
|
||||||
|
|
||||||
libraryDependencies += "org.playframework.anorm" %% "anorm" % "2.6.10"
|
libraryDependencies += "org.playframework.anorm" %% "anorm" % "2.7.0"
|
||||||
libraryDependencies += "com.zaxxer" % "HikariCP" % "5.0.1" exclude("org.slf4j", "slf4j-api")
|
libraryDependencies += "com.zaxxer" % "HikariCP" % "5.1.0" exclude("org.slf4j", "slf4j-api")
|
||||||
libraryDependencies += "org.flywaydb" % "flyway-core" % "9.2.2"
|
libraryDependencies += "org.flywaydb" % "flyway-core" % "9.16.0"
|
||||||
libraryDependencies += "org.xerial" % "sqlite-jdbc" % "3.39.2.1"
|
libraryDependencies += "org.xerial" % "sqlite-jdbc" % "3.46.0.0"
|
||||||
libraryDependencies += "org.postgresql" % "postgresql" % "42.5.0"
|
libraryDependencies += "org.postgresql" % "postgresql" % "42.7.3"
|
||||||
|
|
||||||
libraryDependencies += "org.mindrot" % "jbcrypt" % "0.4"
|
libraryDependencies += "org.mindrot" % "jbcrypt" % "0.4"
|
||||||
libraryDependencies += "com.google.guava" % "guava" % "31.0.1-jre"
|
libraryDependencies += "com.google.guava" % "guava" % "31.0.1-jre"
|
||||||
|
@ -95,6 +95,7 @@ object Job {
|
|||||||
case object RPR extends Drgs
|
case object RPR extends Drgs
|
||||||
case object NIN extends Nins
|
case object NIN extends Nins
|
||||||
case object SAM extends Mnks
|
case object SAM extends Mnks
|
||||||
|
case object VPR extends Mnks
|
||||||
|
|
||||||
case object BRD extends Ranges
|
case object BRD extends Ranges
|
||||||
case object MCH extends Ranges
|
case object MCH extends Ranges
|
||||||
@ -103,9 +104,10 @@ object Job {
|
|||||||
case object BLM extends Casters
|
case object BLM extends Casters
|
||||||
case object SMN extends Casters
|
case object SMN extends Casters
|
||||||
case object RDM extends Casters
|
case object RDM extends Casters
|
||||||
|
case object PCT extends Casters
|
||||||
|
|
||||||
val available: Seq[Job] =
|
val available: Seq[Job] =
|
||||||
Seq(PLD, WAR, DRK, GNB, WHM, SCH, AST, SGE, MNK, DRG, RPR, NIN, SAM, BRD, MCH, DNC, BLM, SMN, RDM)
|
Seq(PLD, WAR, DRK, GNB, WHM, SCH, AST, SGE, MNK, DRG, RPR, NIN, SAM, VPR, BRD, MCH, DNC, BLM, SMN, RDM, PCT)
|
||||||
val availableWithAnyJob: Seq[Job] = available.prepended(AnyJob)
|
val availableWithAnyJob: Seq[Job] = available.prepended(AnyJob)
|
||||||
|
|
||||||
def withName(job: String): Job =
|
def withName(job: String): Job =
|
||||||
|
@ -15,6 +15,7 @@ import spray.json._
|
|||||||
import scala.concurrent.{ExecutionContext, Future}
|
import scala.concurrent.{ExecutionContext, Future}
|
||||||
import scala.jdk.CollectionConverters._
|
import scala.jdk.CollectionConverters._
|
||||||
import scala.util.Try
|
import scala.util.Try
|
||||||
|
import scala.util.matching.Regex
|
||||||
|
|
||||||
trait XivApi extends RequestExecutor {
|
trait XivApi extends RequestExecutor {
|
||||||
|
|
||||||
@ -77,6 +78,8 @@ object XivApi {
|
|||||||
|
|
||||||
private val defaultShop = JsObject("IsUnique" -> JsNumber(1), "StackSize" -> JsNumber(999))
|
private val defaultShop = JsObject("IsUnique" -> JsNumber(1), "StackSize" -> JsNumber(999))
|
||||||
|
|
||||||
|
private val itemRegexp = new Regex("""Item(Receive|Cost)(\d+)""", "type", "index")
|
||||||
|
|
||||||
private def parseXivapiJsonToShop(
|
private def parseXivapiJsonToShop(
|
||||||
js: JsObject
|
js: JsObject
|
||||||
)(implicit executionContext: ExecutionContext): Future[Map[Long, (String, Long)]] = {
|
)(implicit executionContext: ExecutionContext): Future[Map[Long, (String, Long)]] = {
|
||||||
@ -86,12 +89,12 @@ object XivApi {
|
|||||||
.map(_ => "crafted" -> -1L) // you can craft this item
|
.map(_ => "crafted" -> -1L) // you can craft this item
|
||||||
.orElse { // lets try shop items
|
.orElse { // lets try shop items
|
||||||
js.fields("SpecialShop").asJsObject.fields.collectFirst {
|
js.fields("SpecialShop").asJsObject.fields.collectFirst {
|
||||||
case (shopName, JsArray(array)) if shopName.startsWith("ItemReceive") =>
|
case (shopName, JsArray(array)) if itemRegexp.matches(shopName) =>
|
||||||
val shopId = array.head match {
|
val shopId = array.head match {
|
||||||
case JsNumber(id) => id.toLong
|
case JsNumber(id) => id.toLong
|
||||||
case other => throw deserializationError(s"Could not parse $other")
|
case other => throw deserializationError(s"Could not parse $other")
|
||||||
}
|
}
|
||||||
shopName.replace("ItemReceive", "") -> shopId
|
itemRegexp.findFirstMatchIn(shopName).get.group("index") -> shopId
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.getOrElse(throw deserializationError(s"Could not parse $js"))
|
.getOrElse(throw deserializationError(s"Could not parse $js"))
|
||||||
|
@ -1 +1 @@
|
|||||||
version := "0.14.0"
|
version := "0.15.1"
|
||||||
|
Reference in New Issue
Block a user