Esempio n. 1
0
void RequestDataParser::operator()(const HttpServer::request& request, BuildingResponse&, Params& params, function<void(RequestParser::Status)> callback)
{
  {
    const char*  get_params = strrchr(request.destination.c_str(), '?');
    std::string  uri        = request.destination;

    // Setting Headers parameters
    {
      auto it  = request.headers.begin();
      auto end = request.headers.end();

      for (; it != end ; ++it)
      {
        boost::network::http::request_header_narrow header = *it;
        params["headers"][header.name] = header.value;
      }      
    }

    // Getting get parameters
    if (get_params != 0)
    {
      std::string str_params(get_params);

      uri.erase(uri.size() - str_params.size());
      str_params.erase(0, 1);
      cgi2params(params.as_data(), str_params);
    }
  
    // Set URI and method for the posterity (is that even a word ?)
    params["uri"]    = uri;
    params["method"] = request.method;
  }
  callback(RequestParser::Continue);
}
Esempio n. 2
0
void RequestJsonParser::body_received(const HttpServer::request& request, BuildingResponse&, Params& params, const string& body)
{
  if (body.size() > 0)
    params.as_data().merge(DataTree().from_json(body));
}