Fix code smell

master
Lucas EVARD 11 months ago
parent bc57517aa1
commit d3481797f9

@ -87,30 +87,30 @@ class MockBetDataSource(private val mockData: MockDataSource.MockData) : BetData
override fun updateBetStatuses(date: ZonedDateTime) {
bets.forEachIndexed { idx, bet ->
if (bet.status != CANCELLED && bet.status != FINISHED) {
if (date >= bet.endRegistration) {
if (date >= bet.endBet) {
if (date.plusWeeks(1) >= bet.endBet) {
bets[idx] = bet.copy(status = CANCELLED)
participations
.filter { it.betId == bets[idx].id }
.forEach { p ->
users.replaceAll {
if (it.username == p.username) {
it.copy(nbCoins = it.nbCoins + p.stake)
} else it
if (bet.status != CANCELLED && bet.status != FINISHED && date >= bet.endRegistration) {
bets[idx] = when {
date >= bet.endBet && date.plusWeeks(1) >= bet.endBet -> {
cancelBet(bet)
}
date >= bet.endBet -> bet.copy(status = CLOSING)
else -> bet.copy(status = WAITING)
}
} else {
bets[idx] = bet.copy(status = CLOSING)
}
} else {
bets[idx] = bet.copy(status = WAITING)
}
}
private fun cancelBet(bet: Bet): Bet {
participations
.filter { it.betId == bet.id }
.forEach { p ->
users.replaceAll { user ->
if (user.username == p.username) {
user.copy(nbCoins = user.nbCoins + p.stake)
} else user
}
}
return bet.copy(status = CANCELLED)
}
override fun getToConfirm(user: UserDTO): List<BetDetail> =

@ -19,4 +19,9 @@ object ApiMessage {
const val FRIENDS_REQUEST_HIMSELF = "The receiver can't be the sender."
const val FILE_NOT_FOUND = "File not found."
const val USER_DOESNT_HAVE_PERMISSION = "This user can't delete or modify this."
const val JWT_TOKEN_INFO = "JWT token of the logged user"
const val ID_BET_INFO = "Id of the desired bet"
const val BET_NOT_FOUND_INFO = "Bet not found in the selected source"
const val NOT_CREATOR_INFO = "The user is not the creator of the bet"
const val USER_UPDATE_INFO = "New User information"
}

@ -30,7 +30,7 @@ fun Application.betRouter() {
post("/bets/add", {
description = "Allows a user to create a new bet"
request {
headerParameter<JWTPrincipal>("JWT token of the logged user")
headerParameter<JWTPrincipal>(ApiMessage.JWT_TOKEN_INFO)
body<Bet> {
description = "Bet to add in the selected source"
}
@ -73,7 +73,7 @@ fun Application.betRouter() {
post("/bets/gets", {
description = "Allows you to recover all bets"
request {
headerParameter<JWTPrincipal>("JWT token of the logged user")
headerParameter<JWTPrincipal>(ApiMessage.JWT_TOKEN_INFO)
body<List<BetFilter>> {
description = "List of filters"
}
@ -105,7 +105,7 @@ fun Application.betRouter() {
get("/bets/popular", {
description = "Allows you to recover the most popular public bets"
request {
headerParameter<JWTPrincipal>("JWT token of the logged user")
headerParameter<JWTPrincipal>(ApiMessage.JWT_TOKEN_INFO)
}
response {
HttpStatusCode.Accepted to {
@ -134,7 +134,7 @@ fun Application.betRouter() {
get("/bets/get/{id}", {
description = "Retrieves a specific bet"
request {
pathParameter<UUID>("Id of the desired bet")
pathParameter<String>(ApiMessage.ID_BET_INFO)
}
response {
HttpStatusCode.Accepted to {
@ -144,7 +144,7 @@ fun Application.betRouter() {
}
}
HttpStatusCode.NotFound to {
description = "Bet not found in the selected source"
description = ApiMessage.BET_NOT_FOUND_INFO
body(ApiMessage.BET_NOT_FOUND)
}
}
@ -162,7 +162,7 @@ fun Application.betRouter() {
description = "Delete a specific bet"
request {
body<Map<String, String>> {
description = "Id of the desired bet"
description = ApiMessage.ID_BET_INFO
}
}
response {
@ -170,7 +170,7 @@ fun Application.betRouter() {
description = "The bet has been deleted"
}
HttpStatusCode.NotFound to {
description = "Bet not found in the selected source"
description = ApiMessage.BET_NOT_FOUND_INFO
body(ApiMessage.BET_NOT_FOUND)
}
}
@ -198,7 +198,7 @@ fun Application.betRouter() {
description = "The bet has been updated"
}
HttpStatusCode.NotFound to {
description = "Bet not found in the selected source"
description = ApiMessage.BET_NOT_FOUND_INFO
body(ApiMessage.BET_NOT_FOUND)
}
}
@ -218,7 +218,7 @@ fun Application.betRouter() {
get("/bets/toConfirm", {
description = "Allows a user to know which bets can be validated"
request {
headerParameter<JWTPrincipal>("JWT token of the logged user")
headerParameter<JWTPrincipal>(ApiMessage.JWT_TOKEN_INFO)
}
response {
HttpStatusCode.Accepted to {
@ -244,7 +244,7 @@ fun Application.betRouter() {
get("/bets/getWon", {
description = "Allows a user to know their won bets"
request {
headerParameter<JWTPrincipal>("JWT token of the logged user")
headerParameter<JWTPrincipal>(ApiMessage.JWT_TOKEN_INFO)
}
response {
HttpStatusCode.Accepted to {
@ -269,7 +269,7 @@ fun Application.betRouter() {
get("/bets/history", {
description = "Allows a user to know own history of bets"
request {
headerParameter<JWTPrincipal>("JWT token of the logged user")
headerParameter<JWTPrincipal>(ApiMessage.JWT_TOKEN_INFO)
}
response {
HttpStatusCode.Accepted to {
@ -297,7 +297,7 @@ fun Application.betRouter() {
get("/bets/current", {
description = "Allows a user to know current bets"
request {
headerParameter<JWTPrincipal>("JWT token of the logged user")
headerParameter<JWTPrincipal>(ApiMessage.JWT_TOKEN_INFO)
}
response {
HttpStatusCode.Accepted to {
@ -323,10 +323,10 @@ fun Application.betRouter() {
authenticate {
post("/bets/confirm/{id}", {
description = "allows the creator of a bet to confrm the final answer"
description = "allows the creator of a bet to confirm the final answer"
request {
headerParameter<JWTPrincipal>("JWT token of the logged user")
pathParameter<UUID>("Id of the desired bet")
headerParameter<JWTPrincipal>(ApiMessage.JWT_TOKEN_INFO)
pathParameter<String>(ApiMessage.ID_BET_INFO)
body<String> {
description = "Final answer of the bet"
}
@ -336,7 +336,7 @@ fun Application.betRouter() {
description = "The final answer has been set"
}
HttpStatusCode.Unauthorized to {
description = "The user is not the creator of the bet"
description = ApiMessage.NOT_CREATOR_INFO
}
}
}) {
@ -360,47 +360,44 @@ fun Application.betRouter() {
post("/bets/users", {
description = "gets all userDTO of a bet"
request {
headerParameter<JWTPrincipal>("JWT token of the logged user")
pathParameter<String>("Id of the desired bet")
headerParameter<JWTPrincipal>(ApiMessage.JWT_TOKEN_INFO)
pathParameter<String>(ApiMessage.ID_BET_INFO)
body<List<UserDTO>> {
description = "UserDTO of the bet"
}
}
response {
HttpStatusCode.OK to {
description = "The final answer has been set"
}
HttpStatusCode.Unauthorized to {
description = "The user is not the creator of the bet"
HttpStatusCode.Accepted to {
description = "List of 4 user of the selected bet"
}
}
}) {
logManager.log("Routing", "POST /bets/users")
hasToken { principal ->
verifyUserFromToken(userDataSource, principal) { user, _ ->
verifyUserFromToken(userDataSource, principal) { _, _ ->
val id = call.receive<Map<String, String>>()["id"] ?: ""
val participations = participationDataSource.getParticipationFromBetId(id)
val users =
participations.map { userDataSource.getUserByUsername(it.username).first }.toSet().take(4)
.toList()
call.respond(users)
call.respond(HttpStatusCode.Accepted, users)
}
}
}
post("/bets/pvbet/update", {
description = "Add new users to a private bet"
request {
headerParameter<JWTPrincipal>("JWT token of the logged user")
headerParameter<JWTPrincipal>(ApiMessage.JWT_TOKEN_INFO)
body<UpdatedPrivateBet> {
description = "Bet id and list of new users"
}
}
response {
HttpStatusCode.OK to {
description = "The final answer has been set"
HttpStatusCode.Accepted to {
description = "Invited users list updated"
}
HttpStatusCode.Unauthorized to {
description = "The user is not the creator of the bet"
description = ApiMessage.NOT_CREATOR_INFO
}
}
}) {
@ -410,7 +407,7 @@ fun Application.betRouter() {
val updateRequest = call.receive<UpdatedPrivateBet>()
val bet = betDataSource.getBetById(updateRequest.betid)
if (user.username != bet?.createdBy) {
call.respond(HttpStatusCode.Forbidden, ApiMessage.USER_DOESNT_HAVE_PERMISSION)
call.respond(HttpStatusCode.Unauthorized, ApiMessage.USER_DOESNT_HAVE_PERMISSION)
}
betDataSource.addUserInPrivatebet(updateRequest)
call.respond(HttpStatusCode.Accepted, updateRequest)

@ -27,7 +27,7 @@ fun Application.friendRouter() {
get("/friends/gets", {
description = "Allows you to recover all friends of a JWT Token"
request {
headerParameter<JWTPrincipal>("JWT token of the logged user")
headerParameter<JWTPrincipal>(ApiMessage.JWT_TOKEN_INFO)
}
response {
HttpStatusCode.Accepted to {
@ -43,7 +43,10 @@ fun Application.friendRouter() {
verifyUserFromToken(userDataSource, principal) { _, _ ->
val username = tokenManagerBet.getUsernameFromToken(principal)
val user = userDataSource.getUserByUsername(username).first
logManager.log("Routing","ACCEPTED /friends/gets\t${friendDataSource.getFriendFromUserId(user?.id.toString())}")
logManager.log(
"Routing",
"ACCEPTED /friends/gets\t${friendDataSource.getFriendFromUserId(user?.id.toString())}"
)
call.respond(HttpStatusCode.Accepted, friendDataSource.getFriendFromUserId(user?.id.toString()))
}
}
@ -52,7 +55,7 @@ fun Application.friendRouter() {
get("/friends/requests", {
description = "Allows you to recover all friend requests of a JWT Token"
request {
headerParameter<JWTPrincipal>("JWT token of the logged user")
headerParameter<JWTPrincipal>(ApiMessage.JWT_TOKEN_INFO)
}
response {
HttpStatusCode.Accepted to {
@ -68,8 +71,11 @@ fun Application.friendRouter() {
verifyUserFromToken(userDataSource, principal) { _, _ ->
val username = tokenManagerBet.getUsernameFromToken(principal)
val user = userDataSource.getUserByUsername(username).first
logManager.log("Routing","ACCEPTED /friends/requests\t${friendDataSource.getFriendRequestsFromUserId(user?.id.toString())
}")
logManager.log(
"Routing", "ACCEPTED /friends/requests\t${
friendDataSource.getFriendRequestsFromUserId(user?.id.toString())
}"
)
call.respond(
HttpStatusCode.Accepted,
friendDataSource.getFriendRequestsFromUserId(user?.id.toString())
@ -81,7 +87,7 @@ fun Application.friendRouter() {
post("/friends/add", {
description = "Allows a user to add a friend"
request {
headerParameter<JWTPrincipal>("JWT token of the logged user")
headerParameter<JWTPrincipal>(ApiMessage.JWT_TOKEN_INFO)
body<String> {
description = "User to add in the friends list"
}
@ -133,7 +139,7 @@ fun Application.friendRouter() {
post("/friends/delete", {
description = "Allows a user to delete a friend"
request {
headerParameter<JWTPrincipal>("JWT token of the logged user")
headerParameter<JWTPrincipal>(ApiMessage.JWT_TOKEN_INFO)
body<String> {
description = "User to delete in the friends list"
}
@ -182,7 +188,7 @@ fun Application.friendRouter() {
get("/friends/search/{search}", {
description = "Search for users based on username"
request {
headerParameter<JWTPrincipal>("JWT token of the logged user")
headerParameter<JWTPrincipal>(ApiMessage.JWT_TOKEN_INFO)
pathParameter<String>("Search string")
}
response {

@ -37,7 +37,7 @@ fun Application.userRouter() {
description = "Allows a user to register"
request {
body<UserRequest> {
description = "User information"
description = ApiMessage.USER_UPDATE_INFO
}
}
response {
@ -92,7 +92,7 @@ fun Application.userRouter() {
description = "Allows a user to login"
request {
body<CheckUser> {
description = "User information"
description = ApiMessage.USER_UPDATE_INFO
}
}
response {
@ -114,8 +114,7 @@ fun Application.userRouter() {
userDtoWithToken.token = tokenManagerUser.generateOrReplaceJWTToken(userDtoWithToken)
logManager.log("Routing", "ACCEPTED /users/login\t${userDtoWithToken}")
call.respond(HttpStatusCode.OK, userDtoWithToken)
} ?:
logManager.log("Routing","${ApiMessage.USER_NOT_FOUND} /users/login")
} ?: logManager.log("Routing", "${ApiMessage.USER_NOT_FOUND} /users/login")
call.respond(HttpStatusCode.NotFound, ApiMessage.USER_NOT_FOUND)
} else {
logManager.log("Routing", "${ApiMessage.INCORRECT_LOGIN_PASSWORD} /users/login")
@ -148,9 +147,9 @@ fun Application.userRouter() {
description = "Allow you to delete your account"
request {
headerParameter<JWTPrincipal>("JWT token of the logged user")
headerParameter<JWTPrincipal>(ApiMessage.JWT_TOKEN_INFO)
body<CheckUser> {
description = "User information"
description = ApiMessage.USER_UPDATE_INFO
}
}
response {
@ -193,7 +192,7 @@ fun Application.userRouter() {
get("/users/token", {
description = "Allows you to retrieve the user linked to a JWT token"
request {
headerParameter<JWTPrincipal>("JWT token of the user")
headerParameter<JWTPrincipal>(ApiMessage.JWT_TOKEN_INFO)
}
response {
HttpStatusCode.OK to {
@ -214,7 +213,7 @@ fun Application.userRouter() {
get("/users/gift", {
description = "Allows you to collect your daily gift"
request {
headerParameter<JWTPrincipal>("JWT token of the logged user")
headerParameter<JWTPrincipal>(ApiMessage.JWT_TOKEN_INFO)
}
response {
HttpStatusCode.OK to {
@ -248,9 +247,9 @@ fun Application.userRouter() {
description = "Allow you to add a profil image"
request {
headerParameter<JWTPrincipal>("JWT token of the logged user")
headerParameter<JWTPrincipal>(ApiMessage.JWT_TOKEN_INFO)
body<CheckUser> {
description = "User information"
description = ApiMessage.USER_UPDATE_INFO
}
}
response {

Loading…
Cancel
Save