diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml
index 402138e..71ccb7b 100644
--- a/src/main/resources/logback.xml
+++ b/src/main/resources/logback.xml
@@ -8,9 +8,10 @@
-
+
+
diff --git a/src/main/scala/me/arcanis/ffxivbis/http/api/v1/HttpHandler.scala b/src/main/scala/me/arcanis/ffxivbis/http/api/v1/HttpHandler.scala
index af7bced..6a85c11 100644
--- a/src/main/scala/me/arcanis/ffxivbis/http/api/v1/HttpHandler.scala
+++ b/src/main/scala/me/arcanis/ffxivbis/http/api/v1/HttpHandler.scala
@@ -17,7 +17,7 @@ import spray.json._
trait HttpHandler extends StrictLogging { this: JsonSupport =>
- implicit def exceptionHandler: ExceptionHandler = ExceptionHandler {
+ def exceptionHandler: ExceptionHandler = ExceptionHandler {
case ex: IllegalArgumentException =>
complete(StatusCodes.BadRequest, ErrorResponse(ex.getMessage))
@@ -26,7 +26,7 @@ trait HttpHandler extends StrictLogging { this: JsonSupport =>
complete(StatusCodes.InternalServerError, ErrorResponse("unknown server error"))
}
- implicit def rejectionHandler: RejectionHandler =
+ def rejectionHandler: RejectionHandler =
RejectionHandler.default
.mapRejectionResponse {
case response @ HttpResponse(_, _, entity: HttpEntity.Strict, _) =>
diff --git a/src/main/scala/me/arcanis/ffxivbis/http/view/BiSView.scala b/src/main/scala/me/arcanis/ffxivbis/http/view/BiSView.scala
index 52d119c..81d3f23 100644
--- a/src/main/scala/me/arcanis/ffxivbis/http/view/BiSView.scala
+++ b/src/main/scala/me/arcanis/ffxivbis/http/view/BiSView.scala
@@ -69,7 +69,7 @@ class BiSView(override val storage: ActorRef[Message],
def bisAction(playerId: PlayerId, piece: String, pieceType: String)(fn: Piece => Future[Unit]) =
getPiece(playerId, piece, pieceType) match {
- case Some(item) => fn(item).map(_ => ())
+ case Some(item) => fn(item)
case _ => Future.failed(new Error(s"Could not construct piece from `$piece ($pieceType)`"))
}
@@ -79,7 +79,7 @@ class BiSView(override val storage: ActorRef[Message],
bisAction(playerId, piece, pieceType)(addPieceBiS(playerId, _))
case (Some(piece), Some(pieceType), "remove", _) =>
bisAction(playerId, piece, pieceType)(removePieceBiS(playerId, _))
- case (_, _, "create", Some(link)) => putBiS(playerId, link).map(_ => ())
+ case (_, _, "create", Some(link)) => putBiS(playerId, link)
case _ => Future.failed(new Error(s"Could not perform $action"))
}
case _ => Future.failed(new Error(s"Could not construct player id from `$player`"))
diff --git a/src/main/scala/me/arcanis/ffxivbis/http/view/LootView.scala b/src/main/scala/me/arcanis/ffxivbis/http/view/LootView.scala
index 1fb5f5f..db10da8 100644
--- a/src/main/scala/me/arcanis/ffxivbis/http/view/LootView.scala
+++ b/src/main/scala/me/arcanis/ffxivbis/http/view/LootView.scala
@@ -70,8 +70,8 @@ class LootView(override val storage: ActorRef[Message])
PlayerId(partyId, player) match {
case Some(playerId) => (getPiece(playerId), action) match {
- case (Some(piece), "add") => addPieceLoot(playerId, piece, maybeFreeLoot).map(_ => ())
- case (Some(piece), "remove") => removePieceLoot(playerId, piece).map(_ => ())
+ case (Some(piece), "add") => addPieceLoot(playerId, piece, maybeFreeLoot)
+ case (Some(piece), "remove") => removePieceLoot(playerId, piece)
case _ => Future.failed(new Error(s"Could not construct piece from `$maybePiece ($maybePieceType)`"))
}
case _ => Future.failed(new Error(s"Could not construct player id from `$player`"))
diff --git a/src/main/scala/me/arcanis/ffxivbis/http/view/PlayerView.scala b/src/main/scala/me/arcanis/ffxivbis/http/view/PlayerView.scala
index 4530f6c..343b325 100644
--- a/src/main/scala/me/arcanis/ffxivbis/http/view/PlayerView.scala
+++ b/src/main/scala/me/arcanis/ffxivbis/http/view/PlayerView.scala
@@ -68,8 +68,8 @@ class PlayerView(override val storage: ActorRef[Message],
Player(-1, partyId, playerId.job, playerId.nick, BiS.empty, Seq.empty, maybeLink, maybePriority.getOrElse(0))
(action, maybePlayerId) match {
- case ("add", Some(playerId)) => addPlayer(player(playerId)).map(_ => ())
- case ("remove", Some(playerId)) => removePlayer(playerId).map(_ => ())
+ case ("add", Some(playerId)) => addPlayer(player(playerId))
+ case ("remove", Some(playerId)) => removePlayer(playerId)
case _ => Future.failed(new Error(s"Could not perform $action with $nick ($job)"))
}
}
diff --git a/src/main/scala/me/arcanis/ffxivbis/http/view/UserView.scala b/src/main/scala/me/arcanis/ffxivbis/http/view/UserView.scala
index a9de452..84aa310 100644
--- a/src/main/scala/me/arcanis/ffxivbis/http/view/UserView.scala
+++ b/src/main/scala/me/arcanis/ffxivbis/http/view/UserView.scala
@@ -68,10 +68,10 @@ class UserView(override val storage: ActorRef[Message])
action match {
case "add" => (maybePassword, permission) match {
- case (Some(password), Some(permission)) => addUser(User(partyId, username, password, permission), isHashedPassword = false).map(_ => ())
+ case (Some(password), Some(permission)) => addUser(User(partyId, username, password, permission), isHashedPassword = false)
case _ => Future.failed(new Error(s"Could not construct permission/password from `$maybePermission`/`$maybePassword`"))
}
- case "remove" => removeUser(partyId, username).map(_ => ())
+ case "remove" => removeUser(partyId, username)
case _ => Future.failed(new Error(s"Could not perform $action"))
}
}
diff --git a/src/main/scala/me/arcanis/ffxivbis/models/PieceType.scala b/src/main/scala/me/arcanis/ffxivbis/models/PieceType.scala
index 43c0b61..88cf4b4 100644
--- a/src/main/scala/me/arcanis/ffxivbis/models/PieceType.scala
+++ b/src/main/scala/me/arcanis/ffxivbis/models/PieceType.scala
@@ -7,9 +7,10 @@ object PieceType {
case object Crafted extends PieceType
case object Tome extends PieceType
case object Savage extends PieceType
+ case object Artifact extends PieceType
lazy val available: Seq[PieceType] =
- Seq(Crafted, Tome, Savage)
+ Seq(Crafted, Tome, Savage, Artifact)
def withName(pieceType: String): PieceType =
available.find(_.toString.equalsIgnoreCase(pieceType)) match {
diff --git a/src/main/scala/me/arcanis/ffxivbis/utils/Implicits.scala b/src/main/scala/me/arcanis/ffxivbis/utils/Implicits.scala
index ec43870..0c01e61 100644
--- a/src/main/scala/me/arcanis/ffxivbis/utils/Implicits.scala
+++ b/src/main/scala/me/arcanis/ffxivbis/utils/Implicits.scala
@@ -17,6 +17,7 @@ import scala.concurrent.duration.FiniteDuration
import scala.language.implicitConversions
object Implicits {
+
implicit def getBooleanFromOptionString(maybeYes: Option[String]): Boolean = maybeYes.map(_.toLowerCase) match {
case Some("yes" | "on") => true
case _ => false
diff --git a/src/test/scala/me/arcanis/ffxivbis/Fixtures.scala b/src/test/scala/me/arcanis/ffxivbis/Fixtures.scala
index a672992..f238227 100644
--- a/src/test/scala/me/arcanis/ffxivbis/Fixtures.scala
+++ b/src/test/scala/me/arcanis/ffxivbis/Fixtures.scala
@@ -19,10 +19,27 @@ object Fixtures {
Ring(pieceType = PieceType.Tome, Job.DNC, "right ring")
)
)
+ lazy val bis2: BiS = BiS(
+ Seq(
+ Weapon(pieceType = PieceType.Savage ,Job.DNC),
+ Head(pieceType = PieceType.Tome, Job.DNC),
+ Body(pieceType = PieceType.Savage, Job.DNC),
+ Hands(pieceType = PieceType.Tome, Job.DNC),
+ Waist(pieceType = PieceType.Tome, Job.DNC),
+ Legs(pieceType = PieceType.Savage, Job.DNC),
+ Feet(pieceType = PieceType.Tome, Job.DNC),
+ Ears(pieceType = PieceType.Savage, Job.DNC),
+ Neck(pieceType = PieceType.Savage, Job.DNC),
+ Wrist(pieceType = PieceType.Savage, Job.DNC),
+ Ring(pieceType = PieceType.Tome, Job.DNC, "left ring"),
+ Ring(pieceType = PieceType.Savage, Job.DNC, "right ring")
+ )
+ )
lazy val link: String = "https://ffxiv.ariyala.com/19V5R"
lazy val link2: String = "https://ffxiv.ariyala.com/1A0WM"
lazy val link3: String = "https://etro.gg/gearset/26a67536-b4ce-4adc-a46a-f70e348bb138"
+ lazy val link4: String = "https://etro.gg/gearset/865fc886-994f-4c28-8fc1-4379f160a916"
lazy val lootWeapon: Piece = Weapon(pieceType = PieceType.Tome, Job.AnyJob)
lazy val lootBody: Piece = Body(pieceType = PieceType.Savage, Job.AnyJob)
diff --git a/src/test/scala/me/arcanis/ffxivbis/service/bis/BisProviderTest.scala b/src/test/scala/me/arcanis/ffxivbis/service/bis/BisProviderTest.scala
index 3d20613..a5aef87 100644
--- a/src/test/scala/me/arcanis/ffxivbis/service/bis/BisProviderTest.scala
+++ b/src/test/scala/me/arcanis/ffxivbis/service/bis/BisProviderTest.scala
@@ -29,5 +29,11 @@ class BisProviderTest extends ScalaTestWithActorTestKit(Settings.withRandomDatab
probe.expectMessage(askTimeout, Fixtures.bis)
}
+ "get best in slot set (etro 2)" in {
+ val probe = testKit.createTestProbe[BiS]()
+ provider ! DownloadBiS(Fixtures.link4, Job.DNC, probe.ref)
+ probe.expectMessage(askTimeout, Fixtures.bis2)
+ }
+
}
}
diff --git a/version.sbt b/version.sbt
index 757cbe7..53acfcf 100644
--- a/version.sbt
+++ b/version.sbt
@@ -1 +1 @@
-version := "0.9.10"
+version := "0.9.11"