summaryrefslogtreecommitdiff
path: root/nzbget/enqueue.pm
blob: f0c81270b200aee5481d1246c2a126a2b01508c4 (plain) (blame)
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
package nzbget::enqueue;
use strict;
use Apache2::Const -compile => qw(OK REDIRECT);
use CGI qw(:standard);
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;