JSON::RPC::Common::Marshal::HTTP - Convert HTTP::Request and HTTP::Response
to/from JSON::RPC::Common calls and returns.
use JSON::RPC::Common::Marshal::HTTP;
my $m = JSON::RPC::Common::Marshal::HTTP->new;
my $call = $m->request_to_call($http_request);
my $res = $call->call($object);
my $http_response = $m->result_to_response($res);
This object provides marshalling routines to convert calls and returns to and
from HTTP::Request and HTTP::Response objects.
- prefer_get
- When encoding a call into a request, prefer GET.
Not reccomended.
- rest_style_methods
- When encoding a GET request, use REST style URI formatting (the method is
part of the path, not a parameter).
- prefer_encoded_get
- When set and a "params" param exists,
decode it as Base 64 encoded JSON and use that as the parameters instead
of the query parameters.
See
<http://json-rpc.googlegroups.com/web/json-rpc-over-http.html>.
- user_agent
- Defaults to the marshal object's class name and the JSON::RPC::Common
version number.
- content_type
- accept_content_type
- content_types
- accept_content_types
- When explicitly set these are the values of the
"Content-Type" and
"Accept" headers to set.
Otherwise they will default to
"application/json" with calls/returns
version 1.0 and 1.1, and
"application/json-rpc" with 2.0
objects.
- expand
- Whether or not to use an expander on
"GET" style calls.
- expander
- An instance of CGI::Expand or a look alike to use for
"GET" parameter expansion.
- request_to_call $http_request
- post_request_to_call $http_request
- get_request_to_call $http_request
- Convert an HTTP::Request to a JSON::RPC::Common::Procedure::Call.
Depending on what style of request it is,
"request_to_call" will delegate to a
variant method.
Get requests call
"uri_to_call"
- uri_to_call $uri
- encoded_uri_to_call $uri
- query_uri_to_call $uri
- Parse a call from a GET request's URI.
- result_to_response $return
- Convert a JSON::RPC::Common::Procedure::Return to an HTTP::Response.
- write_result_to_response $result, $response
- Write the result into an object like Catalyst::Response.
- response_to_result $http_response
- response_to_result_success $http_response
- response_to_result_error $http_response
- Convert an HTTP::Response to a JSON::RPC::Common::Procedure::Return.
A variant is chosen based on
"HTTP::Response/is_success".
The error handler will ensure that "error" in
JSON::RPC::Common::Procedure::Return is set.
- call_to_request $call, %args
- call_to_get_request $call, %args
- call_to_post_request $call, %args
- call_to_uri $call, %args
- call_to_encoded_uri $call, %args
- call_to_query_uri $call, %args
- Convert a call to a request (or just a URI for GET requests).
The arguments can contain a
"uri" parameter, which is the base of
the request.
With GET requests, under
"rest_style_methods" that URI's path
will be appended, and otherwise parameters will just be added.
POST requests do not cloen and alter the URI.
If no URI is provided as an argument,
"/" will be used.
The flags "prefer_get" and
"encoded" can also be passed to
"call_to_request" to alter the type of
request to be generated.
- collapse_query_params
- expand_query_params
- Only used for query encoded GET requests. If
"expand" is set will cause expansion of
the params. Otherwise it's a noop.
Subclass and override to process query params into RPC params
as necessary.
Note that this is NOT in any of the JSON-RPC specs.
Yuval Kogman <nothingmuch@woobling.org>
This software is copyright (c) 2014 by Yuval Kogman and others.
This is free software; you can redistribute it and/or modify it
under the same terms as the Perl 5 programming language system itself.