WebService-Heartrails-Express

 view release on metacpan or  search on metacpan

lib/WebService/Heartrails/Express.pm  view on Meta::CPAN

   isa => 'WebService::Heartrails::Express::Provider',
   lazy_build => 1,
);

has areas => (
   is => 'rw',
   isa => 'ArrayRef',
   lazy_build => 1
);

has prefs => (
   is => 'rw',
   isa => 'ArrayRef',
   lazy_build => 1
);

sub line{
  my $self = shift;
  $self->provider->dispatch('line',@_);
}

lib/WebService/Heartrails/Express.pm  view on Meta::CPAN

use constant AREA_ENDPOINT => 'http://express.heartrails.com/api/json?method=getAreas';
use constant PREF_ENDPOINT => 'http://express.heartrails.com/api/json?method=getPrefectures';

sub _build_areas{
 my $self = shift;
 my $response = $self->provider->furl->get(AREA_ENDPOINT);
 my $content = JSON::decode_json($response->{content});
 return $content->{response}->{area};
}

sub _build_prefs{
 my $self = shift;
 my $response = $self->provider->furl->get(PREF_ENDPOINT);
 my $content = JSON::decode_json($response->{content});
 return $content->{response}->{prefecture};
}

no Mouse;
__PACKAGE__->meta->make_immutable;

1;

t/01_express.t  view on Meta::CPAN


my $express = new WebService::Heartrails::Express();

subtest 'area' => sub{
 my $content = $express->areas;
 is($content->[2],'関東');
 is($content->[5],'中国');
};

subtest 'pref' => sub{
 my $content = $express->prefs;
 is($content->[0],'北海道');
 is($content->[5],'山形県');
};

subtest 'line' => sub{
 my $area_only = $express->line({area => '関東'});
 is($area_only->[2],'JR中央線');
 my $pref_only = $express->line({prefecture => '神奈川県'});
 is($pref_only->[1],'JR京浜東北線');
 my $pref_and_area = $express->line({area => '関東',prefecture => '千葉県'});



( run in 0.580 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )