Add ban API
parent
e2ae6f582e
commit
bf2cf7395a
|
@ -0,0 +1,43 @@
|
||||||
|
module Internal.Api.Ban.Api exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.GetEvent.V1.SpecObjects as SO1
|
||||||
|
import Internal.Api.Request as R
|
||||||
|
import Internal.Tools.Context as Context exposing (Context)
|
||||||
|
import Internal.Tools.Exceptions as X
|
||||||
|
import Json.Decode as D
|
||||||
|
import Task exposing (Task)
|
||||||
|
|
||||||
|
|
||||||
|
type alias BanInputV1 =
|
||||||
|
{ reason : Maybe String
|
||||||
|
, roomId : String
|
||||||
|
, userId : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
type alias BanOutputV1 =
|
||||||
|
()
|
||||||
|
|
||||||
|
|
||||||
|
banV1 : BanInputV1 -> Context { a | accessToken : (), baseUrl : () } -> Task X.Error BanOutputV1
|
||||||
|
banV1 { reason, roomId, userId } =
|
||||||
|
R.callApi "POST" "/_matrix/client/r0/rooms/{roomId}/ban"
|
||||||
|
>> R.withAttributes
|
||||||
|
[ R.accessToken
|
||||||
|
, R.replaceInUrl "roomId" roomId
|
||||||
|
, R.bodyOpString "reason" reason
|
||||||
|
, R.bodyString "user_id" userId
|
||||||
|
]
|
||||||
|
>> R.toTask (D.map (always ()) D.value)
|
||||||
|
|
||||||
|
|
||||||
|
banV2 : BanInputV1 -> Context { a | accessToken : (), baseUrl : () } -> Task X.Error BanOutputV1
|
||||||
|
banV2 { reason, roomId, userId } =
|
||||||
|
R.callApi "POST" "/_matrix/client/v3/rooms/{roomId}/ban"
|
||||||
|
>> R.withAttributes
|
||||||
|
[ R.accessToken
|
||||||
|
, R.replaceInUrl "roomId" roomId
|
||||||
|
, R.bodyOpString "reason" reason
|
||||||
|
, R.bodyString "user_id" userId
|
||||||
|
]
|
||||||
|
>> R.toTask (D.map (always ()) D.value)
|
|
@ -0,0 +1,46 @@
|
||||||
|
module Internal.Api.Ban.Main exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.Ban.Api as Api
|
||||||
|
import Internal.Tools.Context as Context exposing (Context, VBA)
|
||||||
|
import Internal.Tools.Exceptions as X
|
||||||
|
import Internal.Tools.VersionControl as VC
|
||||||
|
import Task exposing (Task)
|
||||||
|
|
||||||
|
|
||||||
|
ban : Context (VBA a) -> BanInput -> Task X.Error BanOutput
|
||||||
|
ban context input =
|
||||||
|
VC.withBottomLayer
|
||||||
|
{ current = Api.banV1
|
||||||
|
, version = "r0.0.0"
|
||||||
|
}
|
||||||
|
|> VC.sameForVersion "r0.0.1"
|
||||||
|
|> VC.sameForVersion "r0.1.0"
|
||||||
|
|> VC.sameForVersion "r0.2.0"
|
||||||
|
|> VC.sameForVersion "r0.3.0"
|
||||||
|
|> VC.sameForVersion "r0.4.0"
|
||||||
|
|> VC.sameForVersion "r0.5.0"
|
||||||
|
|> VC.sameForVersion "r0.6.0"
|
||||||
|
|> VC.sameForVersion "r0.6.1"
|
||||||
|
|> VC.addMiddleLayer
|
||||||
|
{ downcast = identity
|
||||||
|
, current = Api.banV2
|
||||||
|
, upcast = identity
|
||||||
|
, version = "v1.1"
|
||||||
|
}
|
||||||
|
|> VC.sameForVersion "v1.2"
|
||||||
|
|> VC.sameForVersion "v1.3"
|
||||||
|
|> VC.sameForVersion "v1.4"
|
||||||
|
|> VC.sameForVersion "v1.5"
|
||||||
|
|> VC.sameForVersion "v1.6"
|
||||||
|
|> VC.mostRecentFromVersionList (Context.getVersions context)
|
||||||
|
|> Maybe.withDefault (always <| always <| Task.fail X.UnsupportedSpecVersion)
|
||||||
|
|> (|>) input
|
||||||
|
|> (|>) context
|
||||||
|
|
||||||
|
|
||||||
|
type alias BanInput =
|
||||||
|
Api.BanInputV1
|
||||||
|
|
||||||
|
|
||||||
|
type alias BanOutput =
|
||||||
|
Api.BanOutputV1
|
|
@ -1,5 +1,6 @@
|
||||||
module Internal.Api.VaultUpdate exposing (..)
|
module Internal.Api.VaultUpdate exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.Ban.Main as Ban
|
||||||
import Internal.Api.Chain as Chain exposing (IdemChain, TaskChain)
|
import Internal.Api.Chain as Chain exposing (IdemChain, TaskChain)
|
||||||
import Internal.Api.Credentials as Credentials exposing (Credentials)
|
import Internal.Api.Credentials as Credentials exposing (Credentials)
|
||||||
import Internal.Api.GetEvent.Main as GetEvent
|
import Internal.Api.GetEvent.Main as GetEvent
|
||||||
|
@ -25,6 +26,7 @@ import Time
|
||||||
type VaultUpdate
|
type VaultUpdate
|
||||||
= MultipleUpdates (List VaultUpdate)
|
= MultipleUpdates (List VaultUpdate)
|
||||||
-- Updates as a result of API calls
|
-- Updates as a result of API calls
|
||||||
|
| BanUser Ban.BanInput Ban.BanOutput
|
||||||
| GetEvent GetEvent.EventInput GetEvent.EventOutput
|
| GetEvent GetEvent.EventInput GetEvent.EventOutput
|
||||||
| GetMessages GetMessages.GetMessagesInput GetMessages.GetMessagesOutput
|
| GetMessages GetMessages.GetMessagesInput GetMessages.GetMessagesOutput
|
||||||
| InviteSent Invite.InviteInput Invite.InviteOutput
|
| InviteSent Invite.InviteInput Invite.InviteOutput
|
||||||
|
@ -102,6 +104,21 @@ accessToken ctoken =
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
{-| Ban a user from a room.
|
||||||
|
-}
|
||||||
|
ban : Ban.BanInput -> IdemChain VaultUpdate (VBA a)
|
||||||
|
ban input =
|
||||||
|
toChain
|
||||||
|
(\output ->
|
||||||
|
Chain.TaskChainPiece
|
||||||
|
{ contextChange = identity
|
||||||
|
, messages = [ BanUser input output ]
|
||||||
|
}
|
||||||
|
)
|
||||||
|
Ban.ban
|
||||||
|
input
|
||||||
|
|
||||||
|
|
||||||
{-| Get an event from the API.
|
{-| Get an event from the API.
|
||||||
-}
|
-}
|
||||||
getEvent : GetEvent.EventInput -> IdemChain VaultUpdate (VBA { a | sentEvent : () })
|
getEvent : GetEvent.EventInput -> IdemChain VaultUpdate (VBA { a | sentEvent : () })
|
||||||
|
|
Loading…
Reference in New Issue