aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/SendReport/Angus.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet/SendReport/Angus.pm')
-rw-r--r--perllib/FixMyStreet/SendReport/Angus.pm167
1 files changed, 0 insertions, 167 deletions
diff --git a/perllib/FixMyStreet/SendReport/Angus.pm b/perllib/FixMyStreet/SendReport/Angus.pm
deleted file mode 100644
index 4ba5f3070..000000000
--- a/perllib/FixMyStreet/SendReport/Angus.pm
+++ /dev/null
@@ -1,167 +0,0 @@
-package FixMyStreet::SendReport::Angus;
-
-use Moo;
-
-BEGIN { extends 'FixMyStreet::SendReport'; }
-
-use Try::Tiny;
-use Encode;
-use XML::Simple;
-
-sub get_auth_token {
- my ($self, $authxml) = @_;
-
- my $xml = new XML::Simple;
- my $obj;
-
- eval {
- $obj = $xml->parse_string( $authxml );
- };
-
- my $success = $obj->{success};
- $success =~ s/^\s+|\s+$//g if defined $success;
- my $token = $obj->{AuthenticateResult};
- $token =~ s/^\s+|\s+$//g if defined $token;
-
- if (defined $success && $success eq 'True' && defined $token) {
- return $token;
- } else {
- $self->error("Couldn't authenticate against Angus endpoint.");
- }
-}
-
-sub get_external_id {
- my ($self, $resultxml) = @_;
-
- my $xml = new XML::Simple;
- my $obj;
-
- eval {
- $obj = $xml->parse_string( $resultxml );
- };
-
- my $success = $obj->{success};
- $success =~ s/^\s+|\s+$//g if defined $success;
- my $external_id = $obj->{CreateRequestResult}->{RequestId};
-
- if (defined $success && $success eq 'True' && defined $external_id) {
- return $external_id;
- } else {
- $self->error("Couldn't find external id in response from Angus endpoint.");
- return undef;
- }
-}
-
-sub crm_request_type {
- my ($self, $row, $h) = @_;
- return 'StLight'; # TODO: Set this according to report category
-}
-
-sub jadu_form_fields {
- my ($self, $row, $h) = @_;
- my $xml = XML::Simple->new(
- NoAttr=> 1,
- KeepRoot => 1,
- SuppressEmpty => 0,
- );
- my $metas = $row->get_extra_fields();
- my %extras;
- foreach my $field (@$metas) {
- $extras{$field->{name}} = $field->{value};
- }
- my $cobrand = FixMyStreet::Cobrand->get_class_for_moniker($row->cobrand)->new();
- my $output = $xml->XMLout({
- formfields => {
- formfield => [
- {
- name => 'RequestTitle',
- value => $h->{title}
- },
- {
- name => 'RequestDetails',
- value => $h->{detail}
- },
- {
- name => 'ReporterName',
- value => $h->{name}
- },
- {
- name => 'ReporterEmail',
- value => $h->{email}
- },
- {
- name => 'ReporterAnonymity',
- value => $row->anonymous ? 'True' : 'False'
- },
- {
- name => 'ReportedDateTime',
- value => $h->{confirmed}
- },
- {
- name => 'ColumnId',
- value => $extras{'column_id'} || ''
- },
- {
- name => 'ReportId',
- value => $h->{id}
- },
- {
- name => 'ReportedNorthing',
- value => $h->{northing}
- },
- {
- name => 'ReportedEasting',
- value => $h->{easting}
- },
- {
- name => 'Imageurl1',
- value => $row->photos->[0] ? ($cobrand->base_url . $row->photos->[0]->{url_full}) : ''
- },
- {
- name => 'Imageurl2',
- value => $row->photos->[1] ? ($cobrand->base_url . $row->photos->[1]->{url_full}) : ''
- },
- {
- name => 'Imageurl3',
- value => $row->photos->[2] ? ($cobrand->base_url . $row->photos->[2]->{url_full}) : ''
- }
- ]
- }
- });
- # The endpoint crashes if the JADUFormFields string has whitespace between XML elements, so strip it out...
- $output =~ s/>[\s\n]+</></g;
- return $output;
-}
-
-sub send {
- my ( $self, $row, $h ) = @_;
-
- # FIXME: should not recreate this each time
- my $angus_service;
-
- require Integrations::AngusSOAP;
-
- my $return = 1;
- $angus_service ||= Integrations::AngusSOAP->on_fault(sub { my($soap, $res) = @_; die ref $res ? $res->faultstring : $soap->transport->status, "\n"; });
- try {
- my $authresult = $angus_service->AuthenticateJADU();
- my $authtoken = $self->get_auth_token( $authresult );
- # authenticationtoken, CallerId, CallerAddressId, DeliveryId, DeliveryAddressId, CRMRequestType, JADUXFormRef, PaymentRef, JADUFormFields
- my $result = $angus_service->CreateServiceRequest(
- $authtoken, '1', '1', '1', '1', $self->crm_request_type($row, $h),
- 'FMS', '', $self->jadu_form_fields($row, $h)
- );
- my $external_id = $self->get_external_id( $result );
- if ( $external_id ) {
- $row->external_id( $external_id );
- $return = 0;
- }
- } catch {
- my $e = $_;
- $self->error( "Error sending to Angus: $e" );
- };
- $self->success( !$return );
- return $return;
-}
-
-1;