X-Git-Url: http://git.ieval.ro/?a=blobdiff_plain;f=lib%2FWWW%2FBackpackTF.pm;h=deb0fde80bfcfe06d25e4093d51c26fb0db53fe2;hb=fa7f4d7f5222dc5e0137267caf76a04d5fb2300a;hp=5e33b57d67e0055394290ac18fd4d5d7e83003ce;hpb=72f329fe90d7d3aaee7400d639a332d55b30179f;p=www-backpacktf.git diff --git a/lib/WWW/BackpackTF.pm b/lib/WWW/BackpackTF.pm index 5e33b57..deb0fde 100644 --- a/lib/WWW/BackpackTF.pm +++ b/lib/WWW/BackpackTF.pm @@ -4,12 +4,13 @@ use 5.014000; use strict; use warnings; use parent qw/Exporter/; -our $VERSION = '0.000_002'; -our @EXPORT_OK = qw/TF2 DOTA2/; +our $VERSION = '0.002'; +our @EXPORT_OK = qw/TF2 DOTA2 CSGO/; -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/], }; @@ -18,24 +19,31 @@ BEGIN { for (0 .. $#qualities) { my $name = uc $qualities[$_]; $name =~ y/A-Z0-9//cd; + push @EXPORT_OK, $name; constant->import($name, $_) } } use JSON::MaybeXS qw/decode_json/; -use LWP::Simple qw/get/; +use HTTP::Tiny; use PerlX::Maybe; use WWW::BackpackTF::Currency; use WWW::BackpackTF::Item; +use WWW::BackpackTF::MarketItem; +use WWW::BackpackTF::Listing; 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 } @@ -64,9 +72,26 @@ sub get_currencies { map { WWW::BackpackTF::Currency->new($_, $response->{currencies}{$_}) } keys %{$response->{currencies}}; } +# get_price_history not implemented +# get_special_items not implemented + +sub get_market_prices { + my ($self, $appid) = @_; + my $response = $self->request('IGetMarketPrices/v1/?compress=1', maybe appid => $appid); + map { WWW::BackpackTF::MarketItem->new($_, $response->{items}{$_}) } keys %{$response->{items}} +} + +sub get_user_listings { + my ($self, $steamid, $appid) = @_; + my $response = $self->request('IGetUserListings/v2/?compress=1', steamid => $steamid, maybe appid => $appid); + map { WWW::BackpackTF::Listing->new($_) } @{$response->{listings}} +} + 1; __END__ +=encoding utf-8 + =head1 NAME WWW::BackpackTF - interface to the backpack.tf trading service @@ -85,7 +110,7 @@ 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 @@ -119,6 +144,14 @@ Get profile information for a list of users. Takes any number of 64-bit Steam ID Get currency information. Takes one optional parameter, the appid, which defaults to WWW::BackpackTF::TF2. Returns a list of L objects. +=item B([I<$appid>]) + +Get Steam Community Market price information for all items. Takes one optional parameter, the appid, which defaults to WWW::BackpackTF::TF2. Returns a list of L objects. + +=item B(I<$steamid>, [I<$appid>]) + +Get classified listing of a given user. Takes a mandatory 64-bit Steam ID of the user, and an optional parameter, the appid, which defaults to WWW::BackpackTF::TF2. Returns a list of L objects. + =back =head2 EXPORTS @@ -135,6 +168,10 @@ Constant (440) representing Team Fortress 2. Constant (570) representing Dota 2. +=item B + +Constant (730) representing Counter-Strike: Global Offensive + =item B The Normal item quality (0). @@ -207,7 +244,7 @@ Marius Gavrilescu, Emarius@ieval.roE =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,