1 package WWW
::BackpackTF
;
6 use parent qw
/Exporter/;
7 our $VERSION = '0.001001';
8 our @EXPORT_OK = qw
/TF2 DOTA2/;
10 use constant
+{ ## no critic (Capitalization)
14 QUALITIES
=> [qw
/Normal Genuine rarity2 Vintage rarity3 Unusual Unique Community Valve Self-Made Customized Strange Completed Haunted Collector's/],
18 my @qualities = @
{QUALITIES
()};
19 for (0 .. $#qualities) {
20 my $name = uc $qualities[$_];
21 $name =~ y/A-Z0-9//cd;
22 constant
->import($name, $_)
26 use JSON
::MaybeXS qw
/decode_json/;
29 use WWW
::BackpackTF
::Currency
;
30 use WWW
::BackpackTF
::Item
;
31 use WWW
::BackpackTF
::User
;
33 my $ht = HTTP
::Tiny
->new(agent
=> "WWW-BackpackTF/$VERSION");
36 my ($self, $url, %params) = @_;
37 $params{key
} = $self->{key
} if $self->{key
};
38 $url = $self->{base
} . $url;
39 $url .= "&$_=$params{$_}" for keys %params;
40 my $htr = $ht->get($url);
41 die $htr->{reason
} unless $htr->{success
}; ## no critic (RequireCarping)
42 my $response = decode_json
($htr->{content
})->{response
};
43 die $response->{message
} unless $response->{success
}; ## no critic (RequireCarping)
48 my ($class, %args) = @_;
49 $args{base
} //= 'http://backpack.tf/api/';
54 my ($self, $appid, $raw) = @_;
55 my $response = $self->request('IGetPrices/v4/?compress=1', maybe appid
=> $appid, maybe raw
=> $raw);
56 map { WWW
::BackpackTF
::Item
->new($_, $response->{items
}{$_}) } keys %{$response->{items
}}
60 my ($self, @users) = @_;
61 my $response = $self->request('IGetUsers/v3/?compress=1', steamids
=> join ',', @users);
62 @users = map { WWW
::BackpackTF
::User
->new($_) } values %{$response->{players
}};
63 wantarray ?
@users : $users[0]
67 my ($self, $appid) = @_;
68 my $response = $self->request('IGetCurrencies/v1/?compress=1', maybe appid
=> $appid);
69 map { WWW
::BackpackTF
::Currency
->new($_, $response->{currencies
}{$_}) } keys %{$response->{currencies
}};
79 WWW::BackpackTF - interface to the backpack.tf trading service
84 my $api_key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
85 my $user_id = <STDIN>;
86 my $bp = WWW::BackpackTF->new($api_key);
87 my $user = $bp->get_users($user_id);
88 print 'This user is named ', $user->name, ' and has ', $user->notifications, ' unread notification(s)';
89 my @all_items_in_dota2 = $bp->get_prices(WWW::BackpackTF::DOTA2);
90 my @currencies = $bp->get_currencies;
91 print 'The first currency is ', $currencies[0]->name;
95 WWW::BackpackTF is an interface to the backpack.tf Team Fortress 2/Dota 2/Counter-Strike: Global Offensive trading service.
101 =item B<new>([key => I<$api_key>], [base => I<$base_url>])
103 Create a new WWW::BackpackTF object. Takes a hash of parameters. Possible parameters:
109 The API key. Defaults to nothing. Most methods require an API key.
113 The base URL. Defaults to http://backpack.tf/api/.
117 =item B<get_prices>([I<$appid>, [I<$raw>]])
119 Get price information for all items. Takes two optional parameters. The first parameter is the appid and defaults to WWW::BackpackTF::TF2. The second (if true) adds a value_raw property to prices and defaults to false. Returns a list of L<WWW::BackpackTF::Item> objects.
121 =item B<get_users>(I<@users>)
123 Get profile information for a list of users. Takes any number of 64-bit Steam IDs as arguments and returns a list of L<WWW::BackpackTF::User> objects. This method does not require an API key. Dies with an error message if the operation is unsuccessful.
125 =item B<get_currencies>([I<$appid>])
127 Get currency information. Takes one optional parameter, the appid, which defaults to WWW::BackpackTF::TF2. Returns a list of L<WWW::BackpackTF::Currency> objects.
139 Constant (440) representing Team Fortress 2.
143 Constant (570) representing Dota 2.
147 Constant (730) representing Counter-Strike: Global Offensive
151 The Normal item quality (0).
155 The Genuine item quality (1).
159 The unused rarity2 item quality (2).
163 The Vintage item quality (3).
167 The unused rarity3 item quality (4).
171 The Unusual item quality (5).
175 The Unique item quality (6).
179 The Community item quality (7).
183 The Valve item quality (8).
187 The Self-Made item quality (9).
191 The unused Customized item quality (10).
195 The Strange item quality (11).
199 The Completed item quality (12).
203 The Haunted item quality (13).
207 The Collector's item quality (14).
213 L<http://backpack.tf/>, L<http://backpack.tf/api>
217 Marius Gavrilescu, E<lt>marius@ieval.roE<gt>
219 =head1 COPYRIGHT AND LICENSE
221 Copyright (C) 2014-2016 by Marius Gavrilescu
223 This library is free software; you can redistribute it and/or modify
224 it under the same terms as Perl itself, either Perl version 5.18.2 or,
225 at your option, any later version of Perl 5 you may have available.
This page took 0.031189 seconds and 4 git commands to generate.