matrix-client-0.1.2.0: A matrix client library
Safe HaskellNone
LanguageHaskell2010

Network.Matrix.Client

Description

This module contains the client-server API https://matrix.org/docs/spec/client_server/r0.6.1

Synopsis

Client

data ClientSession Source #

The session record, use createSession to create it.

newtype MatrixToken Source #

Constructors

MatrixToken Text 

getTokenFromEnv Source #

Arguments

:: Text

The envirnoment variable name

-> IO MatrixToken 

createSession Source #

Arguments

:: Text

The matrix client-server base url, e.g. "https://matrix.org"

-> MatrixToken

The user token

-> IO ClientSession 

createSession creates the session record.

API

type MatrixM m a = m (Either MatrixError a) Source #

type MatrixIO a = MatrixM IO a Source #

MatrixIO is a convenient type alias for server response

retryWithLog Source #

Arguments

:: (MonadMask m, MonadIO m) 
=> Int

Maximum number of retry

-> (Text -> m ())

A log function, can be used to measure errors

-> MatrixM m a

The action to retry

-> MatrixM m a 

Retry a network action

User data

newtype UserID Source #

Constructors

UserID Text 

Instances

Instances details
Eq UserID Source # 
Instance details

Defined in Network.Matrix.Internal

Methods

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

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

Ord UserID Source # 
Instance details

Defined in Network.Matrix.Internal

Show UserID Source # 
Instance details

Defined in Network.Matrix.Internal

Hashable UserID Source # 
Instance details

Defined in Network.Matrix.Internal

Methods

hashWithSalt :: Int -> UserID -> Int #

hash :: UserID -> Int #

FromJSON UserID Source # 
Instance details

Defined in Network.Matrix.Internal

getTokenOwner :: ClientSession -> MatrixIO UserID Source #

getTokenOwner gets information about the owner of a given access token.

Room management

data RoomCreateRequest Source #

Instances

Instances details
Eq RoomCreateRequest Source # 
Instance details

Defined in Network.Matrix.Room

Show RoomCreateRequest Source # 
Instance details

Defined in Network.Matrix.Room

Generic RoomCreateRequest Source # 
Instance details

Defined in Network.Matrix.Room

Associated Types

type Rep RoomCreateRequest :: Type -> Type #

ToJSON RoomCreateRequest Source # 
Instance details

Defined in Network.Matrix.Room

type Rep RoomCreateRequest Source # 
Instance details

Defined in Network.Matrix.Room

type Rep RoomCreateRequest = D1 ('MetaData "RoomCreateRequest" "Network.Matrix.Room" "matrix-client-0.1.2.0-IBEy2HWO5KfIiyHvD7KcGH" 'False) (C1 ('MetaCons "RoomCreateRequest" 'PrefixI 'True) ((S1 ('MetaSel ('Just "rcrPreset") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RoomCreatePreset) :*: S1 ('MetaSel ('Just "rcrRoomAliasName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :*: (S1 ('MetaSel ('Just "rcrName") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "rcrTopic") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text))))

Room participation

newtype TxnID Source #

Constructors

TxnID Text 

Instances

Instances details
Eq TxnID Source # 
Instance details

Defined in Network.Matrix.Client

Methods

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

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

Show TxnID Source # 
Instance details

Defined in Network.Matrix.Client

Methods

showsPrec :: Int -> TxnID -> ShowS #

show :: TxnID -> String #

showList :: [TxnID] -> ShowS #

mkReply Source #

Arguments

:: RoomID

The destination room, must match the original event

-> RoomEvent

The original event

-> MessageText

The reply message

-> Event

The event to send

Prepare a reply event

data Event Source #

Constructors

EventRoomMessage RoomMessage 
EventRoomReply EventID RoomMessage

A reply defined by the parent event id and the reply message

EventRoomEdit (EventID, RoomMessage) RoomMessage

An edit defined by the original message and the new message

EventUnknown Object 

Instances

Instances details
Eq Event Source # 
Instance details

Defined in Network.Matrix.Events

Methods

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

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

Show Event Source # 
Instance details

Defined in Network.Matrix.Events

Methods

showsPrec :: Int -> Event -> ShowS #

show :: Event -> String #

showList :: [Event] -> ShowS #

ToJSON Event Source # 
Instance details

Defined in Network.Matrix.Events

FromJSON Event Source # 
Instance details

Defined in Network.Matrix.Events

newtype EventID Source #

Constructors

EventID 

Fields

Instances

Instances details
Eq EventID Source # 
Instance details

Defined in Network.Matrix.Events

Methods

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

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

Ord EventID Source # 
Instance details

Defined in Network.Matrix.Events

Show EventID Source # 
Instance details

Defined in Network.Matrix.Events

ToJSON EventID Source # 
Instance details

Defined in Network.Matrix.Events

FromJSON EventID Source # 
Instance details

Defined in Network.Matrix.Events

Room membership

newtype RoomID Source #

Constructors

RoomID Text 

Instances

Instances details
Eq RoomID Source # 
Instance details

Defined in Network.Matrix.Client

Methods

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

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

Ord RoomID Source # 
Instance details

Defined in Network.Matrix.Client

Show RoomID Source # 
Instance details

Defined in Network.Matrix.Client

Hashable RoomID Source # 
Instance details

Defined in Network.Matrix.Client

Methods

hashWithSalt :: Int -> RoomID -> Int #

hash :: RoomID -> Int #

FromJSON RoomID Source # 
Instance details

Defined in Network.Matrix.Client

joinRoom :: ClientSession -> Text -> MatrixIO RoomID Source #

Note that this API takes either a room ID or alias, unlike joinRoomById

Filter

data EventFilter Source #

Instances

Instances details
Eq EventFilter Source # 
Instance details

Defined in Network.Matrix.Client

Show EventFilter Source # 
Instance details

Defined in Network.Matrix.Client

Generic EventFilter Source # 
Instance details

Defined in Network.Matrix.Client

Associated Types

type Rep EventFilter :: Type -> Type #

ToJSON EventFilter Source # 
Instance details

Defined in Network.Matrix.Client

FromJSON EventFilter Source # 
Instance details

Defined in Network.Matrix.Client

type Rep EventFilter Source # 
Instance details

Defined in Network.Matrix.Client

type Rep EventFilter = D1 ('MetaData "EventFilter" "Network.Matrix.Client" "matrix-client-0.1.2.0-IBEy2HWO5KfIiyHvD7KcGH" 'False) (C1 ('MetaCons "EventFilter" 'PrefixI 'True) ((S1 ('MetaSel ('Just "efLimit") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Int)) :*: S1 ('MetaSel ('Just "efNotSenders") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [Text]))) :*: (S1 ('MetaSel ('Just "efNotTypes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [Text])) :*: (S1 ('MetaSel ('Just "efSenders") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [Text])) :*: S1 ('MetaSel ('Just "efTypes") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [Text]))))))

eventFilterAll :: EventFilter Source #

A filter that should match nothing

data RoomEventFilter Source #

Instances

Instances details
Eq RoomEventFilter Source # 
Instance details

Defined in Network.Matrix.Client

Show RoomEventFilter Source # 
Instance details

Defined in Network.Matrix.Client

Generic RoomEventFilter Source # 
Instance details

Defined in Network.Matrix.Client

Associated Types

type Rep RoomEventFilter :: Type -> Type #

ToJSON RoomEventFilter Source # 
Instance details

Defined in Network.Matrix.Client

FromJSON RoomEventFilter Source # 
Instance details

Defined in Network.Matrix.Client

type Rep RoomEventFilter Source # 
Instance details

Defined in Network.Matrix.Client

roomEventFilterAll :: RoomEventFilter Source #

A filter that should match nothing

data StateFilter Source #

Instances

Instances details
Eq StateFilter Source # 
Instance details

Defined in Network.Matrix.Client

Show StateFilter Source # 
Instance details

Defined in Network.Matrix.Client

Generic StateFilter Source # 
Instance details

Defined in Network.Matrix.Client

Associated Types

type Rep StateFilter :: Type -> Type #

ToJSON StateFilter Source # 
Instance details

Defined in Network.Matrix.Client

FromJSON StateFilter Source # 
Instance details

Defined in Network.Matrix.Client

type Rep StateFilter Source # 
Instance details

Defined in Network.Matrix.Client

data RoomFilter Source #

Instances

Instances details
Eq RoomFilter Source # 
Instance details

Defined in Network.Matrix.Client

Show RoomFilter Source # 
Instance details

Defined in Network.Matrix.Client

Generic RoomFilter Source # 
Instance details

Defined in Network.Matrix.Client

Associated Types

type Rep RoomFilter :: Type -> Type #

ToJSON RoomFilter Source # 
Instance details

Defined in Network.Matrix.Client

FromJSON RoomFilter Source # 
Instance details

Defined in Network.Matrix.Client

type Rep RoomFilter Source # 
Instance details

Defined in Network.Matrix.Client

data Filter Source #

Instances

Instances details
Eq Filter Source # 
Instance details

Defined in Network.Matrix.Client

Methods

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

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

Show Filter Source # 
Instance details

Defined in Network.Matrix.Client

Generic Filter Source # 
Instance details

Defined in Network.Matrix.Client

Associated Types

type Rep Filter :: Type -> Type #

Methods

from :: Filter -> Rep Filter x #

to :: Rep Filter x -> Filter #

ToJSON Filter Source # 
Instance details

Defined in Network.Matrix.Client

FromJSON Filter Source # 
Instance details

Defined in Network.Matrix.Client

type Rep Filter Source # 
Instance details

Defined in Network.Matrix.Client

type Rep Filter = D1 ('MetaData "Filter" "Network.Matrix.Client" "matrix-client-0.1.2.0-IBEy2HWO5KfIiyHvD7KcGH" 'False) (C1 ('MetaCons "Filter" 'PrefixI 'True) ((S1 ('MetaSel ('Just "filterEventFields") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [Text])) :*: S1 ('MetaSel ('Just "filterEventFormat") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe EventFormat))) :*: (S1 ('MetaSel ('Just "filterPresence") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe EventFilter)) :*: (S1 ('MetaSel ('Just "filterAccountData") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe EventFilter)) :*: S1 ('MetaSel ('Just "filterRoom") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe RoomFilter))))))

newtype FilterID Source #

Constructors

FilterID Text 

Instances

Instances details
Eq FilterID Source # 
Instance details

Defined in Network.Matrix.Client

Show FilterID Source # 
Instance details

Defined in Network.Matrix.Client

Hashable FilterID Source # 
Instance details

Defined in Network.Matrix.Client

Methods

hashWithSalt :: Int -> FilterID -> Int #

hash :: FilterID -> Int #

FromJSON FilterID Source # 
Instance details

Defined in Network.Matrix.Client

messageFilter :: Filter Source #

A filter to keep all the messages

createFilter Source #

Arguments

:: ClientSession

The client session, use createSession to get one.

-> UserID

The userID, use getTokenOwner to get it.

-> Filter

The filter definition, use defaultFilter to create one or use the messageFilter example.

-> MatrixIO FilterID

The function returns a FilterID suitable for the sync function.

Events

getTimelines :: SyncResult -> [(RoomID, NonEmpty RoomEvent)] Source #

Extract room events from a sync result

syncPoll Source #

Arguments

:: MonadIO m 
=> ClientSession

The client session, use createSession to get one.

-> Maybe FilterID

A sync filter, use createFilter to get one.

-> Maybe Text

A since value, get it from a previous sync result using the srNextBatch field.

-> Maybe Presence

Set the session presence.

-> (SyncResult -> m ())

Your callback to handle sync result.

-> MatrixM m ()

This function does not return unless there is an error.

newtype Author Source #

Constructors

Author 

Fields

Instances

Instances details
Eq Author Source # 
Instance details

Defined in Network.Matrix.Client

Methods

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

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

Show Author Source # 
Instance details

Defined in Network.Matrix.Client

ToJSON Author Source # 
Instance details

Defined in Network.Matrix.Client

FromJSON Author Source # 
Instance details

Defined in Network.Matrix.Client

data Presence Source #

Constructors

Offline 
Online 
Unavailable 

Instances

Instances details
Eq Presence Source # 
Instance details

Defined in Network.Matrix.Client

Show Presence Source # 
Instance details

Defined in Network.Matrix.Client

ToJSON Presence Source # 
Instance details

Defined in Network.Matrix.Client

FromJSON Presence Source # 
Instance details

Defined in Network.Matrix.Client

data RoomEvent Source #

Constructors

RoomEvent 

Instances

Instances details
Eq RoomEvent Source # 
Instance details

Defined in Network.Matrix.Client

Show RoomEvent Source # 
Instance details

Defined in Network.Matrix.Client

Generic RoomEvent Source # 
Instance details

Defined in Network.Matrix.Client

Associated Types

type Rep RoomEvent :: Type -> Type #

ToJSON RoomEvent Source # 
Instance details

Defined in Network.Matrix.Client

FromJSON RoomEvent Source # 
Instance details

Defined in Network.Matrix.Client

type Rep RoomEvent Source # 
Instance details

Defined in Network.Matrix.Client

type Rep RoomEvent = D1 ('MetaData "RoomEvent" "Network.Matrix.Client" "matrix-client-0.1.2.0-IBEy2HWO5KfIiyHvD7KcGH" 'False) (C1 ('MetaCons "RoomEvent" 'PrefixI 'True) ((S1 ('MetaSel ('Just "reContent") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Event) :*: S1 ('MetaSel ('Just "reType") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text)) :*: (S1 ('MetaSel ('Just "reEventId") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 EventID) :*: S1 ('MetaSel ('Just "reSender") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Author))))

data RoomSummary Source #

Instances

Instances details
Eq RoomSummary Source # 
Instance details

Defined in Network.Matrix.Client

Show RoomSummary Source # 
Instance details

Defined in Network.Matrix.Client

Generic RoomSummary Source # 
Instance details

Defined in Network.Matrix.Client

Associated Types

type Rep RoomSummary :: Type -> Type #

ToJSON RoomSummary Source # 
Instance details

Defined in Network.Matrix.Client

FromJSON RoomSummary Source # 
Instance details

Defined in Network.Matrix.Client

type Rep RoomSummary Source # 
Instance details

Defined in Network.Matrix.Client

type Rep RoomSummary = D1 ('MetaData "RoomSummary" "Network.Matrix.Client" "matrix-client-0.1.2.0-IBEy2HWO5KfIiyHvD7KcGH" 'False) (C1 ('MetaCons "RoomSummary" 'PrefixI 'True) (S1 ('MetaSel ('Just "rsJoinedMemberCount") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Int)) :*: S1 ('MetaSel ('Just "rsInvitedMemberCount") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Int))))

data TimelineSync Source #

Instances

Instances details
Eq TimelineSync Source # 
Instance details

Defined in Network.Matrix.Client

Show TimelineSync Source # 
Instance details

Defined in Network.Matrix.Client

Generic TimelineSync Source # 
Instance details

Defined in Network.Matrix.Client

Associated Types

type Rep TimelineSync :: Type -> Type #

ToJSON TimelineSync Source # 
Instance details

Defined in Network.Matrix.Client

FromJSON TimelineSync Source # 
Instance details

Defined in Network.Matrix.Client

type Rep TimelineSync Source # 
Instance details

Defined in Network.Matrix.Client

type Rep TimelineSync = D1 ('MetaData "TimelineSync" "Network.Matrix.Client" "matrix-client-0.1.2.0-IBEy2HWO5KfIiyHvD7KcGH" 'False) (C1 ('MetaCons "TimelineSync" 'PrefixI 'True) (S1 ('MetaSel ('Just "tsEvents") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe [RoomEvent])) :*: (S1 ('MetaSel ('Just "tsLimited") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Bool)) :*: S1 ('MetaSel ('Just "tsPrevBatch") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe Text)))))

data InvitedRoomSync Source #

Constructors

InvitedRoomSync 

Instances

Instances details
Eq InvitedRoomSync Source # 
Instance details

Defined in Network.Matrix.Client

Show InvitedRoomSync Source # 
Instance details

Defined in Network.Matrix.Client

Generic InvitedRoomSync Source # 
Instance details

Defined in Network.Matrix.Client

Associated Types

type Rep InvitedRoomSync :: Type -> Type #

ToJSON InvitedRoomSync Source # 
Instance details

Defined in Network.Matrix.Client

FromJSON InvitedRoomSync Source # 
Instance details

Defined in Network.Matrix.Client

type Rep InvitedRoomSync Source # 
Instance details

Defined in Network.Matrix.Client

type Rep InvitedRoomSync = D1 ('MetaData "InvitedRoomSync" "Network.Matrix.Client" "matrix-client-0.1.2.0-IBEy2HWO5KfIiyHvD7KcGH" 'False) (C1 ('MetaCons "InvitedRoomSync" 'PrefixI 'False) (U1 :: Type -> Type))

data JoinedRoomSync Source #

Instances

Instances details
Eq JoinedRoomSync Source # 
Instance details

Defined in Network.Matrix.Client

Show JoinedRoomSync Source # 
Instance details

Defined in Network.Matrix.Client

Generic JoinedRoomSync Source # 
Instance details

Defined in Network.Matrix.Client

Associated Types

type Rep JoinedRoomSync :: Type -> Type #

ToJSON JoinedRoomSync Source # 
Instance details

Defined in Network.Matrix.Client

FromJSON JoinedRoomSync Source # 
Instance details

Defined in Network.Matrix.Client

type Rep JoinedRoomSync Source # 
Instance details

Defined in Network.Matrix.Client

type Rep JoinedRoomSync = D1 ('MetaData "JoinedRoomSync" "Network.Matrix.Client" "matrix-client-0.1.2.0-IBEy2HWO5KfIiyHvD7KcGH" 'False) (C1 ('MetaCons "JoinedRoomSync" 'PrefixI 'True) (S1 ('MetaSel ('Just "jrsSummary") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe RoomSummary)) :*: S1 ('MetaSel ('Just "jrsTimeline") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 TimelineSync)))

data SyncResult Source #

Instances

Instances details
Eq SyncResult Source # 
Instance details

Defined in Network.Matrix.Client

Show SyncResult Source # 
Instance details

Defined in Network.Matrix.Client

Generic SyncResult Source # 
Instance details

Defined in Network.Matrix.Client

Associated Types

type Rep SyncResult :: Type -> Type #

ToJSON SyncResult Source # 
Instance details

Defined in Network.Matrix.Client

FromJSON SyncResult Source # 
Instance details

Defined in Network.Matrix.Client

type Rep SyncResult Source # 
Instance details

Defined in Network.Matrix.Client

type Rep SyncResult = D1 ('MetaData "SyncResult" "Network.Matrix.Client" "matrix-client-0.1.2.0-IBEy2HWO5KfIiyHvD7KcGH" 'False) (C1 ('MetaCons "SyncResult" 'PrefixI 'True) (S1 ('MetaSel ('Just "srNextBatch") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Text) :*: S1 ('MetaSel ('Just "srRooms") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe SyncResultRoom))))

data SyncResultRoom Source #

Instances

Instances details
Eq SyncResultRoom Source # 
Instance details

Defined in Network.Matrix.Client

Show SyncResultRoom Source # 
Instance details

Defined in Network.Matrix.Client

Generic SyncResultRoom Source # 
Instance details

Defined in Network.Matrix.Client

Associated Types

type Rep SyncResultRoom :: Type -> Type #

ToJSON SyncResultRoom Source # 
Instance details

Defined in Network.Matrix.Client

FromJSON SyncResultRoom Source # 
Instance details

Defined in Network.Matrix.Client

type Rep SyncResultRoom Source # 
Instance details

Defined in Network.Matrix.Client

type Rep SyncResultRoom = D1 ('MetaData "SyncResultRoom" "Network.Matrix.Client" "matrix-client-0.1.2.0-IBEy2HWO5KfIiyHvD7KcGH" 'False) (C1 ('MetaCons "SyncResultRoom" 'PrefixI 'True) (S1 ('MetaSel ('Just "srrJoin") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (Map Text JoinedRoomSync))) :*: S1 ('MetaSel ('Just "srrInvite") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Maybe (Map Text InvitedRoomSync)))))