summaryrefslogtreecommitdiff
path: root/nzbget/enqueue.pm
diff options
context:
space:
mode:
Diffstat (limited to 'nzbget/enqueue.pm')
-rw-r--r--nzbget/enqueue.pm59
1 files changed, 59 insertions, 0 deletions
diff --git a/nzbget/enqueue.pm b/nzbget/enqueue.pm
new file mode 100644
index 0000000..e786f38
--- /dev/null
+++ b/nzbget/enqueue.pm
@@ -0,0 +1,59 @@
+package nzbget::enqueue;
+use strict;
+use Apache2::Const -compile => qw(OK REDIRECT);
+use CGI qw(:standard);
+use CGI::Carp 'fatalsToBrowser';
+use local::db;
+use local::nzbget;
+use utf8;
+use LWP::Simple;
+
+use local::user;
+
+sub handler
+{
+ my $user = new local::user(%ENV);
+ my $nzbget = new local::nzbget;
+ die "Kein name angegeben" if not param('name');
+
+ die 'Kein freier Speicher' if $user->obj->quota_used>$user->obj->quoata;
+
+ my $cat = local::db::category->retrieve(name=>param('cat'));
+ die "Ungültige category" if not $cat;
+
+ my $category = $cat->name();
+
+ # my ($size) = param('description') =~ m/<b>(.*)<\/b>/;
+ my $size = 0;
+ my $nzb;
+ my $title = param('title');
+ if (param('url'))
+ {
+ $nzb = get(param('url'));
+ die "Couldn't get ".param('url') unless $nzb;
+ } elsif ($title = param('file')) {
+ my $upload_filehandle = upload("file");
+ while ( <$upload_filehandle> )
+ {
+ $nzb.=$_;
+ }
+ }
+ die "Could not get nzb" if not $nzb;
+ use MIME::Base64;
+ $nzb = encode_base64($nzb);
+ my $download = local::db::download->insert({owner=>$user->get_id(),name=>param('name'),category=>$cat->category_id(),description=>$title,size=>$size});
+ my $resp = $nzbget->send_request('append',RPC::XML::string->new($download->download_id()),RPC::XML::string->new($category),RPC::XML::boolean->new(0),RPC::XML::string->new($nzb));
+
+ if ($resp)
+ {
+ print CGI::redirect('download');
+ return Apache2::Const::REDIRECT;
+ } else {
+ print header;
+ print start_html('nzbget enqueue error');
+ print 'Error';
+ print end_html();
+ return Apache2::Const::OK;
+ }
+}
+1;