diff options
Diffstat (limited to 'share/perl/inventory.cgi')
-rw-r--r-- | share/perl/inventory.cgi | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/share/perl/inventory.cgi b/share/perl/inventory.cgi new file mode 100644 index 0000000..0542436 --- /dev/null +++ b/share/perl/inventory.cgi | |||
@@ -0,0 +1,39 @@ | |||
1 | #!/usr/bin/perl -w | ||
2 | |||
3 | use strict; | ||
4 | use MyCGI; | ||
5 | use OpenSim::Config; | ||
6 | use OpenSim::InventoryServer; | ||
7 | use Carp; | ||
8 | |||
9 | my $request_uri = $ENV{REQUEST_URI} || Carp::croak($OpenSim::Config::SYS_MSG{FATAL}); | ||
10 | my $request_method = ""; | ||
11 | if ($request_uri =~ /([^\/]+)\/$/) { | ||
12 | $request_method = $1; | ||
13 | } else { | ||
14 | &MyCGI::outputXml("utf-8", $OpenSim::Config::SYS_MSG{FATAL}); | ||
15 | } | ||
16 | my $param = &MyCGI::getParam(); | ||
17 | my $post_data = $param->{'POSTDATA'}; | ||
18 | &OpenSim::Utility::Log("inv", "request", $request_uri, $post_data); | ||
19 | my $response = ""; | ||
20 | eval { | ||
21 | $response = &handleRequest($request_method, $post_data); | ||
22 | }; | ||
23 | if ($@) { | ||
24 | $response = "<ERROR>$@</ERROR>"; | ||
25 | } | ||
26 | &OpenSim::Utility::Log("inv", "response", $response); | ||
27 | &MyCGI::outputXml("utf-8", $response); | ||
28 | |||
29 | sub handleRequest { | ||
30 | my ($methodname, $post_data) = @_; | ||
31 | my $handler_list = &OpenSim::InventoryServer::getHandlerList(); | ||
32 | if (!$handler_list->{$methodname}) { | ||
33 | Carp::croak("unknown method name"); | ||
34 | } else { | ||
35 | my $handler = $handler_list->{$methodname}; | ||
36 | return $handler->($post_data); | ||
37 | } | ||
38 | } | ||
39 | |||