diff options
author | Struan Donald <struan@exo.org.uk> | 2011-08-02 14:38:47 +0100 |
---|---|---|
committer | Struan Donald <struan@exo.org.uk> | 2011-08-02 14:38:47 +0100 |
commit | 2a12a44e391ba026d0e7460d0b503ba5dcb41e03 (patch) | |
tree | f4b6755cf47999ff8f04f42bfb5f5b19c7fa60c3 /perllib/Open311.pm | |
parent | 6d38f3aeaa6f4eb0f51a773658cb4923d45f6968 (diff) |
improvments and fixes to service request submission
Diffstat (limited to 'perllib/Open311.pm')
-rw-r--r-- | perllib/Open311.pm | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/perllib/Open311.pm b/perllib/Open311.pm index b7328bc93..12f3c2433 100644 --- a/perllib/Open311.pm +++ b/perllib/Open311.pm @@ -35,6 +35,7 @@ sub get_service_meta_info { sub send_service_request { my $self = shift; my $problem = shift; + my $service_code = shift; my $description = <<EOT; title: @{[$problem->title()]} @@ -50,6 +51,7 @@ EOT long => $problem->longitude, email => $problem->user->email, description => $description, + service_code => $service_code, }; if ( $problem->user->phone ) { @@ -59,22 +61,24 @@ EOT if ( $problem->extra ) { my $extras = $problem->extra; - for my $attr ( keys %{ $extras } ) { - my $name = sprintf( 'attribute[%s]', $attr ); - $params->{ $name } = $extras->{ $attr }; + for my $attr ( @$extras ) { + my $name = sprintf( 'attribute[%s]', $attr->{name} ); + $params->{ $name } = $attr->{value}; } } my $response = $self->_post( 'requests.xml', $params ); - my $xml = XML::Simple->new(); - my $obj = $xml->XMLin( $response ); + if ( $response ) { + my $xml = XML::Simple->new(); + my $obj = $xml->XMLin( $response ); - if ( $obj->{ request }->{ service_request_id } ) { - return $obj->{ request }->{ service_request_id }; - } else { - my $token = $obj->{ request }->{ token }; - return $self->get_service_request_id_from_token( $token ); + if ( $obj->{ request }->{ service_request_id } ) { + return $obj->{ request }->{ service_request_id }; + } else { + my $token = $obj->{ request }->{ token }; + return $self->get_service_request_id_from_token( $token ); + } } } @@ -93,7 +97,11 @@ sub get_service_request_id_from_token { my $xml = XML::Simple->new(); my $obj = $xml->XMLin( $service_token_xml ); - return $obj->{ request }->{ service_request_id }; + if ( $obj->{ request }->{ service_request_id } ) { + return $obj->{ request }->{ service_request_id }; + } else { + return 0; + } } sub _get { @@ -132,6 +140,8 @@ sub _post { if ( $res->is_success ) { return $res->decoded_content; } else { + warn "request failed: " . $res->status_line; + warn $res->decoded_content; return 0; } } |