Add `src/Internal/Api`
parent
206353b583
commit
c673372534
|
@ -0,0 +1,32 @@
|
||||||
|
module Internal.Api.GetEvent.Api exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.Request as R
|
||||||
|
import Internal.Tools.Exceptions as X
|
||||||
|
import Json.Decode as D
|
||||||
|
import Task exposing (Task)
|
||||||
|
|
||||||
|
|
||||||
|
type alias GetEventInputV1 =
|
||||||
|
{ accessToken : String
|
||||||
|
, baseUrl : String
|
||||||
|
, eventId : String
|
||||||
|
, roomId : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
getEventInputV1 : D.Decoder a -> (a -> b) -> GetEventInputV1 -> Task X.Error b
|
||||||
|
getEventInputV1 decoder mapping data =
|
||||||
|
R.rawApiCall
|
||||||
|
{ headers = R.WithAccessToken data.accessToken
|
||||||
|
, method = "GET"
|
||||||
|
, baseUrl = data.baseUrl
|
||||||
|
, path = "/_matrix/client/v3/rooms/{roomId}/event/{eventId}"
|
||||||
|
, pathParams =
|
||||||
|
[ ( "eventId", data.eventId )
|
||||||
|
, ( "roomId", data.roomId )
|
||||||
|
]
|
||||||
|
, queryParams = []
|
||||||
|
, bodyParams = []
|
||||||
|
, timeout = Nothing
|
||||||
|
, decoder = \_ -> D.map mapping decoder
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
module Internal.Api.GetEvent.Main exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.GetEvent.Api as Api
|
||||||
|
import Internal.Api.GetEvent.V1_2.Api as V1_2
|
||||||
|
import Internal.Api.GetEvent.V1_3.Api as V1_3
|
||||||
|
import Internal.Api.GetEvent.V1_4.Api as V1_4
|
||||||
|
import Internal.Api.GetEvent.V1_5.Api as V1_5
|
||||||
|
import Internal.Api.GetEvent.V1_5.Objects as O
|
||||||
|
import Internal.Api.VersionControl as V
|
||||||
|
import Internal.Tools.Exceptions as X
|
||||||
|
import Task exposing (Task)
|
||||||
|
|
||||||
|
|
||||||
|
getEvent : List String -> EventInput -> EventOutput
|
||||||
|
getEvent =
|
||||||
|
V.firstVersion V1_2.packet
|
||||||
|
|> V.updateWith V1_3.packet
|
||||||
|
|> V.updateWith V1_4.packet
|
||||||
|
|> V.updateWith V1_5.packet
|
||||||
|
|> V.toFunction
|
||||||
|
|
||||||
|
|
||||||
|
type alias EventOutput =
|
||||||
|
Task X.Error O.ClientEvent
|
||||||
|
|
||||||
|
|
||||||
|
type alias EventInput =
|
||||||
|
Api.GetEventInputV1
|
|
@ -0,0 +1,17 @@
|
||||||
|
module Internal.Api.GetEvent.V1_2.Api exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.GetEvent.Api as Api
|
||||||
|
import Internal.Api.GetEvent.V1_2.Convert as C
|
||||||
|
import Internal.Api.GetEvent.V1_2.Objects as O
|
||||||
|
import Internal.Api.GetEvent.V1_2.SpecObjects as SO
|
||||||
|
import Internal.Api.GetEvent.V1_2.Upcast as U
|
||||||
|
import Internal.Api.VersionControl as V
|
||||||
|
|
||||||
|
|
||||||
|
packet : V.SingleVersion () () Api.GetEventInputV1 O.ClientEvent
|
||||||
|
packet =
|
||||||
|
{ version = "v1.2"
|
||||||
|
, downcast = \_ -> ()
|
||||||
|
, current = Api.getEventInputV1 SO.clientEventDecoder C.convert
|
||||||
|
, upcast = U.upcast
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
module Internal.Api.GetEvent.V1_2.Convert exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.GetEvent.V1_2.Objects as O
|
||||||
|
import Internal.Api.GetEvent.V1_2.SpecObjects as SO
|
||||||
|
|
||||||
|
|
||||||
|
convert : SO.ClientEvent -> O.ClientEvent
|
||||||
|
convert e =
|
||||||
|
{ content = e.content
|
||||||
|
, eventId = e.eventId
|
||||||
|
, originServerTs = e.originServerTs
|
||||||
|
, roomId = e.roomId
|
||||||
|
, sender = e.sender
|
||||||
|
, stateKey = e.stateKey
|
||||||
|
, contentType = e.contentType
|
||||||
|
, unsigned = Maybe.map convertUnsigned e.unsigned
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
convertUnsigned : SO.UnsignedData -> O.UnsignedData
|
||||||
|
convertUnsigned (SO.UnsignedData u) =
|
||||||
|
O.UnsignedData
|
||||||
|
{ age = u.age
|
||||||
|
, prevContent = u.prevContent
|
||||||
|
, redactedBecause = Maybe.map convert u.redactedBecause
|
||||||
|
, transactionId = u.transactionId
|
||||||
|
}
|
|
@ -0,0 +1,97 @@
|
||||||
|
module Internal.Api.GetEvent.V1_2.Objects exposing
|
||||||
|
( ClientEvent
|
||||||
|
, UnsignedData(..)
|
||||||
|
, clientEventDecoder
|
||||||
|
, encodeClientEvent
|
||||||
|
, encodeUnsignedData
|
||||||
|
, unsignedDataDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'Objects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Internal.Tools.DecodeExtra exposing (opField)
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Internal.Tools.Timestamp exposing (Timestamp, encodeTimestamp, timestampDecoder)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| Client Event containing all data on an event.
|
||||||
|
-}
|
||||||
|
type alias ClientEvent =
|
||||||
|
{ content : E.Value
|
||||||
|
, eventId : String
|
||||||
|
, originServerTs : Timestamp
|
||||||
|
, roomId : String
|
||||||
|
, sender : String
|
||||||
|
, stateKey : Maybe String
|
||||||
|
, contentType : String
|
||||||
|
, unsigned : Maybe UnsignedData
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeClientEvent : ClientEvent -> E.Value
|
||||||
|
encodeClientEvent data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "content", Just <| data.content )
|
||||||
|
, ( "event_id", Just <| E.string data.eventId )
|
||||||
|
, ( "origin_server_ts", Just <| encodeTimestamp data.originServerTs )
|
||||||
|
, ( "room_id", Just <| E.string data.roomId )
|
||||||
|
, ( "sender", Just <| E.string data.sender )
|
||||||
|
, ( "state_key", Maybe.map E.string data.stateKey )
|
||||||
|
, ( "type", Just <| E.string data.contentType )
|
||||||
|
, ( "unsigned", Maybe.map encodeUnsignedData data.unsigned )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
clientEventDecoder : D.Decoder ClientEvent
|
||||||
|
clientEventDecoder =
|
||||||
|
D.map8
|
||||||
|
(\a b c d e f g h ->
|
||||||
|
{ content = a, eventId = b, originServerTs = c, roomId = d, sender = e, stateKey = f, contentType = g, unsigned = h }
|
||||||
|
)
|
||||||
|
(D.field "content" D.value)
|
||||||
|
(D.field "event_id" D.string)
|
||||||
|
(D.field "origin_server_ts" timestampDecoder)
|
||||||
|
(D.field "room_id" D.string)
|
||||||
|
(D.field "sender" D.string)
|
||||||
|
(opField "state_key" D.string)
|
||||||
|
(D.field "type" D.string)
|
||||||
|
(opField "unsigned" (D.lazy (\_ -> unsignedDataDecoder)))
|
||||||
|
|
||||||
|
|
||||||
|
{-| Extra information about the event.
|
||||||
|
-}
|
||||||
|
type UnsignedData
|
||||||
|
= UnsignedData
|
||||||
|
{ age : Maybe Int
|
||||||
|
, prevContent : Maybe E.Value
|
||||||
|
, redactedBecause : Maybe ClientEvent
|
||||||
|
, transactionId : Maybe String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeUnsignedData : UnsignedData -> E.Value
|
||||||
|
encodeUnsignedData (UnsignedData data) =
|
||||||
|
maybeObject
|
||||||
|
[ ( "age", Maybe.map E.int data.age )
|
||||||
|
, ( "prev_content", data.prevContent )
|
||||||
|
, ( "redacted_because", Maybe.map encodeClientEvent data.redactedBecause )
|
||||||
|
, ( "transaction_id", Maybe.map E.string data.transactionId )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
unsignedDataDecoder : D.Decoder UnsignedData
|
||||||
|
unsignedDataDecoder =
|
||||||
|
D.map4
|
||||||
|
(\a b c d ->
|
||||||
|
UnsignedData { age = a, prevContent = b, redactedBecause = c, transactionId = d }
|
||||||
|
)
|
||||||
|
(opField "age" D.int)
|
||||||
|
(opField "prev_content" D.value)
|
||||||
|
(opField "redacted_because" clientEventDecoder)
|
||||||
|
(opField "transaction_id" D.string)
|
|
@ -0,0 +1,40 @@
|
||||||
|
version: v1.2
|
||||||
|
name: Objects
|
||||||
|
objects:
|
||||||
|
ClientEvent:
|
||||||
|
description: Client Event containing all data on an event.
|
||||||
|
fields:
|
||||||
|
content:
|
||||||
|
type: value
|
||||||
|
required: true
|
||||||
|
event_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
origin_server_ts:
|
||||||
|
type: timestamp
|
||||||
|
required: true
|
||||||
|
room_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
sender:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
state_key:
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
unsigned:
|
||||||
|
type: UnsignedData
|
||||||
|
UnsignedData:
|
||||||
|
anti_recursion: true
|
||||||
|
description: Extra information about the event.
|
||||||
|
fields:
|
||||||
|
age:
|
||||||
|
type: int
|
||||||
|
prev_content:
|
||||||
|
type: value
|
||||||
|
redacted_because:
|
||||||
|
type: ClientEvent
|
||||||
|
transaction_id:
|
||||||
|
type: string
|
|
@ -0,0 +1,97 @@
|
||||||
|
module Internal.Api.GetEvent.V1_2.SpecObjects exposing
|
||||||
|
( ClientEvent
|
||||||
|
, UnsignedData(..)
|
||||||
|
, clientEventDecoder
|
||||||
|
, encodeClientEvent
|
||||||
|
, encodeUnsignedData
|
||||||
|
, unsignedDataDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'SpecObjects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Internal.Tools.DecodeExtra exposing (opField)
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Internal.Tools.Timestamp exposing (Timestamp, encodeTimestamp, timestampDecoder)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| Client Event containing all data on an event.
|
||||||
|
-}
|
||||||
|
type alias ClientEvent =
|
||||||
|
{ content : E.Value
|
||||||
|
, eventId : String
|
||||||
|
, originServerTs : Timestamp
|
||||||
|
, roomId : String
|
||||||
|
, sender : String
|
||||||
|
, stateKey : Maybe String
|
||||||
|
, contentType : String
|
||||||
|
, unsigned : Maybe UnsignedData
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeClientEvent : ClientEvent -> E.Value
|
||||||
|
encodeClientEvent data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "content", Just <| data.content )
|
||||||
|
, ( "event_id", Just <| E.string data.eventId )
|
||||||
|
, ( "origin_server_ts", Just <| encodeTimestamp data.originServerTs )
|
||||||
|
, ( "room_id", Just <| E.string data.roomId )
|
||||||
|
, ( "sender", Just <| E.string data.sender )
|
||||||
|
, ( "state_key", Maybe.map E.string data.stateKey )
|
||||||
|
, ( "type", Just <| E.string data.contentType )
|
||||||
|
, ( "unsigned", Maybe.map encodeUnsignedData data.unsigned )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
clientEventDecoder : D.Decoder ClientEvent
|
||||||
|
clientEventDecoder =
|
||||||
|
D.map8
|
||||||
|
(\a b c d e f g h ->
|
||||||
|
{ content = a, eventId = b, originServerTs = c, roomId = d, sender = e, stateKey = f, contentType = g, unsigned = h }
|
||||||
|
)
|
||||||
|
(D.field "content" D.value)
|
||||||
|
(D.field "event_id" D.string)
|
||||||
|
(D.field "origin_server_ts" timestampDecoder)
|
||||||
|
(D.field "room_id" D.string)
|
||||||
|
(D.field "sender" D.string)
|
||||||
|
(opField "state_key" D.string)
|
||||||
|
(D.field "type" D.string)
|
||||||
|
(opField "unsigned" (D.lazy (\_ -> unsignedDataDecoder)))
|
||||||
|
|
||||||
|
|
||||||
|
{-| Extra information about the event.
|
||||||
|
-}
|
||||||
|
type UnsignedData
|
||||||
|
= UnsignedData
|
||||||
|
{ age : Maybe Int
|
||||||
|
, prevContent : Maybe E.Value
|
||||||
|
, redactedBecause : Maybe ClientEvent
|
||||||
|
, transactionId : Maybe String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeUnsignedData : UnsignedData -> E.Value
|
||||||
|
encodeUnsignedData (UnsignedData data) =
|
||||||
|
maybeObject
|
||||||
|
[ ( "age", Maybe.map E.int data.age )
|
||||||
|
, ( "prev_content", data.prevContent )
|
||||||
|
, ( "redacted_because", Maybe.map encodeClientEvent data.redactedBecause )
|
||||||
|
, ( "transaction_id", Maybe.map E.string data.transactionId )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
unsignedDataDecoder : D.Decoder UnsignedData
|
||||||
|
unsignedDataDecoder =
|
||||||
|
D.map4
|
||||||
|
(\a b c d ->
|
||||||
|
UnsignedData { age = a, prevContent = b, redactedBecause = c, transactionId = d }
|
||||||
|
)
|
||||||
|
(opField "age" D.int)
|
||||||
|
(opField "prev_content" D.value)
|
||||||
|
(opField "redacted_because" clientEventDecoder)
|
||||||
|
(opField "transaction_id" D.string)
|
|
@ -0,0 +1,40 @@
|
||||||
|
version: v1.2
|
||||||
|
name: SpecObjects
|
||||||
|
objects:
|
||||||
|
ClientEvent:
|
||||||
|
description: Client Event containing all data on an event.
|
||||||
|
fields:
|
||||||
|
content:
|
||||||
|
type: value
|
||||||
|
required: true
|
||||||
|
event_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
origin_server_ts:
|
||||||
|
type: timestamp
|
||||||
|
required: true
|
||||||
|
room_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
sender:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
state_key:
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
unsigned:
|
||||||
|
type: UnsignedData
|
||||||
|
UnsignedData:
|
||||||
|
anti_recursion: true
|
||||||
|
description: Extra information about the event.
|
||||||
|
fields:
|
||||||
|
age:
|
||||||
|
type: int
|
||||||
|
prev_content:
|
||||||
|
type: value
|
||||||
|
redacted_because:
|
||||||
|
type: ClientEvent
|
||||||
|
transaction_id:
|
||||||
|
type: string
|
|
@ -0,0 +1,18 @@
|
||||||
|
module Internal.Api.GetEvent.V1_2.Upcast exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.GetEvent.V1_2.Objects as O
|
||||||
|
import Internal.Config.Leaking as L
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
upcast : () -> O.ClientEvent
|
||||||
|
upcast _ =
|
||||||
|
{ content = E.object []
|
||||||
|
, eventId = L.eventId
|
||||||
|
, originServerTs = L.originServerTs
|
||||||
|
, roomId = L.roomId
|
||||||
|
, sender = L.sender
|
||||||
|
, stateKey = Nothing
|
||||||
|
, contentType = L.eventType
|
||||||
|
, unsigned = Nothing
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
module Internal.Api.GetEvent.V1_3.Api exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.GetEvent.Api as Api
|
||||||
|
import Internal.Api.GetEvent.V1_2.Objects as PO
|
||||||
|
import Internal.Api.GetEvent.V1_3.Convert as C
|
||||||
|
import Internal.Api.GetEvent.V1_3.Objects as O
|
||||||
|
import Internal.Api.GetEvent.V1_3.SpecObjects as SO
|
||||||
|
import Internal.Api.GetEvent.V1_3.Upcast as U
|
||||||
|
import Internal.Api.VersionControl as V
|
||||||
|
|
||||||
|
|
||||||
|
packet : V.SingleVersion Api.GetEventInputV1 PO.ClientEvent Api.GetEventInputV1 O.ClientEvent
|
||||||
|
packet =
|
||||||
|
{ version = "v1.3"
|
||||||
|
, downcast = identity
|
||||||
|
, current = Api.getEventInputV1 SO.clientEventDecoder C.convert
|
||||||
|
, upcast = U.upcast
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
module Internal.Api.GetEvent.V1_3.Convert exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.GetEvent.V1_3.Objects as O
|
||||||
|
import Internal.Api.GetEvent.V1_3.SpecObjects as SO
|
||||||
|
|
||||||
|
|
||||||
|
convert : SO.ClientEvent -> O.ClientEvent
|
||||||
|
convert e =
|
||||||
|
{ content = e.content
|
||||||
|
, eventId = e.eventId
|
||||||
|
, originServerTs = e.originServerTs
|
||||||
|
, roomId = e.roomId
|
||||||
|
, sender = e.sender
|
||||||
|
, stateKey = e.stateKey
|
||||||
|
, contentType = e.contentType
|
||||||
|
, unsigned = Maybe.map convertUnsigned e.unsigned
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
convertUnsigned : SO.UnsignedData -> O.UnsignedData
|
||||||
|
convertUnsigned (SO.UnsignedData u) =
|
||||||
|
O.UnsignedData
|
||||||
|
{ age = u.age
|
||||||
|
, prevContent = u.prevContent
|
||||||
|
, redactedBecause = Maybe.map convert u.redactedBecause
|
||||||
|
, transactionId = u.transactionId
|
||||||
|
}
|
|
@ -0,0 +1,97 @@
|
||||||
|
module Internal.Api.GetEvent.V1_3.Objects exposing
|
||||||
|
( ClientEvent
|
||||||
|
, UnsignedData(..)
|
||||||
|
, clientEventDecoder
|
||||||
|
, encodeClientEvent
|
||||||
|
, encodeUnsignedData
|
||||||
|
, unsignedDataDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'Objects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Internal.Tools.DecodeExtra exposing (opField)
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Internal.Tools.Timestamp exposing (Timestamp, encodeTimestamp, timestampDecoder)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| Client Event containing all data on an event.
|
||||||
|
-}
|
||||||
|
type alias ClientEvent =
|
||||||
|
{ content : E.Value
|
||||||
|
, eventId : String
|
||||||
|
, originServerTs : Timestamp
|
||||||
|
, roomId : String
|
||||||
|
, sender : String
|
||||||
|
, stateKey : Maybe String
|
||||||
|
, contentType : String
|
||||||
|
, unsigned : Maybe UnsignedData
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeClientEvent : ClientEvent -> E.Value
|
||||||
|
encodeClientEvent data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "content", Just <| data.content )
|
||||||
|
, ( "event_id", Just <| E.string data.eventId )
|
||||||
|
, ( "origin_server_ts", Just <| encodeTimestamp data.originServerTs )
|
||||||
|
, ( "room_id", Just <| E.string data.roomId )
|
||||||
|
, ( "sender", Just <| E.string data.sender )
|
||||||
|
, ( "state_key", Maybe.map E.string data.stateKey )
|
||||||
|
, ( "type", Just <| E.string data.contentType )
|
||||||
|
, ( "unsigned", Maybe.map encodeUnsignedData data.unsigned )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
clientEventDecoder : D.Decoder ClientEvent
|
||||||
|
clientEventDecoder =
|
||||||
|
D.map8
|
||||||
|
(\a b c d e f g h ->
|
||||||
|
{ content = a, eventId = b, originServerTs = c, roomId = d, sender = e, stateKey = f, contentType = g, unsigned = h }
|
||||||
|
)
|
||||||
|
(D.field "content" D.value)
|
||||||
|
(D.field "event_id" D.string)
|
||||||
|
(D.field "origin_server_ts" timestampDecoder)
|
||||||
|
(D.field "room_id" D.string)
|
||||||
|
(D.field "sender" D.string)
|
||||||
|
(opField "state_key" D.string)
|
||||||
|
(D.field "type" D.string)
|
||||||
|
(opField "unsigned" (D.lazy (\_ -> unsignedDataDecoder)))
|
||||||
|
|
||||||
|
|
||||||
|
{-| Extra information about the event.
|
||||||
|
-}
|
||||||
|
type UnsignedData
|
||||||
|
= UnsignedData
|
||||||
|
{ age : Maybe Int
|
||||||
|
, prevContent : Maybe E.Value
|
||||||
|
, redactedBecause : Maybe ClientEvent
|
||||||
|
, transactionId : Maybe String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeUnsignedData : UnsignedData -> E.Value
|
||||||
|
encodeUnsignedData (UnsignedData data) =
|
||||||
|
maybeObject
|
||||||
|
[ ( "age", Maybe.map E.int data.age )
|
||||||
|
, ( "prev_content", data.prevContent )
|
||||||
|
, ( "redacted_because", Maybe.map encodeClientEvent data.redactedBecause )
|
||||||
|
, ( "transaction_id", Maybe.map E.string data.transactionId )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
unsignedDataDecoder : D.Decoder UnsignedData
|
||||||
|
unsignedDataDecoder =
|
||||||
|
D.map4
|
||||||
|
(\a b c d ->
|
||||||
|
UnsignedData { age = a, prevContent = b, redactedBecause = c, transactionId = d }
|
||||||
|
)
|
||||||
|
(opField "age" D.int)
|
||||||
|
(opField "prev_content" D.value)
|
||||||
|
(opField "redacted_because" clientEventDecoder)
|
||||||
|
(opField "transaction_id" D.string)
|
|
@ -0,0 +1,40 @@
|
||||||
|
version: v1.3
|
||||||
|
name: Objects
|
||||||
|
objects:
|
||||||
|
ClientEvent:
|
||||||
|
description: Client Event containing all data on an event.
|
||||||
|
fields:
|
||||||
|
content:
|
||||||
|
type: value
|
||||||
|
required: true
|
||||||
|
event_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
origin_server_ts:
|
||||||
|
type: timestamp
|
||||||
|
required: true
|
||||||
|
room_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
sender:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
state_key:
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
unsigned:
|
||||||
|
type: UnsignedData
|
||||||
|
UnsignedData:
|
||||||
|
anti_recursion: true
|
||||||
|
description: Extra information about the event.
|
||||||
|
fields:
|
||||||
|
age:
|
||||||
|
type: int
|
||||||
|
prev_content:
|
||||||
|
type: value
|
||||||
|
redacted_because:
|
||||||
|
type: ClientEvent
|
||||||
|
transaction_id:
|
||||||
|
type: string
|
|
@ -0,0 +1,97 @@
|
||||||
|
module Internal.Api.GetEvent.V1_3.SpecObjects exposing
|
||||||
|
( ClientEvent
|
||||||
|
, UnsignedData(..)
|
||||||
|
, clientEventDecoder
|
||||||
|
, encodeClientEvent
|
||||||
|
, encodeUnsignedData
|
||||||
|
, unsignedDataDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'SpecObjects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Internal.Tools.DecodeExtra exposing (opField)
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Internal.Tools.Timestamp exposing (Timestamp, encodeTimestamp, timestampDecoder)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| Client Event containing all data on an event.
|
||||||
|
-}
|
||||||
|
type alias ClientEvent =
|
||||||
|
{ content : E.Value
|
||||||
|
, eventId : String
|
||||||
|
, originServerTs : Timestamp
|
||||||
|
, roomId : String
|
||||||
|
, sender : String
|
||||||
|
, stateKey : Maybe String
|
||||||
|
, contentType : String
|
||||||
|
, unsigned : Maybe UnsignedData
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeClientEvent : ClientEvent -> E.Value
|
||||||
|
encodeClientEvent data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "content", Just <| data.content )
|
||||||
|
, ( "event_id", Just <| E.string data.eventId )
|
||||||
|
, ( "origin_server_ts", Just <| encodeTimestamp data.originServerTs )
|
||||||
|
, ( "room_id", Just <| E.string data.roomId )
|
||||||
|
, ( "sender", Just <| E.string data.sender )
|
||||||
|
, ( "state_key", Maybe.map E.string data.stateKey )
|
||||||
|
, ( "type", Just <| E.string data.contentType )
|
||||||
|
, ( "unsigned", Maybe.map encodeUnsignedData data.unsigned )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
clientEventDecoder : D.Decoder ClientEvent
|
||||||
|
clientEventDecoder =
|
||||||
|
D.map8
|
||||||
|
(\a b c d e f g h ->
|
||||||
|
{ content = a, eventId = b, originServerTs = c, roomId = d, sender = e, stateKey = f, contentType = g, unsigned = h }
|
||||||
|
)
|
||||||
|
(D.field "content" D.value)
|
||||||
|
(D.field "event_id" D.string)
|
||||||
|
(D.field "origin_server_ts" timestampDecoder)
|
||||||
|
(D.field "room_id" D.string)
|
||||||
|
(D.field "sender" D.string)
|
||||||
|
(opField "state_key" D.string)
|
||||||
|
(D.field "type" D.string)
|
||||||
|
(opField "unsigned" (D.lazy (\_ -> unsignedDataDecoder)))
|
||||||
|
|
||||||
|
|
||||||
|
{-| Extra information about the event.
|
||||||
|
-}
|
||||||
|
type UnsignedData
|
||||||
|
= UnsignedData
|
||||||
|
{ age : Maybe Int
|
||||||
|
, prevContent : Maybe E.Value
|
||||||
|
, redactedBecause : Maybe ClientEvent
|
||||||
|
, transactionId : Maybe String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeUnsignedData : UnsignedData -> E.Value
|
||||||
|
encodeUnsignedData (UnsignedData data) =
|
||||||
|
maybeObject
|
||||||
|
[ ( "age", Maybe.map E.int data.age )
|
||||||
|
, ( "prev_content", data.prevContent )
|
||||||
|
, ( "redacted_because", Maybe.map encodeClientEvent data.redactedBecause )
|
||||||
|
, ( "transaction_id", Maybe.map E.string data.transactionId )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
unsignedDataDecoder : D.Decoder UnsignedData
|
||||||
|
unsignedDataDecoder =
|
||||||
|
D.map4
|
||||||
|
(\a b c d ->
|
||||||
|
UnsignedData { age = a, prevContent = b, redactedBecause = c, transactionId = d }
|
||||||
|
)
|
||||||
|
(opField "age" D.int)
|
||||||
|
(opField "prev_content" D.value)
|
||||||
|
(opField "redacted_because" clientEventDecoder)
|
||||||
|
(opField "transaction_id" D.string)
|
|
@ -0,0 +1,40 @@
|
||||||
|
version: v1.3
|
||||||
|
name: SpecObjects
|
||||||
|
objects:
|
||||||
|
ClientEvent:
|
||||||
|
description: Client Event containing all data on an event.
|
||||||
|
fields:
|
||||||
|
content:
|
||||||
|
type: value
|
||||||
|
required: true
|
||||||
|
event_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
origin_server_ts:
|
||||||
|
type: timestamp
|
||||||
|
required: true
|
||||||
|
room_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
sender:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
state_key:
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
unsigned:
|
||||||
|
type: UnsignedData
|
||||||
|
UnsignedData:
|
||||||
|
anti_recursion: true
|
||||||
|
description: Extra information about the event.
|
||||||
|
fields:
|
||||||
|
age:
|
||||||
|
type: int
|
||||||
|
prev_content:
|
||||||
|
type: value
|
||||||
|
redacted_because:
|
||||||
|
type: ClientEvent
|
||||||
|
transaction_id:
|
||||||
|
type: string
|
|
@ -0,0 +1,27 @@
|
||||||
|
module Internal.Api.GetEvent.V1_3.Upcast exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.GetEvent.V1_2.Objects as PO
|
||||||
|
import Internal.Api.GetEvent.V1_3.Objects as O
|
||||||
|
|
||||||
|
|
||||||
|
upcast : PO.ClientEvent -> O.ClientEvent
|
||||||
|
upcast e =
|
||||||
|
{ content = e.content
|
||||||
|
, eventId = e.eventId
|
||||||
|
, originServerTs = e.originServerTs
|
||||||
|
, roomId = e.roomId
|
||||||
|
, sender = e.sender
|
||||||
|
, stateKey = e.stateKey
|
||||||
|
, contentType = e.contentType
|
||||||
|
, unsigned = Maybe.map upcastUnsigned e.unsigned
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
upcastUnsigned : PO.UnsignedData -> O.UnsignedData
|
||||||
|
upcastUnsigned (PO.UnsignedData u) =
|
||||||
|
O.UnsignedData
|
||||||
|
{ age = u.age
|
||||||
|
, prevContent = u.prevContent
|
||||||
|
, redactedBecause = Maybe.map upcast u.redactedBecause
|
||||||
|
, transactionId = u.transactionId
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
module Internal.Api.GetEvent.V1_4.Api exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.GetEvent.Api as Api
|
||||||
|
import Internal.Api.GetEvent.V1_3.Objects as PO
|
||||||
|
import Internal.Api.GetEvent.V1_4.Convert as C
|
||||||
|
import Internal.Api.GetEvent.V1_4.Objects as O
|
||||||
|
import Internal.Api.GetEvent.V1_4.SpecObjects as SO
|
||||||
|
import Internal.Api.GetEvent.V1_4.Upcast as U
|
||||||
|
import Internal.Api.VersionControl as V
|
||||||
|
|
||||||
|
|
||||||
|
packet : V.SingleVersion Api.GetEventInputV1 PO.ClientEvent Api.GetEventInputV1 O.ClientEvent
|
||||||
|
packet =
|
||||||
|
{ version = "v1.4"
|
||||||
|
, downcast = identity
|
||||||
|
, current = Api.getEventInputV1 SO.clientEventDecoder C.convert
|
||||||
|
, upcast = U.upcast
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
module Internal.Api.GetEvent.V1_4.Convert exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.GetEvent.V1_4.Objects as O
|
||||||
|
import Internal.Api.GetEvent.V1_4.SpecObjects as SO
|
||||||
|
|
||||||
|
|
||||||
|
convert : SO.ClientEvent -> O.ClientEvent
|
||||||
|
convert e =
|
||||||
|
{ content = e.content
|
||||||
|
, eventId = e.eventId
|
||||||
|
, originServerTs = e.originServerTs
|
||||||
|
, roomId = e.roomId
|
||||||
|
, sender = e.sender
|
||||||
|
, stateKey = e.stateKey
|
||||||
|
, contentType = e.contentType
|
||||||
|
, unsigned = Maybe.map convertUnsigned e.unsigned
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
convertUnsigned : SO.UnsignedData -> O.UnsignedData
|
||||||
|
convertUnsigned (SO.UnsignedData u) =
|
||||||
|
O.UnsignedData
|
||||||
|
{ age = u.age
|
||||||
|
, prevContent = u.prevContent
|
||||||
|
, redactedBecause = Maybe.map convert u.redactedBecause
|
||||||
|
, transactionId = u.transactionId
|
||||||
|
}
|
|
@ -0,0 +1,97 @@
|
||||||
|
module Internal.Api.GetEvent.V1_4.Objects exposing
|
||||||
|
( ClientEvent
|
||||||
|
, UnsignedData(..)
|
||||||
|
, clientEventDecoder
|
||||||
|
, encodeClientEvent
|
||||||
|
, encodeUnsignedData
|
||||||
|
, unsignedDataDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'Objects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Internal.Tools.DecodeExtra exposing (opField)
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Internal.Tools.Timestamp exposing (Timestamp, encodeTimestamp, timestampDecoder)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| Client Event containing all data on an event.
|
||||||
|
-}
|
||||||
|
type alias ClientEvent =
|
||||||
|
{ content : E.Value
|
||||||
|
, eventId : String
|
||||||
|
, originServerTs : Timestamp
|
||||||
|
, roomId : String
|
||||||
|
, sender : String
|
||||||
|
, stateKey : Maybe String
|
||||||
|
, contentType : String
|
||||||
|
, unsigned : Maybe UnsignedData
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeClientEvent : ClientEvent -> E.Value
|
||||||
|
encodeClientEvent data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "content", Just <| data.content )
|
||||||
|
, ( "event_id", Just <| E.string data.eventId )
|
||||||
|
, ( "origin_server_ts", Just <| encodeTimestamp data.originServerTs )
|
||||||
|
, ( "room_id", Just <| E.string data.roomId )
|
||||||
|
, ( "sender", Just <| E.string data.sender )
|
||||||
|
, ( "state_key", Maybe.map E.string data.stateKey )
|
||||||
|
, ( "type", Just <| E.string data.contentType )
|
||||||
|
, ( "unsigned", Maybe.map encodeUnsignedData data.unsigned )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
clientEventDecoder : D.Decoder ClientEvent
|
||||||
|
clientEventDecoder =
|
||||||
|
D.map8
|
||||||
|
(\a b c d e f g h ->
|
||||||
|
{ content = a, eventId = b, originServerTs = c, roomId = d, sender = e, stateKey = f, contentType = g, unsigned = h }
|
||||||
|
)
|
||||||
|
(D.field "content" D.value)
|
||||||
|
(D.field "event_id" D.string)
|
||||||
|
(D.field "origin_server_ts" timestampDecoder)
|
||||||
|
(D.field "room_id" D.string)
|
||||||
|
(D.field "sender" D.string)
|
||||||
|
(opField "state_key" D.string)
|
||||||
|
(D.field "type" D.string)
|
||||||
|
(opField "unsigned" (D.lazy (\_ -> unsignedDataDecoder)))
|
||||||
|
|
||||||
|
|
||||||
|
{-| Extra information about the event.
|
||||||
|
-}
|
||||||
|
type UnsignedData
|
||||||
|
= UnsignedData
|
||||||
|
{ age : Maybe Int
|
||||||
|
, prevContent : Maybe E.Value
|
||||||
|
, redactedBecause : Maybe ClientEvent
|
||||||
|
, transactionId : Maybe String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeUnsignedData : UnsignedData -> E.Value
|
||||||
|
encodeUnsignedData (UnsignedData data) =
|
||||||
|
maybeObject
|
||||||
|
[ ( "age", Maybe.map E.int data.age )
|
||||||
|
, ( "prev_content", data.prevContent )
|
||||||
|
, ( "redacted_because", Maybe.map encodeClientEvent data.redactedBecause )
|
||||||
|
, ( "transaction_id", Maybe.map E.string data.transactionId )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
unsignedDataDecoder : D.Decoder UnsignedData
|
||||||
|
unsignedDataDecoder =
|
||||||
|
D.map4
|
||||||
|
(\a b c d ->
|
||||||
|
UnsignedData { age = a, prevContent = b, redactedBecause = c, transactionId = d }
|
||||||
|
)
|
||||||
|
(opField "age" D.int)
|
||||||
|
(opField "prev_content" D.value)
|
||||||
|
(opField "redacted_because" clientEventDecoder)
|
||||||
|
(opField "transaction_id" D.string)
|
|
@ -0,0 +1,40 @@
|
||||||
|
version: v1.4
|
||||||
|
name: Objects
|
||||||
|
objects:
|
||||||
|
ClientEvent:
|
||||||
|
description: Client Event containing all data on an event.
|
||||||
|
fields:
|
||||||
|
content:
|
||||||
|
type: value
|
||||||
|
required: true
|
||||||
|
event_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
origin_server_ts:
|
||||||
|
type: timestamp
|
||||||
|
required: true
|
||||||
|
room_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
sender:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
state_key:
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
unsigned:
|
||||||
|
type: UnsignedData
|
||||||
|
UnsignedData:
|
||||||
|
anti_recursion: true
|
||||||
|
description: Extra information about the event.
|
||||||
|
fields:
|
||||||
|
age:
|
||||||
|
type: int
|
||||||
|
prev_content:
|
||||||
|
type: value
|
||||||
|
redacted_because:
|
||||||
|
type: ClientEvent
|
||||||
|
transaction_id:
|
||||||
|
type: string
|
|
@ -0,0 +1,97 @@
|
||||||
|
module Internal.Api.GetEvent.V1_4.SpecObjects exposing
|
||||||
|
( ClientEvent
|
||||||
|
, UnsignedData(..)
|
||||||
|
, clientEventDecoder
|
||||||
|
, encodeClientEvent
|
||||||
|
, encodeUnsignedData
|
||||||
|
, unsignedDataDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'SpecObjects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Internal.Tools.DecodeExtra exposing (opField)
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Internal.Tools.Timestamp exposing (Timestamp, encodeTimestamp, timestampDecoder)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| Client Event containing all data on an event.
|
||||||
|
-}
|
||||||
|
type alias ClientEvent =
|
||||||
|
{ content : E.Value
|
||||||
|
, eventId : String
|
||||||
|
, originServerTs : Timestamp
|
||||||
|
, roomId : String
|
||||||
|
, sender : String
|
||||||
|
, stateKey : Maybe String
|
||||||
|
, contentType : String
|
||||||
|
, unsigned : Maybe UnsignedData
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeClientEvent : ClientEvent -> E.Value
|
||||||
|
encodeClientEvent data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "content", Just <| data.content )
|
||||||
|
, ( "event_id", Just <| E.string data.eventId )
|
||||||
|
, ( "origin_server_ts", Just <| encodeTimestamp data.originServerTs )
|
||||||
|
, ( "room_id", Just <| E.string data.roomId )
|
||||||
|
, ( "sender", Just <| E.string data.sender )
|
||||||
|
, ( "state_key", Maybe.map E.string data.stateKey )
|
||||||
|
, ( "type", Just <| E.string data.contentType )
|
||||||
|
, ( "unsigned", Maybe.map encodeUnsignedData data.unsigned )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
clientEventDecoder : D.Decoder ClientEvent
|
||||||
|
clientEventDecoder =
|
||||||
|
D.map8
|
||||||
|
(\a b c d e f g h ->
|
||||||
|
{ content = a, eventId = b, originServerTs = c, roomId = d, sender = e, stateKey = f, contentType = g, unsigned = h }
|
||||||
|
)
|
||||||
|
(D.field "content" D.value)
|
||||||
|
(D.field "event_id" D.string)
|
||||||
|
(D.field "origin_server_ts" timestampDecoder)
|
||||||
|
(D.field "room_id" D.string)
|
||||||
|
(D.field "sender" D.string)
|
||||||
|
(opField "state_key" D.string)
|
||||||
|
(D.field "type" D.string)
|
||||||
|
(opField "unsigned" (D.lazy (\_ -> unsignedDataDecoder)))
|
||||||
|
|
||||||
|
|
||||||
|
{-| Extra information about the event.
|
||||||
|
-}
|
||||||
|
type UnsignedData
|
||||||
|
= UnsignedData
|
||||||
|
{ age : Maybe Int
|
||||||
|
, prevContent : Maybe E.Value
|
||||||
|
, redactedBecause : Maybe ClientEvent
|
||||||
|
, transactionId : Maybe String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeUnsignedData : UnsignedData -> E.Value
|
||||||
|
encodeUnsignedData (UnsignedData data) =
|
||||||
|
maybeObject
|
||||||
|
[ ( "age", Maybe.map E.int data.age )
|
||||||
|
, ( "prev_content", data.prevContent )
|
||||||
|
, ( "redacted_because", Maybe.map encodeClientEvent data.redactedBecause )
|
||||||
|
, ( "transaction_id", Maybe.map E.string data.transactionId )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
unsignedDataDecoder : D.Decoder UnsignedData
|
||||||
|
unsignedDataDecoder =
|
||||||
|
D.map4
|
||||||
|
(\a b c d ->
|
||||||
|
UnsignedData { age = a, prevContent = b, redactedBecause = c, transactionId = d }
|
||||||
|
)
|
||||||
|
(opField "age" D.int)
|
||||||
|
(opField "prev_content" D.value)
|
||||||
|
(opField "redacted_because" clientEventDecoder)
|
||||||
|
(opField "transaction_id" D.string)
|
|
@ -0,0 +1,40 @@
|
||||||
|
version: v1.4
|
||||||
|
name: SpecObjects
|
||||||
|
objects:
|
||||||
|
ClientEvent:
|
||||||
|
description: Client Event containing all data on an event.
|
||||||
|
fields:
|
||||||
|
content:
|
||||||
|
type: value
|
||||||
|
required: true
|
||||||
|
event_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
origin_server_ts:
|
||||||
|
type: timestamp
|
||||||
|
required: true
|
||||||
|
room_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
sender:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
state_key:
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
unsigned:
|
||||||
|
type: UnsignedData
|
||||||
|
UnsignedData:
|
||||||
|
anti_recursion: true
|
||||||
|
description: Extra information about the event.
|
||||||
|
fields:
|
||||||
|
age:
|
||||||
|
type: int
|
||||||
|
prev_content:
|
||||||
|
type: value
|
||||||
|
redacted_because:
|
||||||
|
type: ClientEvent
|
||||||
|
transaction_id:
|
||||||
|
type: string
|
|
@ -0,0 +1,27 @@
|
||||||
|
module Internal.Api.GetEvent.V1_4.Upcast exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.GetEvent.V1_3.Objects as PO
|
||||||
|
import Internal.Api.GetEvent.V1_4.Objects as O
|
||||||
|
|
||||||
|
|
||||||
|
upcast : PO.ClientEvent -> O.ClientEvent
|
||||||
|
upcast e =
|
||||||
|
{ content = e.content
|
||||||
|
, eventId = e.eventId
|
||||||
|
, originServerTs = e.originServerTs
|
||||||
|
, roomId = e.roomId
|
||||||
|
, sender = e.sender
|
||||||
|
, stateKey = e.stateKey
|
||||||
|
, contentType = e.contentType
|
||||||
|
, unsigned = Maybe.map upcastUnsigned e.unsigned
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
upcastUnsigned : PO.UnsignedData -> O.UnsignedData
|
||||||
|
upcastUnsigned (PO.UnsignedData u) =
|
||||||
|
O.UnsignedData
|
||||||
|
{ age = u.age
|
||||||
|
, prevContent = u.prevContent
|
||||||
|
, redactedBecause = Maybe.map upcast u.redactedBecause
|
||||||
|
, transactionId = u.transactionId
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
module Internal.Api.GetEvent.V1_5.Api exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.GetEvent.Api as Api
|
||||||
|
import Internal.Api.GetEvent.V1_4.Objects as PO
|
||||||
|
import Internal.Api.GetEvent.V1_5.Convert as C
|
||||||
|
import Internal.Api.GetEvent.V1_5.Objects as O
|
||||||
|
import Internal.Api.GetEvent.V1_5.SpecObjects as SO
|
||||||
|
import Internal.Api.GetEvent.V1_5.Upcast as U
|
||||||
|
import Internal.Api.VersionControl as V
|
||||||
|
|
||||||
|
|
||||||
|
packet : V.SingleVersion Api.GetEventInputV1 PO.ClientEvent Api.GetEventInputV1 O.ClientEvent
|
||||||
|
packet =
|
||||||
|
{ version = "v1.5"
|
||||||
|
, downcast = identity
|
||||||
|
, current = Api.getEventInputV1 SO.clientEventDecoder C.convert
|
||||||
|
, upcast = U.upcast
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
module Internal.Api.GetEvent.V1_5.Convert exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.GetEvent.V1_5.Objects as O
|
||||||
|
import Internal.Api.GetEvent.V1_5.SpecObjects as SO
|
||||||
|
|
||||||
|
|
||||||
|
convert : SO.ClientEvent -> O.ClientEvent
|
||||||
|
convert e =
|
||||||
|
{ content = e.content
|
||||||
|
, eventId = e.eventId
|
||||||
|
, originServerTs = e.originServerTs
|
||||||
|
, roomId = e.roomId
|
||||||
|
, sender = e.sender
|
||||||
|
, stateKey = e.stateKey
|
||||||
|
, contentType = e.contentType
|
||||||
|
, unsigned = Maybe.map convertUnsigned e.unsigned
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
convertUnsigned : SO.UnsignedData -> O.UnsignedData
|
||||||
|
convertUnsigned (SO.UnsignedData u) =
|
||||||
|
O.UnsignedData
|
||||||
|
{ age = u.age
|
||||||
|
, prevContent = u.prevContent
|
||||||
|
, redactedBecause = Maybe.map convert u.redactedBecause
|
||||||
|
, transactionId = u.transactionId
|
||||||
|
}
|
|
@ -0,0 +1,97 @@
|
||||||
|
module Internal.Api.GetEvent.V1_5.Objects exposing
|
||||||
|
( ClientEvent
|
||||||
|
, UnsignedData(..)
|
||||||
|
, clientEventDecoder
|
||||||
|
, encodeClientEvent
|
||||||
|
, encodeUnsignedData
|
||||||
|
, unsignedDataDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'Objects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Internal.Tools.DecodeExtra exposing (opField)
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Internal.Tools.Timestamp exposing (Timestamp, encodeTimestamp, timestampDecoder)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| Client Event containing all data on an event.
|
||||||
|
-}
|
||||||
|
type alias ClientEvent =
|
||||||
|
{ content : E.Value
|
||||||
|
, eventId : String
|
||||||
|
, originServerTs : Timestamp
|
||||||
|
, roomId : String
|
||||||
|
, sender : String
|
||||||
|
, stateKey : Maybe String
|
||||||
|
, contentType : String
|
||||||
|
, unsigned : Maybe UnsignedData
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeClientEvent : ClientEvent -> E.Value
|
||||||
|
encodeClientEvent data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "content", Just <| data.content )
|
||||||
|
, ( "event_id", Just <| E.string data.eventId )
|
||||||
|
, ( "origin_server_ts", Just <| encodeTimestamp data.originServerTs )
|
||||||
|
, ( "room_id", Just <| E.string data.roomId )
|
||||||
|
, ( "sender", Just <| E.string data.sender )
|
||||||
|
, ( "state_key", Maybe.map E.string data.stateKey )
|
||||||
|
, ( "type", Just <| E.string data.contentType )
|
||||||
|
, ( "unsigned", Maybe.map encodeUnsignedData data.unsigned )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
clientEventDecoder : D.Decoder ClientEvent
|
||||||
|
clientEventDecoder =
|
||||||
|
D.map8
|
||||||
|
(\a b c d e f g h ->
|
||||||
|
{ content = a, eventId = b, originServerTs = c, roomId = d, sender = e, stateKey = f, contentType = g, unsigned = h }
|
||||||
|
)
|
||||||
|
(D.field "content" D.value)
|
||||||
|
(D.field "event_id" D.string)
|
||||||
|
(D.field "origin_server_ts" timestampDecoder)
|
||||||
|
(D.field "room_id" D.string)
|
||||||
|
(D.field "sender" D.string)
|
||||||
|
(opField "state_key" D.string)
|
||||||
|
(D.field "type" D.string)
|
||||||
|
(opField "unsigned" (D.lazy (\_ -> unsignedDataDecoder)))
|
||||||
|
|
||||||
|
|
||||||
|
{-| Extra information about the event.
|
||||||
|
-}
|
||||||
|
type UnsignedData
|
||||||
|
= UnsignedData
|
||||||
|
{ age : Maybe Int
|
||||||
|
, prevContent : Maybe E.Value
|
||||||
|
, redactedBecause : Maybe ClientEvent
|
||||||
|
, transactionId : Maybe String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeUnsignedData : UnsignedData -> E.Value
|
||||||
|
encodeUnsignedData (UnsignedData data) =
|
||||||
|
maybeObject
|
||||||
|
[ ( "age", Maybe.map E.int data.age )
|
||||||
|
, ( "prev_content", data.prevContent )
|
||||||
|
, ( "redacted_because", Maybe.map encodeClientEvent data.redactedBecause )
|
||||||
|
, ( "transaction_id", Maybe.map E.string data.transactionId )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
unsignedDataDecoder : D.Decoder UnsignedData
|
||||||
|
unsignedDataDecoder =
|
||||||
|
D.map4
|
||||||
|
(\a b c d ->
|
||||||
|
UnsignedData { age = a, prevContent = b, redactedBecause = c, transactionId = d }
|
||||||
|
)
|
||||||
|
(opField "age" D.int)
|
||||||
|
(opField "prev_content" D.value)
|
||||||
|
(opField "redacted_because" clientEventDecoder)
|
||||||
|
(opField "transaction_id" D.string)
|
|
@ -0,0 +1,40 @@
|
||||||
|
version: v1.5
|
||||||
|
name: Objects
|
||||||
|
objects:
|
||||||
|
ClientEvent:
|
||||||
|
description: Client Event containing all data on an event.
|
||||||
|
fields:
|
||||||
|
content:
|
||||||
|
type: value
|
||||||
|
required: true
|
||||||
|
event_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
origin_server_ts:
|
||||||
|
type: timestamp
|
||||||
|
required: true
|
||||||
|
room_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
sender:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
state_key:
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
unsigned:
|
||||||
|
type: UnsignedData
|
||||||
|
UnsignedData:
|
||||||
|
anti_recursion: true
|
||||||
|
description: Extra information about the event.
|
||||||
|
fields:
|
||||||
|
age:
|
||||||
|
type: int
|
||||||
|
prev_content:
|
||||||
|
type: value
|
||||||
|
redacted_because:
|
||||||
|
type: ClientEvent
|
||||||
|
transaction_id:
|
||||||
|
type: string
|
|
@ -0,0 +1,97 @@
|
||||||
|
module Internal.Api.GetEvent.V1_5.SpecObjects exposing
|
||||||
|
( ClientEvent
|
||||||
|
, UnsignedData(..)
|
||||||
|
, clientEventDecoder
|
||||||
|
, encodeClientEvent
|
||||||
|
, encodeUnsignedData
|
||||||
|
, unsignedDataDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'SpecObjects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Internal.Tools.DecodeExtra exposing (opField)
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Internal.Tools.Timestamp exposing (Timestamp, encodeTimestamp, timestampDecoder)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| Client Event containing all data on an event.
|
||||||
|
-}
|
||||||
|
type alias ClientEvent =
|
||||||
|
{ content : E.Value
|
||||||
|
, eventId : String
|
||||||
|
, originServerTs : Timestamp
|
||||||
|
, roomId : String
|
||||||
|
, sender : String
|
||||||
|
, stateKey : Maybe String
|
||||||
|
, contentType : String
|
||||||
|
, unsigned : Maybe UnsignedData
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeClientEvent : ClientEvent -> E.Value
|
||||||
|
encodeClientEvent data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "content", Just <| data.content )
|
||||||
|
, ( "event_id", Just <| E.string data.eventId )
|
||||||
|
, ( "origin_server_ts", Just <| encodeTimestamp data.originServerTs )
|
||||||
|
, ( "room_id", Just <| E.string data.roomId )
|
||||||
|
, ( "sender", Just <| E.string data.sender )
|
||||||
|
, ( "state_key", Maybe.map E.string data.stateKey )
|
||||||
|
, ( "type", Just <| E.string data.contentType )
|
||||||
|
, ( "unsigned", Maybe.map encodeUnsignedData data.unsigned )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
clientEventDecoder : D.Decoder ClientEvent
|
||||||
|
clientEventDecoder =
|
||||||
|
D.map8
|
||||||
|
(\a b c d e f g h ->
|
||||||
|
{ content = a, eventId = b, originServerTs = c, roomId = d, sender = e, stateKey = f, contentType = g, unsigned = h }
|
||||||
|
)
|
||||||
|
(D.field "content" D.value)
|
||||||
|
(D.field "event_id" D.string)
|
||||||
|
(D.field "origin_server_ts" timestampDecoder)
|
||||||
|
(D.field "room_id" D.string)
|
||||||
|
(D.field "sender" D.string)
|
||||||
|
(opField "state_key" D.string)
|
||||||
|
(D.field "type" D.string)
|
||||||
|
(opField "unsigned" (D.lazy (\_ -> unsignedDataDecoder)))
|
||||||
|
|
||||||
|
|
||||||
|
{-| Extra information about the event.
|
||||||
|
-}
|
||||||
|
type UnsignedData
|
||||||
|
= UnsignedData
|
||||||
|
{ age : Maybe Int
|
||||||
|
, prevContent : Maybe E.Value
|
||||||
|
, redactedBecause : Maybe ClientEvent
|
||||||
|
, transactionId : Maybe String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeUnsignedData : UnsignedData -> E.Value
|
||||||
|
encodeUnsignedData (UnsignedData data) =
|
||||||
|
maybeObject
|
||||||
|
[ ( "age", Maybe.map E.int data.age )
|
||||||
|
, ( "prev_content", data.prevContent )
|
||||||
|
, ( "redacted_because", Maybe.map encodeClientEvent data.redactedBecause )
|
||||||
|
, ( "transaction_id", Maybe.map E.string data.transactionId )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
unsignedDataDecoder : D.Decoder UnsignedData
|
||||||
|
unsignedDataDecoder =
|
||||||
|
D.map4
|
||||||
|
(\a b c d ->
|
||||||
|
UnsignedData { age = a, prevContent = b, redactedBecause = c, transactionId = d }
|
||||||
|
)
|
||||||
|
(opField "age" D.int)
|
||||||
|
(opField "prev_content" D.value)
|
||||||
|
(opField "redacted_because" clientEventDecoder)
|
||||||
|
(opField "transaction_id" D.string)
|
|
@ -0,0 +1,40 @@
|
||||||
|
version: v1.5
|
||||||
|
name: SpecObjects
|
||||||
|
objects:
|
||||||
|
ClientEvent:
|
||||||
|
description: Client Event containing all data on an event.
|
||||||
|
fields:
|
||||||
|
content:
|
||||||
|
type: value
|
||||||
|
required: true
|
||||||
|
event_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
origin_server_ts:
|
||||||
|
type: timestamp
|
||||||
|
required: true
|
||||||
|
room_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
sender:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
state_key:
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
unsigned:
|
||||||
|
type: UnsignedData
|
||||||
|
UnsignedData:
|
||||||
|
anti_recursion: true
|
||||||
|
description: Extra information about the event.
|
||||||
|
fields:
|
||||||
|
age:
|
||||||
|
type: int
|
||||||
|
prev_content:
|
||||||
|
type: value
|
||||||
|
redacted_because:
|
||||||
|
type: ClientEvent
|
||||||
|
transaction_id:
|
||||||
|
type: string
|
|
@ -0,0 +1,27 @@
|
||||||
|
module Internal.Api.GetEvent.V1_5.Upcast exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.GetEvent.V1_4.Objects as PO
|
||||||
|
import Internal.Api.GetEvent.V1_5.Objects as O
|
||||||
|
|
||||||
|
|
||||||
|
upcast : PO.ClientEvent -> O.ClientEvent
|
||||||
|
upcast e =
|
||||||
|
{ content = e.content
|
||||||
|
, eventId = e.eventId
|
||||||
|
, originServerTs = e.originServerTs
|
||||||
|
, roomId = e.roomId
|
||||||
|
, sender = e.sender
|
||||||
|
, stateKey = e.stateKey
|
||||||
|
, contentType = e.contentType
|
||||||
|
, unsigned = Maybe.map upcastUnsigned e.unsigned
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
upcastUnsigned : PO.UnsignedData -> O.UnsignedData
|
||||||
|
upcastUnsigned (PO.UnsignedData u) =
|
||||||
|
O.UnsignedData
|
||||||
|
{ age = u.age
|
||||||
|
, prevContent = u.prevContent
|
||||||
|
, redactedBecause = Maybe.map upcast u.redactedBecause
|
||||||
|
, transactionId = u.transactionId
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
module Internal.Api.JoinedMembers.Api exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.Request as R
|
||||||
|
import Internal.Tools.Exceptions as X
|
||||||
|
import Json.Decode as D
|
||||||
|
import Task exposing (Task)
|
||||||
|
|
||||||
|
|
||||||
|
type alias JoinedMembersInputV1 =
|
||||||
|
{ accessToken : String
|
||||||
|
, baseUrl : String
|
||||||
|
, roomId : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
joinedMembersInputV1 : D.Decoder a -> (a -> b) -> JoinedMembersInputV1 -> Task X.Error b
|
||||||
|
joinedMembersInputV1 decoder mapping data =
|
||||||
|
R.rawApiCall
|
||||||
|
{ headers = R.WithAccessToken data.accessToken
|
||||||
|
, method = "GET"
|
||||||
|
, baseUrl = data.baseUrl
|
||||||
|
, path = "/_matrix/client/v3/rooms/{roomId}/joined_members"
|
||||||
|
, pathParams =
|
||||||
|
[ ( "roomId", data.roomId )
|
||||||
|
]
|
||||||
|
, queryParams = []
|
||||||
|
, bodyParams = []
|
||||||
|
, timeout = Nothing
|
||||||
|
, decoder = \_ -> D.map mapping decoder
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
module Internal.Api.JoinedMembers.Main exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.JoinedMembers.Api as Api
|
||||||
|
import Internal.Api.JoinedMembers.V1_2.Api as V1_2
|
||||||
|
import Internal.Api.JoinedMembers.V1_3.Api as V1_3
|
||||||
|
import Internal.Api.JoinedMembers.V1_4.Api as V1_4
|
||||||
|
import Internal.Api.JoinedMembers.V1_5.Api as V1_5
|
||||||
|
import Internal.Api.JoinedMembers.V1_5.Objects as O
|
||||||
|
import Internal.Api.VersionControl as V
|
||||||
|
import Internal.Tools.Exceptions as X
|
||||||
|
import Task exposing (Task)
|
||||||
|
|
||||||
|
|
||||||
|
joinedMembers : List String -> JoinedMembersInput -> JoinedMembersOutput
|
||||||
|
joinedMembers =
|
||||||
|
V.firstVersion V1_2.packet
|
||||||
|
|> V.updateWith V1_3.packet
|
||||||
|
|> V.updateWith V1_4.packet
|
||||||
|
|> V.updateWith V1_5.packet
|
||||||
|
|> V.toFunction
|
||||||
|
|
||||||
|
|
||||||
|
type alias JoinedMembersInput =
|
||||||
|
Api.JoinedMembersInputV1
|
||||||
|
|
||||||
|
|
||||||
|
type alias JoinedMembersOutput =
|
||||||
|
Task X.Error O.RoomMemberList
|
|
@ -0,0 +1,17 @@
|
||||||
|
module Internal.Api.JoinedMembers.V1_2.Api exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.JoinedMembers.Api as Api
|
||||||
|
import Internal.Api.JoinedMembers.V1_2.Convert as C
|
||||||
|
import Internal.Api.JoinedMembers.V1_2.Objects as O
|
||||||
|
import Internal.Api.JoinedMembers.V1_2.SpecObjects as SO
|
||||||
|
import Internal.Api.JoinedMembers.V1_2.Upcast as U
|
||||||
|
import Internal.Api.VersionControl as V
|
||||||
|
|
||||||
|
|
||||||
|
packet : V.SingleVersion () () Api.JoinedMembersInputV1 O.RoomMemberList
|
||||||
|
packet =
|
||||||
|
{ version = "v1.2"
|
||||||
|
, downcast = \_ -> ()
|
||||||
|
, current = Api.joinedMembersInputV1 SO.roomMemberListDecoder C.convert
|
||||||
|
, upcast = U.upcast
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
module Internal.Api.JoinedMembers.V1_2.Convert exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.JoinedMembers.V1_2.Objects as O
|
||||||
|
import Internal.Api.JoinedMembers.V1_2.SpecObjects as SO
|
||||||
|
|
||||||
|
|
||||||
|
convert : SO.RoomMemberList -> O.RoomMemberList
|
||||||
|
convert =
|
||||||
|
identity
|
|
@ -0,0 +1,69 @@
|
||||||
|
module Internal.Api.JoinedMembers.V1_2.Objects exposing
|
||||||
|
( RoomMember
|
||||||
|
, RoomMemberList
|
||||||
|
, encodeRoomMember
|
||||||
|
, encodeRoomMemberList
|
||||||
|
, roomMemberDecoder
|
||||||
|
, roomMemberListDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'Objects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Dict exposing (Dict)
|
||||||
|
import Internal.Tools.DecodeExtra exposing (opField, opFieldWithDefault)
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| User information of joined users.
|
||||||
|
-}
|
||||||
|
type alias RoomMember =
|
||||||
|
{ avatarUrl : Maybe String
|
||||||
|
, displayName : Maybe String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeRoomMember : RoomMember -> E.Value
|
||||||
|
encodeRoomMember data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "avatar_url", Maybe.map E.string data.avatarUrl )
|
||||||
|
, ( "display_name", Maybe.map E.string data.displayName )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
roomMemberDecoder : D.Decoder RoomMember
|
||||||
|
roomMemberDecoder =
|
||||||
|
D.map2
|
||||||
|
(\a b ->
|
||||||
|
{ avatarUrl = a, displayName = b }
|
||||||
|
)
|
||||||
|
(opField "avatar_url" D.string)
|
||||||
|
(opField "display_name" D.string)
|
||||||
|
|
||||||
|
|
||||||
|
{-| The dictionary containing all room member data.
|
||||||
|
-}
|
||||||
|
type alias RoomMemberList =
|
||||||
|
{ joined : Dict String RoomMember
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeRoomMemberList : RoomMemberList -> E.Value
|
||||||
|
encodeRoomMemberList data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "joined", Just <| E.dict identity encodeRoomMember data.joined )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
roomMemberListDecoder : D.Decoder RoomMemberList
|
||||||
|
roomMemberListDecoder =
|
||||||
|
D.map
|
||||||
|
(\a ->
|
||||||
|
{ joined = a }
|
||||||
|
)
|
||||||
|
(opFieldWithDefault "joined" Dict.empty (D.dict roomMemberDecoder))
|
|
@ -0,0 +1,17 @@
|
||||||
|
version: v1.2
|
||||||
|
name: Objects
|
||||||
|
objects:
|
||||||
|
RoomMemberList:
|
||||||
|
description: The dictionary containing all room member data.
|
||||||
|
fields:
|
||||||
|
joined:
|
||||||
|
type: "{RoomMember}"
|
||||||
|
required: false
|
||||||
|
default: Dict.empty
|
||||||
|
RoomMember:
|
||||||
|
description: User information of joined users.
|
||||||
|
fields:
|
||||||
|
avatar_url:
|
||||||
|
type: string
|
||||||
|
display_name:
|
||||||
|
type: string
|
|
@ -0,0 +1,69 @@
|
||||||
|
module Internal.Api.JoinedMembers.V1_2.SpecObjects exposing
|
||||||
|
( RoomMember
|
||||||
|
, RoomMemberList
|
||||||
|
, encodeRoomMember
|
||||||
|
, encodeRoomMemberList
|
||||||
|
, roomMemberDecoder
|
||||||
|
, roomMemberListDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'SpecObjects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Dict exposing (Dict)
|
||||||
|
import Internal.Tools.DecodeExtra exposing (opField, opFieldWithDefault)
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| User information of joined users.
|
||||||
|
-}
|
||||||
|
type alias RoomMember =
|
||||||
|
{ avatarUrl : Maybe String
|
||||||
|
, displayName : Maybe String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeRoomMember : RoomMember -> E.Value
|
||||||
|
encodeRoomMember data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "avatar_url", Maybe.map E.string data.avatarUrl )
|
||||||
|
, ( "display_name", Maybe.map E.string data.displayName )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
roomMemberDecoder : D.Decoder RoomMember
|
||||||
|
roomMemberDecoder =
|
||||||
|
D.map2
|
||||||
|
(\a b ->
|
||||||
|
{ avatarUrl = a, displayName = b }
|
||||||
|
)
|
||||||
|
(opField "avatar_url" D.string)
|
||||||
|
(opField "display_name" D.string)
|
||||||
|
|
||||||
|
|
||||||
|
{-| The dictionary containing all room member data.
|
||||||
|
-}
|
||||||
|
type alias RoomMemberList =
|
||||||
|
{ joined : Dict String RoomMember
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeRoomMemberList : RoomMemberList -> E.Value
|
||||||
|
encodeRoomMemberList data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "joined", Just <| E.dict identity encodeRoomMember data.joined )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
roomMemberListDecoder : D.Decoder RoomMemberList
|
||||||
|
roomMemberListDecoder =
|
||||||
|
D.map
|
||||||
|
(\a ->
|
||||||
|
{ joined = a }
|
||||||
|
)
|
||||||
|
(opFieldWithDefault "joined" Dict.empty (D.dict roomMemberDecoder))
|
|
@ -0,0 +1,17 @@
|
||||||
|
version: v1.2
|
||||||
|
name: SpecObjects
|
||||||
|
objects:
|
||||||
|
RoomMemberList:
|
||||||
|
description: The dictionary containing all room member data.
|
||||||
|
fields:
|
||||||
|
joined:
|
||||||
|
type: "{RoomMember}"
|
||||||
|
required: false
|
||||||
|
default: Dict.empty
|
||||||
|
RoomMember:
|
||||||
|
description: User information of joined users.
|
||||||
|
fields:
|
||||||
|
avatar_url:
|
||||||
|
type: string
|
||||||
|
display_name:
|
||||||
|
type: string
|
|
@ -0,0 +1,9 @@
|
||||||
|
module Internal.Api.JoinedMembers.V1_2.Upcast exposing (..)
|
||||||
|
|
||||||
|
import Dict
|
||||||
|
import Internal.Api.JoinedMembers.V1_2.Objects as O
|
||||||
|
|
||||||
|
|
||||||
|
upcast : () -> O.RoomMemberList
|
||||||
|
upcast _ =
|
||||||
|
{ joined = Dict.empty }
|
|
@ -0,0 +1,18 @@
|
||||||
|
module Internal.Api.JoinedMembers.V1_3.Api exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.JoinedMembers.Api as Api
|
||||||
|
import Internal.Api.JoinedMembers.V1_2.Objects as PO
|
||||||
|
import Internal.Api.JoinedMembers.V1_3.Convert as C
|
||||||
|
import Internal.Api.JoinedMembers.V1_3.Objects as O
|
||||||
|
import Internal.Api.JoinedMembers.V1_3.SpecObjects as SO
|
||||||
|
import Internal.Api.JoinedMembers.V1_3.Upcast as U
|
||||||
|
import Internal.Api.VersionControl as V
|
||||||
|
|
||||||
|
|
||||||
|
packet : V.SingleVersion Api.JoinedMembersInputV1 PO.RoomMemberList Api.JoinedMembersInputV1 O.RoomMemberList
|
||||||
|
packet =
|
||||||
|
{ version = "v1.3"
|
||||||
|
, downcast = identity
|
||||||
|
, current = Api.joinedMembersInputV1 SO.roomMemberListDecoder C.convert
|
||||||
|
, upcast = U.upcast
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
module Internal.Api.JoinedMembers.V1_3.Convert exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.JoinedMembers.V1_3.Objects as O
|
||||||
|
import Internal.Api.JoinedMembers.V1_3.SpecObjects as SO
|
||||||
|
|
||||||
|
|
||||||
|
convert : SO.RoomMemberList -> O.RoomMemberList
|
||||||
|
convert =
|
||||||
|
identity
|
|
@ -0,0 +1,69 @@
|
||||||
|
module Internal.Api.JoinedMembers.V1_3.Objects exposing
|
||||||
|
( RoomMember
|
||||||
|
, RoomMemberList
|
||||||
|
, encodeRoomMember
|
||||||
|
, encodeRoomMemberList
|
||||||
|
, roomMemberDecoder
|
||||||
|
, roomMemberListDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'Objects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Dict exposing (Dict)
|
||||||
|
import Internal.Tools.DecodeExtra exposing (opField, opFieldWithDefault)
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| User information of joined users.
|
||||||
|
-}
|
||||||
|
type alias RoomMember =
|
||||||
|
{ avatarUrl : Maybe String
|
||||||
|
, displayName : Maybe String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeRoomMember : RoomMember -> E.Value
|
||||||
|
encodeRoomMember data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "avatar_url", Maybe.map E.string data.avatarUrl )
|
||||||
|
, ( "display_name", Maybe.map E.string data.displayName )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
roomMemberDecoder : D.Decoder RoomMember
|
||||||
|
roomMemberDecoder =
|
||||||
|
D.map2
|
||||||
|
(\a b ->
|
||||||
|
{ avatarUrl = a, displayName = b }
|
||||||
|
)
|
||||||
|
(opField "avatar_url" D.string)
|
||||||
|
(opField "display_name" D.string)
|
||||||
|
|
||||||
|
|
||||||
|
{-| The dictionary containing all room member data.
|
||||||
|
-}
|
||||||
|
type alias RoomMemberList =
|
||||||
|
{ joined : Dict String RoomMember
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeRoomMemberList : RoomMemberList -> E.Value
|
||||||
|
encodeRoomMemberList data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "joined", Just <| E.dict identity encodeRoomMember data.joined )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
roomMemberListDecoder : D.Decoder RoomMemberList
|
||||||
|
roomMemberListDecoder =
|
||||||
|
D.map
|
||||||
|
(\a ->
|
||||||
|
{ joined = a }
|
||||||
|
)
|
||||||
|
(opFieldWithDefault "joined" Dict.empty (D.dict roomMemberDecoder))
|
|
@ -0,0 +1,17 @@
|
||||||
|
version: v1.3
|
||||||
|
name: Objects
|
||||||
|
objects:
|
||||||
|
RoomMemberList:
|
||||||
|
description: The dictionary containing all room member data.
|
||||||
|
fields:
|
||||||
|
joined:
|
||||||
|
type: "{RoomMember}"
|
||||||
|
required: false
|
||||||
|
default: Dict.empty
|
||||||
|
RoomMember:
|
||||||
|
description: User information of joined users.
|
||||||
|
fields:
|
||||||
|
avatar_url:
|
||||||
|
type: string
|
||||||
|
display_name:
|
||||||
|
type: string
|
|
@ -0,0 +1,69 @@
|
||||||
|
module Internal.Api.JoinedMembers.V1_3.SpecObjects exposing
|
||||||
|
( RoomMember
|
||||||
|
, RoomMemberList
|
||||||
|
, encodeRoomMember
|
||||||
|
, encodeRoomMemberList
|
||||||
|
, roomMemberDecoder
|
||||||
|
, roomMemberListDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'SpecObjects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Dict exposing (Dict)
|
||||||
|
import Internal.Tools.DecodeExtra exposing (opField, opFieldWithDefault)
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| User information of joined users.
|
||||||
|
-}
|
||||||
|
type alias RoomMember =
|
||||||
|
{ avatarUrl : Maybe String
|
||||||
|
, displayName : Maybe String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeRoomMember : RoomMember -> E.Value
|
||||||
|
encodeRoomMember data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "avatar_url", Maybe.map E.string data.avatarUrl )
|
||||||
|
, ( "display_name", Maybe.map E.string data.displayName )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
roomMemberDecoder : D.Decoder RoomMember
|
||||||
|
roomMemberDecoder =
|
||||||
|
D.map2
|
||||||
|
(\a b ->
|
||||||
|
{ avatarUrl = a, displayName = b }
|
||||||
|
)
|
||||||
|
(opField "avatar_url" D.string)
|
||||||
|
(opField "display_name" D.string)
|
||||||
|
|
||||||
|
|
||||||
|
{-| The dictionary containing all room member data.
|
||||||
|
-}
|
||||||
|
type alias RoomMemberList =
|
||||||
|
{ joined : Dict String RoomMember
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeRoomMemberList : RoomMemberList -> E.Value
|
||||||
|
encodeRoomMemberList data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "joined", Just <| E.dict identity encodeRoomMember data.joined )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
roomMemberListDecoder : D.Decoder RoomMemberList
|
||||||
|
roomMemberListDecoder =
|
||||||
|
D.map
|
||||||
|
(\a ->
|
||||||
|
{ joined = a }
|
||||||
|
)
|
||||||
|
(opFieldWithDefault "joined" Dict.empty (D.dict roomMemberDecoder))
|
|
@ -0,0 +1,17 @@
|
||||||
|
version: v1.3
|
||||||
|
name: SpecObjects
|
||||||
|
objects:
|
||||||
|
RoomMemberList:
|
||||||
|
description: The dictionary containing all room member data.
|
||||||
|
fields:
|
||||||
|
joined:
|
||||||
|
type: "{RoomMember}"
|
||||||
|
required: false
|
||||||
|
default: Dict.empty
|
||||||
|
RoomMember:
|
||||||
|
description: User information of joined users.
|
||||||
|
fields:
|
||||||
|
avatar_url:
|
||||||
|
type: string
|
||||||
|
display_name:
|
||||||
|
type: string
|
|
@ -0,0 +1,9 @@
|
||||||
|
module Internal.Api.JoinedMembers.V1_3.Upcast exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.JoinedMembers.V1_2.Objects as PO
|
||||||
|
import Internal.Api.JoinedMembers.V1_3.Objects as O
|
||||||
|
|
||||||
|
|
||||||
|
upcast : PO.RoomMemberList -> O.RoomMemberList
|
||||||
|
upcast =
|
||||||
|
identity
|
|
@ -0,0 +1,18 @@
|
||||||
|
module Internal.Api.JoinedMembers.V1_4.Api exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.JoinedMembers.Api as Api
|
||||||
|
import Internal.Api.JoinedMembers.V1_3.Objects as PO
|
||||||
|
import Internal.Api.JoinedMembers.V1_4.Convert as C
|
||||||
|
import Internal.Api.JoinedMembers.V1_4.Objects as O
|
||||||
|
import Internal.Api.JoinedMembers.V1_4.SpecObjects as SO
|
||||||
|
import Internal.Api.JoinedMembers.V1_4.Upcast as U
|
||||||
|
import Internal.Api.VersionControl as V
|
||||||
|
|
||||||
|
|
||||||
|
packet : V.SingleVersion Api.JoinedMembersInputV1 PO.RoomMemberList Api.JoinedMembersInputV1 O.RoomMemberList
|
||||||
|
packet =
|
||||||
|
{ version = "v1.4"
|
||||||
|
, downcast = identity
|
||||||
|
, current = Api.joinedMembersInputV1 SO.roomMemberListDecoder C.convert
|
||||||
|
, upcast = U.upcast
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
module Internal.Api.JoinedMembers.V1_4.Convert exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.JoinedMembers.V1_4.Objects as O
|
||||||
|
import Internal.Api.JoinedMembers.V1_4.SpecObjects as SO
|
||||||
|
|
||||||
|
|
||||||
|
convert : SO.RoomMemberList -> O.RoomMemberList
|
||||||
|
convert =
|
||||||
|
identity
|
|
@ -0,0 +1,69 @@
|
||||||
|
module Internal.Api.JoinedMembers.V1_4.Objects exposing
|
||||||
|
( RoomMember
|
||||||
|
, RoomMemberList
|
||||||
|
, encodeRoomMember
|
||||||
|
, encodeRoomMemberList
|
||||||
|
, roomMemberDecoder
|
||||||
|
, roomMemberListDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'Objects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Dict exposing (Dict)
|
||||||
|
import Internal.Tools.DecodeExtra exposing (opField, opFieldWithDefault)
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| User information of joined users.
|
||||||
|
-}
|
||||||
|
type alias RoomMember =
|
||||||
|
{ avatarUrl : Maybe String
|
||||||
|
, displayName : Maybe String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeRoomMember : RoomMember -> E.Value
|
||||||
|
encodeRoomMember data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "avatar_url", Maybe.map E.string data.avatarUrl )
|
||||||
|
, ( "display_name", Maybe.map E.string data.displayName )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
roomMemberDecoder : D.Decoder RoomMember
|
||||||
|
roomMemberDecoder =
|
||||||
|
D.map2
|
||||||
|
(\a b ->
|
||||||
|
{ avatarUrl = a, displayName = b }
|
||||||
|
)
|
||||||
|
(opField "avatar_url" D.string)
|
||||||
|
(opField "display_name" D.string)
|
||||||
|
|
||||||
|
|
||||||
|
{-| The dictionary containing all room member data.
|
||||||
|
-}
|
||||||
|
type alias RoomMemberList =
|
||||||
|
{ joined : Dict String RoomMember
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeRoomMemberList : RoomMemberList -> E.Value
|
||||||
|
encodeRoomMemberList data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "joined", Just <| E.dict identity encodeRoomMember data.joined )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
roomMemberListDecoder : D.Decoder RoomMemberList
|
||||||
|
roomMemberListDecoder =
|
||||||
|
D.map
|
||||||
|
(\a ->
|
||||||
|
{ joined = a }
|
||||||
|
)
|
||||||
|
(opFieldWithDefault "joined" Dict.empty (D.dict roomMemberDecoder))
|
|
@ -0,0 +1,17 @@
|
||||||
|
version: v1.4
|
||||||
|
name: Objects
|
||||||
|
objects:
|
||||||
|
RoomMemberList:
|
||||||
|
description: The dictionary containing all room member data.
|
||||||
|
fields:
|
||||||
|
joined:
|
||||||
|
type: "{RoomMember}"
|
||||||
|
required: false
|
||||||
|
default: Dict.empty
|
||||||
|
RoomMember:
|
||||||
|
description: User information of joined users.
|
||||||
|
fields:
|
||||||
|
avatar_url:
|
||||||
|
type: string
|
||||||
|
display_name:
|
||||||
|
type: string
|
|
@ -0,0 +1,69 @@
|
||||||
|
module Internal.Api.JoinedMembers.V1_4.SpecObjects exposing
|
||||||
|
( RoomMember
|
||||||
|
, RoomMemberList
|
||||||
|
, encodeRoomMember
|
||||||
|
, encodeRoomMemberList
|
||||||
|
, roomMemberDecoder
|
||||||
|
, roomMemberListDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'SpecObjects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Dict exposing (Dict)
|
||||||
|
import Internal.Tools.DecodeExtra exposing (opField, opFieldWithDefault)
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| User information of joined users.
|
||||||
|
-}
|
||||||
|
type alias RoomMember =
|
||||||
|
{ avatarUrl : Maybe String
|
||||||
|
, displayName : Maybe String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeRoomMember : RoomMember -> E.Value
|
||||||
|
encodeRoomMember data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "avatar_url", Maybe.map E.string data.avatarUrl )
|
||||||
|
, ( "display_name", Maybe.map E.string data.displayName )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
roomMemberDecoder : D.Decoder RoomMember
|
||||||
|
roomMemberDecoder =
|
||||||
|
D.map2
|
||||||
|
(\a b ->
|
||||||
|
{ avatarUrl = a, displayName = b }
|
||||||
|
)
|
||||||
|
(opField "avatar_url" D.string)
|
||||||
|
(opField "display_name" D.string)
|
||||||
|
|
||||||
|
|
||||||
|
{-| The dictionary containing all room member data.
|
||||||
|
-}
|
||||||
|
type alias RoomMemberList =
|
||||||
|
{ joined : Dict String RoomMember
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeRoomMemberList : RoomMemberList -> E.Value
|
||||||
|
encodeRoomMemberList data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "joined", Just <| E.dict identity encodeRoomMember data.joined )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
roomMemberListDecoder : D.Decoder RoomMemberList
|
||||||
|
roomMemberListDecoder =
|
||||||
|
D.map
|
||||||
|
(\a ->
|
||||||
|
{ joined = a }
|
||||||
|
)
|
||||||
|
(opFieldWithDefault "joined" Dict.empty (D.dict roomMemberDecoder))
|
|
@ -0,0 +1,17 @@
|
||||||
|
version: v1.4
|
||||||
|
name: SpecObjects
|
||||||
|
objects:
|
||||||
|
RoomMemberList:
|
||||||
|
description: The dictionary containing all room member data.
|
||||||
|
fields:
|
||||||
|
joined:
|
||||||
|
type: "{RoomMember}"
|
||||||
|
required: false
|
||||||
|
default: Dict.empty
|
||||||
|
RoomMember:
|
||||||
|
description: User information of joined users.
|
||||||
|
fields:
|
||||||
|
avatar_url:
|
||||||
|
type: string
|
||||||
|
display_name:
|
||||||
|
type: string
|
|
@ -0,0 +1,9 @@
|
||||||
|
module Internal.Api.JoinedMembers.V1_4.Upcast exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.JoinedMembers.V1_3.Objects as PO
|
||||||
|
import Internal.Api.JoinedMembers.V1_4.Objects as O
|
||||||
|
|
||||||
|
|
||||||
|
upcast : PO.RoomMemberList -> O.RoomMemberList
|
||||||
|
upcast =
|
||||||
|
identity
|
|
@ -0,0 +1,18 @@
|
||||||
|
module Internal.Api.JoinedMembers.V1_5.Api exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.JoinedMembers.Api as Api
|
||||||
|
import Internal.Api.JoinedMembers.V1_4.Objects as PO
|
||||||
|
import Internal.Api.JoinedMembers.V1_5.Convert as C
|
||||||
|
import Internal.Api.JoinedMembers.V1_5.Objects as O
|
||||||
|
import Internal.Api.JoinedMembers.V1_5.SpecObjects as SO
|
||||||
|
import Internal.Api.JoinedMembers.V1_5.Upcast as U
|
||||||
|
import Internal.Api.VersionControl as V
|
||||||
|
|
||||||
|
|
||||||
|
packet : V.SingleVersion Api.JoinedMembersInputV1 PO.RoomMemberList Api.JoinedMembersInputV1 O.RoomMemberList
|
||||||
|
packet =
|
||||||
|
{ version = "v1.5"
|
||||||
|
, downcast = identity
|
||||||
|
, current = Api.joinedMembersInputV1 SO.roomMemberListDecoder C.convert
|
||||||
|
, upcast = U.upcast
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
module Internal.Api.JoinedMembers.V1_5.Convert exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.JoinedMembers.V1_5.Objects as O
|
||||||
|
import Internal.Api.JoinedMembers.V1_5.SpecObjects as SO
|
||||||
|
|
||||||
|
|
||||||
|
convert : SO.RoomMemberList -> O.RoomMemberList
|
||||||
|
convert =
|
||||||
|
identity
|
|
@ -0,0 +1,69 @@
|
||||||
|
module Internal.Api.JoinedMembers.V1_5.Objects exposing
|
||||||
|
( RoomMember
|
||||||
|
, RoomMemberList
|
||||||
|
, encodeRoomMember
|
||||||
|
, encodeRoomMemberList
|
||||||
|
, roomMemberDecoder
|
||||||
|
, roomMemberListDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'Objects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Dict exposing (Dict)
|
||||||
|
import Internal.Tools.DecodeExtra exposing (opField, opFieldWithDefault)
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| User information of joined users.
|
||||||
|
-}
|
||||||
|
type alias RoomMember =
|
||||||
|
{ avatarUrl : Maybe String
|
||||||
|
, displayName : Maybe String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeRoomMember : RoomMember -> E.Value
|
||||||
|
encodeRoomMember data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "avatar_url", Maybe.map E.string data.avatarUrl )
|
||||||
|
, ( "display_name", Maybe.map E.string data.displayName )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
roomMemberDecoder : D.Decoder RoomMember
|
||||||
|
roomMemberDecoder =
|
||||||
|
D.map2
|
||||||
|
(\a b ->
|
||||||
|
{ avatarUrl = a, displayName = b }
|
||||||
|
)
|
||||||
|
(opField "avatar_url" D.string)
|
||||||
|
(opField "display_name" D.string)
|
||||||
|
|
||||||
|
|
||||||
|
{-| The dictionary containing all room member data.
|
||||||
|
-}
|
||||||
|
type alias RoomMemberList =
|
||||||
|
{ joined : Dict String RoomMember
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeRoomMemberList : RoomMemberList -> E.Value
|
||||||
|
encodeRoomMemberList data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "joined", Just <| E.dict identity encodeRoomMember data.joined )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
roomMemberListDecoder : D.Decoder RoomMemberList
|
||||||
|
roomMemberListDecoder =
|
||||||
|
D.map
|
||||||
|
(\a ->
|
||||||
|
{ joined = a }
|
||||||
|
)
|
||||||
|
(opFieldWithDefault "joined" Dict.empty (D.dict roomMemberDecoder))
|
|
@ -0,0 +1,17 @@
|
||||||
|
version: v1.5
|
||||||
|
name: Objects
|
||||||
|
objects:
|
||||||
|
RoomMemberList:
|
||||||
|
description: The dictionary containing all room member data.
|
||||||
|
fields:
|
||||||
|
joined:
|
||||||
|
type: "{RoomMember}"
|
||||||
|
required: false
|
||||||
|
default: Dict.empty
|
||||||
|
RoomMember:
|
||||||
|
description: User information of joined users.
|
||||||
|
fields:
|
||||||
|
avatar_url:
|
||||||
|
type: string
|
||||||
|
display_name:
|
||||||
|
type: string
|
|
@ -0,0 +1,69 @@
|
||||||
|
module Internal.Api.JoinedMembers.V1_5.SpecObjects exposing
|
||||||
|
( RoomMember
|
||||||
|
, RoomMemberList
|
||||||
|
, encodeRoomMember
|
||||||
|
, encodeRoomMemberList
|
||||||
|
, roomMemberDecoder
|
||||||
|
, roomMemberListDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'SpecObjects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Dict exposing (Dict)
|
||||||
|
import Internal.Tools.DecodeExtra exposing (opField, opFieldWithDefault)
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| User information of joined users.
|
||||||
|
-}
|
||||||
|
type alias RoomMember =
|
||||||
|
{ avatarUrl : Maybe String
|
||||||
|
, displayName : Maybe String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeRoomMember : RoomMember -> E.Value
|
||||||
|
encodeRoomMember data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "avatar_url", Maybe.map E.string data.avatarUrl )
|
||||||
|
, ( "display_name", Maybe.map E.string data.displayName )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
roomMemberDecoder : D.Decoder RoomMember
|
||||||
|
roomMemberDecoder =
|
||||||
|
D.map2
|
||||||
|
(\a b ->
|
||||||
|
{ avatarUrl = a, displayName = b }
|
||||||
|
)
|
||||||
|
(opField "avatar_url" D.string)
|
||||||
|
(opField "display_name" D.string)
|
||||||
|
|
||||||
|
|
||||||
|
{-| The dictionary containing all room member data.
|
||||||
|
-}
|
||||||
|
type alias RoomMemberList =
|
||||||
|
{ joined : Dict String RoomMember
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeRoomMemberList : RoomMemberList -> E.Value
|
||||||
|
encodeRoomMemberList data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "joined", Just <| E.dict identity encodeRoomMember data.joined )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
roomMemberListDecoder : D.Decoder RoomMemberList
|
||||||
|
roomMemberListDecoder =
|
||||||
|
D.map
|
||||||
|
(\a ->
|
||||||
|
{ joined = a }
|
||||||
|
)
|
||||||
|
(opFieldWithDefault "joined" Dict.empty (D.dict roomMemberDecoder))
|
|
@ -0,0 +1,17 @@
|
||||||
|
version: v1.5
|
||||||
|
name: SpecObjects
|
||||||
|
objects:
|
||||||
|
RoomMemberList:
|
||||||
|
description: The dictionary containing all room member data.
|
||||||
|
fields:
|
||||||
|
joined:
|
||||||
|
type: "{RoomMember}"
|
||||||
|
required: false
|
||||||
|
default: Dict.empty
|
||||||
|
RoomMember:
|
||||||
|
description: User information of joined users.
|
||||||
|
fields:
|
||||||
|
avatar_url:
|
||||||
|
type: string
|
||||||
|
display_name:
|
||||||
|
type: string
|
|
@ -0,0 +1,9 @@
|
||||||
|
module Internal.Api.JoinedMembers.V1_5.Upcast exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.JoinedMembers.V1_4.Objects as PO
|
||||||
|
import Internal.Api.JoinedMembers.V1_5.Objects as O
|
||||||
|
|
||||||
|
|
||||||
|
upcast : PO.RoomMemberList -> O.RoomMemberList
|
||||||
|
upcast =
|
||||||
|
identity
|
|
@ -0,0 +1,284 @@
|
||||||
|
module Internal.Api.Request exposing (..)
|
||||||
|
|
||||||
|
import Http
|
||||||
|
import Internal.Tools.Exceptions as X
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
import Process
|
||||||
|
import Task exposing (Task)
|
||||||
|
import Time
|
||||||
|
import Url.Builder as UrlBuilder
|
||||||
|
|
||||||
|
|
||||||
|
{-| Make a raw API call to a Matrix API.
|
||||||
|
-}
|
||||||
|
rawApiCall :
|
||||||
|
{ headers : Headers
|
||||||
|
, method : String
|
||||||
|
, baseUrl : String
|
||||||
|
, path : String
|
||||||
|
, pathParams : List ( String, String )
|
||||||
|
, queryParams : List QueryParam
|
||||||
|
, bodyParams : List BodyParam
|
||||||
|
, timeout : Maybe Float
|
||||||
|
, decoder : Int -> D.Decoder a
|
||||||
|
}
|
||||||
|
-> Task X.Error a
|
||||||
|
rawApiCall data =
|
||||||
|
Http.task
|
||||||
|
{ method = data.method
|
||||||
|
, headers = fromHeaders data.headers
|
||||||
|
, url = buildUrl data.baseUrl data.path data.pathParams data.queryParams
|
||||||
|
, body = toBody data.bodyParams
|
||||||
|
, resolver = rawApiCallResolver data.decoder
|
||||||
|
, timeout = data.timeout
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
withRateLimits : Int -> Task X.Error a -> Task X.Error a
|
||||||
|
withRateLimits timeout task =
|
||||||
|
Time.now
|
||||||
|
|> Task.onError
|
||||||
|
(\_ -> X.CouldntGetTimestamp |> X.SDKException |> Task.fail)
|
||||||
|
|> Task.andThen
|
||||||
|
(\now ->
|
||||||
|
task
|
||||||
|
|> Task.onError
|
||||||
|
(\err ->
|
||||||
|
case err of
|
||||||
|
X.ServerException (X.M_LIMIT_EXCEEDED data) ->
|
||||||
|
case data.retryAfterMs of
|
||||||
|
Just t ->
|
||||||
|
Process.sleep (toFloat t)
|
||||||
|
|> Task.andThen (\_ -> Time.now)
|
||||||
|
|> Task.andThen
|
||||||
|
(\newNow ->
|
||||||
|
let
|
||||||
|
diff : Int
|
||||||
|
diff =
|
||||||
|
timeout - (Time.posixToMillis newNow - Time.posixToMillis now)
|
||||||
|
in
|
||||||
|
if diff <= 0 then
|
||||||
|
Task.fail err
|
||||||
|
|
||||||
|
else
|
||||||
|
withRateLimits diff task
|
||||||
|
)
|
||||||
|
|
||||||
|
Nothing ->
|
||||||
|
Task.fail err
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
Task.fail err
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
{-| Potential headers to go along with a Matrix API call.
|
||||||
|
-}
|
||||||
|
type Headers
|
||||||
|
= NoHeaders
|
||||||
|
| WithAccessToken String
|
||||||
|
| WithContentType String
|
||||||
|
| WithBoth { accessToken : String, contentType : String }
|
||||||
|
|
||||||
|
|
||||||
|
{-| Turn Headers into useful values
|
||||||
|
-}
|
||||||
|
fromHeaders : Headers -> List Http.Header
|
||||||
|
fromHeaders h =
|
||||||
|
(case h of
|
||||||
|
NoHeaders ->
|
||||||
|
[ ( "Content-Type", "application/json" ) ]
|
||||||
|
|
||||||
|
WithAccessToken token ->
|
||||||
|
[ ( "Content-Type", "application/json" ), ( "Authorization", "Bearer " ++ token ) ]
|
||||||
|
|
||||||
|
WithContentType contentType ->
|
||||||
|
[ ( "Content-Type", contentType ) ]
|
||||||
|
|
||||||
|
WithBoth data ->
|
||||||
|
[ ( "Content-Type", data.contentType ), ( "Authorization", "Bearer " ++ data.accessToken ) ]
|
||||||
|
)
|
||||||
|
|> List.map (\( a, b ) -> Http.header a b)
|
||||||
|
|
||||||
|
|
||||||
|
{-| -}
|
||||||
|
type QueryParam
|
||||||
|
= QueryParamString String String
|
||||||
|
| OpQueryParamString String (Maybe String)
|
||||||
|
| QueryParamInt String Int
|
||||||
|
| OpQueryParamInt String (Maybe Int)
|
||||||
|
| QueryParamBool String Bool
|
||||||
|
| OpQueryParamBool String (Maybe Bool)
|
||||||
|
|
||||||
|
|
||||||
|
fromQueryParam : QueryParam -> Maybe UrlBuilder.QueryParameter
|
||||||
|
fromQueryParam param =
|
||||||
|
case param of
|
||||||
|
QueryParamString key value ->
|
||||||
|
Just <| UrlBuilder.string key value
|
||||||
|
|
||||||
|
OpQueryParamString key value ->
|
||||||
|
Maybe.map (UrlBuilder.string key) value
|
||||||
|
|
||||||
|
QueryParamInt key value ->
|
||||||
|
Just <| UrlBuilder.int key value
|
||||||
|
|
||||||
|
OpQueryParamInt key value ->
|
||||||
|
Maybe.map (UrlBuilder.int key) value
|
||||||
|
|
||||||
|
QueryParamBool key value ->
|
||||||
|
if value then
|
||||||
|
Just <| UrlBuilder.string key "true"
|
||||||
|
|
||||||
|
else
|
||||||
|
Just <| UrlBuilder.string key "false"
|
||||||
|
|
||||||
|
OpQueryParamBool key value ->
|
||||||
|
Maybe.andThen (QueryParamBool key >> fromQueryParam) value
|
||||||
|
|
||||||
|
|
||||||
|
fromQueryParams : List QueryParam -> List UrlBuilder.QueryParameter
|
||||||
|
fromQueryParams =
|
||||||
|
List.map fromQueryParam
|
||||||
|
>> List.filterMap identity
|
||||||
|
|
||||||
|
|
||||||
|
buildUrl : String -> String -> List ( String, String ) -> List QueryParam -> String
|
||||||
|
buildUrl baseUrl path pathParams queryParams =
|
||||||
|
let
|
||||||
|
fullPath : String
|
||||||
|
fullPath =
|
||||||
|
List.foldl
|
||||||
|
(\( a, b ) -> String.replace ("{" ++ a ++ "}") b)
|
||||||
|
path
|
||||||
|
pathParams
|
||||||
|
|> (\s ->
|
||||||
|
if String.startsWith "/" s then
|
||||||
|
String.dropLeft 1 s
|
||||||
|
|
||||||
|
else
|
||||||
|
s
|
||||||
|
)
|
||||||
|
in
|
||||||
|
UrlBuilder.crossOrigin baseUrl [ fullPath ] (fromQueryParams queryParams)
|
||||||
|
|
||||||
|
|
||||||
|
{-| Type that gathers all parameters that go in the request body.
|
||||||
|
-}
|
||||||
|
type BodyParam
|
||||||
|
= OptionalString String (Maybe String)
|
||||||
|
| RequiredString String String
|
||||||
|
| OptionalInt String (Maybe Int)
|
||||||
|
| RequiredInt String Int
|
||||||
|
| OptionalValue String (Maybe E.Value)
|
||||||
|
| RequiredValue String E.Value
|
||||||
|
|
||||||
|
|
||||||
|
encodeBodyParam : BodyParam -> ( String, Maybe E.Value )
|
||||||
|
encodeBodyParam b =
|
||||||
|
case b of
|
||||||
|
OptionalString h s ->
|
||||||
|
( h, Maybe.map E.string s )
|
||||||
|
|
||||||
|
RequiredString h s ->
|
||||||
|
( h, Just <| E.string s )
|
||||||
|
|
||||||
|
OptionalInt h i ->
|
||||||
|
( h, Maybe.map E.int i )
|
||||||
|
|
||||||
|
RequiredInt h i ->
|
||||||
|
( h, Just <| E.int i )
|
||||||
|
|
||||||
|
OptionalValue h v ->
|
||||||
|
( h, v )
|
||||||
|
|
||||||
|
RequiredValue h v ->
|
||||||
|
( h, Just v )
|
||||||
|
|
||||||
|
|
||||||
|
toBody : List BodyParam -> Http.Body
|
||||||
|
toBody params =
|
||||||
|
case params of
|
||||||
|
(RequiredValue "*" v) :: [] ->
|
||||||
|
Http.jsonBody v
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
List.map encodeBodyParam params
|
||||||
|
|> maybeObject
|
||||||
|
|> Http.jsonBody
|
||||||
|
|
||||||
|
|
||||||
|
{-| Create a body object based on optionally provided values.
|
||||||
|
-}
|
||||||
|
maybeObject : List ( String, Maybe E.Value ) -> E.Value
|
||||||
|
maybeObject =
|
||||||
|
List.filterMap
|
||||||
|
(\( name, value ) ->
|
||||||
|
case value of
|
||||||
|
Just v ->
|
||||||
|
Just ( name, v )
|
||||||
|
|
||||||
|
_ ->
|
||||||
|
Nothing
|
||||||
|
)
|
||||||
|
>> E.object
|
||||||
|
|
||||||
|
|
||||||
|
rawApiCallResolver : (Int -> D.Decoder a) -> Http.Resolver X.Error a
|
||||||
|
rawApiCallResolver decoder =
|
||||||
|
Http.stringResolver
|
||||||
|
(\response ->
|
||||||
|
case response of
|
||||||
|
Http.BadUrl_ s ->
|
||||||
|
Http.BadUrl s
|
||||||
|
|> X.InternetException
|
||||||
|
|> Err
|
||||||
|
|
||||||
|
Http.Timeout_ ->
|
||||||
|
Http.Timeout
|
||||||
|
|> X.InternetException
|
||||||
|
|> Err
|
||||||
|
|
||||||
|
Http.NetworkError_ ->
|
||||||
|
Http.NetworkError
|
||||||
|
|> X.InternetException
|
||||||
|
|> Err
|
||||||
|
|
||||||
|
Http.BadStatus_ metadata body ->
|
||||||
|
decodeServerResponse (decoder metadata.statusCode) body
|
||||||
|
|
||||||
|
Http.GoodStatus_ metadata body ->
|
||||||
|
decodeServerResponse (decoder metadata.statusCode) body
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
decodeServerResponse : D.Decoder a -> String -> Result X.Error a
|
||||||
|
decodeServerResponse decoder body =
|
||||||
|
case D.decodeString D.value body of
|
||||||
|
Err e ->
|
||||||
|
e
|
||||||
|
|> D.errorToString
|
||||||
|
|> X.ServerReturnsBadJSON
|
||||||
|
|> X.SDKException
|
||||||
|
|> Err
|
||||||
|
|
||||||
|
Ok _ ->
|
||||||
|
case D.decodeString decoder body of
|
||||||
|
Ok v ->
|
||||||
|
Ok v
|
||||||
|
|
||||||
|
Err err ->
|
||||||
|
-- The response is not valid!
|
||||||
|
-- Check if it is a valid error type as defined in spec.
|
||||||
|
case D.decodeString X.errorCatches body of
|
||||||
|
Ok v ->
|
||||||
|
Err (X.ServerException v)
|
||||||
|
|
||||||
|
Err _ ->
|
||||||
|
err
|
||||||
|
|> D.errorToString
|
||||||
|
|> X.ServerReturnsBadJSON
|
||||||
|
|> X.SDKException
|
||||||
|
|> Err
|
|
@ -0,0 +1,35 @@
|
||||||
|
module Internal.Api.SendMessageEvent.Api exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.Request as R
|
||||||
|
import Internal.Tools.Exceptions as X
|
||||||
|
import Json.Decode as D
|
||||||
|
import Task exposing (Task)
|
||||||
|
|
||||||
|
|
||||||
|
type alias SendMessageEventInputV1 =
|
||||||
|
{ accessToken : String
|
||||||
|
, baseUrl : String
|
||||||
|
, content : D.Value
|
||||||
|
, eventType : String
|
||||||
|
, roomId : String
|
||||||
|
, transactionId : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sendMessageEventV1 : D.Decoder a -> (a -> b) -> SendMessageEventInputV1 -> Task X.Error b
|
||||||
|
sendMessageEventV1 decoder mapping data =
|
||||||
|
R.rawApiCall
|
||||||
|
{ headers = R.WithAccessToken data.accessToken
|
||||||
|
, method = "PUT"
|
||||||
|
, baseUrl = data.baseUrl
|
||||||
|
, path = "/_matrix/client/v3/rooms/{roomId}/send/{eventType}/{txnId}"
|
||||||
|
, pathParams =
|
||||||
|
[ ( "eventType", data.eventType )
|
||||||
|
, ( "roomId", data.roomId )
|
||||||
|
, ( "txnId", data.transactionId )
|
||||||
|
]
|
||||||
|
, queryParams = []
|
||||||
|
, bodyParams = [ R.RequiredValue "*" data.content ]
|
||||||
|
, timeout = Nothing
|
||||||
|
, decoder = \_ -> D.map mapping decoder
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
module Internal.Api.SendMessageEvent.Main exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.SendMessageEvent.Api as Api
|
||||||
|
import Internal.Api.SendMessageEvent.V1_2.Api as V1_2
|
||||||
|
import Internal.Api.SendMessageEvent.V1_3.Api as V1_3
|
||||||
|
import Internal.Api.SendMessageEvent.V1_4.Api as V1_4
|
||||||
|
import Internal.Api.SendMessageEvent.V1_5.Api as V1_5
|
||||||
|
import Internal.Api.SendMessageEvent.V1_5.Objects as O
|
||||||
|
import Internal.Api.VersionControl as V
|
||||||
|
import Internal.Tools.Exceptions as X
|
||||||
|
import Task exposing (Task)
|
||||||
|
|
||||||
|
|
||||||
|
sendMessageEvent : List String -> SendMessageEventInput -> SendMessageEventOutput
|
||||||
|
sendMessageEvent =
|
||||||
|
V.firstVersion V1_2.packet
|
||||||
|
|> V.updateWith V1_3.packet
|
||||||
|
|> V.updateWith V1_4.packet
|
||||||
|
|> V.updateWith V1_5.packet
|
||||||
|
|> V.toFunction
|
||||||
|
|
||||||
|
|
||||||
|
type alias SendMessageEventInput =
|
||||||
|
Api.SendMessageEventInputV1
|
||||||
|
|
||||||
|
|
||||||
|
type alias SendMessageEventOutput =
|
||||||
|
Task X.Error O.EventResponse
|
|
@ -0,0 +1,16 @@
|
||||||
|
module Internal.Api.SendMessageEvent.V1_2.Api exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.SendMessageEvent.Api as Api
|
||||||
|
import Internal.Api.SendMessageEvent.V1_2.Convert as C
|
||||||
|
import Internal.Api.SendMessageEvent.V1_2.Objects as O
|
||||||
|
import Internal.Api.SendMessageEvent.V1_2.Upcast as U
|
||||||
|
import Internal.Api.VersionControl as V
|
||||||
|
|
||||||
|
|
||||||
|
packet : V.SingleVersion () () Api.SendMessageEventInputV1 O.EventResponse
|
||||||
|
packet =
|
||||||
|
{ version = "v1.2"
|
||||||
|
, downcast = \_ -> ()
|
||||||
|
, current = Api.sendMessageEventV1 O.eventResponseDecoder C.convert
|
||||||
|
, upcast = U.upcast
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
module Internal.Api.SendMessageEvent.V1_2.Convert exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.SendMessageEvent.V1_2.Objects as O
|
||||||
|
import Internal.Api.SendMessageEvent.V1_2.SpecObjects as SO
|
||||||
|
|
||||||
|
|
||||||
|
convert : SO.EventResponse -> O.EventResponse
|
||||||
|
convert =
|
||||||
|
identity
|
|
@ -0,0 +1,38 @@
|
||||||
|
module Internal.Api.SendMessageEvent.V1_2.Objects exposing
|
||||||
|
( EventResponse
|
||||||
|
, encodeEventResponse
|
||||||
|
, eventResponseDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'Objects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| A response confirming that an event has been sent.
|
||||||
|
-}
|
||||||
|
type alias EventResponse =
|
||||||
|
{ eventId : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeEventResponse : EventResponse -> E.Value
|
||||||
|
encodeEventResponse data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "event_id", Just <| E.string data.eventId )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
eventResponseDecoder : D.Decoder EventResponse
|
||||||
|
eventResponseDecoder =
|
||||||
|
D.map
|
||||||
|
(\a ->
|
||||||
|
{ eventId = a }
|
||||||
|
)
|
||||||
|
(D.field "event_id" D.string)
|
|
@ -0,0 +1,9 @@
|
||||||
|
version: v1.2
|
||||||
|
name: Objects
|
||||||
|
objects:
|
||||||
|
EventResponse:
|
||||||
|
description: A response confirming that an event has been sent.
|
||||||
|
fields:
|
||||||
|
event_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
|
@ -0,0 +1,38 @@
|
||||||
|
module Internal.Api.SendMessageEvent.V1_2.SpecObjects exposing
|
||||||
|
( EventResponse
|
||||||
|
, encodeEventResponse
|
||||||
|
, eventResponseDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'SpecObjects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| A response confirming that an event has been sent.
|
||||||
|
-}
|
||||||
|
type alias EventResponse =
|
||||||
|
{ eventId : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeEventResponse : EventResponse -> E.Value
|
||||||
|
encodeEventResponse data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "event_id", Just <| E.string data.eventId )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
eventResponseDecoder : D.Decoder EventResponse
|
||||||
|
eventResponseDecoder =
|
||||||
|
D.map
|
||||||
|
(\a ->
|
||||||
|
{ eventId = a }
|
||||||
|
)
|
||||||
|
(D.field "event_id" D.string)
|
|
@ -0,0 +1,9 @@
|
||||||
|
version: v1.2
|
||||||
|
name: SpecObjects
|
||||||
|
objects:
|
||||||
|
EventResponse:
|
||||||
|
description: A response confirming that an event has been sent.
|
||||||
|
fields:
|
||||||
|
event_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
|
@ -0,0 +1,9 @@
|
||||||
|
module Internal.Api.SendMessageEvent.V1_2.Upcast exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.SendMessageEvent.V1_2.Objects as O
|
||||||
|
import Internal.Config.Leaking as L
|
||||||
|
|
||||||
|
|
||||||
|
upcast : () -> O.EventResponse
|
||||||
|
upcast _ =
|
||||||
|
{ eventId = L.eventId }
|
|
@ -0,0 +1,17 @@
|
||||||
|
module Internal.Api.SendMessageEvent.V1_3.Api exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.SendMessageEvent.Api as Api
|
||||||
|
import Internal.Api.SendMessageEvent.V1_2.Objects as PO
|
||||||
|
import Internal.Api.SendMessageEvent.V1_3.Convert as C
|
||||||
|
import Internal.Api.SendMessageEvent.V1_3.Objects as O
|
||||||
|
import Internal.Api.SendMessageEvent.V1_3.Upcast as U
|
||||||
|
import Internal.Api.VersionControl as V
|
||||||
|
|
||||||
|
|
||||||
|
packet : V.SingleVersion Api.SendMessageEventInputV1 PO.EventResponse Api.SendMessageEventInputV1 O.EventResponse
|
||||||
|
packet =
|
||||||
|
{ version = "v1.3"
|
||||||
|
, downcast = identity
|
||||||
|
, current = Api.sendMessageEventV1 O.eventResponseDecoder C.convert
|
||||||
|
, upcast = U.upcast
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
module Internal.Api.SendMessageEvent.V1_3.Convert exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.SendMessageEvent.V1_3.Objects as O
|
||||||
|
import Internal.Api.SendMessageEvent.V1_3.SpecObjects as SO
|
||||||
|
|
||||||
|
|
||||||
|
convert : SO.EventResponse -> O.EventResponse
|
||||||
|
convert =
|
||||||
|
identity
|
|
@ -0,0 +1,38 @@
|
||||||
|
module Internal.Api.SendMessageEvent.V1_3.Objects exposing
|
||||||
|
( EventResponse
|
||||||
|
, encodeEventResponse
|
||||||
|
, eventResponseDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'Objects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| A response confirming that an event has been sent.
|
||||||
|
-}
|
||||||
|
type alias EventResponse =
|
||||||
|
{ eventId : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeEventResponse : EventResponse -> E.Value
|
||||||
|
encodeEventResponse data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "event_id", Just <| E.string data.eventId )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
eventResponseDecoder : D.Decoder EventResponse
|
||||||
|
eventResponseDecoder =
|
||||||
|
D.map
|
||||||
|
(\a ->
|
||||||
|
{ eventId = a }
|
||||||
|
)
|
||||||
|
(D.field "event_id" D.string)
|
|
@ -0,0 +1,9 @@
|
||||||
|
version: v1.3
|
||||||
|
name: Objects
|
||||||
|
objects:
|
||||||
|
EventResponse:
|
||||||
|
description: A response confirming that an event has been sent.
|
||||||
|
fields:
|
||||||
|
event_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
|
@ -0,0 +1,38 @@
|
||||||
|
module Internal.Api.SendMessageEvent.V1_3.SpecObjects exposing
|
||||||
|
( EventResponse
|
||||||
|
, encodeEventResponse
|
||||||
|
, eventResponseDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'SpecObjects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| A response confirming that an event has been sent.
|
||||||
|
-}
|
||||||
|
type alias EventResponse =
|
||||||
|
{ eventId : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeEventResponse : EventResponse -> E.Value
|
||||||
|
encodeEventResponse data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "event_id", Just <| E.string data.eventId )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
eventResponseDecoder : D.Decoder EventResponse
|
||||||
|
eventResponseDecoder =
|
||||||
|
D.map
|
||||||
|
(\a ->
|
||||||
|
{ eventId = a }
|
||||||
|
)
|
||||||
|
(D.field "event_id" D.string)
|
|
@ -0,0 +1,9 @@
|
||||||
|
version: v1.3
|
||||||
|
name: SpecObjects
|
||||||
|
objects:
|
||||||
|
EventResponse:
|
||||||
|
description: A response confirming that an event has been sent.
|
||||||
|
fields:
|
||||||
|
event_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
|
@ -0,0 +1,9 @@
|
||||||
|
module Internal.Api.SendMessageEvent.V1_3.Upcast exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.SendMessageEvent.V1_2.Objects as PO
|
||||||
|
import Internal.Api.SendMessageEvent.V1_3.Objects as O
|
||||||
|
|
||||||
|
|
||||||
|
upcast : PO.EventResponse -> O.EventResponse
|
||||||
|
upcast =
|
||||||
|
identity
|
|
@ -0,0 +1,17 @@
|
||||||
|
module Internal.Api.SendMessageEvent.V1_4.Api exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.SendMessageEvent.Api as Api
|
||||||
|
import Internal.Api.SendMessageEvent.V1_3.Objects as PO
|
||||||
|
import Internal.Api.SendMessageEvent.V1_4.Convert as C
|
||||||
|
import Internal.Api.SendMessageEvent.V1_4.Objects as O
|
||||||
|
import Internal.Api.SendMessageEvent.V1_4.Upcast as U
|
||||||
|
import Internal.Api.VersionControl as V
|
||||||
|
|
||||||
|
|
||||||
|
packet : V.SingleVersion Api.SendMessageEventInputV1 PO.EventResponse Api.SendMessageEventInputV1 O.EventResponse
|
||||||
|
packet =
|
||||||
|
{ version = "v1.4"
|
||||||
|
, downcast = identity
|
||||||
|
, current = Api.sendMessageEventV1 O.eventResponseDecoder C.convert
|
||||||
|
, upcast = U.upcast
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
module Internal.Api.SendMessageEvent.V1_4.Convert exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.SendMessageEvent.V1_4.Objects as O
|
||||||
|
import Internal.Api.SendMessageEvent.V1_4.SpecObjects as SO
|
||||||
|
|
||||||
|
|
||||||
|
convert : SO.EventResponse -> O.EventResponse
|
||||||
|
convert =
|
||||||
|
identity
|
|
@ -0,0 +1,38 @@
|
||||||
|
module Internal.Api.SendMessageEvent.V1_4.Objects exposing
|
||||||
|
( EventResponse
|
||||||
|
, encodeEventResponse
|
||||||
|
, eventResponseDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'Objects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| A response confirming that an event has been sent.
|
||||||
|
-}
|
||||||
|
type alias EventResponse =
|
||||||
|
{ eventId : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeEventResponse : EventResponse -> E.Value
|
||||||
|
encodeEventResponse data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "event_id", Just <| E.string data.eventId )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
eventResponseDecoder : D.Decoder EventResponse
|
||||||
|
eventResponseDecoder =
|
||||||
|
D.map
|
||||||
|
(\a ->
|
||||||
|
{ eventId = a }
|
||||||
|
)
|
||||||
|
(D.field "event_id" D.string)
|
|
@ -0,0 +1,9 @@
|
||||||
|
version: v1.4
|
||||||
|
name: Objects
|
||||||
|
objects:
|
||||||
|
EventResponse:
|
||||||
|
description: A response confirming that an event has been sent.
|
||||||
|
fields:
|
||||||
|
event_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
|
@ -0,0 +1,38 @@
|
||||||
|
module Internal.Api.SendMessageEvent.V1_4.SpecObjects exposing
|
||||||
|
( EventResponse
|
||||||
|
, encodeEventResponse
|
||||||
|
, eventResponseDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'SpecObjects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| A response confirming that an event has been sent.
|
||||||
|
-}
|
||||||
|
type alias EventResponse =
|
||||||
|
{ eventId : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeEventResponse : EventResponse -> E.Value
|
||||||
|
encodeEventResponse data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "event_id", Just <| E.string data.eventId )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
eventResponseDecoder : D.Decoder EventResponse
|
||||||
|
eventResponseDecoder =
|
||||||
|
D.map
|
||||||
|
(\a ->
|
||||||
|
{ eventId = a }
|
||||||
|
)
|
||||||
|
(D.field "event_id" D.string)
|
|
@ -0,0 +1,9 @@
|
||||||
|
version: v1.4
|
||||||
|
name: SpecObjects
|
||||||
|
objects:
|
||||||
|
EventResponse:
|
||||||
|
description: A response confirming that an event has been sent.
|
||||||
|
fields:
|
||||||
|
event_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
|
@ -0,0 +1,9 @@
|
||||||
|
module Internal.Api.SendMessageEvent.V1_4.Upcast exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.SendMessageEvent.V1_3.Objects as PO
|
||||||
|
import Internal.Api.SendMessageEvent.V1_4.Objects as O
|
||||||
|
|
||||||
|
|
||||||
|
upcast : PO.EventResponse -> O.EventResponse
|
||||||
|
upcast =
|
||||||
|
identity
|
|
@ -0,0 +1,17 @@
|
||||||
|
module Internal.Api.SendMessageEvent.V1_5.Api exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.SendMessageEvent.Api as Api
|
||||||
|
import Internal.Api.SendMessageEvent.V1_4.Objects as PO
|
||||||
|
import Internal.Api.SendMessageEvent.V1_5.Convert as C
|
||||||
|
import Internal.Api.SendMessageEvent.V1_5.Objects as O
|
||||||
|
import Internal.Api.SendMessageEvent.V1_5.Upcast as U
|
||||||
|
import Internal.Api.VersionControl as V
|
||||||
|
|
||||||
|
|
||||||
|
packet : V.SingleVersion Api.SendMessageEventInputV1 PO.EventResponse Api.SendMessageEventInputV1 O.EventResponse
|
||||||
|
packet =
|
||||||
|
{ version = "v1.5"
|
||||||
|
, downcast = identity
|
||||||
|
, current = Api.sendMessageEventV1 O.eventResponseDecoder C.convert
|
||||||
|
, upcast = U.upcast
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
module Internal.Api.SendMessageEvent.V1_5.Convert exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.SendMessageEvent.V1_5.Objects as O
|
||||||
|
import Internal.Api.SendMessageEvent.V1_5.SpecObjects as SO
|
||||||
|
|
||||||
|
|
||||||
|
convert : SO.EventResponse -> O.EventResponse
|
||||||
|
convert =
|
||||||
|
identity
|
|
@ -0,0 +1,38 @@
|
||||||
|
module Internal.Api.SendMessageEvent.V1_5.Objects exposing
|
||||||
|
( EventResponse
|
||||||
|
, encodeEventResponse
|
||||||
|
, eventResponseDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'Objects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| A response confirming that an event has been sent.
|
||||||
|
-}
|
||||||
|
type alias EventResponse =
|
||||||
|
{ eventId : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeEventResponse : EventResponse -> E.Value
|
||||||
|
encodeEventResponse data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "event_id", Just <| E.string data.eventId )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
eventResponseDecoder : D.Decoder EventResponse
|
||||||
|
eventResponseDecoder =
|
||||||
|
D.map
|
||||||
|
(\a ->
|
||||||
|
{ eventId = a }
|
||||||
|
)
|
||||||
|
(D.field "event_id" D.string)
|
|
@ -0,0 +1,9 @@
|
||||||
|
version: v1.5
|
||||||
|
name: Objects
|
||||||
|
objects:
|
||||||
|
EventResponse:
|
||||||
|
description: A response confirming that an event has been sent.
|
||||||
|
fields:
|
||||||
|
event_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
|
@ -0,0 +1,38 @@
|
||||||
|
module Internal.Api.SendMessageEvent.V1_5.SpecObjects exposing
|
||||||
|
( EventResponse
|
||||||
|
, encodeEventResponse
|
||||||
|
, eventResponseDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'SpecObjects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| A response confirming that an event has been sent.
|
||||||
|
-}
|
||||||
|
type alias EventResponse =
|
||||||
|
{ eventId : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeEventResponse : EventResponse -> E.Value
|
||||||
|
encodeEventResponse data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "event_id", Just <| E.string data.eventId )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
eventResponseDecoder : D.Decoder EventResponse
|
||||||
|
eventResponseDecoder =
|
||||||
|
D.map
|
||||||
|
(\a ->
|
||||||
|
{ eventId = a }
|
||||||
|
)
|
||||||
|
(D.field "event_id" D.string)
|
|
@ -0,0 +1,9 @@
|
||||||
|
version: v1.5
|
||||||
|
name: SpecObjects
|
||||||
|
objects:
|
||||||
|
EventResponse:
|
||||||
|
description: A response confirming that an event has been sent.
|
||||||
|
fields:
|
||||||
|
event_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
|
@ -0,0 +1,9 @@
|
||||||
|
module Internal.Api.SendMessageEvent.V1_5.Upcast exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.SendMessageEvent.V1_4.Objects as PO
|
||||||
|
import Internal.Api.SendMessageEvent.V1_5.Objects as O
|
||||||
|
|
||||||
|
|
||||||
|
upcast : PO.EventResponse -> O.EventResponse
|
||||||
|
upcast =
|
||||||
|
identity
|
|
@ -0,0 +1,35 @@
|
||||||
|
module Internal.Api.SendStateKey.Api exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.Request as R
|
||||||
|
import Internal.Tools.Exceptions as X
|
||||||
|
import Json.Decode as D
|
||||||
|
import Task exposing (Task)
|
||||||
|
|
||||||
|
|
||||||
|
type alias SendStateKeyInputV1 =
|
||||||
|
{ accessToken : String
|
||||||
|
, baseUrl : String
|
||||||
|
, content : D.Value
|
||||||
|
, eventType : String
|
||||||
|
, roomId : String
|
||||||
|
, stateKey : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
sendStateKeyV1 : D.Decoder a -> (a -> b) -> SendStateKeyInputV1 -> Task X.Error b
|
||||||
|
sendStateKeyV1 decoder mapping data =
|
||||||
|
R.rawApiCall
|
||||||
|
{ headers = R.WithAccessToken data.accessToken
|
||||||
|
, method = "PUT"
|
||||||
|
, baseUrl = data.baseUrl
|
||||||
|
, path = "/_matrix/client/v3/rooms/{roomId}/state/{eventType}/{stateKey}"
|
||||||
|
, pathParams =
|
||||||
|
[ ( "eventType", data.eventType )
|
||||||
|
, ( "roomId", data.roomId )
|
||||||
|
, ( "stateKey", data.stateKey )
|
||||||
|
]
|
||||||
|
, queryParams = []
|
||||||
|
, bodyParams = [ R.RequiredValue "*" data.content ]
|
||||||
|
, timeout = Nothing
|
||||||
|
, decoder = \_ -> D.map mapping decoder
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
module Internal.Api.SendStateKey.Main exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.SendStateKey.Api as Api
|
||||||
|
import Internal.Api.SendStateKey.V1_2.Api as V1_2
|
||||||
|
import Internal.Api.SendStateKey.V1_3.Api as V1_3
|
||||||
|
import Internal.Api.SendStateKey.V1_4.Api as V1_4
|
||||||
|
import Internal.Api.SendStateKey.V1_5.Api as V1_5
|
||||||
|
import Internal.Api.SendStateKey.V1_5.Objects as O
|
||||||
|
import Internal.Api.VersionControl as V
|
||||||
|
import Internal.Tools.Exceptions as X
|
||||||
|
import Task exposing (Task)
|
||||||
|
|
||||||
|
|
||||||
|
sendStateKey : List String -> SendStateKeyInput -> SendStateKeyOutput
|
||||||
|
sendStateKey =
|
||||||
|
V.firstVersion V1_2.packet
|
||||||
|
|> V.updateWith V1_3.packet
|
||||||
|
|> V.updateWith V1_4.packet
|
||||||
|
|> V.updateWith V1_5.packet
|
||||||
|
|> V.toFunction
|
||||||
|
|
||||||
|
|
||||||
|
type alias SendStateKeyInput =
|
||||||
|
Api.SendStateKeyInputV1
|
||||||
|
|
||||||
|
|
||||||
|
type alias SendStateKeyOutput =
|
||||||
|
Task X.Error O.EventResponse
|
|
@ -0,0 +1,16 @@
|
||||||
|
module Internal.Api.SendStateKey.V1_2.Api exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.SendStateKey.Api as Api
|
||||||
|
import Internal.Api.SendStateKey.V1_2.Convert as C
|
||||||
|
import Internal.Api.SendStateKey.V1_2.Objects as O
|
||||||
|
import Internal.Api.SendStateKey.V1_2.Upcast as U
|
||||||
|
import Internal.Api.VersionControl as V
|
||||||
|
|
||||||
|
|
||||||
|
packet : V.SingleVersion () () Api.SendStateKeyInputV1 O.EventResponse
|
||||||
|
packet =
|
||||||
|
{ version = "v1.2"
|
||||||
|
, downcast = \_ -> ()
|
||||||
|
, current = Api.sendStateKeyV1 O.eventResponseDecoder C.convert
|
||||||
|
, upcast = U.upcast
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
module Internal.Api.SendStateKey.V1_2.Convert exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.SendStateKey.V1_2.Objects as O
|
||||||
|
import Internal.Api.SendStateKey.V1_2.SpecObjects as SO
|
||||||
|
|
||||||
|
|
||||||
|
convert : SO.EventResponse -> O.EventResponse
|
||||||
|
convert =
|
||||||
|
identity
|
|
@ -0,0 +1,38 @@
|
||||||
|
module Internal.Api.SendStateKey.V1_2.Objects exposing
|
||||||
|
( EventResponse
|
||||||
|
, encodeEventResponse
|
||||||
|
, eventResponseDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'SpecObjects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| A response confirming that an event has been sent.
|
||||||
|
-}
|
||||||
|
type alias EventResponse =
|
||||||
|
{ eventId : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeEventResponse : EventResponse -> E.Value
|
||||||
|
encodeEventResponse data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "event_id", Just <| E.string data.eventId )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
eventResponseDecoder : D.Decoder EventResponse
|
||||||
|
eventResponseDecoder =
|
||||||
|
D.map
|
||||||
|
(\a ->
|
||||||
|
{ eventId = a }
|
||||||
|
)
|
||||||
|
(D.field "event_id" D.string)
|
|
@ -0,0 +1,9 @@
|
||||||
|
version: v1.2
|
||||||
|
name: SpecObjects
|
||||||
|
objects:
|
||||||
|
EventResponse:
|
||||||
|
description: A response confirming that an event has been sent.
|
||||||
|
fields:
|
||||||
|
event_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
|
@ -0,0 +1,38 @@
|
||||||
|
module Internal.Api.SendStateKey.V1_2.SpecObjects exposing
|
||||||
|
( EventResponse
|
||||||
|
, encodeEventResponse
|
||||||
|
, eventResponseDecoder
|
||||||
|
)
|
||||||
|
|
||||||
|
{-| Automatically generated 'SpecObjects'
|
||||||
|
|
||||||
|
Last generated at Unix time 1673279712
|
||||||
|
|
||||||
|
-}
|
||||||
|
|
||||||
|
import Internal.Tools.EncodeExtra exposing (maybeObject)
|
||||||
|
import Json.Decode as D
|
||||||
|
import Json.Encode as E
|
||||||
|
|
||||||
|
|
||||||
|
{-| A response confirming that an event has been sent.
|
||||||
|
-}
|
||||||
|
type alias EventResponse =
|
||||||
|
{ eventId : String
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
encodeEventResponse : EventResponse -> E.Value
|
||||||
|
encodeEventResponse data =
|
||||||
|
maybeObject
|
||||||
|
[ ( "event_id", Just <| E.string data.eventId )
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
eventResponseDecoder : D.Decoder EventResponse
|
||||||
|
eventResponseDecoder =
|
||||||
|
D.map
|
||||||
|
(\a ->
|
||||||
|
{ eventId = a }
|
||||||
|
)
|
||||||
|
(D.field "event_id" D.string)
|
|
@ -0,0 +1,9 @@
|
||||||
|
version: v1.2
|
||||||
|
name: SpecObjects
|
||||||
|
objects:
|
||||||
|
EventResponse:
|
||||||
|
description: A response confirming that an event has been sent.
|
||||||
|
fields:
|
||||||
|
event_id:
|
||||||
|
type: string
|
||||||
|
required: true
|
|
@ -0,0 +1,9 @@
|
||||||
|
module Internal.Api.SendStateKey.V1_2.Upcast exposing (..)
|
||||||
|
|
||||||
|
import Internal.Api.SendStateKey.V1_2.Objects as O
|
||||||
|
import Internal.Config.Leaking as L
|
||||||
|
|
||||||
|
|
||||||
|
upcast : () -> O.EventResponse
|
||||||
|
upcast _ =
|
||||||
|
{ eventId = L.eventId }
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue