irc-fun-types-0.2: Common types for IRC related packages

Safe HaskellNone
LanguageHaskell2010

Network.Irc.Types

Contents

Synopsis

Type Aliases, Newtypes, Other Basics

Message Parts

data Prefix Source #

IRC message prefix.

Constructors

PrefixServer Hostname

The server which sends the message

PrefixNick Nickname (Maybe Username) (Maybe Host)

The user which sends the message (if the message comes from a user)

Instances

data UserAddress Source #

User address containing a name part (as in "user") and an optional host part (as in "user@host").

Constructors

UserAddress Username (Maybe Host) 

data Target Source #

Some IRC commands operate on a target, that is either a single user or an entire IRC server.

Instances

data Address Source #

An IP address.

Constructors

IPv4 Text 
IPv6 Text 

data Host Source #

A host, either a hostname (e.g. irc.freenode.net) or an IP address, or a cloak assigned by the server.

Instances

Eq Host Source # 

Methods

(==) :: Host -> Host -> Bool #

(/=) :: Host -> Host -> Bool #

Show Host Source # 

Methods

showsPrec :: Int -> Host -> ShowS #

show :: Host -> String #

showList :: [Host] -> ShowS #

data Command Source #

An IRC command code. Either a named command, or a numeric one.

Mask

data MaskPart Source #

Part of a Mask.

Constructors

MaskChar Char

A literal character.

MaskWildOne

A wildcard which matches a single character.

MaskWildMany

A wildcard which matches zero or more characters.

newtype Mask Source #

A pattern for matching host and server names. A mask in the protocol is a string which consists of literal characters and wildcards. There are two wildcards: ?, which matches a single character; *, which matches any number of characters (zero or more).

Constructors

Mask [MaskPart] 

Instances

Eq Mask Source # 

Methods

(==) :: Mask -> Mask -> Bool #

(/=) :: Mask -> Mask -> Bool #

Show Mask Source # 

Methods

showsPrec :: Int -> Mask -> ShowS #

show :: Mask -> String #

showList :: [Mask] -> ShowS #

data TargetMask Source #

Some IRC command parameters are targets, and one way to specify a target is using a Mask.

Constructors

HostMask Mask

Host mask, prefixed with # in the protocol. Selects all the users whose host matches the mask.

ServerMask Mask

Server mask, prefixed with $ in the protocol. Selects all the users connected to a server which matches the mask.

Message

data GenericMessage Source #

A generic IRC message. It consists of a sender prefix, command name (string or numeric) and optionally a list of parameters.

Constructors

GenericMessage 

data SpecificMessage Source #

An IRC message of a specific type. This includes only messages whose command is a name. Messages with a numeric command are handled in the Network.IRC.Fun.Messages.Reply module.

data MessageTarget Source #

Some IRC commands have targets. For example, to which channel to send a given text message. Targets are specified as parameters in IRC messages.

Constructors

ChannelTarget Channel

An IRC channel.

UserTarget (Maybe Nickname) (Maybe UserAddress) (Maybe Hostname)

An IRC user. Possible combinations in the protocol are:

  • Address (address host is required)
  • Address and server (address host is optional)
  • Nickname
  • Nickname and address (address host is required)
MaskTarget TargetMask

A mask which matches the server or host of the users to whom the message should be sent.

data Query Source #

A server query. Can be sent through a StatsMessage.

Instances

data Message Source #

An IRC message of specific type (excluding the optional sender prefix, see SpecificMessage).

Constructors

PassMessage Password 
NickMessage Nickname 
UserMessage Username Bool Bool RealName

first bool = whether invisible, second bool = whether sees wallops

OperMessage Username Password 
UserModeMessage Nickname [UserMode] [UserMode]

first list: modes to remove (-), second list: modes to add (+)

ServiceMessage Nickname Mask Text 
QuitMessage (Maybe Comment) 
SQuitMessage Hostname Comment 
JoinMessage (Maybe ([Channel], [ChannelKey])) 
PartMessage [Channel] (Maybe Comment) 
ChannelModeMessage [ChannelMode] [ChannelMode] 
TopicMessage Channel (Maybe ChannelTopic) 
NamesMessage [Channel] (Maybe Hostname) 
ListMessage [Channel] (Maybe Hostname) 
InviteMessage Nickname Channel 
KickMessage [Channel] [Username] (Maybe Comment) 
PrivMsgMessage MessageTarget MsgContent 
PrivActionMessage MessageTarget MsgContent 
NoticeMessage MessageTarget MsgContent 
MotdMessage (Maybe Hostname) 
LusersMessage (Maybe (Mask, Maybe Hostname)) 
VersionMessage (Maybe (Either Hostname Mask)) 
StatsMessage (Maybe (Query, Maybe (Either Hostname Mask))) 
LinksMessage (Maybe (Maybe (Either Hostname Mask), Mask)) 
TimeMessage (Maybe (Either Hostname Mask)) 
ConnectMessage Hostname PortNumber (Either Hostname Mask) 
TraceMessage (Maybe Target) 
AdminMessage (Maybe Target) 
InfoMessage (Maybe Target) 
ServlistMessage (Maybe (Mask, Maybe Text)) 
SQueryMessage ServiceName MsgContent 
WhoMessage (Maybe (Mask, Bool)) 
WhoisMessage (Maybe Hostname) [Mask] 
WhowasMessage [Nickname] (Maybe (Int, Maybe Hostname)) 
KillMessage Nickname Comment 
PingMessage Hostname (Maybe Hostname) 
PongMessage Hostname (Maybe Hostname) 
ErrorMessage Text 
AwayMessage (Maybe MsgContent) 
RehashMessage 
DieMessage 
RestartMessage 
SummonMessage Username (Maybe (Hostname, Maybe Channel)) 
UsersMessage (Maybe Hostname) 
WallopsMessage MsgContent 
UserhostMessage [Nickname] 
IsonMessage [Nickname] 

Instances

data AnalysisError Source #

An error occuring while analyzing a parsed IRC protocol message into a specific message type, such as JoinMessage.

data ArgSpec Source #

Specifies the number of parameter a certain IRC message type accepts.

Instances

Modes

Reply

data Reply Source #

TODO

Constructors

WelcomeReply

TODO

YourHostReply

TODO

CreatedReply

TODO

MyInfoReply

TODO

BounceReply

TODO

ISupportReply

TODO

UserHostReply

TODO

IsOnReply

TODO

AwayReply

TODO

UnAwayReply

TODO

NoAwayReply

TODO

WhoIsUserReply

TODO

WhoIsServerReply

TODO

WhoIsOperatorReply

TODO

WhoIsIdleReply

TODO

EndOfWhoIsReply

TODO

WhoIsChannelsReply

TODO

WhoWasUserReply

TODO

EndOfWhoWasReply

TODO

ListStartReply

TODO

ListReply

TODO

ListEndReply

TODO

UniqueOpIsReply

TODO

ChannelModeIsReply

TODO

NoTopicReply

TODO

TopicReply

TODO

InvitingReply

TODO

SummoningReply

TODO

InviteListReply

TODO

EndOfInviteListReply

TODO

ExceptListReply

TODO

EndOfExceptListReply

TODO

VersionReply

TODO

WhoReply

TODO

EndOfWhoReply

TODO

NamesReply ChannelPrivacy Channel [(Privilege, Nickname)]

Lists members of IRC channels. Sent when JOINing a channel to list the users in that channel, or as a response to the NAMES command.

EndOfNamesReply

Sent after a sequence of 0 or more NameReplys, to signal that the list transmission is finished.

LinksReply

TODO

EndOfLinksReply

TODO

BanListReply

TODO

EndOfBanListReply

TODO

InfoReply

TODO

EndOfInfoReply

TODO

MotdStartReply

TODO

MessageOfTheDayReply

TODO

EndOfMessageOfTheDayReply

TODO

YoureOperReply

TODO

RehashingReply

TODO

YoureServiceReply

TODO

TimeReply

TODO

UsersStartReply

TODO

UsersReply

TODO

EndOfUsersReply

TODO

NoUsersReply

TODO

TraceLinkReply

TODO

TraceConnectingReply

TODO

TraceHandshakeReply

TODO

TraceUnknownReply

TODO

TraceOperatorReply

TODO

TraceUserReply

TODO

TraceServerReply

TODO

TraceServiceReply

TODO

TraceNewTypeReply

TODO

TraceClassReply

TODO

TraceReconnectReply

TODO

TraceLogReply

TODO

TraceEndReply

TODO

StatsLinkInfoReply

TODO

StatsCommandsReply

TODO

EndOfStatsReply

TODO

StatsUptimeReply

TODO

StatsOLineReply

TODO

UModeIsReply

TODO

ServListReply

TODO

ServListEndReply

TODO

LuserClientReply

TODO

LuserOpReply

TODO

LuserUnknownReply

TODO

LuserChannelsReply

TODO

LuserMeReply

TODO

AdminMeReply

TODO

AdminLocation1Reply

TODO

AdminLocation2Reply

TODO

AdminEmailReply

TODO

TryAgainReply

TODO

Instances

Eq Reply Source # 

Methods

(==) :: Reply -> Reply -> Bool #

(/=) :: Reply -> Reply -> Bool #

Show Reply Source # 

Methods

showsPrec :: Int -> Reply -> ShowS #

show :: Reply -> String #

showList :: [Reply] -> ShowS #

data SpecificReply Source #

An IRC server numeric reply of a specific type.