diff options
author | Matthew Somerville <matthew@mysociety.org> | 2020-06-23 17:22:39 +0100 |
---|---|---|
committer | Matthew Somerville <matthew@mysociety.org> | 2020-07-06 12:23:14 +0100 |
commit | da40423aa4877ddc130074cf1834da6d4c7dc38f (patch) | |
tree | 22a867049fbd25c635c5eb18e6794361823ec19c /perllib/Open311/UpdatesBase.pm | |
parent | c7dbb65e2d01e37f276af3db0372123366b3a1a1 (diff) |
Factor out/default Open311 construction object.
This simplifies the code wherever used.
Diffstat (limited to 'perllib/Open311/UpdatesBase.pm')
-rw-r--r-- | perllib/Open311/UpdatesBase.pm | 37 |
1 files changed, 22 insertions, 15 deletions
diff --git a/perllib/Open311/UpdatesBase.pm b/perllib/Open311/UpdatesBase.pm index c6ad3277a..0be324773 100644 --- a/perllib/Open311/UpdatesBase.pm +++ b/perllib/Open311/UpdatesBase.pm @@ -15,7 +15,8 @@ has suppress_alerts => ( is => 'rw', default => 0 ); has blank_updates_permitted => ( is => 'rw', default => 0 ); has current_body => ( is => 'rw' ); -has current_open311 => ( is => 'rw' ); +has current_open311 => ( is => 'rwp', lazy => 1, builder => 1 ); +has open311_config => ( is => 'ro' ); # If we need to pass in a devolved contact Readonly::Scalar my $AREA_ID_OXFORDSHIRE => 2237; @@ -59,20 +60,7 @@ sub fetch { $pm->start and next; $self->current_body( $body ); - - my %open311_conf = ( - endpoint => $body->endpoint, - api_key => $body->api_key, - jurisdiction => $body->jurisdiction, - extended_statuses => $body->send_extended_statuses, - ); - - my $cobrand = $body->get_cobrand_handler; - $cobrand->call_hook(open311_config_updates => \%open311_conf) - if $cobrand; - - $self->current_open311( $open311 || Open311->new(%open311_conf) ); - + $self->_set_current_open311( $open311 || $self->_build_current_open311 ); $self->suppress_alerts( $body->suppress_alerts ); $self->blank_updates_permitted( $body->blank_updates_permitted ); $self->system_user( $body->comment_user ); @@ -84,6 +72,25 @@ sub fetch { $pm->wait_all_children; } +sub _build_current_open311 { + my $self = shift; + + my $body = $self->current_body; + my $conf = $self->open311_config || $body; + my %open311_conf = ( + endpoint => $conf->endpoint || '', + api_key => $conf->api_key || '', + jurisdiction => $conf->jurisdiction || '', + extended_statuses => $body->send_extended_statuses, + ); + + my $cobrand = $body->get_cobrand_handler; + $cobrand->call_hook(open311_config_updates => \%open311_conf) + if $cobrand; + + return Open311->new(%open311_conf); +} + sub check_date { my ($self, $request, @args) = @_; |