summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornsensfel <SpamShield0@noot-noot.org>2018-09-13 16:25:14 +0200
committernsensfel <SpamShield0@noot-noot.org>2018-09-13 16:25:14 +0200
commit3ba41215613a041ef4a0d7efde2ba38f3ac3cdb7 (patch)
treef4cc16665cdbf4ca347c6ee831c19d9c073efcf5 /src/player
parent5c39cd43e113515691e5e1d81aef95042955ac60 (diff)
Adds modules to deal with the browser extension.
Diffstat (limited to 'src/player')
-rw-r--r--src/player/query/plr_get_battles.erl82
-rw-r--r--src/player/reply/plr_set_battles.erl49
2 files changed, 131 insertions, 0 deletions
diff --git a/src/player/query/plr_get_battles.erl b/src/player/query/plr_get_battles.erl
new file mode 100644
index 0000000..7a447c1
--- /dev/null
+++ b/src/player/query/plr_get_battles.erl
@@ -0,0 +1,82 @@
+-module(plr_get_battles).
+
+% This module is intended for use by the browser extension, to check for active
+% battles for a given player. It does not require being logged in.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-include("../../../include/yaws_api.hrl").
+
+-record
+(
+ input,
+ {
+ target_id :: binary()
+ }
+).
+
+-record
+(
+ query_state,
+ {
+ player :: shr_player:type()
+ }
+).
+
+-type input() :: #input{}.
+-type query_state() :: #query_state{}.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-export([out/1]).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec parse_input (binary()) -> input().
+parse_input (Req) ->
+ JSONReqMap = jiffy:decode(Req, [return_maps]),
+ TargetID = maps:get(<<"id">>, JSONReqMap),
+
+ #input
+ {
+ target_id = TargetID
+ }.
+
+-spec fetch_data (input()) -> query_state().
+fetch_data (Input) ->
+ TargetID = Input#input.target_id,
+
+ Player = shr_timed_cache:fetch(player_db, any, TargetID),
+
+ #query_state
+ {
+ player = Player
+ }.
+
+
+-spec generate_reply(query_state(), input()) -> binary().
+generate_reply (QueryState, _Input) ->
+ Player = QueryState#query_state.player,
+
+ Output = jiffy:encode([plr_set_battles:generate(Player)]),
+
+ Output.
+
+-spec handle (binary()) -> binary().
+handle (Req) ->
+ Input = parse_input(Req),
+ QueryState = fetch_data(Input),
+ generate_reply(QueryState, Input).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+out(A) ->
+ {
+ content,
+ "application/json; charset=UTF-8",
+ handle(A#arg.clidata)
+ }.
diff --git a/src/player/reply/plr_set_battles.erl b/src/player/reply/plr_set_battles.erl
new file mode 100644
index 0000000..a45a49f
--- /dev/null
+++ b/src/player/reply/plr_set_battles.erl
@@ -0,0 +1,49 @@
+-module(plr_set_battles).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-export([generate/1]).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-spec generate (shr_player:type()) -> {list(any())}.
+generate (Player) ->
+ CampaignList =
+ lists:map
+ (
+ fun shr_battle_summary:encode/1,
+ array:to_list(shr_player:get_campaign_summaries(Player))
+ ),
+
+ InvasionList =
+ lists:map
+ (
+ fun shr_battle_summary:encode/1,
+ array:to_list(shr_player:get_invasion_summaries(Player))
+ ),
+
+ EventList =
+ lists:map
+ (
+ fun shr_battle_summary:encode/1,
+ array:to_list(shr_player:get_event_summaries(Player))
+ ),
+
+ {
+ [
+ {<<"msg">>, <<"set_battles">>},
+ {<<"cmps">>, CampaignList},
+ {<<"invs">>, InvasionList},
+ {<<"evts">>, EventList}
+ ]
+ }.