| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2018-09-13 16:51:08 +0200 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2018-09-13 16:51:08 +0200 | 
| commit | 9ec5806bc721734923ff4c93f7ef1f97a6a03248 (patch) | |
| tree | c80b737a8bf0cc6e311c4fe7256f68e7ea8e158a /src/Comm | |
Starting an browser extension for TO...
Diffstat (limited to 'src/Comm')
| -rw-r--r-- | src/Comm/GetBattles.elm | 41 | ||||
| -rw-r--r-- | src/Comm/GetID.elm | 43 | ||||
| -rw-r--r-- | src/Comm/Okay.elm | 21 | ||||
| -rw-r--r-- | src/Comm/Send.elm | 67 | ||||
| -rw-r--r-- | src/Comm/SetPlayer.elm | 26 | 
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)) | 


