Skip to content

Commit

Permalink
Add json & text representations to the bill collection
Browse files Browse the repository at this point in the history
  • Loading branch information
lukec committed Jan 1, 2010
1 parent 0034dd7 commit f43023a
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 3 deletions.
6 changes: 4 additions & 2 deletions app.psgi
Expand Up @@ -11,10 +11,10 @@ my $router = router {
to { controller => 'ParlAPI::Parliaments', action => 'show' };

# Members
match '/parliaments/{parliament}-{session}/members' =>
to { controller => 'ParlAPI::Members', action => 'pretty_list' };
match '/parliaments/{parliament}-{session}/members.{format}' =>
to { controller => 'ParlAPI::Members', action => 'pretty_list' };
match '/parliaments/{parliament}-{session}/members' =>
to { controller => 'ParlAPI::Members', action => 'pretty_list' };
match '/parliaments/{parliament}-{session}/members/{member}.{format}' =>
to { controller => 'ParlAPI::Members', action => 'show_member' };
match '/parliaments/{parliament}-{session}/members/{member}' =>
Expand All @@ -25,6 +25,8 @@ my $router = router {
to { controller => 'ParlAPI::Members', action => 'show_member' };

# Bills
match '/parliaments/{parliament}-{session}/bills.{format}' =>
to { controller => 'ParlAPI::Bills', action => 'pretty_list' };
match '/parliaments/{parliament}-{session}/bills' =>
to { controller => 'ParlAPI::Bills', action => 'pretty_list' };
match '/parliaments/{parliament}-{session}/bills/{billname}' =>
Expand Down
11 changes: 11 additions & 0 deletions lib/ParlAPI/Bills.pm
Expand Up @@ -13,6 +13,17 @@ sub pretty_list {
return $self->render('unknown_parliament.html', $params) unless $parl;

my $bills = $self->model->bills($parl);
if (my $format = $params->{format} || '') {
if ($format eq 'json') {
return $self->render_json( [ map { $_->to_hash } @$bills ] );
}
elsif ($format =~ m/^te?xt$/) {
return $self->render_text(join "\n", map { $_->name } @$bills);
}
else {
return $self->unknown_format($format);
}
}

return $self->render('bills.html',
{
Expand Down
9 changes: 9 additions & 0 deletions lib/ParlAPI/Model/Bill.pm
Expand Up @@ -23,6 +23,15 @@ around 'All' => sub {
return $orig->(@_, order_by => 'bill_id');
};

sub to_hash {
my $self = shift;
return {
parliament => $self->parliament->to_hash,
links => $self->links,
map { $_ => $self->$_ } qw/name sponsor_id sponsor_title summary official_url/
};
}

sub _build_sponsor {
my $self = shift;
return ParlAPI::Model->get_member($self->sponsor_id);
Expand Down
4 changes: 3 additions & 1 deletion lib/ParlAPI/Model/Parliament.pm
Expand Up @@ -24,6 +24,8 @@ sub BUILDARGS {
return $args;
}

sub to_hash { shift->hash_repr }

sub _build_name {
my $self = shift;
return _add_postfix($self->parliament) . " Parliament, "
Expand All @@ -44,7 +46,7 @@ sub _build_hash_repr {
my $self = shift;
return {
map { $_ => $self->$_ }
qw/id name parliament session start_date end_date/
qw/parl_id name parliament session start_date end_date url short_name/
};
}

Expand Down

0 comments on commit f43023a

Please sign in to comment.