irc-dcc-2.0.0: A DCC message parsing and helper library for IRC clients

Safe HaskellNone
LanguageHaskell2010

Network.IRC.DCC

Contents

Description

DCC command parsing and encoding module.

Use the CtcpCommand type class to convert between CTCPByteStrings and typed values.

Try converting a CTCPByteString to a DccSend value:

fromCtcp ctcpMessage :: Either String DccSend

Encoding a DccSend value to a CTCPByteString:

toCtcp (Send fileName ip port (Just fileSize))

Synopsis

DCC command parsing and encoding

DCC command types

Messaging commands (DCC CHAT)

data DccChat Source #

Offer DCC chat session

Constructors

Chat !IPv4 !PortNumber

Text messages exchange

DCC CHAT chat <ip> <port>
ChatWhiteboard !IPv4 !PortNumber

Drawing commands exchange

DCC CHAT wboard <ip> <port>

data DccClose Source #

Signal intent to close DCC chat connection

Constructors

Close
DCC CLOSE

File Transfer commands (DCC SEND)

data DccSend Source #

Offer DCC file transfer

Constructors

Send !Path !IPv4 !PortNumber !(Maybe FileOffset)

As part of the standard DCC protocol, sent by the server

DCC SEND <path> <ip> <port> (<fileSize>)
SendReverseServer !Path !IPv4 !FileOffset !Token

As part of the Reverse DCC protocol, sent by the server

DCC SEND <path> <ip> 0 <fileSize> <token>

data DccResume Source #

Signal intent to resume DCC file transfer at specific position

Constructors

Resume !Path !PortNumber !FileOffset

As part of the standard DCC protocol, sent by the client

DCC RESUME <path> <port> <position>
ResumeReverse !Path !FileOffset !Token

As part of the Reverse DCC protocol, sent by the client

DCC RESUME <path> 0 <position> <token>

data DccAccept Source #

Signal acceptance to resume DCC file transfer at specific position

Constructors

Accept !Path !PortNumber !FileOffset

As part of the standard DCC protocol, sent by the server

DCC ACCEPT <path> <port> <position>
AcceptReverse !Path !FileOffset !Token

As part of the Reverse DCC protocol, sent by the server

DCC ACCEPT <path> 0 <position> <token>

data DccSendReverseClient Source #

Tell the server to start a DCC file transfer and where it should send the data to.

Constructors

SendReverseClient !Path !IPv4 !PortNumber !FileOffset !Token

As part of the Reverse DCC protocol, sent by the client

DCC SEND <path> <ip> <port> <fileSize> <token>

Constructors from other commands

resumeFromSend :: DccSend -> FileOffset -> DccResume Source #

Try resuming a file offer

Protocol variant checks

matchesSend :: DccAccept -> DccSend -> Bool Source #

Check if a DccSend and a DccAccept command are part of the same negotiation.

Helper Types

data Path Source #

Instances

Eq Path Source # 

Methods

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

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

Show Path Source # 

Methods

showsPrec :: Int -> Path -> ShowS #

show :: Path -> String #

showList :: [Path] -> ShowS #

data PathType Source #

Constructors

Simple

A file path without spaces

Quoted

A file path that can include spaces and will be quoted when serialized

data FileOffset Source #

Instances

Bounded FileOffset Source # 
Enum FileOffset Source # 
Eq FileOffset Source # 
Integral FileOffset Source # 
Num FileOffset Source # 
Ord FileOffset Source # 
Real FileOffset Source # 
Show FileOffset Source # 

newtype Token Source #

An identifier for knowing which negotiation a request belongs to

Constructors

Token ByteString 

Instances

Eq Token Source # 

Methods

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

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

Show Token Source # 

Methods

showsPrec :: Int -> Token -> ShowS #

show :: Token -> String #

showList :: [Token] -> ShowS #