-- 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.2 -- | 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 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": "mlogin.dummy"}}
--   
-- -- To avoid manipulating the token directly, put it in your environment: -- --
--   export MATRIX_TOKEN="THE_ACCESS_TOKEN"
--   
module Network.Matrix.Tutorial