You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

NickChangeErrorProcessor.kt 1.1KB

12345678910111213141516171819202122232425
  1. package com.dmdirc.ktirc.messages.processors
  2. import com.dmdirc.ktirc.events.NicknameChangeError
  3. import com.dmdirc.ktirc.events.NicknameChangeFailed
  4. import com.dmdirc.ktirc.messages.ERR_ERRONEUSNICKNAME
  5. import com.dmdirc.ktirc.messages.ERR_NICKCOLLISION
  6. import com.dmdirc.ktirc.messages.ERR_NICKNAMEINUSE
  7. import com.dmdirc.ktirc.messages.ERR_NONICKNAMEGIVEN
  8. import com.dmdirc.ktirc.model.IrcMessage
  9. internal class NickChangeErrorProcessor : MessageProcessor {
  10. override val commands = arrayOf(ERR_ERRONEUSNICKNAME, ERR_NICKCOLLISION, ERR_NICKNAMEINUSE, ERR_NONICKNAMEGIVEN)
  11. override fun process(message: IrcMessage) = listOf(NicknameChangeFailed(message.metadata, message.command.toNicknameChangeError()))
  12. private fun String.toNicknameChangeError(): NicknameChangeError = when(this) {
  13. ERR_ERRONEUSNICKNAME -> NicknameChangeError.ErroneousNickname
  14. ERR_NICKCOLLISION -> NicknameChangeError.Collision
  15. ERR_NICKNAMEINUSE -> NicknameChangeError.AlreadyInUse
  16. ERR_NONICKNAMEGIVEN -> NicknameChangeError.NoNicknameGiven
  17. else -> throw IllegalArgumentException("Unknown nick change error")
  18. }
  19. }