// Matrix Construct // // Copyright (C) Matrix Construct Developers, Authors & Contributors // Copyright (C) 2016-2019 Jason Volk // // Permission to use, copy, modify, and/or distribute this software for any // purpose with or without fee is hereby granted, provided that the above // copyright notice and this permission notice is present in all copies. The // full license for this software is available in the LICENSE file. #pragma once #define HAVE_IRCD_RESOURCE_REQUEST_H struct ircd::resource::request :json::object { template struct object; http::request::head head; string_view content; http::query::string query; string_view origin; string_view access_token; vector_view parv; string_view param[8]; string_view node_id; m::user::id user_id; char user_id_buf[256]; request(const http::request::head &head, const string_view &content) :json::object{content} ,head{head} ,content{content} ,query{this->head.query} {} request() = default; }; template struct ircd::resource::request::object :tuple { resource::request &r; const http::request::head &head; const string_view &content; const http::query::string &query; const decltype(r.origin) &origin; const decltype(r.user_id) &user_id; const decltype(r.node_id) &node_id; const decltype(r.access_token) &access_token; const vector_view &parv; const json::object &body; object(resource::request &r) :tuple{r} ,r{r} ,head{r.head} ,content{r.content} ,query{r.query} ,origin{r.origin} ,user_id{r.user_id} ,node_id{r.node_id} ,access_token{r.access_token} ,parv{r.parv} ,body{r} {} };