Net-Delicious
view release on metacpan or search on metacpan
lib/Net/Delicious.pm view on Meta::CPAN
if (! -f $path) {
return time();
}
my $fh = FileHandle->new($path);
if (! $fh) {
$self->logger()->error("unable to open '$path' for reading, $!");
return 0;
}
my $time = $fh->getline();
chomp $time;
$fh->close();
return $time;
}
sub _write_update {
my $self = shift;
my $time = shift;
my $path = $self->_path_update();
my $fh = IO::AtomicFile->open($path,"w");
if (! $fh) {
$self->logger()->error("unable to open '$path' for writing, $!");
return 0;
}
$fh->print($time);
$fh->close();
return 1;
}
sub _is_updated {
my $self = shift;
my $last = $self->_read_update();
my $current = $self->update();
$self->_write_update($current);
return ($last) ? (str2time($current) > str2time($last)) : 1;
}
sub _path_update {
my $self = shift;
my $file = sprintf(".del.icio.us.%s", $self->config("delicious.user"));
if (! $self->{'__updates'}){
my $user_cfg = $self->config("delicious.updates");
if ($user_cfg) {
$self->{'__updates'} = $user_cfg;
}
elsif (-d (getpwuid($EUID))[7]) {
$self->{'__updates'} = (getpwuid($EUID))[7];
}
else {
$self->{'__updates'} = File::Temp::tempdir();
}
}
my $root = $self->{'__updates'};
return File::Spec->catfile($root, $file);
}
sub _execute_method {
my $self = shift;
my $meth = shift;
my $args = shift;
my $params = $self->_validateinput($meth, $args);
if (! $params) {
return 0;
}
$meth =~ /[^\.]+\.(.*)$/;
my $uri = $1;
$uri =~ s/\./\//g;
my $req = $self->_buildrequest($uri, $args, $params);
my $res = $self->_sendrequest($req);
return $res;
}
sub _validateinput {
my $self = shift;
my $block = shift;
my $args = shift;
if (! $args) {
$args = {};
}
$block =~ s/\./_/g;
my $rules = $self->config(-block => $block);
if (! defined($rules)) {
$self->logger()->error("Unknown error validating user input; unable to find validation rules for $block");
return undef;
}
my @params = ();
foreach my $param (keys %$rules) {
my ($required, $type) = split(";", $rules->{$param});
if (($required) && (! exists($args->{$param}))) {
$self->logger()->error("$param is a required parameter");
( run in 0.644 second using v1.01-cache-2.11-cpan-2398b32b56e )