mirror of
https://github.com/matrix-construct/construct
synced 2024-11-16 15:00:51 +01:00
modules/media: Provide suitable extern linkage for file_room_id.
This commit is contained in:
parent
2b6fd1c985
commit
a068857bb9
2 changed files with 46 additions and 27 deletions
|
@ -16,32 +16,6 @@ IRCD_MODULE
|
||||||
"11.7 :Content respository"
|
"11.7 :Content respository"
|
||||||
};
|
};
|
||||||
|
|
||||||
m::room::id::buf
|
|
||||||
file_room_id(const string_view &server,
|
|
||||||
const string_view &file)
|
|
||||||
{
|
|
||||||
if(empty(server) || empty(file))
|
|
||||||
throw m::BAD_REQUEST
|
|
||||||
{
|
|
||||||
"Invalid MXC: empty server or file parameters..."
|
|
||||||
};
|
|
||||||
|
|
||||||
size_t len;
|
|
||||||
thread_local char buf[512];
|
|
||||||
len = strlcpy(buf, server);
|
|
||||||
len = strlcat(buf, "/"_sv);
|
|
||||||
len = strlcat(buf, file);
|
|
||||||
const sha256::buf hash
|
|
||||||
{
|
|
||||||
sha256{string_view{buf, len}}
|
|
||||||
};
|
|
||||||
|
|
||||||
return m::room::id::buf
|
|
||||||
{
|
|
||||||
b58encode(buf, hash), my_host()
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t
|
size_t
|
||||||
write_file(const m::room &room,
|
write_file(const m::room &room,
|
||||||
const string_view &content,
|
const string_view &content,
|
||||||
|
@ -178,3 +152,41 @@ read_each_block(const m::room &room,
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m::room::id::buf
|
||||||
|
file_room_id(const string_view &server,
|
||||||
|
const string_view &file)
|
||||||
|
{
|
||||||
|
m::room::id::buf ret;
|
||||||
|
file_room_id(ret, server, file);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
m::room::id
|
||||||
|
file_room_id(m::room::id::buf &out,
|
||||||
|
const string_view &server,
|
||||||
|
const string_view &file)
|
||||||
|
{
|
||||||
|
if(empty(server) || empty(file))
|
||||||
|
throw m::BAD_REQUEST
|
||||||
|
{
|
||||||
|
"Invalid MXC: empty server or file parameters..."
|
||||||
|
};
|
||||||
|
|
||||||
|
size_t len;
|
||||||
|
thread_local char buf[512];
|
||||||
|
len = strlcpy(buf, server);
|
||||||
|
len = strlcat(buf, "/"_sv);
|
||||||
|
len = strlcat(buf, file);
|
||||||
|
const sha256::buf hash
|
||||||
|
{
|
||||||
|
sha256{string_view{buf, len}}
|
||||||
|
};
|
||||||
|
|
||||||
|
out =
|
||||||
|
{
|
||||||
|
b58encode(buf, hash), my_host()
|
||||||
|
};
|
||||||
|
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
|
@ -10,7 +10,14 @@
|
||||||
|
|
||||||
using namespace ircd;
|
using namespace ircd;
|
||||||
|
|
||||||
m::room::id::buf file_room_id(const string_view &server, const string_view &file);
|
extern "C" m::room::id
|
||||||
|
file_room_id(m::room::id::buf &out,
|
||||||
|
const string_view &server,
|
||||||
|
const string_view &file);
|
||||||
|
|
||||||
|
m::room::id::buf
|
||||||
|
file_room_id(const string_view &server,
|
||||||
|
const string_view &file);
|
||||||
|
|
||||||
size_t read_each_block(const m::room &, const std::function<void (const string_view &)> &);
|
size_t read_each_block(const m::room &, const std::function<void (const string_view &)> &);
|
||||||
size_t write_file(const m::room &room, const string_view &content, const string_view &content_type);
|
size_t write_file(const m::room &room, const string_view &content, const string_view &content_type);
|
||||||
|
|
Loading…
Reference in a new issue