use strict;
use warnings;
use parent qw/Exporter/;
-our $VERSION = '0.000_002';
+our $VERSION = '0.001001';
our @EXPORT_OK = qw/TF2 DOTA2/;
-use constant +{
+use constant +{ ## no critic (Capitalization)
TF2 => 440,
DOTA2 => 570,
+ CSGO => 730,
QUALITIES => [qw/Normal Genuine rarity2 Vintage rarity3 Unusual Unique Community Valve Self-Made Customized Strange Completed Haunted Collector's/],
};
}
}
-use JSON qw/decode_json/;
-use LWP::Simple qw/get/;
+use JSON::MaybeXS qw/decode_json/;
+use HTTP::Tiny;
use PerlX::Maybe;
use WWW::BackpackTF::Currency;
use WWW::BackpackTF::Item;
use WWW::BackpackTF::User;
+my $ht = HTTP::Tiny->new(agent => "WWW-BackpackTF/$VERSION");
+
sub request {
my ($self, $url, %params) = @_;
- $params{key} = $self->{key};
+ $params{key} = $self->{key} if $self->{key};
$url = $self->{base} . $url;
$url .= "&$_=$params{$_}" for keys %params;
- my $response = decode_json(get $url)->{response};
- die $response->{message} unless $response->{success};
+ my $htr = $ht->get($url);
+ die $htr->{reason} unless $htr->{success}; ## no critic (RequireCarping)
+ my $response = decode_json($htr->{content})->{response};
+ die $response->{message} unless $response->{success}; ## no critic (RequireCarping)
$response
}
sub get_prices {
my ($self, $appid, $raw) = @_;
my $response = $self->request('IGetPrices/v4/?compress=1', maybe appid => $appid, maybe raw => $raw);
- map { WWW::BackpackTF::Item->new($_, $response->{items}{$_}) } keys $response->{items}
+ map { WWW::BackpackTF::Item->new($_, $response->{items}{$_}) } keys %{$response->{items}}
}
sub get_users {
my ($self, @users) = @_;
my $response = $self->request('IGetUsers/v3/?compress=1', steamids => join ',', @users);
- @users = map { WWW::BackpackTF::User->new($_) } values $response->{players};
+ @users = map { WWW::BackpackTF::User->new($_) } values %{$response->{players}};
wantarray ? @users : $users[0]
}
sub get_currencies {
my ($self, $appid) = @_;
my $response = $self->request('IGetCurrencies/v1/?compress=1', maybe appid => $appid);
- map { WWW::BackpackTF::Currency->new($_, $response->{currencies}{$_}) } keys $response->{currencies};
+ map { WWW::BackpackTF::Currency->new($_, $response->{currencies}{$_}) } keys %{$response->{currencies}};
}
1;
__END__
+=encoding utf-8
+
=head1 NAME
WWW::BackpackTF - interface to the backpack.tf trading service
=head1 DESCRIPTION
-WWW::BackpackTF is an interface to the backpack.tf Team Fortress 2/Dota 2 trading service.
+WWW::BackpackTF is an interface to the backpack.tf Team Fortress 2/Dota 2/Counter-Strike: Global Offensive trading service.
=head2 METHODS
Constant (570) representing Dota 2.
+=item B<CSGO>
+
+Constant (730) representing Counter-Strike: Global Offensive
+
=item B<NORMAL>
The Normal item quality (0).
=head1 COPYRIGHT AND LICENSE
-Copyright (C) 2014 by Marius Gavrilescu
+Copyright (C) 2014-2016 by Marius Gavrilescu
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.18.2 or,