blob: 306d90486945f0a5e44987466c8661c32608ac59 (
plain)
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
#######################################
# self-enclosed polling mechanism for radio area
use LWP;
sub get_radio_info
{
my $radio;
my $raw_radio;
print "<small>" if ($DEBUG);
$RADIO_STATUS_ENABLED = 1;
if ( ! $RADIO_STATUS_ENABLED || poll_radio_status() == -1)
{ return -1; }
print "\nRadio is up!<br>\n" if ($DEBUG);
if (poll_cache_age($RADIO_INFO_PATH) > 60)
{
print "Polling radio...<br>\n" if ($DEBUG);
$raw_radio = go_slurp($RADIO_INFO_URL, $RADIO_INFO_PATH);
}
$raw_radio ||= quickread($RADIO_INFO_PATH);
$radio = parse_colons($raw_radio);
print "</small>" if ($DEBUG);
return $radio;
}
sub poll_cache_age
{
my $file = shift;
my $ret = time - (stat($file))[9];
print "Age of $file: $ret seconds...<br>\n" if ($DEBUG);
return $ret;
}
sub poll_radio_status
{
my $status;
print "Polling radio status...<br>\n" if ($DEBUG);
# go_slurp($RADIO_STATUS_URL, $RADIO_STATUS_PATH);
# $status = quickread($RADIO_STATUS_PATH);
my $r = HTTP::Request->new(GET => $RADIO_STATUS_URL);
my $re = LWP::UserAgent->new->request($r);
my $data = $re->content();
chomp($data);
if ($data eq "1")
{ return 1; }
else
{ return -1; }
}
sub parse_colons
{
my $filedata = shift;
my %parsed;
foreach $l (@$filedata)
{
chomp $l;
my ($k, $v) = split(/: /, $l, 2);
$k = lc($k);
$k =~ s/ //;
$parsed{lc($k)} = $v;
}
return \%parsed;
}
sub go_slurp
{
my ($url, $file) = @_;
my $r = HTTP::Request->new(GET => $url);
my $re = LWP::UserAgent->new->request($r);
my $data = $re->content();
open F, ">$file" or return $data;
print F $data;
close F;
my @lines = split "\n", $data;
return \@lines;
}
sub quickread
{
my $file = shift;
my @out;
open F, $file or die "problem with $file $!";
@out=<F>;
close F;
return \@out;
}
1;
|