diff options
Diffstat (limited to 'perllib/Open311/Endpoint/Service')
-rw-r--r-- | perllib/Open311/Endpoint/Service/Attribute.pm | 82 | ||||
-rw-r--r-- | perllib/Open311/Endpoint/Service/Exor.pm | 44 | ||||
-rw-r--r-- | perllib/Open311/Endpoint/Service/Request.pm | 110 | ||||
-rw-r--r-- | perllib/Open311/Endpoint/Service/Request/Update.pm | 57 | ||||
-rw-r--r-- | perllib/Open311/Endpoint/Service/Request/mySociety.pm | 51 |
5 files changed, 0 insertions, 344 deletions
diff --git a/perllib/Open311/Endpoint/Service/Attribute.pm b/perllib/Open311/Endpoint/Service/Attribute.pm deleted file mode 100644 index f88919408..000000000 --- a/perllib/Open311/Endpoint/Service/Attribute.pm +++ /dev/null @@ -1,82 +0,0 @@ -package Open311::Endpoint::Service::Attribute; -use Moo; -use MooX::HandlesVia; -use Types::Standard ':all'; -use namespace::clean; - -# from http://wiki.open311.org/GeoReport_v2#GET_Service_Definition - -# A unique identifier for the attribute -has code => ( - is => 'ro', - isa => Str, -); - -# true denotes that user input is needed -# false means the attribute is only used to present information to the user within the description field -# -# NB: unsure what false means for the rest of the options here, e.g. should remainder of fields by Maybe[] ? -has variable => ( - is => 'ro', - isa => Bool, - default => sub { 1 }, -); - -# Denotes the type of field used for user input. -has datatype => ( - is => 'ro', - isa => Enum[qw/ string number datetime text singlevaluelist multivaluelist /], -); - -has required => ( - is => 'ro', - isa => Bool, -); - -# A description of the datatype which helps the user provide their input -has datatype_description => ( - is => 'ro', - isa => Str, -); - -# A description of the attribute field with instructions for the user to find -# and identify the requested information -has description => ( - is => 'ro', - isa => Str, -); - -# NB: we don't model the "Order" field here, as that's really for the Service -# object to return - -# only relevant for singlevaluelist or multivaluelist -has values => ( - is => 'ro', - isa => HashRef, - default => sub { {} }, - handles_via => 'Hash', - handles => { - get_value => 'get', - get_values => 'keys', - has_values => 'count', - values_kv => 'kv', - } -); - -sub schema_definition { - my $self = shift; - - my @values = map +{ type => '//str', value => $_ }, $self->get_values; - my %schema_types = ( - string => '//str', - number => '//num', - datetime => '//str', # TODO - text => '//str', - singlevaluelist => { type => '//any', of => [@values] }, - multivaluelist => { type => '//arr', of => [@values] }, - ); - - return $schema_types{ $self->datatype }; -} - -1; diff --git a/perllib/Open311/Endpoint/Service/Exor.pm b/perllib/Open311/Endpoint/Service/Exor.pm deleted file mode 100644 index 6261875c1..000000000 --- a/perllib/Open311/Endpoint/Service/Exor.pm +++ /dev/null @@ -1,44 +0,0 @@ -package Open311::Endpoint::Service::Exor; -use Moo; -extends 'Open311::Endpoint::Service'; -use Open311::Endpoint::Service::Attribute; - -has '+attributes' => ( - is => 'ro', - default => sub { [ - Open311::Endpoint::Service::Attribute->new( - code => 'easting', - variable => 0, # set by server - datatype => 'number', - required => 1, - datatype_description => 'a number', - description => 'easting', - ), - Open311::Endpoint::Service::Attribute->new( - code => 'northing', - variable => 0, # set by server - datatype => 'number', - required => 1, - datatype_description => 'a number', - description => 'northing', - ), - Open311::Endpoint::Service::Attribute->new( - code => 'closest_address', - variable => 0, # set by server - datatype => 'string', - required => 1, - datatype_description => 'an address', - description => 'closest address', - ), - Open311::Endpoint::Service::Attribute->new( - code => 'external_id', - variable => 0, # set by server - datatype => 'string', - required => 1, - datatype_description => 'an id', - description => 'external system ID', - ), - ] }, -); - -1; diff --git a/perllib/Open311/Endpoint/Service/Request.pm b/perllib/Open311/Endpoint/Service/Request.pm deleted file mode 100644 index 8dfa5df3a..000000000 --- a/perllib/Open311/Endpoint/Service/Request.pm +++ /dev/null @@ -1,110 +0,0 @@ -package Open311::Endpoint::Service::Request; -use Moo; -use MooX::HandlesVia; -use Types::Standard ':all'; -use namespace::clean; - -has service => ( - is => 'ro', - isa => InstanceOf['Open311::Endpoint::Service'], - handles => [ - qw/ service_code service_name / - ], -); - -has service_request_id => ( - is => 'ro', - isa => Maybe[Str], - predicate => 1, -); - -has token => ( - is => 'ro', - isa => Maybe[Str], - predicate => 1, -); - -has service_notice => ( - is => 'ro', - isa => Maybe[Str], - predicate => 1, -); - -has account_id => ( - is => 'ro', - isa => Maybe[Str], - predicate => 1, -); - -has status => ( - is => 'rw', - isa => Enum[qw/ open closed /], - default => sub { 'open' }, -); - -has description => ( - is => 'ro', - isa => Maybe[Str], -); - -has agency_responsible => ( - is => 'ro', - isa => Maybe[Str], -); - -has requested_datetime => ( - is => 'ro', - isa => Maybe[ InstanceOf['DateTime'] ], - default => sub { DateTime->now() }, -); - -has updated_datetime => ( - is => 'rw', - isa => Maybe[ InstanceOf['DateTime'] ], - default => sub { DateTime->now() }, -); - -has expected_datetime => ( - is => 'ro', - isa => Maybe[ InstanceOf['DateTime'] ], -); - -has address => ( - is => 'ro', - isa => Str, - default => sub { '' }, -); - -has address_id => ( - is => 'ro', - isa => Str, - default => sub { '' }, -); - -has zipcode => ( - is => 'ro', - isa => Str, - default => sub { '' }, -); - -has latlong => ( - is => 'ro', - isa => Tuple[ Num, Num ], - default => sub { [0,0] }, - handles_via => 'Array', - handles => { - #lat => [ get => 0 ], - #long => [ get => 1 ], - } -); - -sub lat { shift->latlong->[0] } -sub long { shift->latlong->[1] } - -has media_url => ( - is => 'ro', - isa => Str, - default => sub { '' }, -); - -1; diff --git a/perllib/Open311/Endpoint/Service/Request/Update.pm b/perllib/Open311/Endpoint/Service/Request/Update.pm deleted file mode 100644 index b881af9ce..000000000 --- a/perllib/Open311/Endpoint/Service/Request/Update.pm +++ /dev/null @@ -1,57 +0,0 @@ -package Open311::Endpoint::Service::Request::Update; -use Moo; -use Types::Standard ':all'; -use namespace::clean; - -sub BUILDARGS { - my ($class, %args) = @_; - my $service_request = delete $args{service_request}; - - if (! $args{status}) { - $args{status} = $service_request->status; - } - - return \%args; -} - -has update_id => ( - is => 'ro', - isa => Maybe[Str], - predicate => 1, -); - -has service_request_id => ( - is => 'ro', - isa => Maybe[Str], - predicate => 1, -); - -has token => ( - is => 'ro', - isa => Maybe[Str], - predicate => 1, -); - -has status => ( - is => 'ro', - isa => Enum[qw/ open closed /], -); - -has description => ( - is => 'ro', - isa => Maybe[Str], -); - -has media_url => ( - is => 'ro', - isa => Str, - default => sub { '' }, -); - -has updated_datetime => ( - is => 'ro', - isa => InstanceOf['DateTime'], - default => sub { DateTime->now() }, -); - -1; diff --git a/perllib/Open311/Endpoint/Service/Request/mySociety.pm b/perllib/Open311/Endpoint/Service/Request/mySociety.pm deleted file mode 100644 index 85e31b26f..000000000 --- a/perllib/Open311/Endpoint/Service/Request/mySociety.pm +++ /dev/null @@ -1,51 +0,0 @@ -package Open311::Endpoint::Service::Request::mySociety; -use Moo; -use MooX::HandlesVia; -extends 'Open311::Endpoint::Service::Request'; - -use DateTime; -use Open311::Endpoint::Service::Request::Update; -use Types::Standard ':all'; - -has updates => ( - is => 'rw', - isa => ArrayRef[InstanceOf['Open311::Endpoint::Service::Request::Update']], - default => sub { [] }, - handles_via => 'Array', - handles => { - _add_update => 'push', - get_updates => 'elements', - get_update => 'get', - has_updates => 'count', - filter_updates => 'grep', - } -); - -sub add_update { - my ($self, %args) = @_; - my $update = Open311::Endpoint::Service::Request::Update->new( - %args, - service_request => $self, - service_request_id => $self->service_request_id, - ); - $self->_add_update($update); -} - -sub last_update { - my $self = shift; - return $self->has_updates ? $self->get_update(-1) : undef; -} - -around updated_datetime => sub { - my ($orig, $self) = @_; - my $last_update = $self->last_update or return; - return $last_update->updated_datetime; -}; - -around status => sub { - my ($orig, $self) = @_; - my $last_update = $self->last_update or return 'open'; - return $last_update->status; -}; - -1; |