aboutsummaryrefslogtreecommitdiff
path: root/lib/MasterWebInterface/Handler/Json/JsonServerList.pm
diff options
context:
space:
mode:
authorDarkelarious <darkelarious@333networks.com>2022-07-19 18:28:00 +0200
committerDarkelarious <darkelarious@333networks.com>2022-07-19 18:28:00 +0200
commite9b4cd5fc79ca2d044eba4fed8bf62b138f44249 (patch)
treef396b20f3f415989529484eaacf12314dc72e019 /lib/MasterWebInterface/Handler/Json/JsonServerList.pm
parent30adff959ed724224d4a9e1d37b08705f5d62f53 (diff)
downloadWebInterface-Perl-e9b4cd5fc79ca2d044eba4fed8bf62b138f44249.tar.gz
WebInterface-Perl-e9b4cd5fc79ca2d044eba4fed8bf62b138f44249.zip
simplify address format
Diffstat (limited to 'lib/MasterWebInterface/Handler/Json/JsonServerList.pm')
-rwxr-xr-xlib/MasterWebInterface/Handler/Json/JsonServerList.pm81
1 files changed, 24 insertions, 57 deletions
diff --git a/lib/MasterWebInterface/Handler/Json/JsonServerList.pm b/lib/MasterWebInterface/Handler/Json/JsonServerList.pm
index 7781d94..702a02e 100755
--- a/lib/MasterWebInterface/Handler/Json/JsonServerList.pm
+++ b/lib/MasterWebInterface/Handler/Json/JsonServerList.pm
@@ -5,15 +5,12 @@ use Exporter 'import';
use JSON;
TUWF::register(
- qr{json/(.[\w]{1,20})} => \&serverlist_json,
- qr{json/(.[\w]{1,20})/(all|[0a-z])} => \&serverlist_json,
+ qr{json/([\w]{1,20})} => \&serverlist_json, # valid list
);
-################################################################################
-# LIST SERVERS
+#
# Generate a list of selected games in the database per game (arg: gamename)
-# Same as &serverlist, but with json output.
-################################################################################
+#
sub serverlist_json
{
my($self, $gamename) = @_;
@@ -21,50 +18,26 @@ sub serverlist_json
# sorting, page
my $f = $self->formValidate(
- {
- get => 's',
- required => 0,
- default => 'gamename',
- enum => [ qw| hostname gamename country added gametype numplayers mapname | ]
- },
- {
- get => 'o',
- required => 0,
- default => 'a',
- enum => [ 'a','d' ]
- },
- {
- get => 'p',
- required => 0,
- default => 1,
- template => 'page',
- },
- {
- get => 'q',
- required => 0,
- default => '',
- maxlength => 90
- },
- {
- get => 'r',
- required => 0,
- default => 100,
- template => 'page'
- },
- {
- get => 'g',
- required => 0,
- default => '',
- maxlength => 90
- },
- {
- get => 'a',
- required => 0,
- default => '',
- maxlength => 200
- },
+ { get => 's', required => 0, default => 'gamename', enum => [qw|hostname gamename country added gametype numplayers mapname|] },
+ { get => 'o', required => 0, default => 'a', enum => ['a','d'] },
+ { get => 'p', required => 0, default => 1, template => 'page' },
+ { get => 'r', required => 0, default => 100, template => 'page' },
+ { get => 'q', required => 0, default => '', maxlength => 90 },
+ { get => 'g', required => 0, default => '', maxlength => 90 },
+ { get => 'a', required => 0, default => '', maxlength => 200 },
);
- return $self->resNotFound if $f->{_err};
+
+ # generate json error data if errors in field
+ if ( $f->{_err} )
+ {
+ $self->resHeader("Content-Type", "application/json; charset=UTF-8");
+ $self->resJSON({
+ error => 1,
+ in => "options",
+ options => $f->{_err}
+ });
+ return;
+ }
# load server list from database
my ( $list, $np, $p ) = $self->dbServerListGet(
@@ -77,7 +50,7 @@ sub serverlist_json
updated => $self->{window_time},
gametype => $f->{g},
- # parse extra request parameters like version, populated, etc
+ # parse extra request parameters for ubrowser.333networks.com
($f->{a} =~ m/popserv/ig) ? (popserv => 1) : (),
($f->{a} =~ m/utdemo/ig) ? (utdemo => 1) : (),
);
@@ -90,14 +63,8 @@ sub serverlist_json
}
# return json data as the response
- my $json_data = encode_json [$list, {total => $p, players => $pl}];
- print {
- $self->resFd()
- } $json_data;
-
- # set content type and allow off-domain access (for example jQuery)
- $self->resHeader("Access-Control-Allow-Origin", "*");
$self->resHeader("Content-Type", "application/json; charset=UTF-8");
+ $self->resJSON( [$list, {total => $p, players => $pl}] );
}
1;