mirror of
				https://github.com/arcan1s/ffxivbis.git
				synced 2025-10-30 21:23:41 +00:00 
			
		
		
		
	Release 0.9.11
change loggin, more tests, cosmetic changes
This commit is contained in:
		| @ -8,9 +8,10 @@ | |||||||
|     </root> |     </root> | ||||||
|  |  | ||||||
|     <logger name="me.arcanis.ffxivbis" level="DEBUG" /> |     <logger name="me.arcanis.ffxivbis" level="DEBUG" /> | ||||||
|     <logger name="http" level="DEBUG"> |     <logger name="http" level="DEBUG" additivity="false"> | ||||||
|         <appender-ref ref="http" /> |         <appender-ref ref="http" /> | ||||||
|     </logger> |     </logger> | ||||||
|     <logger name="slick" level="INFO" /> |     <logger name="slick" level="INFO" /> | ||||||
|  |     <logger name="org.flywaydb.core.internal" level="INFO" /> | ||||||
|  |  | ||||||
| </configuration> | </configuration> | ||||||
|  | |||||||
| @ -17,7 +17,7 @@ import spray.json._ | |||||||
|  |  | ||||||
| trait HttpHandler extends StrictLogging { this: JsonSupport => | trait HttpHandler extends StrictLogging { this: JsonSupport => | ||||||
|  |  | ||||||
|   implicit def exceptionHandler: ExceptionHandler = ExceptionHandler { |   def exceptionHandler: ExceptionHandler = ExceptionHandler { | ||||||
|     case ex: IllegalArgumentException => |     case ex: IllegalArgumentException => | ||||||
|       complete(StatusCodes.BadRequest, ErrorResponse(ex.getMessage)) |       complete(StatusCodes.BadRequest, ErrorResponse(ex.getMessage)) | ||||||
|  |  | ||||||
| @ -26,7 +26,7 @@ trait HttpHandler extends StrictLogging { this: JsonSupport => | |||||||
|       complete(StatusCodes.InternalServerError, ErrorResponse("unknown server error")) |       complete(StatusCodes.InternalServerError, ErrorResponse("unknown server error")) | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   implicit def rejectionHandler: RejectionHandler = |   def rejectionHandler: RejectionHandler = | ||||||
|     RejectionHandler.default |     RejectionHandler.default | ||||||
|       .mapRejectionResponse { |       .mapRejectionResponse { | ||||||
|         case response @ HttpResponse(_, _, entity: HttpEntity.Strict, _) => |         case response @ HttpResponse(_, _, entity: HttpEntity.Strict, _) => | ||||||
|  | |||||||
| @ -69,7 +69,7 @@ class BiSView(override val storage: ActorRef[Message], | |||||||
|  |  | ||||||
|     def bisAction(playerId: PlayerId, piece: String, pieceType: String)(fn: Piece => Future[Unit]) = |     def bisAction(playerId: PlayerId, piece: String, pieceType: String)(fn: Piece => Future[Unit]) = | ||||||
|       getPiece(playerId, piece, pieceType) match { |       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)`")) |         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, _)) |           bisAction(playerId, piece, pieceType)(addPieceBiS(playerId, _)) | ||||||
|         case (Some(piece), Some(pieceType), "remove", _) => |         case (Some(piece), Some(pieceType), "remove", _) => | ||||||
|           bisAction(playerId, piece, pieceType)(removePieceBiS(playerId, _)) |           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 perform $action")) | ||||||
|       } |       } | ||||||
|       case _ => Future.failed(new Error(s"Could not construct player id from `$player`")) |       case _ => Future.failed(new Error(s"Could not construct player id from `$player`")) | ||||||
|  | |||||||
| @ -70,8 +70,8 @@ class LootView(override val storage: ActorRef[Message]) | |||||||
|  |  | ||||||
|     PlayerId(partyId, player) match { |     PlayerId(partyId, player) match { | ||||||
|       case Some(playerId) => (getPiece(playerId), action) match { |       case Some(playerId) => (getPiece(playerId), action) match { | ||||||
|         case (Some(piece), "add") => addPieceLoot(playerId, piece, maybeFreeLoot).map(_ => ()) |         case (Some(piece), "add") => addPieceLoot(playerId, piece, maybeFreeLoot) | ||||||
|         case (Some(piece), "remove") => removePieceLoot(playerId, piece).map(_ => ()) |         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 piece from `$maybePiece ($maybePieceType)`")) | ||||||
|       } |       } | ||||||
|       case _ => Future.failed(new Error(s"Could not construct player id from `$player`")) |       case _ => Future.failed(new Error(s"Could not construct player id from `$player`")) | ||||||
|  | |||||||
| @ -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)) |       Player(-1, partyId, playerId.job, playerId.nick, BiS.empty, Seq.empty, maybeLink, maybePriority.getOrElse(0)) | ||||||
|  |  | ||||||
|     (action, maybePlayerId) match { |     (action, maybePlayerId) match { | ||||||
|       case ("add", Some(playerId)) => addPlayer(player(playerId)).map(_ => ()) |       case ("add", Some(playerId)) => addPlayer(player(playerId)) | ||||||
|       case ("remove", Some(playerId)) => removePlayer(playerId).map(_ => ()) |       case ("remove", Some(playerId)) => removePlayer(playerId) | ||||||
|       case _ => Future.failed(new Error(s"Could not perform $action with $nick ($job)")) |       case _ => Future.failed(new Error(s"Could not perform $action with $nick ($job)")) | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -68,10 +68,10 @@ class UserView(override val storage: ActorRef[Message]) | |||||||
|  |  | ||||||
|     action match { |     action match { | ||||||
|       case "add" => (maybePassword, permission) 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 _ => 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")) |       case _ => Future.failed(new Error(s"Could not perform $action")) | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -7,9 +7,10 @@ object PieceType { | |||||||
|   case object Crafted extends PieceType |   case object Crafted extends PieceType | ||||||
|   case object Tome extends PieceType |   case object Tome extends PieceType | ||||||
|   case object Savage extends PieceType |   case object Savage extends PieceType | ||||||
|  |   case object Artifact extends PieceType | ||||||
|  |  | ||||||
|   lazy val available: Seq[PieceType] = |   lazy val available: Seq[PieceType] = | ||||||
|     Seq(Crafted, Tome, Savage) |     Seq(Crafted, Tome, Savage, Artifact) | ||||||
|  |  | ||||||
|   def withName(pieceType: String): PieceType = |   def withName(pieceType: String): PieceType = | ||||||
|     available.find(_.toString.equalsIgnoreCase(pieceType)) match { |     available.find(_.toString.equalsIgnoreCase(pieceType)) match { | ||||||
|  | |||||||
| @ -17,6 +17,7 @@ import scala.concurrent.duration.FiniteDuration | |||||||
| import scala.language.implicitConversions | import scala.language.implicitConversions | ||||||
|  |  | ||||||
| object Implicits { | object Implicits { | ||||||
|  |  | ||||||
|   implicit def getBooleanFromOptionString(maybeYes: Option[String]): Boolean = maybeYes.map(_.toLowerCase) match { |   implicit def getBooleanFromOptionString(maybeYes: Option[String]): Boolean = maybeYes.map(_.toLowerCase) match { | ||||||
|     case Some("yes" | "on") => true |     case Some("yes" | "on") => true | ||||||
|     case _ => false |     case _ => false | ||||||
|  | |||||||
| @ -19,10 +19,27 @@ object Fixtures { | |||||||
|       Ring(pieceType = PieceType.Tome, Job.DNC, "right ring") |       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 link: String = "https://ffxiv.ariyala.com/19V5R" | ||||||
|   lazy val link2: String = "https://ffxiv.ariyala.com/1A0WM" |   lazy val link2: String = "https://ffxiv.ariyala.com/1A0WM" | ||||||
|   lazy val link3: String = "https://etro.gg/gearset/26a67536-b4ce-4adc-a46a-f70e348bb138" |   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 lootWeapon: Piece = Weapon(pieceType = PieceType.Tome, Job.AnyJob) | ||||||
|   lazy val lootBody: Piece = Body(pieceType = PieceType.Savage, Job.AnyJob) |   lazy val lootBody: Piece = Body(pieceType = PieceType.Savage, Job.AnyJob) | ||||||
|  | |||||||
| @ -29,5 +29,11 @@ class BisProviderTest extends ScalaTestWithActorTestKit(Settings.withRandomDatab | |||||||
|       probe.expectMessage(askTimeout, Fixtures.bis) |       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) | ||||||
|  |     } | ||||||
|  |  | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1 +1 @@ | |||||||
| version := "0.9.10" | version := "0.9.11" | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user