package AMAZON_REST; use LWP::UserAgent; use XML::Simple; use Unicode::RecursiveDowngrade; use strict; use warnings; sub new { my($class, %param) = @_; my $self = bless { AWSAccessKeyId => $param{AWSAccessKeyId} || '', SubscriptionID => $param{SubscriptionID} || '', AssociateTag => $param{AssociateTag} || '', UserAgent => $param{UserAgent} || 'ECS-Agent/0.1', BaseURL => 'http://webservices.amazon.co.jp/onca/xml', Version => '2005-10-05', Proxy => $param{Proxy}, }, $class; $self; } sub request { my ($self, $operation, $param ) = @_; my $id; if( $self->{AWSAccessKeyId} ){ $id='AWSAccessKeyId='.$self->{AWSAccessKeyId}; }elsif( $self->{SubscriptionID} ){ $id='SubscriptionId='.$self->{SubscriptionID}; }else{ return; } my $request_url = $self->{BaseURL}.'?' . 'Service=AWSECommerceService' . '&'.$id . '&Operation=' . $operation; if( $self->{AssociateTag} ){ $request_url .= '&AssociateTag=' . $self->{AssociateTag}; } foreach my $key ( keys %{$param} ) { $request_url .= '&'.$key.'='.$param->{$key}; } $request_url .= ( '&Version='. $self->{Version} ); print $request_url."\n"; my $ua = LWP::UserAgent->new; $ua->timeout(10); $ua->agent($self->{UserAgent}); if( $self->{Proxy} ){ $ua->proxy('http', $self->{Proxy} ); } my $response = $ua->get($request_url); if ($response->is_success) { my $rd = Unicode::RecursiveDowngrade->new; my $xml = $rd->downgrade(XMLin($response->content, ForceArray => 1)); return $xml; } return; } 1;