cvsuser 04/02/27 06:05:10
Added: App-Context/bin call
Log:
new. adds ability to call any method on any service anywhere via HTTP
Revision Changes Path
1.1 p5ee/App-Context/bin/call
Index: call
===================================================================
#!/usr/local/bin/perl -w
# NOTE: -T option would ignore PERL5LIB
#############################################################################
# $Id: call,v 1.1 2004/02/27 14:05:10 spadkins Exp $
#############################################################################
BEGIN {
$| = 1;
open(STDERR, ">&STDOUT");
print "Content-type: text/plain\n\n";
}
use App::Options (
option => {
context_class => "App::Context::HTTP",
},
);
use App;
my $context = App->context(\%App::options);
my $request = $context->request();
my $events = $request->get_events();
my ($service, $name, $method, $args, @results, $result);
foreach my $event (@$events) {
($service, $name, $method, $args) = @$event;
@results = $context->call($service, $name, $method, $args);
}
my $returntype = $request->get_returntype() || "perl";
if ($#results == -1) {
print "SUCCESS: NO RESULT\n";
exit(0);
}
if ($#results == 0 && ref($results[0]) eq "") {
print "$results[0]\n";
exit(0);
}
my $serializer_class = ucfirst($returntype);
$serializer_class =~ s/_([a-z])/uc($1)/eg;
$serializer_class = "App::Serializer::$serializer_class";
my $serializer = $context->serializer($returntype, class => $serializer_class);
if ($#results == 0) {
print $serializer->serialize($results[0]), "\n";
}
else {
print $serializer->serialize([EMAIL PROTECTED]), "\n";
}
exit(0);