forked from lavina/lavina
1
0
Fork 0
lavina/crates/projection-irc/src/commands/whois/error.rs

69 lines
2.0 KiB
Rust
Raw Normal View History

use tokio::io::{AsyncWrite, AsyncWriteExt};
use lavina_core::prelude::Str;
2024-04-23 18:16:18 +00:00
use proto_irc::response::WriteResponse;
2024-04-29 18:20:48 +00:00
/// ErrNoSuchNick401
2024-04-22 04:44:16 +00:00
pub struct ErrNoSuchNick401 {
client: Str,
nick: Str,
}
2024-04-22 04:44:16 +00:00
impl ErrNoSuchNick401 {
pub fn new(client: Str, nick: Str) -> Self {
2024-04-22 04:44:16 +00:00
ErrNoSuchNick401 { client, nick }
}
}
2024-04-29 18:20:48 +00:00
/// ErrNoSuchServer402
2024-04-22 04:44:16 +00:00
struct ErrNoSuchServer402 {
client: Str,
/// target parameter in WHOIS
/// example: `/whois <target> <nick>`
server_name: Str,
}
2024-04-22 04:44:16 +00:00
2024-04-29 18:20:48 +00:00
/// ErrNoNicknameGiven431
2024-04-22 04:44:16 +00:00
pub struct ErrNoNicknameGiven431 {
client: Str,
}
2024-04-22 04:44:16 +00:00
impl ErrNoNicknameGiven431 {
pub fn new(client: Str) -> Self {
2024-04-22 04:44:16 +00:00
ErrNoNicknameGiven431 { client }
}
}
2024-04-23 18:16:18 +00:00
impl WriteResponse for ErrNoSuchNick401 {
async fn write_response(self, writer: &mut (impl AsyncWrite + Unpin)) -> std::io::Result<()> {
writer.write_all(b"401 ").await?;
writer.write_all(self.client.as_bytes()).await?;
writer.write_all(b" ").await?;
writer.write_all(self.nick.as_bytes()).await?;
writer.write_all(b" :").await?;
writer.write_all("No such nick/channel".as_bytes()).await?;
Ok(())
}
}
2024-04-23 18:16:18 +00:00
impl WriteResponse for ErrNoNicknameGiven431 {
async fn write_response(self, writer: &mut (impl AsyncWrite + Unpin)) -> std::io::Result<()> {
writer.write_all(b"431").await?;
writer.write_all(self.client.as_bytes()).await?;
writer.write_all(b" :").await?;
writer.write_all("No nickname given".as_bytes()).await?;
Ok(())
}
}
2024-04-23 18:16:18 +00:00
impl WriteResponse for ErrNoSuchServer402 {
async fn write_response(self, writer: &mut (impl AsyncWrite + Unpin)) -> std::io::Result<()> {
writer.write_all(b"402 ").await?;
writer.write_all(self.client.as_bytes()).await?;
writer.write_all(b" ").await?;
writer.write_all(self.server_name.as_bytes()).await?;
writer.write_all(b" :").await?;
writer.write_all("No such server".as_bytes()).await?;
Ok(())
}
}