battleplace 0.1.0.6 → 0.1.0.7
raw patch · 3 files changed
+136/−69 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- BattlePlace.WebApi: MatchCancelResponse_cancelled :: MatchCancelResponse
- BattlePlace.WebApi: MatchCancelResponse_notFound :: MatchCancelResponse
- BattlePlace.WebApi: MatchPlayer :: !MatchPlayerInfo -> !(Maybe Ticket) -> !(Maybe Ticket) -> MatchPlayer
- BattlePlace.WebApi: MatchServer :: !MatchServerInfo -> !Ticket -> !Ticket -> MatchServer
- BattlePlace.WebApi: MatchStatusResponse_cleaned :: MatchStatusResponse
- BattlePlace.WebApi: MatchTeam :: (Vector MatchPlayer) -> MatchTeam
- BattlePlace.WebApi: ServerMatchResponse :: !(Vector ServerSession) -> ServerMatchResponse
- BattlePlace.WebApi: ServerSession :: !SessionId -> !(InternalToken ServerSessionToken) -> !(Vector MatchTeam) -> !MatchTag -> !ServerTag -> ServerSession
- BattlePlace.WebApi: [matchPlayer_info] :: MatchPlayer -> !MatchPlayerInfo
- BattlePlace.WebApi: [matchPlayer_ourTicket] :: MatchPlayer -> !(Maybe Ticket)
- BattlePlace.WebApi: [matchPlayer_theirTicket] :: MatchPlayer -> !(Maybe Ticket)
- BattlePlace.WebApi: [matchServer_info] :: MatchServer -> !MatchServerInfo
- BattlePlace.WebApi: [matchServer_ourTicket] :: MatchServer -> !Ticket
- BattlePlace.WebApi: [matchServer_theirTicket] :: MatchServer -> !Ticket
- BattlePlace.WebApi: [matchStatusResponse_mateIndex] :: MatchStatusResponse -> {-# UNPACK #-} !Int
- BattlePlace.WebApi: [matchStatusResponse_server] :: MatchStatusResponse -> !(Maybe MatchServer)
- BattlePlace.WebApi: [matchStatusResponse_sessionId] :: MatchStatusResponse -> !SessionId
- BattlePlace.WebApi: [matchStatusResponse_sessionToken] :: MatchStatusResponse -> !(InternalToken SessionToken)
- BattlePlace.WebApi: [matchStatusResponse_teamIndex] :: MatchStatusResponse -> {-# UNPACK #-} !Int
- BattlePlace.WebApi: [matchStatusResponse_teams] :: MatchStatusResponse -> !(Vector MatchTeam)
- BattlePlace.WebApi: [serverMatchRequest_maxSessionsCount] :: ServerMatchRequest -> {-# UNPACK #-} !Int
- BattlePlace.WebApi: [serverMatchResponse_sessions] :: ServerMatchResponse -> !(Vector ServerSession)
- BattlePlace.WebApi: [serverSession_matchTag] :: ServerSession -> !MatchTag
- BattlePlace.WebApi: [serverSession_serverSessionToken] :: ServerSession -> !(InternalToken ServerSessionToken)
- BattlePlace.WebApi: [serverSession_serverTag] :: ServerSession -> !ServerTag
- BattlePlace.WebApi: [serverSession_sessionId] :: ServerSession -> !SessionId
- BattlePlace.WebApi: [serverSession_teams] :: ServerSession -> !(Vector MatchTeam)
- BattlePlace.WebApi: data MatchCancelResponse
- BattlePlace.WebApi: data MatchPlayer
- BattlePlace.WebApi: data MatchServer
- BattlePlace.WebApi: data ServerSession
- BattlePlace.WebApi: instance Data.Aeson.Types.FromJSON.FromJSON BattlePlace.WebApi.MatchCancelResponse
- BattlePlace.WebApi: instance Data.Aeson.Types.FromJSON.FromJSON BattlePlace.WebApi.MatchPlayer
- BattlePlace.WebApi: instance Data.Aeson.Types.FromJSON.FromJSON BattlePlace.WebApi.MatchServer
- BattlePlace.WebApi: instance Data.Aeson.Types.FromJSON.FromJSON BattlePlace.WebApi.MatchTeam
- BattlePlace.WebApi: instance Data.Aeson.Types.FromJSON.FromJSON BattlePlace.WebApi.ServerSession
- BattlePlace.WebApi: instance Data.Aeson.Types.ToJSON.ToJSON BattlePlace.WebApi.MatchCancelResponse
- BattlePlace.WebApi: instance Data.Aeson.Types.ToJSON.ToJSON BattlePlace.WebApi.MatchPlayer
- BattlePlace.WebApi: instance Data.Aeson.Types.ToJSON.ToJSON BattlePlace.WebApi.MatchServer
- BattlePlace.WebApi: instance Data.Aeson.Types.ToJSON.ToJSON BattlePlace.WebApi.MatchTeam
- BattlePlace.WebApi: instance Data.Aeson.Types.ToJSON.ToJSON BattlePlace.WebApi.ServerSession
- BattlePlace.WebApi: instance GHC.Generics.Generic BattlePlace.WebApi.MatchCancelResponse
- BattlePlace.WebApi: instance GHC.Generics.Generic BattlePlace.WebApi.MatchPlayer
- BattlePlace.WebApi: instance GHC.Generics.Generic BattlePlace.WebApi.MatchServer
- BattlePlace.WebApi: instance GHC.Generics.Generic BattlePlace.WebApi.ServerSession
- BattlePlace.WebApi: newtype MatchTeam
+ BattlePlace.WebApi: ServerMatchCancelRequest :: {-# UNPACK #-} !ProjectId -> !ProjectServerToken -> !ProjectServerName -> ServerMatchCancelRequest
+ BattlePlace.WebApi: ServerMatchCancelResponse_cancelled :: ServerMatchCancelResponse
+ BattlePlace.WebApi: ServerMatchCancelResponse_unused :: ServerMatchCancelResponse
+ BattlePlace.WebApi: ServerMatchResponse_registered :: ServerMatchResponse
+ BattlePlace.WebApi: ServerMatchResponse_unused :: ServerMatchResponse
+ BattlePlace.WebApi: ServerMatchSessionsRequest :: {-# UNPACK #-} !ProjectId -> !ProjectServerToken -> !ProjectServerName -> ServerMatchSessionsRequest
+ BattlePlace.WebApi: ServerMatchSessionsResponse :: !(Vector MatchServerSession) -> ServerMatchSessionsResponse
+ BattlePlace.WebApi: [matchStatusResponse_session] :: MatchStatusResponse -> !MatchSession
+ BattlePlace.WebApi: [serverMatchCancelRequest_name] :: ServerMatchCancelRequest -> !ProjectServerName
+ BattlePlace.WebApi: [serverMatchCancelRequest_projectId] :: ServerMatchCancelRequest -> {-# UNPACK #-} !ProjectId
+ BattlePlace.WebApi: [serverMatchCancelRequest_projectServerToken] :: ServerMatchCancelRequest -> !ProjectServerToken
+ BattlePlace.WebApi: [serverMatchSessionsRequest_name] :: ServerMatchSessionsRequest -> !ProjectServerName
+ BattlePlace.WebApi: [serverMatchSessionsRequest_projectId] :: ServerMatchSessionsRequest -> {-# UNPACK #-} !ProjectId
+ BattlePlace.WebApi: [serverMatchSessionsRequest_projectServerToken] :: ServerMatchSessionsRequest -> !ProjectServerToken
+ BattlePlace.WebApi: [serverMatchSessionsResponse_sessions] :: ServerMatchSessionsResponse -> !(Vector MatchServerSession)
+ BattlePlace.WebApi: data ServerMatchCancelRequest
+ BattlePlace.WebApi: data ServerMatchCancelResponse
+ BattlePlace.WebApi: data ServerMatchSessionsRequest
+ BattlePlace.WebApi: data ServerMatchSessionsResponse
+ BattlePlace.WebApi: instance Data.Aeson.Types.FromJSON.FromJSON BattlePlace.WebApi.ClientDataRequest
+ BattlePlace.WebApi: instance Data.Aeson.Types.FromJSON.FromJSON BattlePlace.WebApi.ServerMatchCancelRequest
+ BattlePlace.WebApi: instance Data.Aeson.Types.FromJSON.FromJSON BattlePlace.WebApi.ServerMatchCancelResponse
+ BattlePlace.WebApi: instance Data.Aeson.Types.FromJSON.FromJSON BattlePlace.WebApi.ServerMatchSessionsRequest
+ BattlePlace.WebApi: instance Data.Aeson.Types.FromJSON.FromJSON BattlePlace.WebApi.ServerMatchSessionsResponse
+ BattlePlace.WebApi: instance Data.Aeson.Types.ToJSON.ToJSON BattlePlace.WebApi.ClientDataRequest
+ BattlePlace.WebApi: instance Data.Aeson.Types.ToJSON.ToJSON BattlePlace.WebApi.ServerMatchCancelRequest
+ BattlePlace.WebApi: instance Data.Aeson.Types.ToJSON.ToJSON BattlePlace.WebApi.ServerMatchCancelResponse
+ BattlePlace.WebApi: instance Data.Aeson.Types.ToJSON.ToJSON BattlePlace.WebApi.ServerMatchSessionsRequest
+ BattlePlace.WebApi: instance Data.Aeson.Types.ToJSON.ToJSON BattlePlace.WebApi.ServerMatchSessionsResponse
+ BattlePlace.WebApi: instance GHC.Generics.Generic BattlePlace.WebApi.ClientDataRequest
+ BattlePlace.WebApi: instance GHC.Generics.Generic BattlePlace.WebApi.ServerMatchCancelRequest
+ BattlePlace.WebApi: instance GHC.Generics.Generic BattlePlace.WebApi.ServerMatchCancelResponse
+ BattlePlace.WebApi: instance GHC.Generics.Generic BattlePlace.WebApi.ServerMatchSessionsRequest
+ BattlePlace.WebApi: instance GHC.Generics.Generic BattlePlace.WebApi.ServerMatchSessionsResponse
+ BattlePlace.WebApi.Types: MatchPlayer :: !MatchPlayerInfo -> !(Maybe Ticket) -> !(Maybe Ticket) -> MatchPlayer
+ BattlePlace.WebApi.Types: MatchServer :: !MatchServerInfo -> !Ticket -> !Ticket -> MatchServer
+ BattlePlace.WebApi.Types: MatchServerSession :: !SessionId -> !(InternalToken ServerSessionToken) -> !(Vector MatchTeam) -> !MatchTag -> !ServerTag -> MatchServerSession
+ BattlePlace.WebApi.Types: MatchSession :: !SessionId -> !(InternalToken SessionToken) -> !(Vector MatchTeam) -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> !(Maybe MatchServer) -> MatchSession
+ BattlePlace.WebApi.Types: MatchTeam :: (Vector MatchPlayer) -> MatchTeam
+ BattlePlace.WebApi.Types: ProjectServerName :: Text -> ProjectServerName
+ BattlePlace.WebApi.Types: [matchPlayer_info] :: MatchPlayer -> !MatchPlayerInfo
+ BattlePlace.WebApi.Types: [matchPlayer_ourTicket] :: MatchPlayer -> !(Maybe Ticket)
+ BattlePlace.WebApi.Types: [matchPlayer_theirTicket] :: MatchPlayer -> !(Maybe Ticket)
+ BattlePlace.WebApi.Types: [matchServerSession_matchTag] :: MatchServerSession -> !MatchTag
+ BattlePlace.WebApi.Types: [matchServerSession_serverSessionToken] :: MatchServerSession -> !(InternalToken ServerSessionToken)
+ BattlePlace.WebApi.Types: [matchServerSession_serverTag] :: MatchServerSession -> !ServerTag
+ BattlePlace.WebApi.Types: [matchServerSession_sessionId] :: MatchServerSession -> !SessionId
+ BattlePlace.WebApi.Types: [matchServerSession_teams] :: MatchServerSession -> !(Vector MatchTeam)
+ BattlePlace.WebApi.Types: [matchServer_info] :: MatchServer -> !MatchServerInfo
+ BattlePlace.WebApi.Types: [matchServer_ourTicket] :: MatchServer -> !Ticket
+ BattlePlace.WebApi.Types: [matchServer_theirTicket] :: MatchServer -> !Ticket
+ BattlePlace.WebApi.Types: [matchSession_mateIndex] :: MatchSession -> {-# UNPACK #-} !Int
+ BattlePlace.WebApi.Types: [matchSession_server] :: MatchSession -> !(Maybe MatchServer)
+ BattlePlace.WebApi.Types: [matchSession_sessionId] :: MatchSession -> !SessionId
+ BattlePlace.WebApi.Types: [matchSession_sessionToken] :: MatchSession -> !(InternalToken SessionToken)
+ BattlePlace.WebApi.Types: [matchSession_teamIndex] :: MatchSession -> {-# UNPACK #-} !Int
+ BattlePlace.WebApi.Types: [matchSession_teams] :: MatchSession -> !(Vector MatchTeam)
+ BattlePlace.WebApi.Types: data MatchPlayer
+ BattlePlace.WebApi.Types: data MatchServer
+ BattlePlace.WebApi.Types: data MatchServerSession
+ BattlePlace.WebApi.Types: data MatchSession
+ BattlePlace.WebApi.Types: instance Data.Aeson.Types.FromJSON.FromJSON BattlePlace.WebApi.Types.MatchPlayer
+ BattlePlace.WebApi.Types: instance Data.Aeson.Types.FromJSON.FromJSON BattlePlace.WebApi.Types.MatchServer
+ BattlePlace.WebApi.Types: instance Data.Aeson.Types.FromJSON.FromJSON BattlePlace.WebApi.Types.MatchServerSession
+ BattlePlace.WebApi.Types: instance Data.Aeson.Types.FromJSON.FromJSON BattlePlace.WebApi.Types.MatchSession
+ BattlePlace.WebApi.Types: instance Data.Aeson.Types.FromJSON.FromJSON BattlePlace.WebApi.Types.MatchTeam
+ BattlePlace.WebApi.Types: instance Data.Aeson.Types.FromJSON.FromJSON BattlePlace.WebApi.Types.ProjectServerName
+ BattlePlace.WebApi.Types: instance Data.Aeson.Types.ToJSON.ToJSON BattlePlace.WebApi.Types.MatchPlayer
+ BattlePlace.WebApi.Types: instance Data.Aeson.Types.ToJSON.ToJSON BattlePlace.WebApi.Types.MatchServer
+ BattlePlace.WebApi.Types: instance Data.Aeson.Types.ToJSON.ToJSON BattlePlace.WebApi.Types.MatchServerSession
+ BattlePlace.WebApi.Types: instance Data.Aeson.Types.ToJSON.ToJSON BattlePlace.WebApi.Types.MatchSession
+ BattlePlace.WebApi.Types: instance Data.Aeson.Types.ToJSON.ToJSON BattlePlace.WebApi.Types.MatchTeam
+ BattlePlace.WebApi.Types: instance Data.Aeson.Types.ToJSON.ToJSON BattlePlace.WebApi.Types.ProjectServerName
+ BattlePlace.WebApi.Types: instance Data.Hashable.Class.Hashable BattlePlace.WebApi.Types.ProjectServerName
+ BattlePlace.WebApi.Types: instance GHC.Classes.Eq BattlePlace.WebApi.Types.ProjectServerName
+ BattlePlace.WebApi.Types: instance GHC.Generics.Generic BattlePlace.WebApi.Types.MatchPlayer
+ BattlePlace.WebApi.Types: instance GHC.Generics.Generic BattlePlace.WebApi.Types.MatchServer
+ BattlePlace.WebApi.Types: instance GHC.Generics.Generic BattlePlace.WebApi.Types.MatchServerSession
+ BattlePlace.WebApi.Types: instance GHC.Generics.Generic BattlePlace.WebApi.Types.MatchSession
+ BattlePlace.WebApi.Types: newtype MatchTeam
+ BattlePlace.WebApi.Types: newtype ProjectServerName
- BattlePlace.WebApi: MatchStatusResponse_matched :: !SessionId -> !(InternalToken SessionToken) -> !(Vector MatchTeam) -> {-# UNPACK #-} !Int -> {-# UNPACK #-} !Int -> !(Maybe MatchServer) -> MatchStatusResponse
+ BattlePlace.WebApi: MatchStatusResponse_matched :: !MatchSession -> MatchStatusResponse
- BattlePlace.WebApi: ServerMatchRequest :: {-# UNPACK #-} !ProjectId -> !ProjectServerToken -> !(Maybe ServerTag) -> {-# UNPACK #-} !Int -> !Text -> !(Maybe MatchServerInfo) -> !(Maybe Int) -> ServerMatchRequest
+ BattlePlace.WebApi: ServerMatchRequest :: {-# UNPACK #-} !ProjectId -> !ProjectServerToken -> !(Maybe ServerTag) -> !ProjectServerName -> !(Maybe MatchServerInfo) -> !(Maybe Int) -> ServerMatchRequest
- BattlePlace.WebApi: [serverMatchRequest_name] :: ServerMatchRequest -> !Text
+ BattlePlace.WebApi: [serverMatchRequest_name] :: ServerMatchRequest -> !ProjectServerName
- BattlePlace.WebApi: type WebApi = "v1a" :> ("client" :> ("auth" :> ReqBody '[JSON] ClientAuthRequest :> Post '[JSON] ClientAuthResponse :<|> "match" :> (AuthProtect ClientToken :> ReqBody '[JSON] MatchRequest :> Post '[JSON] MatchResponse :<|> AuthProtect ClientToken :> Capture "matchToken" (InternalToken MatchToken) :> Get '[JSON] MatchStatusResponse :<|> AuthProtect ClientToken :> Capture "matchToken" (InternalToken MatchToken) :> Delete '[JSON] MatchCancelResponse) :<|> "session" :> Capture "sessionToken" (InternalToken SessionToken) :> ("result" :> AuthProtect ClientToken :> ReqBody '[JSON] SessionResultRequest :> Post '[JSON] ()) :<|> "info" :> ("stats" :> AuthProtect ClientToken :> Get '[JSON] UserStats)) :<|> "server" :> ("match" :> ReqBody '[JSON] ServerMatchRequest :> Post '[JSON] ServerMatchResponse :<|> "session" :> Capture "serverSessionToken" (InternalToken ServerSessionToken) :> ("result" :> ReqBody '[JSON] ServerSessionResultRequest :> Post '[JSON] ())))
+ BattlePlace.WebApi: type WebApi = "v1a" :> ("client" :> ("auth" :> ReqBody '[JSON] ClientAuthRequest :> Post '[JSON] ClientAuthResponse :<|> "match" :> (AuthProtect ClientToken :> ReqBody '[JSON] MatchRequest :> Post '[JSON] MatchResponse :<|> AuthProtect ClientToken :> Capture "matchToken" (InternalToken MatchToken) :> Get '[JSON] MatchStatusResponse :<|> AuthProtect ClientToken :> Capture "matchToken" (InternalToken MatchToken) :> Delete '[JSON] ()) :<|> "session" :> Capture "sessionToken" (InternalToken SessionToken) :> ("result" :> AuthProtect ClientToken :> ReqBody '[JSON] SessionResultRequest :> Post '[JSON] ()) :<|> "info" :> ("stats" :> AuthProtect ClientToken :> Get '[JSON] UserStats)) :<|> "server" :> ("match" :> (ReqBody '[JSON] ServerMatchRequest :> Post '[JSON] ServerMatchResponse :<|> ReqBody '[JSON] ServerMatchCancelRequest :> Delete '[JSON] ServerMatchCancelResponse :<|> "sessions" :> ReqBody '[JSON] ServerMatchSessionsRequest :> Post '[JSON] ServerMatchSessionsResponse) :<|> "session" :> Capture "serverSessionToken" (InternalToken ServerSessionToken) :> ("result" :> ReqBody '[JSON] ServerSessionResultRequest :> Post '[JSON] ())))
Files
- BattlePlace/WebApi.hs +66/−68
- BattlePlace/WebApi/Types.hs +69/−0
- battleplace.cabal +1/−1
BattlePlace/WebApi.hs view
@@ -13,15 +13,14 @@ , MatchRequest(..) , MatchResponse(..) , MatchStatusResponse(..)- , MatchCancelResponse(..)- , MatchTeam(..)- , MatchPlayer(..)- , MatchServer(..) , SessionResultRequest(..) , ServerMatchRequest(..) , ServerMatchResponse(..)+ , ServerMatchCancelRequest(..)+ , ServerMatchCancelResponse(..)+ , ServerMatchSessionsRequest(..)+ , ServerMatchSessionsResponse(..) , ServerSessionResultRequest(..)- , ServerSession(..) ) where import qualified Data.Aeson as J@@ -42,7 +41,7 @@ :<|> "match" :> ( AuthProtect ClientToken :> ReqBody '[JSON] MatchRequest :> Post '[JSON] MatchResponse :<|> AuthProtect ClientToken :> Capture "matchToken" (InternalToken MatchToken) :> Get '[JSON] MatchStatusResponse- :<|> AuthProtect ClientToken :> Capture "matchToken" (InternalToken MatchToken) :> Delete '[JSON] MatchCancelResponse+ :<|> AuthProtect ClientToken :> Capture "matchToken" (InternalToken MatchToken) :> Delete '[JSON] () ) :<|> "session" :> Capture "sessionToken" (InternalToken SessionToken) :> ( "result" :> AuthProtect ClientToken :> ReqBody '[JSON] SessionResultRequest :> Post '[JSON] ()@@ -52,7 +51,11 @@ ) ) :<|> "server" :>- ( "match" :> ReqBody '[JSON] ServerMatchRequest :> Post '[JSON] ServerMatchResponse+ ( "match" :>+ ( ReqBody '[JSON] ServerMatchRequest :> Post '[JSON] ServerMatchResponse+ :<|> ReqBody '[JSON] ServerMatchCancelRequest :> Delete '[JSON] ServerMatchCancelResponse+ :<|> "sessions" :> ReqBody '[JSON] ServerMatchSessionsRequest :> Post '[JSON] ServerMatchSessionsResponse+ ) :<|> "session" :> Capture "serverSessionToken" (InternalToken ServerSessionToken) :> ( "result" :> ReqBody '[JSON] ServerSessionResultRequest :> Post '[JSON] () )@@ -111,19 +114,11 @@ = MatchStatusResponse_notFound | MatchStatusResponse_inProgress | MatchStatusResponse_matched- { matchStatusResponse_sessionId :: !SessionId- , matchStatusResponse_sessionToken :: !(InternalToken SessionToken)- , matchStatusResponse_teams :: !(V.Vector MatchTeam)- , matchStatusResponse_teamIndex :: {-# UNPACK #-} !Int- , matchStatusResponse_mateIndex :: {-# UNPACK #-} !Int- , matchStatusResponse_server :: !(Maybe MatchServer)+ { matchStatusResponse_session :: !MatchSession } | MatchStatusResponse_failed { matchStatusResponse_reason :: !MatchFailureReason }- -- | Match status was cleaned.- -- Normallly this status should not be visible to clients, it's here just in case.- | MatchStatusResponse_cleaned deriving Generic instance J.FromJSON MatchStatusResponse where parseJSON = J.genericParseJSON jsonOptions@@ -131,40 +126,6 @@ toJSON = J.genericToJSON jsonOptions toEncoding = J.genericToEncoding jsonOptions -newtype MatchTeam = MatchTeam (V.Vector MatchPlayer) deriving (J.FromJSON, J.ToJSON)--data MatchPlayer = MatchPlayer- { matchPlayer_info :: !MatchPlayerInfo- , matchPlayer_ourTicket :: !(Maybe Ticket)- , matchPlayer_theirTicket :: !(Maybe Ticket)- } deriving Generic-instance J.FromJSON MatchPlayer where- parseJSON = J.genericParseJSON jsonOptions-instance J.ToJSON MatchPlayer where- toJSON = J.genericToJSON jsonOptions- toEncoding = J.genericToEncoding jsonOptions--data MatchServer = MatchServer- { matchServer_info :: !MatchServerInfo- , matchServer_ourTicket :: !Ticket- , matchServer_theirTicket :: !Ticket- } deriving Generic-instance J.FromJSON MatchServer where- parseJSON = J.genericParseJSON jsonOptions-instance J.ToJSON MatchServer where- toJSON = J.genericToJSON jsonOptions- toEncoding = J.genericToEncoding jsonOptions--data MatchCancelResponse- = MatchCancelResponse_notFound- | MatchCancelResponse_cancelled- deriving Generic-instance J.FromJSON MatchCancelResponse where- parseJSON = J.genericParseJSON jsonOptions-instance J.ToJSON MatchCancelResponse where- toJSON = J.genericToJSON jsonOptions- toEncoding = J.genericToEncoding jsonOptions- data SessionResultRequest = SessionResultRequest_finished { sessionResultRequest_ranks :: !(V.Vector Int)@@ -177,12 +138,20 @@ toJSON = J.genericToJSON jsonOptions toEncoding = J.genericToEncoding jsonOptions +data ClientDataRequest = ClientDataRequest+ { clientDataRequest_after :: !(Maybe T.Text)+ } deriving Generic+instance J.FromJSON ClientDataRequest where+ parseJSON = J.genericParseJSON jsonOptions+instance J.ToJSON ClientDataRequest where+ toJSON = J.genericToJSON jsonOptions+ toEncoding = J.genericToEncoding jsonOptions+ data ServerMatchRequest = ServerMatchRequest { serverMatchRequest_projectId :: {-# UNPACK #-} !ProjectId , serverMatchRequest_projectServerToken :: !ProjectServerToken , serverMatchRequest_serverTag :: !(Maybe ServerTag)- , serverMatchRequest_maxSessionsCount :: {-# UNPACK #-} !Int- , serverMatchRequest_name :: !T.Text+ , serverMatchRequest_name :: !ProjectServerName , serverMatchRequest_info :: !(Maybe MatchServerInfo) , serverMatchRequest_timeout :: !(Maybe Int) } deriving Generic@@ -192,15 +161,57 @@ toJSON = J.genericToJSON jsonOptions toEncoding = J.genericToEncoding jsonOptions -data ServerMatchResponse = ServerMatchResponse- { serverMatchResponse_sessions :: !(V.Vector ServerSession)- } deriving Generic+data ServerMatchResponse+ = ServerMatchResponse_registered+ | ServerMatchResponse_unused+ deriving Generic instance J.FromJSON ServerMatchResponse where parseJSON = J.genericParseJSON jsonOptions instance J.ToJSON ServerMatchResponse where toJSON = J.genericToJSON jsonOptions toEncoding = J.genericToEncoding jsonOptions +data ServerMatchCancelRequest = ServerMatchCancelRequest+ { serverMatchCancelRequest_projectId :: {-# UNPACK #-} !ProjectId+ , serverMatchCancelRequest_projectServerToken :: !ProjectServerToken+ , serverMatchCancelRequest_name :: !ProjectServerName+ } deriving Generic+instance J.FromJSON ServerMatchCancelRequest where+ parseJSON = J.genericParseJSON jsonOptions+instance J.ToJSON ServerMatchCancelRequest where+ toJSON = J.genericToJSON jsonOptions+ toEncoding = J.genericToEncoding jsonOptions++data ServerMatchCancelResponse+ = ServerMatchCancelResponse_cancelled+ | ServerMatchCancelResponse_unused+ deriving Generic+instance J.FromJSON ServerMatchCancelResponse where+ parseJSON = J.genericParseJSON jsonOptions+instance J.ToJSON ServerMatchCancelResponse where+ toJSON = J.genericToJSON jsonOptions+ toEncoding = J.genericToEncoding jsonOptions++data ServerMatchSessionsRequest = ServerMatchSessionsRequest+ { serverMatchSessionsRequest_projectId :: {-# UNPACK #-} !ProjectId+ , serverMatchSessionsRequest_projectServerToken :: !ProjectServerToken+ , serverMatchSessionsRequest_name :: !ProjectServerName+ } deriving Generic+instance J.FromJSON ServerMatchSessionsRequest where+ parseJSON = J.genericParseJSON jsonOptions+instance J.ToJSON ServerMatchSessionsRequest where+ toJSON = J.genericToJSON jsonOptions+ toEncoding = J.genericToEncoding jsonOptions++data ServerMatchSessionsResponse = ServerMatchSessionsResponse+ { serverMatchSessionsResponse_sessions :: !(V.Vector MatchServerSession)+ } deriving Generic+instance J.FromJSON ServerMatchSessionsResponse where+ parseJSON = J.genericParseJSON jsonOptions+instance J.ToJSON ServerMatchSessionsResponse where+ toJSON = J.genericToJSON jsonOptions+ toEncoding = J.genericToEncoding jsonOptions+ data ServerSessionResultRequest = ServerSessionResultRequest_finished { serverSessionResultRequest_ranks :: !(V.Vector Int)@@ -210,18 +221,5 @@ instance J.FromJSON ServerSessionResultRequest where parseJSON = J.genericParseJSON jsonOptions instance J.ToJSON ServerSessionResultRequest where- toJSON = J.genericToJSON jsonOptions- toEncoding = J.genericToEncoding jsonOptions--data ServerSession = ServerSession- { serverSession_sessionId :: !SessionId- , serverSession_serverSessionToken :: !(InternalToken ServerSessionToken)- , serverSession_teams :: !(V.Vector MatchTeam)- , serverSession_matchTag :: !MatchTag- , serverSession_serverTag :: !ServerTag- } deriving Generic-instance J.FromJSON ServerSession where- parseJSON = J.genericParseJSON jsonOptions-instance J.ToJSON ServerSession where toJSON = J.genericToJSON jsonOptions toEncoding = J.genericToEncoding jsonOptions
BattlePlace/WebApi/Types.hs view
@@ -17,6 +17,7 @@ , clientTypeOf , ProjectServerId(..) , ProjectServerToken(..)+ , ProjectServerName(..) , MatchTeamSize , MatchTag(..) , ServerTag(..)@@ -27,6 +28,11 @@ , SessionToken(..) , SessionId(..) , ServerSessionToken(..)+ , MatchSession(..)+ , MatchServerSession(..)+ , MatchTeam(..)+ , MatchPlayer(..)+ , MatchServer(..) , UserStats(..) , Identified(..) , Base64ByteString(..)@@ -46,12 +52,15 @@ import Data.String import qualified Data.Text as T import qualified Data.Text.Encoding as T+import qualified Data.Text.Lazy.Encoding as TL+import qualified Data.Vector as V import Data.Word import Foreign.Storable import GHC.Generics(Generic) import Servant.API import BattlePlace.Rating+import BattlePlace.Token.Types import BattlePlace.Util -- | Account id.@@ -152,6 +161,9 @@ -- | Project's secret server token. newtype ProjectServerToken = ProjectServerToken T.Text deriving (Eq, Hashable, J.FromJSON, J.ToJSON) +-- | Project's server name.+newtype ProjectServerName = ProjectServerName T.Text deriving (Eq, Hashable, J.FromJSON, J.ToJSON)+ -- | Size of a team in match request. type MatchTeamSize = Int @@ -217,6 +229,62 @@ toJSON = J.genericToJSON jsonOptions toEncoding = J.genericToEncoding jsonOptions +-- | Match session.+data MatchSession = MatchSession+ { matchSession_sessionId :: !SessionId+ , matchSession_sessionToken :: !(InternalToken SessionToken)+ , matchSession_teams :: !(V.Vector MatchTeam)+ , matchSession_teamIndex :: {-# UNPACK #-} !Int+ , matchSession_mateIndex :: {-# UNPACK #-} !Int+ , matchSession_server :: !(Maybe MatchServer)+ } deriving Generic+instance J.FromJSON MatchSession where+ parseJSON = J.genericParseJSON jsonOptions+instance J.ToJSON MatchSession where+ toJSON = J.genericToJSON jsonOptions+ toEncoding = J.genericToEncoding jsonOptions++-- | Match server session.+data MatchServerSession = MatchServerSession+ { matchServerSession_sessionId :: !SessionId+ , matchServerSession_serverSessionToken :: !(InternalToken ServerSessionToken)+ , matchServerSession_teams :: !(V.Vector MatchTeam)+ , matchServerSession_matchTag :: !MatchTag+ , matchServerSession_serverTag :: !ServerTag+ } deriving Generic+instance J.FromJSON MatchServerSession where+ parseJSON = J.genericParseJSON jsonOptions+instance J.ToJSON MatchServerSession where+ toJSON = J.genericToJSON jsonOptions+ toEncoding = J.genericToEncoding jsonOptions++-- | Match team.+newtype MatchTeam = MatchTeam (V.Vector MatchPlayer) deriving (J.FromJSON, J.ToJSON)++-- | Match player.+data MatchPlayer = MatchPlayer+ { matchPlayer_info :: !MatchPlayerInfo+ , matchPlayer_ourTicket :: !(Maybe Ticket)+ , matchPlayer_theirTicket :: !(Maybe Ticket)+ } deriving Generic+instance J.FromJSON MatchPlayer where+ parseJSON = J.genericParseJSON jsonOptions+instance J.ToJSON MatchPlayer where+ toJSON = J.genericToJSON jsonOptions+ toEncoding = J.genericToEncoding jsonOptions++-- | Match server.+data MatchServer = MatchServer+ { matchServer_info :: !MatchServerInfo+ , matchServer_ourTicket :: !Ticket+ , matchServer_theirTicket :: !Ticket+ } deriving Generic+instance J.FromJSON MatchServer where+ parseJSON = J.genericParseJSON jsonOptions+instance J.ToJSON MatchServer where+ toJSON = J.genericToJSON jsonOptions+ toEncoding = J.genericToEncoding jsonOptions+ -- | User stats. data UserStats = UserStats { userStats_rank :: {-# UNPACK #-} !Int@@ -259,6 +327,7 @@ parseJSON = either fail return . BA.convertFromBase BA.Base64URLUnpadded . T.encodeUtf8 <=< J.parseJSON instance J.ToJSON Base64ByteString where toJSON = J.toJSON . T.decodeUtf8 . BA.convertToBase BA.Base64URLUnpadded+ toEncoding = J.toEncoding . T.decodeUtf8 . BA.convertToBase BA.Base64URLUnpadded -- | Word64 which serializes to JSON as base64 string. -- Useful because 64-bit integer is not representable in javascript.
battleplace.cabal view
@@ -1,5 +1,5 @@ name: battleplace-version: 0.1.0.6+version: 0.1.0.7 synopsis: Core definitions for BattlePlace.io service description: Core definitions for BattlePlace.io service license: MIT