# (c) 2007 by Ralf Ertzinger # licensed under GNU GPL v2 # # A getter which calls a remote URL in order to trigger a # download. package videosite::HTTPRPCGetter; use videosite::GetterBase; @ISA = qw(videosite::GetterBase); use strict; use LWP::Simple qw(!get); sub new { my $class = shift; my $self = $class->SUPER::new( NAME => 'HTTPRPCGetter', _PARAMS => { URL => ['http://www.example.com/get.pl?type=%s&vid=%s&title=%s&url=%s', "The URL to call in order to trigger a download. This is a string which is passed to a sprintf call later on. The parameters passed to that sprintf call, in order, are:\n- The site the video is from\n- The ID of the video\n- The title of the video\n- The URL of the video file itself\n- The URL of the site the video was taken from\nAll parameters are hexencoded"] }, @_, ); return bless($self, $class); } sub get { my $self = shift; my $video = shift; my $callurl; $callurl = sprintf($self->_getval('URL'), $self->_encode($video->{'SOURCE'}), $self->_encode($video->{'ID'}), $self->_encode($video->{'TITLE'}), $self->_encode($video->{'DLURL'}), $self->_encode($video->{'URL'})); $self->debug('Going to call %s', $callurl); unless(defined(LWP::Simple::get($callurl))) { $self->error("Error calling RPC"); return 0; } return 1; } sub _encode { my $self = shift; my $s = shift; $s =~ s/(.)/sprintf("%%%02x", ord($1))/ge; return $s; }