package WebService::TFL::Bus::Request; use Moo; use Types::Standard -all; use WebService::TFL::Bus::Fields; use namespace::autoclean; for my $field (WebService::TFL::Bus::Fields->query_fields) { has $field => ( is => 'rw', predicate => "has_$field", ); } has ReturnList => ( is => 'rw', isa => ArrayRef, predicate => 'has_ReturnList', ); sub request_uri { my ($self,$base_uri) = @_; my $uri = $base_uri->clone; my %form; for my $field (WebService::TFL::Bus::Fields->query_fields) { my $pred = "has_$field"; if ($self->$pred) { $form{$field} = $self->$field; } } if ($self->has_ReturnList) { $form{ReturnList}=join ',',@{$self->ReturnList} } $uri->query_form(\%form); return $uri; } 1;