1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
#!/usr/bin/env perl
#
# This script utilises Open311 as described at
# http://wiki.open311.org/GeoReport_v2/#get-service-requests
# and/or the Open311 extension explained at
# https://github.com/mysociety/FixMyStreet/wiki/Open311-FMS---Proposed-differences-to-Open311
# to fetch service requests or updates on service requests.
use strict;
use warnings;
use v5.14;
BEGIN {
use File::Basename qw(dirname);
use File::Spec;
my $d = dirname(File::Spec->rel2abs($0));
require "$d/../setenv.pl";
}
use DateTime;
use Getopt::Long::Descriptive;
use Open311::GetServiceRequests;
use Open311::GetServiceRequestUpdates;
my ($opts, $usage) = describe_options(
'%c %o',
['reports', 'fetch reports'],
['updates', 'fetch updates'],
['start|s:i', 'start time to use (hours before now), defaults to one (reports) or two (updates)' ],
['end|e:i', 'end time to use (hours before now), defaults to zero' ],
['body|b:s', 'body name to only fetch this body' ],
['verbose|v', 'more verbose output'],
['help|h', "print usage message and exit" ],
);
$usage->die if $opts->help;
my %params = (
verbose => $opts->verbose,
body => $opts->body,
);
my $dt = DateTime->now();
if ($opts->start) {
$params{start_date} = $dt->clone->add(hours => -$opts->start);
}
if ($opts->end) {
$params{end_date} = $dt->clone->add(hours => -$opts->end);
}
if ($opts->reports) {
my $reports = Open311::GetServiceRequests->new(%params);
$reports->fetch;
}
if ($opts->updates) {
my $updates = Open311::GetServiceRequestUpdates->new(%params);
$updates->fetch;
}
|