FU: Use schema validation for query parameters
...much better. (Also I remembered why I threw away groff stderr; it's pretty useless)
This commit is contained in:
parent
682321d1be
commit
c16fe86e7a
2 changed files with 7 additions and 12 deletions
|
|
@ -60,7 +60,7 @@ sub fmt($input) {
|
||||||
if ($poll->events($err)) {
|
if ($poll->events($err)) {
|
||||||
my $r = sysread $err, my $buf, 16*1024;
|
my $r = sysread $err, my $buf, 16*1024;
|
||||||
$poll->remove($err) if $r == 0;
|
$poll->remove($err) if $r == 0;
|
||||||
warn "GROFF: $buf\n" if $r > 0;
|
#warn "GROFF: $buf\n" if $r > 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
17
www/index.pl
17
www/index.pl
|
|
@ -540,7 +540,7 @@ FU::get '/info/about' => sub {
|
||||||
};
|
};
|
||||||
|
|
||||||
FU::get '/browse/search' => sub {
|
FU::get '/browse/search' => sub {
|
||||||
my $q = fu->query('q')//''; # TODO: Use schema, this may be an array
|
my $q = fu->query(q => { onerror => [''], values => {}, scalar => 1 })->[0];
|
||||||
|
|
||||||
my $name = $q;
|
my $name = $q;
|
||||||
my $sect = $name =~ s/^([0-9])\s+// || $name =~ s/\(([a-zA-Z0-9]+)\)$// || $name =~ s/\.([0-9][a-zA-Z0-9]*)$// ? $1 : '';
|
my $sect = $name =~ s/^([0-9])\s+// || $name =~ s/\(([a-zA-Z0-9]+)\)$// || $name =~ s/\.([0-9][a-zA-Z0-9]*)$// ? $1 : '';
|
||||||
|
|
@ -850,15 +850,10 @@ FU::get qr{/pkg/([^/]+)} => sub($short) {
|
||||||
fu->error(404) if !$sys;
|
fu->error(404) if !$sys;
|
||||||
|
|
||||||
$FU::REQ->{qs} =~ s/;/&/g if $FU::REQ->{qs}; # HACK: old URLs used ';' as separator instead of '&'
|
$FU::REQ->{qs} =~ s/;/&/g if $FU::REQ->{qs}; # HACK: old URLs used ';' as separator instead of '&'
|
||||||
my $f = {
|
my $f = fu->query(
|
||||||
c => fu->query('c')//'all',
|
c => { onerror => 'all', enum => [ '0', 'all', 'a'..'z' ] },
|
||||||
p => fu->query('p')//1,
|
p => { onerror => 1, uint => 1, range => [1,200] },
|
||||||
};
|
);
|
||||||
# TODO:
|
|
||||||
#my $f = tuwf->validate(get =>
|
|
||||||
# c => { onerror => 'all', enum => [ '0', 'all', 'a'..'z' ] },
|
|
||||||
# p => { onerror => 1, uint => 1, range => [1,200] },
|
|
||||||
#)->data;
|
|
||||||
|
|
||||||
my $where = SQL 'c_hasman AND NOT dead AND system =', $sys->{id}, $f->{c} ne 'all' ? ('AND match_firstchar(name,', $f->{c}, ')') : ();
|
my $where = SQL 'c_hasman AND NOT dead AND system =', $sys->{id}, $f->{c} ne 'all' ? ('AND match_firstchar(name,', $f->{c}, ')') : ();
|
||||||
my $count = fu->SQL('SELECT count(*) FROM packages p WHERE', $where)->val;
|
my $count = fu->SQL('SELECT count(*) FROM packages p WHERE', $where)->val;
|
||||||
|
|
@ -910,7 +905,7 @@ FU::get qr{/pkg/([^/]+)/(.+)} => sub($short, $path) {
|
||||||
my $sel = $ver ? (grep $_->{version} eq $ver, @$vers)[0] : $vers->[0];
|
my $sel = $ver ? (grep $_->{version} eq $ver, @$vers)[0] : $vers->[0];
|
||||||
fu->error(404) if !$sel;
|
fu->error(404) if !$sel;
|
||||||
|
|
||||||
my $p = fu->query('p')//1; # TODO: tuwf->validate(get => p => { onerror => 1, uint => 1, range => [1,100] })->data;
|
my $p = fu->query(p => { onerror => 1, uint => 1, range => [1,100] });
|
||||||
|
|
||||||
my $count = fu->SQL('SELECT count(*) FROM files WHERE pkgver =', $sel->{id})->val;
|
my $count = fu->SQL('SELECT count(*) FROM files WHERE pkgver =', $sel->{id})->val;
|
||||||
my $mans = fu->SQL('
|
my $mans = fu->SQL('
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue