make_request()

JSON-2
Roker 7 years ago
parent 50d7ca04d2
commit b9effea932

@ -339,6 +339,12 @@ void OnApiRequest(evhttp_request* req, void* obj)
};
PEP_STATUS deliverRequest( evhttp_connection* conn, const js::Object& request)
{
return PEP_STATUS_OK;
}
} // end of anonymous namespace
@ -436,8 +442,23 @@ struct JsonAdapter::Internal
PEP_STATUS messageToSend(const message* msg)
{
// TODO: implement event delivery to all registered listeners
return PEP_STATUS_OK;
js::Value js_msg = to_json(msg);
js::Array param;
param.push_back( std::move(js_msg) );
PEP_STATUS status = PEP_STATUS_OK;
for(const auto& e : eventListener)
{
js::Object request = make_request( "messageToSend", param, e.second.securityContext );
const PEP_STATUS s2 = deliverRequest( e.second.connection.get(), request );
if(s2!=PEP_STATUS_OK)
{
status = s2;
}
}
return status;
}
PEP_STATUS showHandshake(const pEp_identity* self, const pEp_identity* partner)

@ -4,6 +4,7 @@
#include "json-adapter.hh"
#include "security-token.hh"
// Server side:
js::Object make_result(const js::Value& result, int id)
{
@ -33,6 +34,22 @@
return ret;
}
// Client side:
js::Object make_request(const std::string& functionName, const js::Array& parameters, const std::string& securityContext)
{
static int request_id = 2000;
js::Object request;
request.emplace_back( "jsonrpc", "2.0" );
request.emplace_back( "id" , ++request_id );
request.emplace_back( "security_token", securityContext );
request.emplace_back( "method", functionName );
request.emplace_back( "params", parameters );
return request;
}
namespace
{

@ -17,8 +17,9 @@ enum class JSON_RPC
INTERNAL_ERROR = -32603,
};
// Server side:
// parse the JSON-RPC 2.0 compatible "request", call the function
// parse the JSON-RPC 2.0 compatible "request", call the C function
// and create an appropiate "response" object (containing a result or an error)
js::Object call(const FunctionMap& fm, const js::Object& request, Context* context);
@ -29,4 +30,7 @@ js::Object make_result(const js::Value& result, int id);
js::Object make_error(JSON_RPC error_code, const std::string& error_message, const js::Value& data, int id);
// Client side:
js::Object make_request(const std::string& functionName, const js::Array& parameters, const std::string& securityContext);
#endif // JSON_RPC_HH

@ -232,7 +232,7 @@ pEp_identity* from_json<pEp_identity*>(const js::Value& v)
template<>
js::Value to_json<message*>(message* const& msg)
js::Value to_json<message const*>(message const* const& msg)
{
if(msg == nullptr)
{
@ -270,6 +270,12 @@ js::Value to_json<message*>(message* const& msg)
return js::Value( std::move(o) );
}
template<>
js::Value to_json<message*>(message* const& msg)
{
return to_json( const_cast<const message*>(msg) );
}
template<>
stringlist_t* from_json<stringlist_t*>(const js::Value& v)

Loading…
Cancel
Save