aboutsummaryrefslogtreecommitdiffstats
path: root/perllib
diff options
context:
space:
mode:
Diffstat (limited to 'perllib')
-rw-r--r--perllib/FixMyStreet/Cobrand/Angus.pm132
-rw-r--r--perllib/FixMyStreet/Map/Angus.pm18
-rw-r--r--perllib/FixMyStreet/SendReport/Angus.pm167
-rw-r--r--perllib/Integrations/AngusSOAP.pm168
4 files changed, 0 insertions, 485 deletions
diff --git a/perllib/FixMyStreet/Cobrand/Angus.pm b/perllib/FixMyStreet/Cobrand/Angus.pm
deleted file mode 100644
index 87dcc1d96..000000000
--- a/perllib/FixMyStreet/Cobrand/Angus.pm
+++ /dev/null
@@ -1,132 +0,0 @@
-package FixMyStreet::Cobrand::Angus;
-use parent 'FixMyStreet::Cobrand::UKCouncils';
-
-use strict;
-use warnings;
-
-sub council_area_id { return 2550; }
-sub council_area { return 'Angus'; }
-sub council_name { return 'Angus Council'; }
-sub council_url { return 'angus'; }
-
-sub base_url {
- my $self = shift;
- return $self->next::method() if FixMyStreet->config('STAGING_SITE');
- return 'https://fix.angus.gov.uk';
-}
-
-sub enter_postcode_text {
- my ($self) = @_;
- return 'Enter an Angus postcode, or street name and area';
-}
-
-sub example_places {
- return ( 'DD8 3AP', "Canmore Street" );
-}
-
-sub map_type { 'Angus' }
-
-sub default_show_name { 0 }
-
-sub disambiguate_location {
- my $self = shift;
- my $string = shift;
-
- return {
- %{ $self->SUPER::disambiguate_location() },
- town => 'Angus',
- centre => '56.7240845983561,-2.91774391131183',
- span => '0.525195055746977,0.985870680170788',
- bounds => [ 56.4616875530489, -3.40703662677109, 56.9868826087959, -2.4211659466003 ],
- };
-}
-
-sub pin_colour {
- my ( $self, $p, $context ) = @_;
- return 'grey' if $p->state eq 'not responsible';
- return 'green' if $p->is_fixed || $p->is_closed;
- return 'red' if $p->state eq 'confirmed';
- return 'yellow';
-}
-
-sub contact_email {
- my $self = shift;
- return join( '@', 'accessline', 'angus.gov.uk' );
-}
-
-=head2 temp_email_to_update, temp_update_contacts
-
-Temporary helper routines to update the extra for potholes (temporary setup
-hack, cargo-culted from Harrogate, may in future be superseded either by
-Open311/integration or a better mechanism for manually creating rich contacts).
-
-Can run with a script or command line like:
-
- bin/cron-wrapper perl -MFixMyStreet::App -MFixMyStreet::Cobrand::Angus -e \
- 'FixMyStreet::Cobrand::Angus->new({c => FixMyStreet::App->new})->temp_update_contacts'
-
-=cut
-
-sub temp_update_contacts {
- my $self = shift;
-
- my $contact_rs = $self->{c}->model('DB::Contact');
-
- my $body = FixMyStreet::DB->resultset('Body')->for_areas($self->council_area_id)->first;
-
- my $_update = sub {
- my ($category, $field, $category_details) = @_;
- # NB: we're accepting just 1 field, but supply as array [ $field ]
-
- my $contact = $contact_rs->find_or_create(
- {
- body => $body,
- category => $category,
- %{ $category_details || {} },
- },
- {
- key => 'contacts_body_id_category_idx'
- }
- );
-
- my %default = (
- variable => 'true',
- order => '1',
- required => 'no',
- datatype => 'string',
- datatype_description => 'a string',
- );
-
- if ($field->{datatype} || '' eq 'boolean') {
- my $description = $field->{description};
- %default = (
- %default,
- datatype => 'singlevaluelist',
- datatype_description => 'Yes or No',
- values => { value => [
- { key => ['No'], name => ['No'] },
- { key => ['Yes'], name => ['Yes'] },
- ] },
- );
- }
-
- $contact->update({
- # XXX: we're just setting extra with the expected layout,
- # this could be encapsulated more nicely
- extra => { _fields => [ { %default, %$field } ] },
- confirmed => 1,
- deleted => 0,
- editor => 'automated script',
- whenedited => \'NOW()',
- note => 'Edited by script as per requirements Jan 2016',
- });
- };
-
- $_update->( 'Street lighting', {
- code => 'column_id',
- description => 'Lamp post number',
- });
-
-}
-
-1;
diff --git a/perllib/FixMyStreet/Map/Angus.pm b/perllib/FixMyStreet/Map/Angus.pm
deleted file mode 100644
index 98f5373c1..000000000
--- a/perllib/FixMyStreet/Map/Angus.pm
+++ /dev/null
@@ -1,18 +0,0 @@
-# FixMyStreet:Map::Angus
-# More JavaScript, for street assets
-
-package FixMyStreet::Map::Angus;
-use base 'FixMyStreet::Map::FMS';
-
-use strict;
-
-sub map_javascript { [
- '/vendor/OpenLayers/OpenLayers.angus.js',
- '/js/map-OpenLayers.js',
- '/js/map-bing-ol.js',
- '/js/map-fms.js',
- '/cobrands/fixmystreet/assets.js',
- '/cobrands/angus/js.js',
-] }
-
-1;
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;
diff --git a/perllib/Integrations/AngusSOAP.pm b/perllib/Integrations/AngusSOAP.pm
deleted file mode 100644
index 5f100993b..000000000
--- a/perllib/Integrations/AngusSOAP.pm
+++ /dev/null
@@ -1,168 +0,0 @@
-package Integrations::AngusSOAP;
-
-# Generated by SOAP::Lite (v0.715) for Perl -- soaplite.com
-# Copyright (C) 2000-2006 Paul Kulchenko, Byrne Reese
-# -- generated at [Thu Dec 17 15:16:47 2015]
-# -- generated from https://webserviceslive.angus.gov.uk/acwebservices.cfc?wsdl
-# -- generated with the stubmaker.pl script from SOAP::Lite
-
-# Angus provide endpoints for testing and production, make sure we're using the right one.
-use FixMyStreet;
-my $TEST_ENDPOINT = 'https://webservicestest.angus.gov.uk/acwebservices.cfc';
-my $LIVE_ENDPOINT = 'https://webserviceslive.angus.gov.uk/acwebservices.cfc';
-my $ENDPOINT = FixMyStreet->config('STAGING_SITE') ? $TEST_ENDPOINT : $LIVE_ENDPOINT;
-
-# It can be helpful to override the endpoint URL e.g. for dev or testing
-$ENDPOINT = FixMyStreet->config('ANGUS_ENDPOINT') ? FixMyStreet->config('ANGUS_ENDPOINT') : $ENDPOINT;
-
-my %methods = (
-'GetLocaleInfo' => {
- endpoint => $ENDPOINT,
- soapaction => '',
- namespace => 'http://DefaultNamespace',
- parameters => [
- SOAP::Data->new(name => 'authenticationtoken', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'uprn', type => 'xsd:string', attr => {}),
- ], # end parameters
- }, # end GetLocaleInfo
-'AuthenticateJADU' => {
- endpoint => $ENDPOINT,
- soapaction => '',
- namespace => 'http://DefaultNamespace',
- parameters => [
- ], # end parameters
- }, # end AuthenticateJADU
-'CreateServiceRequest' => {
- endpoint => $ENDPOINT,
- soapaction => '',
- namespace => 'http://DefaultNamespace',
- parameters => [
- SOAP::Data->new(name => 'authenticationtoken', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'CallerId', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'CallerAddressId', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'DeliveryId', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'DeliveryAddressId', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'CRMRequestType', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'JADUXFormRef', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'PaymentRef', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'JADUFormFields', type => 'xsd:string', attr => {}),
- ], # end parameters
- }, # end CreateServiceRequest
-'PropertySearch' => {
- endpoint => $ENDPOINT,
- soapaction => '',
- namespace => 'http://DefaultNamespace',
- parameters => [
- SOAP::Data->new(name => 'authenticationtoken', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'postcode', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'streetname', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'town', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'UPRN', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'USRN', type => 'xsd:string', attr => {}),
- ], # end parameters
- }, # end PropertySearch
-'CreateCustomer' => {
- endpoint => $ENDPOINT,
- soapaction => '',
- namespace => 'http://DefaultNamespace',
- parameters => [
- SOAP::Data->new(name => 'authenticationtoken', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'title', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'forename', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'surname', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'uprn', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'HouseNo', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'HouseName', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'StreetName', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'Locale', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'Town', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'County', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'Northing', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'Easting', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'postcode', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'email', type => 'xsd:string', attr => {}),
- SOAP::Data->new(name => 'telephone', type => 'xsd:string', attr => {}),
- ], # end parameters
- }, # end CreateCustomer
-); # end my %methods
-
-use SOAP::Lite;
-use Exporter;
-use Carp ();
-
-use vars qw(@ISA $AUTOLOAD @EXPORT_OK %EXPORT_TAGS);
-@ISA = qw(Exporter SOAP::Lite);
-@EXPORT_OK = (keys %methods);
-%EXPORT_TAGS = ('all' => [@EXPORT_OK]);
-
-sub _call {
- my ($self, $method) = (shift, shift);
- my $name = UNIVERSAL::isa($method => 'SOAP::Data') ? $method->name : $method;
- my %method = %{$methods{$name}};
- $self->proxy($method{endpoint} || Carp::croak "No server address (proxy) specified")
- unless $self->proxy;
- my @templates = @{$method{parameters}};
- my @parameters = ();
- foreach my $param (@_) {
- if (@templates) {
- my $template = shift @templates;
- my ($prefix,$typename) = SOAP::Utils::splitqname($template->type);
- my $method = 'as_'.$typename;
- # TODO - if can('as_'.$typename) {...}
- my $result = $self->serializer->$method($param, $template->name, $template->type, $template->attr);
- push(@parameters, $template->value($result->[2]));
- }
- else {
- push(@parameters, $param);
- }
- }
- $self->endpoint($method{endpoint})
- ->ns($method{namespace})
- ->on_action(sub{qq!"$method{soapaction}"!});
- $self->serializer->register_ns("http://schemas.xmlsoap.org/wsdl/soap/","wsdlsoap");
- $self->serializer->register_ns("http://DefaultNamespace","intf");
- $self->serializer->register_ns("http://xml.apache.org/xml-soap","apachesoap");
- $self->serializer->register_ns("http://rpc.xml.coldfusion","tns1");
- $self->serializer->register_ns("http://DefaultNamespace","impl");
- $self->serializer->register_ns("http://schemas.xmlsoap.org/wsdl/","wsdl");
- $self->serializer->register_ns("http://schemas.xmlsoap.org/soap/encoding/","soapenc");
- $self->serializer->register_ns("http://www.w3.org/2001/XMLSchema","xsd");
- my $som = $self->SUPER::call($method => @parameters);
- if ($self->want_som) {
- return $som;
- }
- UNIVERSAL::isa($som => 'SOAP::SOM') ? wantarray ? $som->paramsall : $som->result : $som;
-}
-
-sub BEGIN {
- no strict 'refs';
- for my $method (qw(want_som)) {
- my $field = '_' . $method;
- *$method = sub {
- my $self = shift->new;
- @_ ? ($self->{$field} = shift, return $self) : return $self->{$field};
- }
- }
-}
-no strict 'refs';
-for my $method (@EXPORT_OK) {
- my %method = %{$methods{$method}};
- *$method = sub {
- my $self = UNIVERSAL::isa($_[0] => __PACKAGE__)
- ? ref $_[0]
- ? shift # OBJECT
- # CLASS, either get self or create new and assign to self
- : (shift->self || __PACKAGE__->self(__PACKAGE__->new))
- # function call, either get self or create new and assign to self
- : (__PACKAGE__->self || __PACKAGE__->self(__PACKAGE__->new));
- $self->_call($method, @_);
- }
-}
-
-sub AUTOLOAD {
- my $method = substr($AUTOLOAD, rindex($AUTOLOAD, '::') + 2);
- return if $method eq 'DESTROY' || $method eq 'want_som';
- die "Unrecognized method '$method'. List of available method(s): @EXPORT_OK\n";
-}
-
-1;