Apply ktlint standard formatting
This commit is contained in:
@@ -18,6 +18,7 @@ class MessageParser(val incoming: Channel<String>) {
|
||||
|
||||
abstract class Command(open val command: String, open val parameters: List<String>) {
|
||||
abstract fun toServerMessage(): ServerMessage
|
||||
|
||||
fun getTrailingParameterIndex() = parameters.indexOfFirst { it.startsWith(":") }
|
||||
|
||||
fun getTrailingParameterString() =
|
||||
@@ -35,41 +36,47 @@ class MessageParser(val incoming: Channel<String>) {
|
||||
fun getNonTrailingParameters() = getNonTrailingParameterString().split(" ")
|
||||
|
||||
class NamedCommand(override val command: String, override val parameters: List<String>) : Command(command, parameters) {
|
||||
override fun toServerMessage() = when (command.uppercase()) {
|
||||
"PONG" -> ServerMessage.Pong(getTrailingParameterString().removePrefix(":"))
|
||||
"MODE" -> ServerMessage.Mode(
|
||||
parameters.first(),
|
||||
parameters.last().removePrefix(":")
|
||||
) // TODO MODE, CHANMODE, LOCALMODE
|
||||
override fun toServerMessage() =
|
||||
when (command.uppercase()) {
|
||||
"PONG" -> ServerMessage.Pong(getTrailingParameterString().removePrefix(":"))
|
||||
"MODE" ->
|
||||
ServerMessage.Mode(
|
||||
parameters.first(),
|
||||
parameters.last().removePrefix(":"),
|
||||
) // TODO MODE, CHANMODE, LOCALMODE
|
||||
|
||||
"NOTICE" -> ServerMessage.Notice(
|
||||
getNonTrailingParameters(),
|
||||
getTrailingParameterString()
|
||||
)
|
||||
"NOTICE" ->
|
||||
ServerMessage.Notice(
|
||||
getNonTrailingParameters(),
|
||||
getTrailingParameterString(),
|
||||
)
|
||||
|
||||
"PRIVMSG" -> ServerMessage.PrivMsg(
|
||||
getNonTrailingParameters(),
|
||||
getTrailingParameterString()
|
||||
)
|
||||
"PRIVMSG" ->
|
||||
ServerMessage.PrivMsg(
|
||||
getNonTrailingParameters(),
|
||||
getTrailingParameterString(),
|
||||
)
|
||||
|
||||
else -> {
|
||||
ServerMessage.UNIMPLEMENTED("$command ${parameters.joinToString(" ")}")
|
||||
else -> {
|
||||
ServerMessage.UNIMPLEMENTED("$command ${parameters.joinToString(" ")}")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class NumericCommand(override val command: String, override val parameters: List<String>) : Command(command, parameters) {
|
||||
override fun toServerMessage() = when (command.toInt()) {
|
||||
5 -> ServerMessage.Numeric.RPL_ISUPPORT(getNonTrailingParameterString())
|
||||
321 -> ServerMessage.Numeric.RPL_LISTSTART()
|
||||
322 -> ServerMessage.Numeric.RPL_LIST(
|
||||
parameters[1],
|
||||
parameters[2].toInt(),
|
||||
getTrailingParameterString()
|
||||
)
|
||||
323 -> ServerMessage.Numeric.RPL_LISTEND()
|
||||
else -> ServerMessage.UNIMPLEMENTED(parameters.toString())
|
||||
}
|
||||
override fun toServerMessage() =
|
||||
when (command.toInt()) {
|
||||
5 -> ServerMessage.Numeric.RPL_ISUPPORT(getNonTrailingParameterString())
|
||||
321 -> ServerMessage.Numeric.RPL_LISTSTART()
|
||||
322 ->
|
||||
ServerMessage.Numeric.RPL_LIST(
|
||||
parameters[1],
|
||||
parameters[2].toInt(),
|
||||
getTrailingParameterString(),
|
||||
)
|
||||
323 -> ServerMessage.Numeric.RPL_LISTEND()
|
||||
else -> ServerMessage.UNIMPLEMENTED(parameters.toString())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,21 +106,31 @@ class MessageParser(val incoming: Channel<String>) {
|
||||
val tokens = commandList.toMutableList()
|
||||
|
||||
// remove tags from strlist if present
|
||||
tags = if (tokens.first().startsWith("@")) {
|
||||
tokens.removeFirst()
|
||||
} else null
|
||||
tags =
|
||||
if (tokens.first().startsWith("@")) {
|
||||
tokens.removeFirst()
|
||||
} else {
|
||||
null
|
||||
}
|
||||
|
||||
// remove client prefix (nick&opt hostname) if present
|
||||
prefix = if (tokens.first().startsWith(":")) {
|
||||
tokens.removeFirst()
|
||||
} else null
|
||||
prefix =
|
||||
if (tokens.first().startsWith(":")) {
|
||||
tokens.removeFirst()
|
||||
} else {
|
||||
null
|
||||
}
|
||||
|
||||
// get command e.g. PING
|
||||
val commandStr = tokens.removeFirst()
|
||||
|
||||
// Check if command is a numeric (RPL/ERR) or named
|
||||
command = if (commandStr.toIntOrNull() == null) Command.NamedCommand(commandStr, tokens)
|
||||
else Command.NumericCommand(commandStr, tokens)
|
||||
command =
|
||||
if (commandStr.toIntOrNull() == null) {
|
||||
Command.NamedCommand(commandStr, tokens)
|
||||
} else {
|
||||
Command.NumericCommand(commandStr, tokens)
|
||||
}
|
||||
|
||||
return command.toServerMessage()
|
||||
}
|
||||
@@ -122,11 +139,10 @@ class MessageParser(val incoming: Channel<String>) {
|
||||
}
|
||||
|
||||
suspend fun start() {
|
||||
|
||||
val builder = MessageBuilder()
|
||||
for (msg in incoming) {
|
||||
logger.trace { "Receiving: $msg" }
|
||||
incomingParsedMessages.send(builder.build(msg))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user