aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/fetch-reports6
-rwxr-xr-xbin/fetch-reports-24hs35
-rw-r--r--perllib/Open311/GetServiceRequests.pm8
-rw-r--r--t/open311/getservicerequests.t26
4 files changed, 66 insertions, 9 deletions
diff --git a/bin/fetch-reports b/bin/fetch-reports
index 665b4aff0..20de10f4b 100755
--- a/bin/fetch-reports
+++ b/bin/fetch-reports
@@ -1,8 +1,8 @@
#!/usr/bin/env perl
#
-# This script utilises the Open311 extension explained at
-# https://github.com/mysociety/FixMyStreet/wiki/Open311-FMS---Proposed-differences-to-Open311
-# to fetch updates on service requests.
+# This script utilises Open311 as described at
+# http://wiki.open311.org/GeoReport_v2/#get-service-requests
+# to fetch service requests.
use strict;
use warnings;
diff --git a/bin/fetch-reports-24hs b/bin/fetch-reports-24hs
new file mode 100755
index 000000000..ec0eabc2e
--- /dev/null
+++ b/bin/fetch-reports-24hs
@@ -0,0 +1,35 @@
+#!/usr/bin/env perl
+#
+# This script utilises Open311 as described at
+# http://wiki.open311.org/GeoReport_v2/#get-service-requests
+# to fetch service requests.
+
+use strict;
+use warnings;
+require 5.8.0;
+
+BEGIN {
+ use File::Basename qw(dirname);
+ use File::Spec;
+ my $d = dirname(File::Spec->rel2abs($0));
+ require "$d/../setenv.pl";
+}
+
+use DateTime;
+
+use CronFns;
+my ($verbose, $nomail) = CronFns::options();
+
+use Open311::GetServiceRequests;
+
+my $dt = DateTime->now();
+my $dt_24hrs_ago = $dt->clone;
+$dt_24hrs_ago->add( hours => -24 );
+
+my $reports = Open311::GetServiceRequests->new(
+ verbose => 1,
+ start_date => $dt_24hrs_ago,
+ end_date => $dt
+);
+
+$reports->fetch;
diff --git a/perllib/Open311/GetServiceRequests.pm b/perllib/Open311/GetServiceRequests.pm
index ed920f84b..dc22c61c5 100644
--- a/perllib/Open311/GetServiceRequests.pm
+++ b/perllib/Open311/GetServiceRequests.pm
@@ -47,9 +47,15 @@ sub create_problems {
if ( $self->start_date || $self->end_date ) {
return 0 unless $self->start_date && $self->end_date;
-
$args->{start_date} = DateTime::Format::W3CDTF->format_datetime( $self->start_date );
$args->{end_date} = DateTime::Format::W3CDTF->format_datetime( $self->end_date );
+ } else {
+ my $end_dt = DateTime->now();
+ my $start_dt = $end_dt->clone;
+ $start_dt->add( hours => -2 );
+
+ $args->{start_date} = DateTime::Format::W3CDTF->format_datetime( $start_dt );
+ $args->{end_date} = DateTime::Format::W3CDTF->format_datetime( $end_dt );
}
my $requests = $open311->get_service_requests( $args );
diff --git a/t/open311/getservicerequests.t b/t/open311/getservicerequests.t
index f8795bd61..a28c6e3cf 100644
--- a/t/open311/getservicerequests.t
+++ b/t/open311/getservicerequests.t
@@ -58,18 +58,32 @@ my $o = Open311->new(
test_get_returns => { 'requests.xml' => $requests_xml }
);
+my $p1_date = $dtf->parse_datetime('2010-04-14T06:37:38-08:00')
+ ->set_time_zone(
+ FixMyStreet->time_zone || FixMyStreet->local_time_zone
+ );
+my $p2_date = $dtf->parse_datetime('2010-04-15T06:37:38-08:00')
+ ->set_time_zone(
+ FixMyStreet->time_zone || FixMyStreet->local_time_zone
+ );
+my $start_date = $p1_date->clone;
+$start_date->add( hours => -2);
+my $end_date = $p2_date->clone;
+$end_date->add( hours => 2);
+
+
subtest 'basic parsing checks' => sub {
- my $update = Open311::GetServiceRequests->new( system_user => $user );
+ my $update = Open311::GetServiceRequests->new(
+ system_user => $user,
+ start_date => $start_date,
+ end_date => $end_date
+ );
FixMyStreet::override_config {
MAPIT_URL => 'http://mapit.uk/',
}, sub {
$update->create_problems( $o, $body );
};
- my $p1_date = $dtf->parse_datetime('2010-04-14T06:37:38-08:00')
- ->set_time_zone(
- FixMyStreet->time_zone || FixMyStreet->local_time_zone
- );
my $p = FixMyStreet::DB->resultset('Problem')->search(
{ external_id => 638344 }
@@ -277,6 +291,8 @@ for my $test (
my $update = Open311::GetServiceRequests->new(
system_user => $user,
convert_latlong => 1,
+ start_date => $start_date,
+ end_date => $end_date
);
FixMyStreet::override_config {