NAME
Plack::Middleware::PeriAHS::Respond - Send Riap request to Riap server and send the response to client
VERSION
version 0.33
SYNOPSIS
# in your app.psgi
use Plack::Builder;
builder {
enable "PeriAHS::Respond";
};
DESCRIPTION
This middleware sends Riap request ($env-
{"riap.request"}>) to Riap client (Perinci::Access object, stored in $env-
{"periahs.riap_client"}> by PeriAHS::ParseRequest middleware, thus this middleware requires the PeriAHS::ParseRequest middleware), format the result, and send it to client. This middleware is the one that sends response to client and should be put as the last middleware after all the parsing, authentication, and authorization middlewares.
The result will also be put in $env-
{"riap.response"}>.
How loglevel and marklog works
If marklog is turned on by Riap request (which is required if client wants to receive log messages interspersed with actual Riap response), the server will encode each part with:
Log message:
"l" + <number-of-bytes> + " " + <log message>
example: l56 [trace][Thu Apr 4 06:41:09 2013] this is a log message!
Part of Riap response:
"r" + <number-of-bytes> + " " + <data>
example: r9 [200,"OK"]
So the actual HTTP response body might be something like this (can be sent by the server in HTTP chunks, so that complete log messages can be displayed before the whole Riap response is received):
l56 [trace][Thu Apr 4 06:41:09 2013] this is a log message!
l58 [trace][Thu Apr 4 06:41:09 2013] this is another log msg!
r9 [200,"OK"]
Developer note: additional parameter in the future can be in the form of e.g.:
"l" + <number-of-bytes> + ("," + <additional-param> )* + " "
FUNCTIONS
None are exported by default, but they are exportable.
CONFIGURATIONS
add_text_tips => BOOL (default: 1)
If set to 1, then when output format is
text
ortext-pretty
, additional text tips can be added at the end of response. This helps autodiscoverability: user can just start using something like:% curl http://host/api/ ... Tips: * To call a function, try: http://host/api/func1 * Function arguments can be given via GET/POST parameters or JSON request body * To find out which arguments a function supports, try: http://host/api/func1?-riap-action=meta * To list subpackages, try: http://host/api/SubModule/ * To find out all available actions on an entity, try: http://host/api/SubModule?-riap-action=actions * This server uses Riap protocol for great autodiscoverability, for more info: https://metacpan.org/module/Riap
HOMEPAGE
Please visit the project's homepage at https://metacpan.org/release/Perinci-Access-HTTP-Server.
SOURCE
Source repository is at https://github.com/sharyanto/perl-Perinci-Access-HTTP-Server.
BUGS
Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Perinci-Access-HTTP-Server
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.
AUTHOR
Steven Haryanto <stevenharyanto@gmail.com>
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 by Steven Haryanto.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.