Safe Haskell | None |
---|---|
Language | Haskell2010 |
Messages for IRC Clients, implementing the current "living standard", to be found at https://modern.ircdocs.horse/. This module does not include the responses. See Network.Yak.Response for standard-compliant responses.
Synopsis
- type Authenticate = Msg "AUTHENTICATE" '[Text]
- authenticateArgument :: Lens' Authenticate Text
- type Pass = Msg "PASS" '[Text]
- passPassword :: Lens' Pass Text
- type Nick = Msg "NICK" '[Nickname]
- nickNickname :: Lens' Nick Nickname
- type User = Msg "USER" '[Username, Word, Unused "*", Message]
- userUsername :: Lens' User Username
- userMode :: Lens' User Word
- userUnused :: Lens' User (Unused "*")
- userRealname :: Lens' User Message
- type Oper = Msg "OPER" '[Nickname, Text]
- operName :: Lens' Oper Nickname
- operPassword :: Lens' Oper Text
- type Quit = Msg "QUIT" '[Message]
- quitMessage :: Lens' Quit Message
- type Join = Msg "JOIN" '[NonEmpty Channel, [Text]]
- type Join0 = Msg "JOIN" '[Unused "0"]
- joinChannels :: Lens' Join (NonEmpty Channel)
- joinKeys :: Lens' Join [Text]
- type Part = Msg "PART" '[NonEmpty Channel, Maybe Message]
- partChannels :: Lens' Part (NonEmpty Channel)
- partMessage :: Lens' Part (Maybe Message)
- type Topic = Msg "TOPIC" '[Channel, Maybe Message]
- topicChannel :: Lens' Topic Channel
- topicMessage :: Lens' Topic (Maybe Message)
- type Names = Msg "NAMES" '[[Channel]]
- namesChannels :: Lens' Names [Channel]
- type List = Msg "LIST" '[[Channel], Maybe Text]
- listChannels :: Lens' List [Channel]
- listElistCond :: Lens' List (Maybe Text)
- type Motd = Msg "MOTD" '[Hostname]
- motdTarget :: Lens' Motd Hostname
- type Lusers = Msg "LUSERS" '[Maybe (Mask, Maybe Hostname)]
- lusersParam :: Lens' Lusers (Maybe (Mask, Maybe Hostname))
- lusersMask :: Traversal' Lusers Mask
- lusersTarget :: Traversal' Lusers Hostname
- type Version = Msg "VERSION" '[Maybe Hostname]
- versionTarget :: Lens' Version (Maybe Hostname)
- type Admin = Msg "ADMIN" '[Maybe Hostname]
- adminTarget :: Lens' Admin (Maybe Hostname)
- type Connect = Msg "CONNECT" '[Hostname, Maybe (Int, Maybe Hostname)]
- connectTarget :: Lens' Connect Hostname
- connectConnInfo :: Lens' Connect (Maybe (Int, Maybe Hostname))
- type Time = Msg "TIME" '[Maybe Hostname]
- timeTarget :: Lens' Time (Maybe Hostname)
- type Stats = Msg "STATS" '[Char, Maybe Hostname]
- statsQuery :: Lens' Stats Char
- statsTarget :: Lens' Stats (Maybe Hostname)
- type Info = Msg "INFO" '[Maybe Hostname]
- infoTarget :: Lens' Info (Maybe Hostname)
- type Mode = Msg "MODE" '[Either Channel Nickname, Maybe ByteString]
- modeTarget :: Lens' Mode (Either Channel Nickname)
- modeSetter :: Lens' Mode (Maybe ByteString)
- modeChannel :: Traversal' Mode Channel
- modeNick :: Traversal' Mode Nickname
- modeString :: ServerModes -> Fold Mode ModeStr
- type Privmsg = Msg "PRIVMSG" '[NonEmpty (Either Channel Nickname), Message]
- privmsgTargets :: Lens' Privmsg (NonEmpty (Either Channel Nickname))
- privmsgMessage :: Lens' Privmsg Message
- privmsgChannel :: Traversal' Privmsg Channel
- privmsgNick :: Traversal' Privmsg Nickname
- type Notice = Msg "NOTICE" '[NonEmpty (Either Channel Nickname), Message]
- noticeTargets :: Lens' Notice (NonEmpty (Either Channel Nickname))
- noticeMessage :: Lens' Notice Message
- noticeChannel :: Traversal' Notice Channel
- noticeNick :: Traversal' Notice Nickname
- type Who = Msg "WHO" '[Maybe Mask, Flag "o"]
- whoMask :: Lens' Who (Maybe Mask)
- whoFlag :: Lens' Who (Flag "o")
- type WhoIs = Msg "WHOIS" '[Maybe Hostname, NonEmpty Mask]
- whoIsTarget :: Lens' WhoIs (Maybe Hostname)
- whoIsMasks :: Lens' WhoIs (NonEmpty Mask)
- type WhoWas = Msg "WHOWAS" '[NonEmpty Nickname, Maybe (Int, Maybe Hostname)]
- whoWasNicks :: Lens' WhoWas (NonEmpty Nickname)
- whoWasParam :: Lens' WhoWas (Maybe (Int, Maybe Hostname))
- whoWasCount :: Traversal' WhoWas Int
- whoWasTarget :: Traversal' WhoWas Hostname
- type Userhost = Msg "USERHOST" '[Nickname, Maybe Nickname, Maybe Nickname, Maybe Nickname, Maybe Nickname]
- userhostNick1 :: Lens' Userhost Nickname
- userhostNick2 :: Lens' Userhost (Maybe Nickname)
- userhostNick3 :: Lens' Userhost (Maybe Nickname)
- userhostNick4 :: Lens' Userhost (Maybe Nickname)
- userhostNick5 :: Lens' Userhost (Maybe Nickname)
- type Ping = Msg "PING" '[Hostname, Maybe Hostname]
- pingServer1 :: Lens' Ping Hostname
- pingServer2 :: Lens' Ping (Maybe Hostname)
- type Pong = Msg "PONG" '[Hostname, Maybe Hostname]
- pongServer1 :: Lens' Pong Hostname
- pongServer2 :: Lens' Pong (Maybe Hostname)
- type Kill = Msg "KILL" '[Nickname, Message]
- killNick :: Lens' Kill Nickname
- killMessage :: Lens' Kill Message
- type Kick = Msg "KICK" '[NonEmpty Channel, NonEmpty Nickname, Maybe Message]
- kickChannels :: Lens' Kick (NonEmpty Channel)
- kickNicknames :: Lens' Kick (NonEmpty Nickname)
- kickMessage :: Lens' Kick (Maybe Message)
- type Invite = Msg "INVITE" '[Nickname, Channel]
- inviteNickname :: Lens' Invite Nickname
- inviteChannel :: Lens' Invite Channel
- class HasChannel a where
- channel :: Traversal' a Channel
- class HasNick a where
- nick :: Traversal' a Nickname
- class HasHostname a where
- hostname :: Traversal' a Hostname
Connection Messages
type Authenticate = Msg "AUTHENTICATE" '[Text] Source #
AUTHENTICATE
type User = Msg "USER" '[Username, Word, Unused "*", Message] Source #
USER <username> 0 * <realname>
Channel Operations
type Join = Msg "JOIN" '[NonEmpty Channel, [Text]] Source #
JOIN <channel>{,<channel>} [<key>{,<key>}]
type Part = Msg "PART" '[NonEmpty Channel, Maybe Message] Source #
PART <channel>{,<channel>} [<reason>]
type List = Msg "LIST" '[[Channel], Maybe Text] Source #
LIST [<channel>{,<channel>}] [<elistcond>{,<elistcond>}]
Server Queries and Commands
type Connect = Msg "CONNECT" '[Hostname, Maybe (Int, Maybe Hostname)] Source #
CONNECT <target server> [<port> [<remote server>]]
type Mode = Msg "MODE" '[Either Channel Nickname, Maybe ByteString] Source #
MODE <target> [<modestring> [<mode arguments>...]]
modeSetter :: Lens' Mode (Maybe ByteString) Source #
modeString :: ServerModes -> Fold Mode ModeStr Source #
Sending Messages
type Privmsg = Msg "PRIVMSG" '[NonEmpty (Either Channel Nickname), Message] Source #
PRIVMSG <target>{,<target>} <text to be sent>
type Notice = Msg "NOTICE" '[NonEmpty (Either Channel Nickname), Message] Source #
NOTICE <target>{,<target>} <text to be sent>
User-based queries
type WhoWas = Msg "WHOWAS" '[NonEmpty Nickname, Maybe (Int, Maybe Hostname)] Source #
WHOWAS <nickname>{,<nickname} [<count>, [<target>]]
Optional Messages
type Userhost = Msg "USERHOST" '[Nickname, Maybe Nickname, Maybe Nickname, Maybe Nickname, Maybe Nickname] Source #
USERHOST <nickname>{ <nickname>}
Miscellaneous Messages
Extras
Common messages that are not specified out in the document above.
type Kick = Msg "KICK" '[NonEmpty Channel, NonEmpty Nickname, Maybe Message] Source #
KICK <channel>(,<channel>)* <nickname>(,<nickname>)* [message]
As defined in RFC 2812
type Invite = Msg "INVITE" '[Nickname, Channel] Source #
INVITE <nickname> <channel>
As defined in RFC 2812
Common Accessors
class HasChannel a where Source #
Class for extracting the channel out of messages that may contain channels
channel :: Traversal' a Channel Source #
Instances
HasChannel Join Source # | |
Defined in Network.Yak.Client | |
HasChannel Part Source # | |
Defined in Network.Yak.Client | |
HasChannel Topic Source # | |
Defined in Network.Yak.Client | |
HasChannel Names Source # | |
Defined in Network.Yak.Client | |
HasChannel List Source # | |
Defined in Network.Yak.Client | |
HasChannel Mode Source # | |
Defined in Network.Yak.Client | |
HasChannel Privmsg Source # | |
Defined in Network.Yak.Client | |
HasChannel Notice Source # | |
Defined in Network.Yak.Client | |
HasChannel Kick Source # | |
Defined in Network.Yak.Client | |
HasChannel Invite Source # | |
Defined in Network.Yak.Client |
class HasNick a where Source #
Messages containing a nickname in one (unambigious) position.
nick :: Traversal' a Nickname Source #
Instances
HasNick Nick Source # | |
Defined in Network.Yak.Client | |
HasNick Oper Source # | |
Defined in Network.Yak.Client | |
HasNick Mode Source # | |
Defined in Network.Yak.Client | |
HasNick Privmsg Source # | |
Defined in Network.Yak.Client | |
HasNick Notice Source # | |
Defined in Network.Yak.Client | |
HasNick WhoWas Source # | |
Defined in Network.Yak.Client | |
HasNick Kill Source # | |
Defined in Network.Yak.Client | |
HasNick Kick Source # | |
Defined in Network.Yak.Client | |
HasNick Invite Source # | |
Defined in Network.Yak.Client |
class HasHostname a where Source #
Messages containing a hostname in one (unambigious) position
hostname :: Traversal' a Hostname Source #
Instances
HasHostname Motd Source # | |
Defined in Network.Yak.Client | |
HasHostname Lusers Source # | |
Defined in Network.Yak.Client | |
HasHostname Version Source # | |
Defined in Network.Yak.Client | |
HasHostname Admin Source # | |
Defined in Network.Yak.Client | |
HasHostname Time Source # | |
Defined in Network.Yak.Client | |
HasHostname Stats Source # | |
Defined in Network.Yak.Client | |
HasHostname Info Source # | |
Defined in Network.Yak.Client | |
HasHostname WhoIs Source # | |
Defined in Network.Yak.Client | |
HasHostname WhoWas Source # | |
Defined in Network.Yak.Client |