BalanceOfPower
view release on metacpan or search on metacpan
lib/BalanceOfPower/Role/WebMaster.pm view on Meta::CPAN
}
sub collect_api_data
{
my $self = shift;
my $game = shift;
$self->manage_web_players($game);
$self->manage_stock_orders($game);
$self->manage_influence_orders($game);
}
sub manage_stock_orders
{
my $self = shift;
my $game = shift;
foreach my $p (@{$self->players})
{
my $password = $self->admin_password;
my $user = $p->name;
my $call = "/api/$game/stock-orders?player=$user&password=$password";
my $orders = $self->get_web_data($call);
if(defined $orders)
{
say "$game - Stock orders for $user retrieved";
for(@{$orders})
{
$self->get_player($p->name)->add_stock_order($_);
}
}
else
{
say "$game - Stock orders for $user NOT retrieved";
}
}
}
sub manage_influence_orders
{
my $self = shift;
my $game = shift;
foreach my $p (@{$self->players})
{
my $password = $self->admin_password;
my $user = $p->name;
my $call = "/api/$game/influence-orders?player=$user&password=$password";
my $orders = $self->get_web_data($call);
if(defined $orders)
{
say "$game - Influence orders for $user retrieved";
for(@{$orders})
{
$self->get_player($p->name)->add_control_order($_->{nation}, $_->{command});
}
}
else
{
say "$game - Orders for $user NOT retrieved";
}
}
}
sub update_web_players
{
my $self = shift;
my $game = shift;
my $password = $self->admin_password;
my @players = @{$self->players};
foreach my $p (@players)
{
my $res = $self->post_web_data("/api/$game/user-data", { password => $password,
player => $p->name,
money => $p->money,
position => $p->position });
say "$game - Updating " . $p->name. ": " . $res;
}
}
sub get_web_data
{
my $self = shift;
my $call = shift;
my $bare = shift || 0;
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy;
my $response = $ua->get($self->api_url . $call);
if ($response->is_success) {
if($bare)
{
return $response->decoded_content;
}
else
{
my $json = JSON->new->allow_nonref;
return $json->decode( $response->decoded_content );
}
}
else {
return undef;
}
}
sub post_web_data
{
my $self = shift;
my $call = shift;
my $form = shift;
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy;
my $response = $ua->post($self->api_url . $call, $form);
return $response->code;
}
1;
( run in 0.467 second using v1.01-cache-2.11-cpan-39bf76dae61 )