mirror of
https://github.com/matrix-construct/construct
synced 2024-12-25 23:14:13 +01:00
ircd:Ⓜ️:bridge: Add timeout conf item; fix queries; add console cmd.
This commit is contained in:
parent
926c5914a8
commit
3c8a8d01aa
3 changed files with 94 additions and 31 deletions
|
@ -25,10 +25,12 @@ namespace ircd::m::bridge
|
|||
|
||||
struct ircd::m::bridge::query
|
||||
{
|
||||
static conf::item<seconds> timeout;
|
||||
|
||||
rfc3986::uri base_url;
|
||||
unique_mutable_buffer buf;
|
||||
window_buffer wb;
|
||||
string_view uri;
|
||||
window_buffer wb;
|
||||
http::request hypertext;
|
||||
server::request request;
|
||||
http::code code;
|
||||
|
|
|
@ -24,6 +24,18 @@ ircd::m::bridge::exists(const string_view &id)
|
|||
// query
|
||||
//
|
||||
|
||||
namespace ircd::m::bridge
|
||||
{
|
||||
thread_local char urlencbuf[512];
|
||||
}
|
||||
|
||||
decltype(ircd::m::bridge::query::timeout)
|
||||
ircd::m::bridge::query::timeout
|
||||
{
|
||||
{ "name", "ircd.m.bridge.query.timeout" },
|
||||
{ "default", 5L },
|
||||
};
|
||||
|
||||
ircd::m::bridge::query::query(const config &config,
|
||||
const m::room::alias &alias)
|
||||
:base_url
|
||||
|
@ -34,23 +46,19 @@ ircd::m::bridge::query::query(const config &config,
|
|||
{
|
||||
8_KiB
|
||||
}
|
||||
,wb
|
||||
{
|
||||
buf
|
||||
}
|
||||
,uri
|
||||
{
|
||||
wb([this, &config, &alias](const mutable_buffer &buf)
|
||||
fmt::sprintf
|
||||
{
|
||||
thread_local char urlencbuf[512];
|
||||
return fmt::sprintf
|
||||
{
|
||||
buf, "%s/_matrix/app/v1/rooms/%s?access_token=%s",
|
||||
base_url.path,
|
||||
url::encode(urlencbuf, alias),
|
||||
at<"hs_token"_>(config),
|
||||
};
|
||||
})
|
||||
buf, "%s/_matrix/app/v1/rooms/%s?access_token=%s",
|
||||
base_url.path,
|
||||
url::encode(urlencbuf, alias),
|
||||
at<"hs_token"_>(config),
|
||||
}
|
||||
}
|
||||
,wb
|
||||
{
|
||||
buf + size(uri)
|
||||
}
|
||||
,hypertext
|
||||
{
|
||||
|
@ -67,7 +75,7 @@ ircd::m::bridge::query::query(const config &config,
|
|||
}
|
||||
,code
|
||||
{
|
||||
request.get(seconds(10)) //TODO: conf
|
||||
request.get(seconds(timeout))
|
||||
}
|
||||
{
|
||||
}
|
||||
|
@ -82,23 +90,19 @@ ircd::m::bridge::query::query(const config &config,
|
|||
{
|
||||
8_KiB
|
||||
}
|
||||
,wb
|
||||
{
|
||||
buf
|
||||
}
|
||||
,uri
|
||||
{
|
||||
wb([this, &config, &user_id](const mutable_buffer &buf)
|
||||
fmt::sprintf
|
||||
{
|
||||
thread_local char urlencbuf[512];
|
||||
return fmt::sprintf
|
||||
{
|
||||
buf, "%s/_matrix/app/v1/users/%s?access_token=%s",
|
||||
base_url.path,
|
||||
url::encode(urlencbuf, user_id),
|
||||
at<"hs_token"_>(config),
|
||||
};
|
||||
})
|
||||
buf, "%s/_matrix/app/v1/users/%s?access_token=%s",
|
||||
base_url.path,
|
||||
url::encode(urlencbuf, user_id),
|
||||
at<"hs_token"_>(config),
|
||||
}
|
||||
}
|
||||
,wb
|
||||
{
|
||||
buf + size(uri)
|
||||
}
|
||||
,hypertext
|
||||
{
|
||||
|
@ -115,7 +119,7 @@ ircd::m::bridge::query::query(const config &config,
|
|||
}
|
||||
,code
|
||||
{
|
||||
request.get(seconds(10)) //TODO: conf
|
||||
request.get(seconds(timeout))
|
||||
}
|
||||
{
|
||||
}
|
||||
|
|
|
@ -15110,3 +15110,60 @@ console_cmd__bridge(opt &out, const string_view &line)
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
console_cmd__bridge__query(opt &out, const string_view &line)
|
||||
{
|
||||
const params param{line, " ",
|
||||
{
|
||||
"bridge_id", "mxid"
|
||||
}};
|
||||
|
||||
const string_view &bridge_id
|
||||
{
|
||||
param.at("bridge_id")
|
||||
};
|
||||
|
||||
const string_view &mxid
|
||||
{
|
||||
param.at("mxid")
|
||||
};
|
||||
|
||||
std::string config;
|
||||
m::bridge::config::get(bridge_id, [&config]
|
||||
(const auto &, const auto &object)
|
||||
{
|
||||
config = object.source;
|
||||
});
|
||||
|
||||
switch(m::sigil(mxid))
|
||||
{
|
||||
case m::id::USER:
|
||||
{
|
||||
m::bridge::query
|
||||
{
|
||||
m::bridge::config{config}, m::user::id{mxid}
|
||||
};
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case m::id::ROOM_ALIAS:
|
||||
{
|
||||
m::bridge::query
|
||||
{
|
||||
m::bridge::config{config}, m::room::alias{mxid}
|
||||
};
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
throw error
|
||||
{
|
||||
"Invalid MXID argument"
|
||||
};
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue