summaryrefslogtreecommitdiff
path: root/src/Comm
diff options
context:
space:
mode:
Diffstat (limited to 'src/Comm')
-rw-r--r--src/Comm/GetBattles.elm41
-rw-r--r--src/Comm/GetID.elm43
-rw-r--r--src/Comm/Okay.elm21
-rw-r--r--src/Comm/Send.elm67
-rw-r--r--src/Comm/SetPlayer.elm26
5 files changed, 198 insertions, 0 deletions
diff --git a/src/Comm/GetBattles.elm b/src/Comm/GetBattles.elm
new file mode 100644
index 0000000..59b8d1d
--- /dev/null
+++ b/src/Comm/GetBattles.elm
@@ -0,0 +1,41 @@
+module Comm.GetBattles exposing (try)
+
+-- Elm -------------------------------------------------------------------------
+import Json.Encode
+
+-- Extension -------------------------------------------------------------------
+import Comm.Send
+import Struct.Event
+import Struct.Model
+
+--------------------------------------------------------------------------------
+-- TYPES ------------------------------------------------------------------------
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+-- LOCAL -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+try_encoding : String -> Struct.Model.Type -> (Maybe Json.Encode.Value)
+try_encoding player_id model =
+ let
+ encoded_player_id = (Json.Encode.string player_id)
+ in
+ (Just
+ (Json.Encode.object
+ [
+ ("id", encoded_player_id)
+ ]
+ )
+ )
+
+--------------------------------------------------------------------------------
+-- EXPORTED --------------------------------------------------------------------
+--------------------------------------------------------------------------------
+try : Struct.Model.Type -> String -> (Maybe (Cmd Struct.Event.Type))
+try model player_id =
+ (Comm.Send.try_sending
+ model
+ -- FIXME: this is a param now...
+ Constants.IO.get_battles_handler
+ (try_encoding player_id)
+ )
diff --git a/src/Comm/GetID.elm b/src/Comm/GetID.elm
new file mode 100644
index 0000000..14d668c
--- /dev/null
+++ b/src/Comm/GetID.elm
@@ -0,0 +1,43 @@
+module Comm.GetID exposing (try)
+
+-- Elm -------------------------------------------------------------------------
+import Json.Encode
+
+-- Extension -------------------------------------------------------------------
+import Comm.Send
+
+import Constants.IO
+
+import Struct.Event
+import Struct.Model
+
+--------------------------------------------------------------------------------
+-- TYPES ------------------------------------------------------------------------
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+-- LOCAL -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+try_encoding : String -> Struct.Model.Type -> (Maybe Json.Encode.Value)
+try_encoding player_id model =
+ let
+ encoded_player_id = (Json.Encode.string player_id)
+ in
+ (Just
+ (Json.Encode.object
+ [
+ ("id", encoded_player_id)
+ ]
+ )
+ )
+
+--------------------------------------------------------------------------------
+-- EXPORTED --------------------------------------------------------------------
+--------------------------------------------------------------------------------
+try : Struct.Model.Type -> String -> (Maybe (Cmd Struct.Event.Type))
+try model =
+ (Comm.Send.try_sending
+ model
+ Constants.IO.get_battles_handler
+ (try_encoding player_id)
+ )
diff --git a/src/Comm/Okay.elm b/src/Comm/Okay.elm
new file mode 100644
index 0000000..ca7a2eb
--- /dev/null
+++ b/src/Comm/Okay.elm
@@ -0,0 +1,21 @@
+module Comm.Okay exposing (decode)
+
+-- Elm -------------------------------------------------------------------------
+import Json.Decode
+
+-- Battlemap -------------------------------------------------------------------
+import Struct.ServerReply
+
+--------------------------------------------------------------------------------
+-- TYPES -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+-- LOCAL -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+-- EXPORTED --------------------------------------------------------------------
+--------------------------------------------------------------------------------
+decode : (Json.Decode.Decoder Struct.ServerReply.Type)
+decode = (Json.Decode.succeed Struct.ServerReply.Okay)
diff --git a/src/Comm/Send.elm b/src/Comm/Send.elm
new file mode 100644
index 0000000..dd9dc28
--- /dev/null
+++ b/src/Comm/Send.elm
@@ -0,0 +1,67 @@
+module Comm.Send exposing (try_sending)
+
+-- Elm -------------------------------------------------------------------------
+import Http
+
+import Json.Decode
+import Json.Encode
+
+-- Extension -------------------------------------------------------------------
+import Comm.Okay
+import Comm.SetBattles
+
+import Struct.Event
+import Struct.ServerReply
+import Struct.Model
+
+--------------------------------------------------------------------------------
+-- TYPES -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+-- LOCAL -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+internal_decoder : String -> (Json.Decode.Decoder Struct.ServerReply.Type)
+internal_decoder reply_type =
+ case reply_type of
+ "okay" -> (Comm.Okay.decode)
+ "set_battles" -> (Comm.SetBattles.decode)
+ other ->
+ (Json.Decode.fail
+ (
+ "Unknown server command \""
+ ++ other
+ ++ "\""
+ )
+ )
+
+decode : (Json.Decode.Decoder Struct.ServerReply.Type)
+decode =
+ (Json.Decode.field "msg" Json.Decode.string)
+ |> (Json.Decode.andThen (internal_decoder))
+
+--------------------------------------------------------------------------------
+-- EXPORTED --------------------------------------------------------------------
+--------------------------------------------------------------------------------
+-- TODO: turn this into a multi-server version.
+try_sending : (
+ Struct.Model.Type ->
+ String ->
+ (Struct.Model.Type -> (Maybe Json.Encode.Value)) ->
+ (Maybe (Cmd Struct.Event.Type))
+ )
+try_sending model recipient try_encoding_fun =
+ case (try_encoding_fun model) of
+ (Just serial) ->
+ (Just
+ (Http.send
+ Struct.Event.ServerReplied
+ (Http.post
+ recipient
+ (Http.jsonBody serial)
+ (Json.Decode.list (decode))
+ )
+ )
+ )
+
+ Nothing -> Nothing
diff --git a/src/Comm/SetPlayer.elm b/src/Comm/SetPlayer.elm
new file mode 100644
index 0000000..a595777
--- /dev/null
+++ b/src/Comm/SetPlayer.elm
@@ -0,0 +1,26 @@
+module Comm.SetPlayer exposing (decode)
+
+-- Elm -------------------------------------------------------------------------
+import Json.Decode
+
+-- Map -------------------------------------------------------------------------
+import Struct.Player
+import Struct.ServerReply
+
+--------------------------------------------------------------------------------
+-- TYPES -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+
+--------------------------------------------------------------------------------
+-- LOCAL -----------------------------------------------------------------------
+--------------------------------------------------------------------------------
+internal_decoder : Struct.Player.Type -> Struct.ServerReply.Type
+internal_decoder player =
+ (Struct.ServerReply.SetPlayer player)
+
+--------------------------------------------------------------------------------
+-- EXPORTED --------------------------------------------------------------------
+--------------------------------------------------------------------------------
+decode : (Json.Decode.Decoder Struct.ServerReply.Type)
+decode =
+ (Json.Decode.map (internal_decoder) (Struct.Player.decoder))