-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | A matrix client library -- -- Matrix client is a library to interface with -- https://matrix.org. -- -- Use this library to interact with matrix server. -- -- Read the Network.Matrix.Tutorial for a detailed tutorial. -- -- Please see the README at -- https://github.com/softwarefactory-project/matrix-client-haskell#readme @package matrix-client @version 0.1.4.3 -- | This module contains the Identity service API -- https://matrix.org/docs/spec/identity_service/r0.3.0.html module Network.Matrix.Identity -- | The session record, use createSession to create it. data IdentitySession newtype MatrixToken MatrixToken :: Text -> MatrixToken getTokenFromEnv :: Text -> IO MatrixToken -- | createSession creates the session record. createIdentitySession :: Text -> MatrixToken -> IO IdentitySession -- | MatrixIO is a convenient type alias for server response type MatrixIO a = MatrixM IO a data MatrixError MatrixError :: Text -> Text -> Maybe Int -> MatrixError [meErrcode] :: MatrixError -> Text [meError] :: MatrixError -> Text [meRetryAfterMS] :: MatrixError -> Maybe Int retry :: (MonadIO m, MonadMask m) => MatrixM m a -> MatrixM m a -- | Retry a network action retryWithLog :: (MonadMask m, MonadIO m) => Int -> (Text -> m ()) -> MatrixM m a -> MatrixM m a newtype UserID UserID :: Text -> UserID -- | getIdentityTokenOwner gets information about the owner of a -- given access token. getIdentityTokenOwner :: IdentitySession -> MatrixIO UserID data HashDetails HashDetails :: NonEmpty Text -> Text -> HashDetails [hdAlgorithms] :: HashDetails -> NonEmpty Text [hdPepper] :: HashDetails -> Text hashDetails :: IdentitySession -> MatrixIO HashDetails data Identity Email :: Text -> Identity Msisdn :: Text -> Identity -- | Use identityLookup to lookup a single identity, otherwise uses -- the full identitiesLookup. identityLookup :: IdentitySession -> HashDetails -> Identity -> MatrixIO (Maybe UserID) data HashedAddress data IdentityLookupRequest -- | A newtype wrapper to decoded nested list -- --
-- >>> decode "{\"mappings\": {\"hash\": \"user\"}}" :: Maybe IdentityLookupResponse
-- Just (IdentityLookupResponse [(HashedAddress "hash",UserID "user")])
--
data IdentityLookupResponse
identitiesLookup :: IdentitySession -> IdentityLookupRequest -> MatrixIO IdentityLookupResponse
mkIdentityLookupRequest :: HashDetails -> [HashedAddress] -> IdentityLookupRequest
toHashedAddress :: HashDetails -> Identity -> HashedAddress
lookupIdentity :: HashedAddress -> IdentityLookupResponse -> Maybe UserID
instance GHC.Classes.Eq Network.Matrix.Identity.HashDetails
instance GHC.Show.Show Network.Matrix.Identity.HashDetails
instance GHC.Classes.Eq Network.Matrix.Identity.HashedAddress
instance GHC.Show.Show Network.Matrix.Identity.HashedAddress
instance GHC.Classes.Eq Network.Matrix.Identity.IdentityLookupRequest
instance GHC.Show.Show Network.Matrix.Identity.IdentityLookupRequest
instance GHC.Show.Show Network.Matrix.Identity.IdentityLookupResponse
instance GHC.Classes.Eq Network.Matrix.Identity.Identity
instance GHC.Show.Show Network.Matrix.Identity.Identity
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Identity.IdentityLookupResponse
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Identity.HashDetails
-- | This module contains the client-server API
-- https://matrix.org/docs/spec/client_server/r0.6.1
module Network.Matrix.Client
-- | The session record, use createSession to create it.
data ClientSession
data LoginCredentials
LoginCredentials :: Username -> LoginSecret -> Text -> Maybe DeviceId -> Maybe InitialDeviceDisplayName -> LoginCredentials
[lUsername] :: LoginCredentials -> Username
[lLoginSecret] :: LoginCredentials -> LoginSecret
[lBaseUrl] :: LoginCredentials -> Text
[lDeviceId] :: LoginCredentials -> Maybe DeviceId
[lInitialDeviceDisplayName] :: LoginCredentials -> Maybe InitialDeviceDisplayName
newtype MatrixToken
MatrixToken :: Text -> MatrixToken
newtype Username
Username :: Text -> Username
[username] :: Username -> Text
newtype DeviceId
DeviceId :: Text -> DeviceId
[deviceId] :: DeviceId -> Text
newtype InitialDeviceDisplayName
InitialDeviceDisplayName :: Text -> InitialDeviceDisplayName
[initialDeviceDisplayName] :: InitialDeviceDisplayName -> Text
data LoginSecret
Password :: Text -> LoginSecret
Token :: Text -> LoginSecret
data LoginResponse
LoginResponse :: Text -> Text -> Text -> Text -> LoginResponse
[lrUserId] :: LoginResponse -> Text
[lrAccessToken] :: LoginResponse -> Text
[lrHomeServer] :: LoginResponse -> Text
[lrDeviceId] :: LoginResponse -> Text
getTokenFromEnv :: Text -> IO MatrixToken
-- | createSession creates the session record.
createSession :: Text -> MatrixToken -> IO ClientSession
-- | login allows you to generate a session token.
login :: LoginCredentials -> IO ClientSession
-- | loginToken allows you to generate a session token and recover
-- the Matrix auth token.
loginToken :: LoginCredentials -> IO (ClientSession, MatrixToken)
-- | logout allows you to destroy a session token.
logout :: ClientSession -> MatrixIO ()
type MatrixM m a = m (Either MatrixError a)
-- | MatrixIO is a convenient type alias for server response
type MatrixIO a = MatrixM IO a
data MatrixError
MatrixError :: Text -> Text -> Maybe Int -> MatrixError
[meErrcode] :: MatrixError -> Text
[meError] :: MatrixError -> Text
[meRetryAfterMS] :: MatrixError -> Maybe Int
retry :: (MonadIO m, MonadMask m) => MatrixM m a -> MatrixM m a
-- | Retry a network action
retryWithLog :: (MonadMask m, MonadIO m) => Int -> (Text -> m ()) -> MatrixM m a -> MatrixM m a
newtype UserID
UserID :: Text -> UserID
-- | getTokenOwner gets information about the owner of a given
-- access token.
getTokenOwner :: ClientSession -> MatrixIO UserID
data Dir
-- | Forward
F :: Dir
-- | Backward
B :: Dir
newtype EventType
EventType :: Text -> EventType
data MRCreate
MRCreate :: UserID -> Integer -> MRCreate
[mrcCreator] :: MRCreate -> UserID
[mrcRoomVersion] :: MRCreate -> Integer
newtype MRCanonicalAlias
MRCanonicalAlias :: Text -> MRCanonicalAlias
[mrcAlias] :: MRCanonicalAlias -> Text
newtype MRGuestAccess
MRGuestAccess :: Text -> MRGuestAccess
[mrGuestAccess] :: MRGuestAccess -> Text
newtype MRHistoryVisibility
MRHistoryVisibility :: Text -> MRHistoryVisibility
[mrHistoryVisibility] :: MRHistoryVisibility -> Text
newtype MRName
MRName :: Text -> MRName
[mrnName] :: MRName -> Text
newtype MRTopic
MRTopic :: Text -> MRTopic
[mrTopic] :: MRTopic -> Text
data PaginatedRoomMessages
PaginatedRoomMessages :: [RoomEvent] -> Maybe Text -> Text -> [StateEvent] -> PaginatedRoomMessages
[chunk] :: PaginatedRoomMessages -> [RoomEvent]
-- | A token corresponding to the end of chunk.
[end] :: PaginatedRoomMessages -> Maybe Text
-- | A token corresponding to the start of chunk.
[start] :: PaginatedRoomMessages -> Text
-- | A list of state events relevant to showing the chunk.
[state] :: PaginatedRoomMessages -> [StateEvent]
newtype StateKey
StateKey :: Text -> StateKey
data StateEvent
StateEvent :: StateContent -> EventID -> Integer -> Maybe Value -> RoomID -> UserID -> StateKey -> EventType -> Maybe Value -> StateEvent
[seContent] :: StateEvent -> StateContent
[seEventId] :: StateEvent -> EventID
[seOriginServerTimestamp] :: StateEvent -> Integer
[sePreviousContent] :: StateEvent -> Maybe Value
[seRoomId] :: StateEvent -> RoomID
[seSender] :: StateEvent -> UserID
[seStateKey] :: StateEvent -> StateKey
[seEventType] :: StateEvent -> EventType
[seUnsigned] :: StateEvent -> Maybe Value
data StateContent
StRoomCreate :: MRCreate -> StateContent
-- | StRoomMember MRMember | StRoomPowerLevels MRPowerLevels |
-- StRoomJoinRules MRJoinRules
StRoomCanonicalAlias :: MRCanonicalAlias -> StateContent
StRoomGuestAccess :: MRGuestAccess -> StateContent
StRoomHistoryVisibility :: MRHistoryVisibility -> StateContent
StRoomName :: MRName -> StateContent
StRoomTopic :: MRTopic -> StateContent
StOther :: Value -> StateContent
getRoomEvent :: ClientSession -> RoomID -> EventID -> MatrixIO RoomEvent
-- | This API returns a map of MXIDs to member info objects for members of
-- the room. The current user must be in the room for it to work.
-- https://spec.matrix.org/v1.1/client-server-api/#get_matrixclientv3roomsroomidjoined_members
getRoomMembers :: ClientSession -> RoomID -> MatrixIO (Map UserID User)
-- | Get the state events for the current state of a room.
-- https://spec.matrix.org/v1.1/client-server-api/#get_matrixclientv3roomsroomidstate
getRoomState :: ClientSession -> RoomID -> MatrixIO [StateEvent]
-- | Looks up the contents of a state event in a room. If the user is
-- joined to the room then the state is taken from the current state of
-- the room. If the user has left the room then the state is taken from
-- the state of the room when they left.
-- https://spec.matrix.org/v1.1/client-server-api/#get_matrixclientv3roomsroomidstateeventtypestatekey
getRoomStateEvent :: ClientSession -> RoomID -> EventType -> StateKey -> MatrixIO StateEvent
getRoomMessages :: ClientSession -> RoomID -> Dir -> Maybe RoomEventFilter -> Text -> Maybe Int -> Maybe Int -> MatrixIO PaginatedRoomMessages
redact :: ClientSession -> RoomID -> EventID -> TxnID -> Text -> MatrixIO EventID
-- | Send arbitrary state events to a room. These events will be
-- overwritten if id, type and key all match.
-- https://spec.matrix.org/v1.1/client-server-api/#put_matrixclientv3roomsroomidstateeventtypestatekey
sendRoomStateEvent :: ClientSession -> RoomID -> EventType -> StateKey -> Value -> MatrixIO EventID
-- |
-- https://matrix.org/docs/spec/client_server/latest#post-matrix-client-r0-createroom
data RoomCreatePreset
PrivateChat :: RoomCreatePreset
TrustedPrivateChat :: RoomCreatePreset
PublicChat :: RoomCreatePreset
data RoomCreateRequest
RoomCreateRequest :: RoomCreatePreset -> Text -> Text -> Text -> RoomCreateRequest
[rcrPreset] :: RoomCreateRequest -> RoomCreatePreset
[rcrRoomAliasName] :: RoomCreateRequest -> Text
[rcrName] :: RoomCreateRequest -> Text
[rcrTopic] :: RoomCreateRequest -> Text
-- | Create a new room with various configuration options.
-- https://spec.matrix.org/v1.1/client-server-api/#post_matrixclientv3createroom
createRoom :: ClientSession -> RoomCreateRequest -> MatrixIO RoomID
data ResolvedRoomAlias
ResolvedRoomAlias :: RoomAlias -> RoomID -> [Text] -> ResolvedRoomAlias
[roomAlias] :: ResolvedRoomAlias -> RoomAlias
-- | The room ID for this room alias.
[roomID] :: ResolvedRoomAlias -> RoomID
-- | A list of servers that are aware of this room alias.
[servers] :: ResolvedRoomAlias -> [Text]
newtype TxnID
TxnID :: Text -> TxnID
-- | This endpoint is used to send a message event to a room.
-- https://spec.matrix.org/v1.1/client-server-api/#put_matrixclientv3roomsroomidsendeventtypetxnid
sendMessage :: ClientSession -> RoomID -> Event -> TxnID -> MatrixIO EventID
-- | Prepare a reply event
mkReply :: RoomID -> RoomEvent -> MessageText -> Event
data MessageTextType
TextType :: MessageTextType
EmoteType :: MessageTextType
NoticeType :: MessageTextType
data MessageText
MessageText :: Text -> MessageTextType -> Maybe Text -> Maybe Text -> MessageText
[mtBody] :: MessageText -> Text
[mtType] :: MessageText -> MessageTextType
[mtFormat] :: MessageText -> Maybe Text
[mtFormattedBody] :: MessageText -> Maybe Text
newtype RoomMessage
RoomMessageText :: MessageText -> RoomMessage
data Event
EventRoomMessage :: RoomMessage -> Event
-- | A reply defined by the parent event id and the reply message
EventRoomReply :: EventID -> RoomMessage -> Event
-- | An edit defined by the original message and the new message
EventRoomEdit :: (EventID, RoomMessage) -> RoomMessage -> Event
EventUnknown :: Object -> Event
newtype EventID
EventID :: Text -> EventID
[unEventID] :: EventID -> Text
eventType :: Event -> Text
-- | Create a mapping of room alias to room ID.
-- https://spec.matrix.org/v1.1/client-server-api/#put_matrixclientv3directoryroomroomalias
setRoomAlias :: ClientSession -> RoomAlias -> RoomID -> MatrixIO ()
-- | Sets the visibility of a given room in the server’s public room
-- directory.
-- https://spec.matrix.org/v1.1/client-server-api/#put_matrixclientv3directorylistroomroomid
setRoomVisibility :: ClientSession -> RoomID -> Visibility -> MatrixIO ()
-- | Requests that the server resolve a room alias to a room ID.
-- https://spec.matrix.org/v1.1/client-server-api/#get_matrixclientv3directoryroomroomalias
resolveRoomAlias :: ClientSession -> RoomAlias -> MatrixIO ResolvedRoomAlias
-- | Delete a mapping of room alias to room ID.
-- https://spec.matrix.org/v1.1/client-server-api/#delete_matrixclientv3directoryroomroomalias
deleteRoomAlias :: ClientSession -> RoomAlias -> MatrixIO ()
-- | Get a list of aliases maintained by the local server for the given
-- room.
-- https://spec.matrix.org/v1.1/client-server-api/#get_matrixclientv3roomsroomidaliases
getRoomAliases :: ClientSession -> RoomID -> MatrixIO [RoomAlias]
newtype RoomID
RoomID :: Text -> RoomID
newtype RoomAlias
RoomAlias :: Text -> RoomAlias
-- | Ban a user in the room. If the user is currently in the room, also
-- kick them.
-- https://spec.matrix.org/v1.1/client-server-api/#post_matrixclientv3roomsroomidban
banUser :: ClientSession -> RoomID -> UserID -> Maybe Text -> MatrixIO ()
-- | Gets the visibility of a given room on the server’s public room
-- directory.
-- https://spec.matrix.org/v1.1/client-server-api/#get_matrixclientv3directorylistroomroomid
checkRoomVisibility :: ClientSession -> RoomID -> MatrixIO Visibility
-- | Stops remembering a particular room.
-- https://spec.matrix.org/v1.1/client-server-api/#post_matrixclientv3roomsroomidforget
forgetRoom :: ClientSession -> RoomID -> MatrixIO ()
-- | Returns a list of the user’s current rooms.
-- https://spec.matrix.org/v1.1/client-server-api/#get_matrixclientv3joined_rooms
getJoinedRooms :: ClientSession -> MatrixIO [RoomID]
-- | Lists the public rooms on the server.
-- https://spec.matrix.org/v1.1/client-server-api/#get_matrixclientv3publicrooms
getPublicRooms :: ClientSession -> Maybe Int -> Maybe PaginationChunk -> MatrixIO PublicRooms
-- | Lists the public rooms on the server, with optional filter.
-- https://spec.matrix.org/v1.1/client-server-api/#post_matrixclientv3publicrooms
getPublicRooms' :: ClientSession -> Maybe Int -> Maybe PaginationChunk -> Maybe Text -> Maybe Bool -> Maybe ThirdPartyInstanceId -> MatrixIO PublicRooms
-- | Invites a user to participate in a particular room. They do not start
-- participating in the room until they actually join the room.
-- https://spec.matrix.org/v1.1/client-server-api/#post_matrixclientv3roomsroomidinvite
inviteToRoom :: ClientSession -> RoomID -> UserID -> Maybe Text -> MatrixIO ()
-- | Note that this API takes either a room ID or alias, unlike
-- joinRoomById
-- https://spec.matrix.org/v1.1/client-server-api/#post_matrixclientv3joinroomidoralias
joinRoom :: ClientSession -> Text -> MatrixIO RoomID
-- | Starts a user participating in a particular room, if that user is
-- allowed to participate in that room.
-- https://spec.matrix.org/v1.1/client-server-api/#post_matrixclientv3roomsroomidjoin
joinRoomById :: ClientSession -> RoomID -> MatrixIO RoomID
-- | Stop participating in a particular room.
-- https://spec.matrix.org/v1.1/client-server-api/#post_matrixclientv3roomsroomidleave
leaveRoomById :: ClientSession -> RoomID -> MatrixIO ()
-- | Kick a user from the room.
-- https://spec.matrix.org/v1.1/client-server-api/#post_matrixclientv3roomsroomidkick
kickUser :: ClientSession -> RoomID -> UserID -> Maybe Text -> MatrixIO ()
-- | This API “knocks” on the room to ask for permission to join, if the
-- user is allowed to knock on the room.
-- https://spec.matrix.org/v1.1/client-server-api/#post_matrixclientv3knockroomidoralias
knockOnRoom :: ClientSession -> Either RoomID RoomAlias -> [Text] -> Maybe Text -> MatrixIO RoomID
-- | Unban a user from the room. This allows them to be invited to the
-- room, and join if they would otherwise be allowed to join according to
-- its join rules.
-- https://spec.matrix.org/v1.1/client-server-api/#post_matrixclientv3roomsroomidunban
unbanUser :: ClientSession -> RoomID -> UserID -> Maybe Text -> MatrixIO ()
data EventFormat
Client :: EventFormat
Federation :: EventFormat
data EventFilter
EventFilter :: Maybe Int -> Maybe [Text] -> Maybe [Text] -> Maybe [Text] -> Maybe [Text] -> EventFilter
[efLimit] :: EventFilter -> Maybe Int
[efNotSenders] :: EventFilter -> Maybe [Text]
[efNotTypes] :: EventFilter -> Maybe [Text]
[efSenders] :: EventFilter -> Maybe [Text]
[efTypes] :: EventFilter -> Maybe [Text]
defaultEventFilter :: EventFilter
-- | A filter that should match nothing
eventFilterAll :: EventFilter
data RoomEventFilter
RoomEventFilter :: Maybe Int -> Maybe [Text] -> Maybe [Text] -> Maybe [Text] -> Maybe [Text] -> Maybe Bool -> Maybe Bool -> Maybe [Text] -> Maybe [Text] -> Maybe Bool -> RoomEventFilter
[refLimit] :: RoomEventFilter -> Maybe Int
[refNotSenders] :: RoomEventFilter -> Maybe [Text]
[refNotTypes] :: RoomEventFilter -> Maybe [Text]
[refSenders] :: RoomEventFilter -> Maybe [Text]
[refTypes] :: RoomEventFilter -> Maybe [Text]
[refLazyLoadMembers] :: RoomEventFilter -> Maybe Bool
[refIncludeRedundantMembers] :: RoomEventFilter -> Maybe Bool
[refNotRooms] :: RoomEventFilter -> Maybe [Text]
[refRooms] :: RoomEventFilter -> Maybe [Text]
[refContainsUrl] :: RoomEventFilter -> Maybe Bool
defaultRoomEventFilter :: RoomEventFilter
-- | A filter that should match nothing
roomEventFilterAll :: RoomEventFilter
data StateFilter
StateFilter :: Maybe Int -> Maybe [Text] -> Maybe [Text] -> Maybe [Text] -> Maybe [Text] -> Maybe Bool -> Maybe Bool -> Maybe [Text] -> Maybe [Text] -> Maybe Bool -> StateFilter
[sfLimit] :: StateFilter -> Maybe Int
[sfNotSenders] :: StateFilter -> Maybe [Text]
[sfNotTypes] :: StateFilter -> Maybe [Text]
[sfSenders] :: StateFilter -> Maybe [Text]
[sfTypes] :: StateFilter -> Maybe [Text]
[sfLazyLoadMembers] :: StateFilter -> Maybe Bool
[sfIncludeRedundantMembers] :: StateFilter -> Maybe Bool
[sfNotRooms] :: StateFilter -> Maybe [Text]
[sfRooms] :: StateFilter -> Maybe [Text]
[sfContains_url] :: StateFilter -> Maybe Bool
defaultStateFilter :: StateFilter
stateFilterAll :: StateFilter
data RoomFilter
RoomFilter :: Maybe [Text] -> Maybe [Text] -> Maybe RoomEventFilter -> Maybe Bool -> Maybe StateFilter -> Maybe RoomEventFilter -> Maybe RoomEventFilter -> RoomFilter
[rfNotRooms] :: RoomFilter -> Maybe [Text]
[rfRooms] :: RoomFilter -> Maybe [Text]
[rfEphemeral] :: RoomFilter -> Maybe RoomEventFilter
[rfIncludeLeave] :: RoomFilter -> Maybe Bool
[rfState] :: RoomFilter -> Maybe StateFilter
[rfTimeline] :: RoomFilter -> Maybe RoomEventFilter
[rfAccountData] :: RoomFilter -> Maybe RoomEventFilter
defaultRoomFilter :: RoomFilter
data Filter
Filter :: Maybe [Text] -> Maybe EventFormat -> Maybe EventFilter -> Maybe EventFilter -> Maybe RoomFilter -> Filter
[filterEventFields] :: Filter -> Maybe [Text]
[filterEventFormat] :: Filter -> Maybe EventFormat
[filterPresence] :: Filter -> Maybe EventFilter
[filterAccountData] :: Filter -> Maybe EventFilter
[filterRoom] :: Filter -> Maybe RoomFilter
defaultFilter :: Filter
newtype FilterID
FilterID :: Text -> FilterID
-- | A filter to keep all the messages
messageFilter :: Filter
-- | Upload a new filter definition to the homeserver
-- https://matrix.org/docs/spec/client_server/latest#post-matrix-client-r0-user-userid-filter
createFilter :: ClientSession -> UserID -> Filter -> MatrixIO FilterID
getFilter :: ClientSession -> UserID -> FilterID -> MatrixIO Filter
class (FromJSON a, ToJSON a) => AccountData a
accountDataType :: AccountData a => proxy a -> Text
getAccountData :: forall a. AccountData a => ClientSession -> UserID -> MatrixIO a
getAccountData' :: FromJSON a => ClientSession -> UserID -> Text -> MatrixIO a
setAccountData :: forall a. AccountData a => ClientSession -> UserID -> a -> MatrixIO ()
setAccountData' :: ToJSON a => ClientSession -> UserID -> Text -> a -> MatrixIO ()
sync :: ClientSession -> Maybe FilterID -> Maybe Text -> Maybe Presence -> Maybe Int -> MatrixIO SyncResult
-- | Extract room events from a sync result
getTimelines :: SyncResult -> [(RoomID, NonEmpty RoomEvent)]
syncPoll :: MonadIO m => ClientSession -> Maybe FilterID -> Maybe Text -> Maybe Presence -> (SyncResult -> m ()) -> MatrixM m ()
newtype Author
Author :: Text -> Author
[unAuthor] :: Author -> Text
data Presence
Offline :: Presence
Online :: Presence
Unavailable :: Presence
data RoomEvent
RoomEvent :: Event -> Text -> EventID -> Author -> RoomEvent
[reContent] :: RoomEvent -> Event
[reType] :: RoomEvent -> Text
[reEventId] :: RoomEvent -> EventID
[reSender] :: RoomEvent -> Author
data RoomSummary
RoomSummary :: Maybe Int -> Maybe Int -> RoomSummary
[rsJoinedMemberCount] :: RoomSummary -> Maybe Int
[rsInvitedMemberCount] :: RoomSummary -> Maybe Int
data TimelineSync
TimelineSync :: Maybe [RoomEvent] -> Maybe Bool -> Maybe Text -> TimelineSync
[tsEvents] :: TimelineSync -> Maybe [RoomEvent]
[tsLimited] :: TimelineSync -> Maybe Bool
[tsPrevBatch] :: TimelineSync -> Maybe Text
data InvitedRoomSync
InvitedRoomSync :: InvitedRoomSync
data JoinedRoomSync
JoinedRoomSync :: Maybe RoomSummary -> TimelineSync -> JoinedRoomSync
[jrsSummary] :: JoinedRoomSync -> Maybe RoomSummary
[jrsTimeline] :: JoinedRoomSync -> TimelineSync
data SyncResult
SyncResult :: Text -> Maybe SyncResultRoom -> SyncResult
[srNextBatch] :: SyncResult -> Text
[srRooms] :: SyncResult -> Maybe SyncResultRoom
data SyncResultRoom
SyncResultRoom :: Maybe (Map Text JoinedRoomSync) -> Maybe (Map Text InvitedRoomSync) -> SyncResultRoom
[srrJoin] :: SyncResultRoom -> Maybe (Map Text JoinedRoomSync)
[srrInvite] :: SyncResultRoom -> Maybe (Map Text InvitedRoomSync)
instance GHC.Show.Show Network.Matrix.Client.User
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.StateKey
instance GHC.Show.Show Network.Matrix.Client.StateKey
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.EventType
instance GHC.Show.Show Network.Matrix.Client.EventType
instance GHC.Show.Show Network.Matrix.Client.MRCreate
instance GHC.Show.Show Network.Matrix.Client.MRName
instance GHC.Show.Show Network.Matrix.Client.MRCanonicalAlias
instance GHC.Show.Show Network.Matrix.Client.MRGuestAccess
instance GHC.Show.Show Network.Matrix.Client.MRHistoryVisibility
instance GHC.Show.Show Network.Matrix.Client.MRTopic
instance GHC.Show.Show Network.Matrix.Client.StateContent
instance GHC.Classes.Eq Network.Matrix.Client.TxnID
instance GHC.Show.Show Network.Matrix.Client.TxnID
instance Data.Hashable.Class.Hashable Network.Matrix.Client.RoomAlias
instance GHC.Classes.Ord Network.Matrix.Client.RoomAlias
instance GHC.Classes.Eq Network.Matrix.Client.RoomAlias
instance GHC.Show.Show Network.Matrix.Client.RoomAlias
instance Data.Hashable.Class.Hashable Network.Matrix.Client.RoomID
instance GHC.Classes.Ord Network.Matrix.Client.RoomID
instance GHC.Classes.Eq Network.Matrix.Client.RoomID
instance GHC.Show.Show Network.Matrix.Client.RoomID
instance GHC.Show.Show Network.Matrix.Client.JoinedRooms
instance GHC.Show.Show Network.Matrix.Client.ResolvedRoomAlias
instance GHC.Show.Show Network.Matrix.Client.StateEvent
instance GHC.Show.Show Network.Matrix.Client.Visibility
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.PaginationChunk
instance Data.Aeson.Types.ToJSON.ToJSON Network.Matrix.Client.PaginationChunk
instance GHC.Show.Show Network.Matrix.Client.PaginationChunk
instance GHC.Show.Show Network.Matrix.Client.Room
instance GHC.Show.Show Network.Matrix.Client.PublicRooms
instance Data.Aeson.Types.ToJSON.ToJSON Network.Matrix.Client.ThirdPartyInstanceId
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.ThirdPartyInstanceId
instance Data.Hashable.Class.Hashable Network.Matrix.Client.FilterID
instance GHC.Classes.Eq Network.Matrix.Client.FilterID
instance GHC.Show.Show Network.Matrix.Client.FilterID
instance GHC.Classes.Eq Network.Matrix.Client.EventFormat
instance GHC.Show.Show Network.Matrix.Client.EventFormat
instance GHC.Generics.Generic Network.Matrix.Client.EventFilter
instance GHC.Classes.Eq Network.Matrix.Client.EventFilter
instance GHC.Show.Show Network.Matrix.Client.EventFilter
instance GHC.Generics.Generic Network.Matrix.Client.RoomEventFilter
instance GHC.Classes.Eq Network.Matrix.Client.RoomEventFilter
instance GHC.Show.Show Network.Matrix.Client.RoomEventFilter
instance GHC.Generics.Generic Network.Matrix.Client.StateFilter
instance GHC.Classes.Eq Network.Matrix.Client.StateFilter
instance GHC.Show.Show Network.Matrix.Client.StateFilter
instance GHC.Generics.Generic Network.Matrix.Client.RoomFilter
instance GHC.Classes.Eq Network.Matrix.Client.RoomFilter
instance GHC.Show.Show Network.Matrix.Client.RoomFilter
instance GHC.Generics.Generic Network.Matrix.Client.Filter
instance GHC.Classes.Eq Network.Matrix.Client.Filter
instance GHC.Show.Show Network.Matrix.Client.Filter
instance Data.Aeson.Types.ToJSON.ToJSON Network.Matrix.Client.Author
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.Author
instance GHC.Classes.Eq Network.Matrix.Client.Author
instance GHC.Show.Show Network.Matrix.Client.Author
instance GHC.Generics.Generic Network.Matrix.Client.RoomEvent
instance GHC.Classes.Eq Network.Matrix.Client.RoomEvent
instance GHC.Show.Show Network.Matrix.Client.RoomEvent
instance GHC.Show.Show Network.Matrix.Client.PaginatedRoomMessages
instance GHC.Generics.Generic Network.Matrix.Client.RoomSummary
instance GHC.Classes.Eq Network.Matrix.Client.RoomSummary
instance GHC.Show.Show Network.Matrix.Client.RoomSummary
instance GHC.Generics.Generic Network.Matrix.Client.TimelineSync
instance GHC.Classes.Eq Network.Matrix.Client.TimelineSync
instance GHC.Show.Show Network.Matrix.Client.TimelineSync
instance GHC.Generics.Generic Network.Matrix.Client.JoinedRoomSync
instance GHC.Classes.Eq Network.Matrix.Client.JoinedRoomSync
instance GHC.Show.Show Network.Matrix.Client.JoinedRoomSync
instance GHC.Classes.Eq Network.Matrix.Client.Presence
instance GHC.Generics.Generic Network.Matrix.Client.InvitedRoomSync
instance GHC.Classes.Eq Network.Matrix.Client.InvitedRoomSync
instance GHC.Show.Show Network.Matrix.Client.InvitedRoomSync
instance GHC.Generics.Generic Network.Matrix.Client.SyncResultRoom
instance GHC.Classes.Eq Network.Matrix.Client.SyncResultRoom
instance GHC.Show.Show Network.Matrix.Client.SyncResultRoom
instance GHC.Generics.Generic Network.Matrix.Client.SyncResult
instance GHC.Classes.Eq Network.Matrix.Client.SyncResult
instance GHC.Show.Show Network.Matrix.Client.SyncResult
instance Data.Aeson.Types.ToJSON.ToJSON Network.Matrix.Client.SyncResult
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.SyncResult
instance Data.Aeson.Types.ToJSON.ToJSON Network.Matrix.Client.SyncResultRoom
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.SyncResultRoom
instance Data.Aeson.Types.ToJSON.ToJSON Network.Matrix.Client.InvitedRoomSync
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.InvitedRoomSync
instance GHC.Show.Show Network.Matrix.Client.Presence
instance Data.Aeson.Types.ToJSON.ToJSON Network.Matrix.Client.Presence
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.Presence
instance Data.Aeson.Types.ToJSON.ToJSON Network.Matrix.Client.JoinedRoomSync
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.JoinedRoomSync
instance Data.Aeson.Types.ToJSON.ToJSON Network.Matrix.Client.TimelineSync
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.TimelineSync
instance Data.Aeson.Types.ToJSON.ToJSON Network.Matrix.Client.RoomSummary
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.RoomSummary
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.PaginatedRoomMessages
instance Data.Aeson.Types.ToJSON.ToJSON Network.Matrix.Client.RoomEvent
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.RoomEvent
instance Data.Aeson.Types.ToJSON.ToJSON Network.Matrix.Client.Filter
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.Filter
instance Data.Aeson.Types.ToJSON.ToJSON Network.Matrix.Client.RoomFilter
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.RoomFilter
instance Data.Aeson.Types.ToJSON.ToJSON Network.Matrix.Client.StateFilter
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.StateFilter
instance Data.Aeson.Types.ToJSON.ToJSON Network.Matrix.Client.RoomEventFilter
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.RoomEventFilter
instance Data.Aeson.Types.ToJSON.ToJSON Network.Matrix.Client.EventFilter
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.EventFilter
instance Data.Aeson.Types.ToJSON.ToJSON Network.Matrix.Client.EventFormat
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.EventFormat
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.FilterID
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.PublicRooms
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.Room
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.GetVisibility
instance Data.Aeson.Types.ToJSON.ToJSON Network.Matrix.Client.Visibility
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.Visibility
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.StateEvent
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.RoomAliasMetadata
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.JoinedRooms
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.RoomID
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.ResolvedAliases
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.StateContent
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.MRTopic
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.MRHistoryVisibility
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.MRGuestAccess
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.MRCanonicalAlias
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.MRName
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.MRCreate
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.JoinedUsers
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.User
instance Data.Aeson.Types.FromJSON.FromJSON Network.Matrix.Client.CreateRoomResponse
module Network.Matrix.Client.Lens
_mtBody :: Lens' MessageText Text
_mtType :: Lens' MessageText MessageTextType
_mtFormat :: Lens' MessageText (Maybe Text)
_mtFormattedBody :: Lens' MessageText (Maybe Text)
_RoomMessageText :: Lens' RoomMessage MessageText
_EventRoomMessage :: Prism' Event RoomMessage
_EventRoomReply :: Prism' Event (EventID, RoomMessage)
_EventRoomEdit :: Prism' Event ((EventID, RoomMessage), RoomMessage)
_EventUnknown :: Prism' Event Object
efLimit :: EventFilter -> Maybe Int
_efNotSenders :: Lens' EventFilter (Maybe [Text])
_efNotTypes :: Lens' EventFilter (Maybe [Text])
_efSenders :: Lens' EventFilter (Maybe [Text])
_efTypes :: Lens' EventFilter (Maybe [Text])
_chunk :: Lens' PaginatedRoomMessages [RoomEvent]
_end :: Lens' PaginatedRoomMessages (Maybe Text)
_start :: Lens' PaginatedRoomMessages Text
_state :: Lens' PaginatedRoomMessages [StateEvent]
_roomAlias :: Lens' ResolvedRoomAlias RoomAlias
_roomID :: Lens' ResolvedRoomAlias RoomID
_servers :: Lens' ResolvedRoomAlias [Text]
_refLimit :: Lens' RoomEventFilter (Maybe Int)
_refNotSenders :: Lens' RoomEventFilter (Maybe [Text])
_refNotTypes :: Lens' RoomEventFilter (Maybe [Text])
_refSenders :: Lens' RoomEventFilter (Maybe [Text])
_refTypes :: Lens' RoomEventFilter (Maybe [Text])
_refLazyLoadMembers :: Lens' RoomEventFilter (Maybe Bool)
_refIncludeRedundantMembers :: Lens' RoomEventFilter (Maybe Bool)
_refNotRooms :: Lens' RoomEventFilter (Maybe [Text])
_refRooms :: Lens' RoomEventFilter (Maybe [Text])
_refContainsUrl :: Lens' RoomEventFilter (Maybe Bool)
_StateContentMRCreate :: Prism' StateContent MRCreate
_StateContentMRCanonicalAlias :: Prism' StateContent MRCanonicalAlias
_StateContentMRGuestAccess :: Prism' StateContent MRGuestAccess
_StateContentMRHistoryVisibility :: Prism' StateContent MRHistoryVisibility
_StateContentMRName :: Prism' StateContent MRName
_StateContentMRTopic :: Prism' StateContent MRTopic
_StateContentMROther :: Prism' StateContent Value
_seContent :: Lens' StateEvent StateContent
_seEventId :: Lens' StateEvent EventID
_seOriginServerTimestamp :: Lens' StateEvent Integer
_sePreviousContent :: Lens' StateEvent (Maybe Value)
_seRoomId :: Lens' StateEvent RoomID
_seSender :: Lens' StateEvent UserID
_seStateKey :: Lens' StateEvent StateKey
_seEventType :: Lens' StateEvent EventType
_seUnsigned :: Lens' StateEvent (Maybe Value)
_sfLimit :: Lens' StateFilter (Maybe Int)
_sfNotSenders :: Lens' StateFilter (Maybe [Text])
_sfTypes :: Lens' StateFilter (Maybe [Text])
_sfLazyLoadMembers :: Lens' StateFilter (Maybe Bool)
_sfIncludeRedundantMembers :: Lens' StateFilter (Maybe Bool)
_sfNotRooms :: Lens' StateFilter (Maybe [Text])
_sfRooms :: Lens' StateFilter (Maybe [Text])
_sfContainsUrl :: Lens' StateFilter (Maybe Bool)
_rfNotRooms :: Lens' RoomFilter (Maybe [Text])
_rfRooms :: Lens' RoomFilter (Maybe [Text])
_rfEphemeral :: Lens' RoomFilter (Maybe RoomEventFilter)
_rfIncludeLeave :: Lens' RoomFilter (Maybe Bool)
_rfState :: Lens' RoomFilter (Maybe StateFilter)
_rfTimeline :: Lens' RoomFilter (Maybe RoomEventFilter)
_rfAccountData :: Lens' RoomFilter (Maybe RoomEventFilter)
_filterEventFields :: Lens' Filter (Maybe [Text])
_filterEventFormat :: Lens' Filter (Maybe EventFormat)
_filterPresence :: Lens' Filter (Maybe EventFilter)
_filterAccountData :: Lens' Filter (Maybe EventFilter)
_filterRoom :: Lens' Filter (Maybe RoomFilter)
_reContent :: Lens' RoomEvent Event
_reType :: Lens' RoomEvent Text
_reEventId :: Lens' RoomEvent EventID
_reSender :: Lens' RoomEvent Author
_rsJoinedMemberCount :: Lens' RoomSummary (Maybe Int)
_rsInvitedMemberCount :: Lens' RoomSummary (Maybe Int)
_tsEvents :: Lens' TimelineSync (Maybe [RoomEvent])
_tsLimited :: Lens' TimelineSync (Maybe Bool)
_tsPrevBatch :: Lens' TimelineSync (Maybe Text)
_jrsSummary :: Lens' JoinedRoomSync (Maybe RoomSummary)
_jrsTimeline :: Lens' JoinedRoomSync TimelineSync
_srNextBatch :: Lens' SyncResult Text
_srRooms :: Lens' SyncResult (Maybe SyncResultRoom)
_srrJoin :: Lens' SyncResultRoom (Maybe (Map Text JoinedRoomSync))
_srrInvite :: Lens' SyncResultRoom (Maybe (Map Text InvitedRoomSync))
-- | The matrix-client library provides a simple interface for
-- interacting with Matrix servers.
--
-- This tutorial introduces how to use the matrix-client
-- library.
--
-- You will need a token to create a session, if you already have an
-- account, you can get it with the element client by visiting
-- the account Settings page, Help & About panel,
-- then click Access Token.
--
-- Alternatively, you can setup a test service by running these commands
-- in a terminal:
--
--
-- git clone https://github.com/matrix-org/dendrite
-- cd dendrite; ./build.sh; ./bin/generate-keys --private-key matrix_key.pem; cp dendrite-config.yaml dendrite.yaml
-- ./bin/dendrite-monolith-server --config dendrite.yaml
-- curl -XPOST http://localhost:8008/_matrix/client/r0/register -d'{"username": "tristanC", "password": "supersecret", "auth": {"type": "m.login.dummy"}}'
--
--
-- To avoid manipulating the token directly, put it in your environment:
--
-- -- export MATRIX_TOKEN="THE_ACCESS_TOKEN" --module Network.Matrix.Tutorial