Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
M
mtxclient
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Nheko Reborn
mtxclient
Commits
e90cef99
Commit
e90cef99
authored
6 years ago
by
Konstantinos Sideris
Browse files
Options
Downloads
Patches
Plain Diff
Use type aliases for callbacks to decrease verbosity
parent
c533b0ba
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/client.cpp
+34
-44
34 additions, 44 deletions
src/client.cpp
src/client.hpp
+90
-110
90 additions, 110 deletions
src/client.hpp
with
124 additions
and
154 deletions
src/client.cpp
+
34
−
44
View file @
e90cef99
...
...
@@ -184,7 +184,7 @@ Client::setup_auth(std::shared_ptr<Session> session, bool auth)
void
Client
::
login
(
const
std
::
string
&
user
,
const
std
::
string
&
password
,
std
::
function
<
void
(
const
mtx
::
responses
::
Login
&
response
,
RequestErr
err
)
>
callback
)
Callback
<
mtx
::
responses
::
Login
>
callback
)
{
mtx
::
requests
::
Login
req
;
req
.
user
=
user
;
...
...
@@ -206,7 +206,7 @@ Client::login(const std::string &user,
}
void
Client
::
logout
(
std
::
function
<
void
(
const
mtx
::
responses
::
Logout
&
response
,
RequestErr
)
>
callback
)
Client
::
logout
(
Callback
<
mtx
::
responses
::
Logout
>
callback
)
{
mtx
::
requests
::
Logout
req
;
...
...
@@ -225,7 +225,7 @@ Client::logout(std::function<void(const mtx::responses::Logout &response, Reques
}
void
Client
::
set_avatar_url
(
const
std
::
string
&
avatar_url
,
std
::
function
<
void
(
RequestErr
err
)
>
callback
)
Client
::
set_avatar_url
(
const
std
::
string
&
avatar_url
,
ErrCallback
callback
)
{
mtx
::
requests
::
AvatarUrl
req
;
req
.
avatar_url
=
avatar_url
;
...
...
@@ -235,7 +235,7 @@ Client::set_avatar_url(const std::string &avatar_url, std::function<void(Request
}
void
Client
::
set_displayname
(
const
std
::
string
&
displayname
,
std
::
function
<
void
(
RequestErr
)
>
callback
)
Client
::
set_displayname
(
const
std
::
string
&
displayname
,
ErrCallback
callback
)
{
mtx
::
requests
::
DisplayName
req
;
req
.
displayname
=
displayname
;
...
...
@@ -246,7 +246,7 @@ Client::set_displayname(const std::string &displayname, std::function<void(Reque
void
Client
::
get_profile
(
const
mtx
::
identifiers
::
User
&
user_id
,
std
::
function
<
void
(
const
mtx
::
responses
::
Profile
&
,
RequestErr
)
>
callback
)
Callback
<
mtx
::
responses
::
Profile
>
callback
)
{
get
<
mtx
::
responses
::
Profile
>
(
"/client/r0/profile/"
+
user_id
.
to_string
(),
[
callback
](
const
mtx
::
responses
::
Profile
&
res
,
...
...
@@ -256,7 +256,7 @@ Client::get_profile(const mtx::identifiers::User &user_id,
void
Client
::
get_avatar_url
(
const
mtx
::
identifiers
::
User
&
user_id
,
std
::
function
<
void
(
const
mtx
::
responses
::
AvatarUrl
&
,
RequestErr
)
>
callback
)
Callback
<
mtx
::
responses
::
AvatarUrl
>
callback
)
{
get
<
mtx
::
responses
::
AvatarUrl
>
(
"/client/r0/profile/"
+
user_id
.
to_string
()
+
"/avatar_url"
,
[
callback
](
const
mtx
::
responses
::
AvatarUrl
&
res
,
...
...
@@ -266,15 +266,14 @@ Client::get_avatar_url(const mtx::identifiers::User &user_id,
void
Client
::
create_room
(
const
mtx
::
requests
::
CreateRoom
&
room_options
,
std
::
function
<
void
(
const
mtx
::
responses
::
CreateRoom
&
,
RequestErr
)
>
callback
)
Callback
<
mtx
::
responses
::
CreateRoom
>
callback
)
{
post
<
mtx
::
requests
::
CreateRoom
,
mtx
::
responses
::
CreateRoom
>
(
"/client/r0/createRoom"
,
room_options
,
callback
);
}
void
Client
::
join_room
(
const
mtx
::
identifiers
::
Room
&
room_id
,
std
::
function
<
void
(
const
nlohmann
::
json
&
,
RequestErr
)
>
callback
)
Client
::
join_room
(
const
mtx
::
identifiers
::
Room
&
room_id
,
Callback
<
nlohmann
::
json
>
callback
)
{
auto
api_path
=
"/client/r0/rooms/"
+
room_id
.
to_string
()
+
"/join"
;
...
...
@@ -282,8 +281,7 @@ Client::join_room(const mtx::identifiers::Room &room_id,
}
void
Client
::
join_room
(
const
std
::
string
&
room
,
std
::
function
<
void
(
const
nlohmann
::
json
&
,
RequestErr
)
>
callback
)
Client
::
join_room
(
const
std
::
string
&
room
,
Callback
<
nlohmann
::
json
>
callback
)
{
auto
api_path
=
"/client/r0/join/"
+
room
;
...
...
@@ -291,8 +289,7 @@ Client::join_room(const std::string &room,
}
void
Client
::
leave_room
(
const
mtx
::
identifiers
::
Room
&
room_id
,
std
::
function
<
void
(
const
nlohmann
::
json
&
,
RequestErr
)
>
callback
)
Client
::
leave_room
(
const
mtx
::
identifiers
::
Room
&
room_id
,
Callback
<
nlohmann
::
json
>
callback
)
{
auto
api_path
=
"/client/r0/rooms/"
+
room_id
.
to_string
()
+
"/leave"
;
...
...
@@ -302,7 +299,7 @@ Client::leave_room(const mtx::identifiers::Room &room_id,
void
Client
::
invite_user
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
std
::
string
&
user_id
,
std
::
function
<
void
(
const
mtx
::
responses
::
RoomInvite
&
,
RequestErr
)
>
callback
)
Callback
<
mtx
::
responses
::
RoomInvite
>
callback
)
{
mtx
::
requests
::
RoomInvite
req
;
req
.
user_id
=
user_id
;
...
...
@@ -317,7 +314,7 @@ Client::sync(const std::string &filter,
const
std
::
string
&
since
,
bool
full_state
,
uint16_t
timeout
,
std
::
function
<
void
(
const
nlohmann
::
json
&
,
RequestErr
)
>
callback
)
Callback
<
nlohmann
::
json
>
callback
)
{
std
::
map
<
std
::
string
,
std
::
string
>
params
;
...
...
@@ -339,7 +336,7 @@ Client::sync(const std::string &filter,
}
void
Client
::
versions
(
std
::
function
<
void
(
const
mtx
::
responses
::
Versions
&
,
RequestErr
)
>
callback
)
Client
::
versions
(
Callback
<
mtx
::
responses
::
Versions
>
callback
)
{
get
<
mtx
::
responses
::
Versions
>
(
"/client/versions"
,
[
callback
](
const
mtx
::
responses
::
Versions
&
res
,
...
...
@@ -351,7 +348,7 @@ void
Client
::
upload
(
const
std
::
string
&
data
,
const
std
::
string
&
content_type
,
const
std
::
string
&
filename
,
std
::
function
<
void
(
const
mtx
::
responses
::
ContentURI
&
res
,
RequestErr
err
)
>
cb
)
Callback
<
mtx
::
responses
::
ContentURI
>
cb
)
{
std
::
map
<
std
::
string
,
std
::
string
>
params
=
{{
"filename"
,
filename
}};
...
...
@@ -390,9 +387,7 @@ Client::download(const std::string &server,
}
void
Client
::
start_typing
(
const
mtx
::
identifiers
::
Room
&
room_id
,
uint64_t
timeout
,
std
::
function
<
void
(
RequestErr
)
>
callback
)
Client
::
start_typing
(
const
mtx
::
identifiers
::
Room
&
room_id
,
uint64_t
timeout
,
ErrCallback
callback
)
{
const
auto
api_path
=
"/client/r0/rooms/"
+
room_id
.
to_string
()
+
"/typing/"
+
user_id_
.
to_string
();
...
...
@@ -405,7 +400,7 @@ Client::start_typing(const mtx::identifiers::Room &room_id,
}
void
Client
::
stop_typing
(
const
mtx
::
identifiers
::
Room
&
room_id
,
std
::
function
<
void
(
RequestErr
)
>
callback
)
Client
::
stop_typing
(
const
mtx
::
identifiers
::
Room
&
room_id
,
ErrCallback
callback
)
{
const
auto
api_path
=
"/client/r0/rooms/"
+
room_id
.
to_string
()
+
"/typing/"
+
user_id_
.
to_string
();
...
...
@@ -423,7 +418,7 @@ Client::messages(const mtx::identifiers::Room &room_id,
PaginationDirection
dir
,
uint16_t
limit
,
const
std
::
string
&
filter
,
std
::
function
<
void
(
const
mtx
::
responses
::
Messages
&
res
,
RequestErr
err
)
>
callback
)
Callback
<
mtx
::
responses
::
Messages
>
callback
)
{
std
::
map
<
std
::
string
,
std
::
string
>
params
;
...
...
@@ -447,8 +442,7 @@ Client::messages(const mtx::identifiers::Room &room_id,
}
void
Client
::
upload_filter
(
const
nlohmann
::
json
&
j
,
std
::
function
<
void
(
const
mtx
::
responses
::
FilterId
,
RequestErr
err
)
>
callback
)
Client
::
upload_filter
(
const
nlohmann
::
json
&
j
,
Callback
<
mtx
::
responses
::
FilterId
>
callback
)
{
const
auto
api_path
=
"/client/r0/user/"
+
user_id_
.
to_string
()
+
"/filter"
;
...
...
@@ -458,7 +452,7 @@ Client::upload_filter(const nlohmann::json &j,
void
Client
::
read_event
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
mtx
::
identifiers
::
Event
&
event_id
,
std
::
function
<
void
(
RequestErr
err
)
>
callback
)
ErrCallback
callback
)
{
const
auto
api_path
=
"/client/r0/rooms/"
+
room_id
.
to_string
()
+
"/read_markers"
;
...
...
@@ -474,7 +468,7 @@ Client::read_event(const mtx::identifiers::Room &room_id,
void
Client
::
registration
(
const
std
::
string
&
user
,
const
std
::
string
&
pass
,
std
::
function
<
void
(
const
mtx
::
responses
::
Register
&
,
RequestErr
)
>
callback
)
Callback
<
mtx
::
responses
::
Register
>
callback
)
{
nlohmann
::
json
req
=
{{
"username"
,
user
},
{
"password"
,
pass
}};
...
...
@@ -482,10 +476,9 @@ Client::registration(const std::string &user,
}
void
Client
::
flow_register
(
const
std
::
string
&
user
,
const
std
::
string
&
pass
,
std
::
function
<
void
(
const
mtx
::
responses
::
RegistrationFlows
&
,
RequestErr
)
>
callback
)
Client
::
flow_register
(
const
std
::
string
&
user
,
const
std
::
string
&
pass
,
Callback
<
mtx
::
responses
::
RegistrationFlows
>
callback
)
{
nlohmann
::
json
req
=
{{
"username"
,
user
},
{
"password"
,
pass
}};
...
...
@@ -498,7 +491,7 @@ Client::flow_response(const std::string &user,
const
std
::
string
&
pass
,
const
std
::
string
&
session
,
const
std
::
string
&
flow_type
,
std
::
function
<
void
(
const
mtx
::
responses
::
Register
&
,
RequestErr
)
>
callback
)
Callback
<
mtx
::
responses
::
Register
>
callback
)
{
nlohmann
::
json
req
=
{{
"username"
,
user
},
{
"password"
,
pass
},
...
...
@@ -511,7 +504,7 @@ void
Client
::
send_to_device
(
const
std
::
string
&
event_type
,
const
std
::
string
&
txid
,
const
nlohmann
::
json
&
body
,
std
::
function
<
void
(
RequestErr
)
>
callback
)
ErrCallback
callback
)
{
const
auto
api_path
=
"/client/r0/sendToDevice/"
+
event_type
+
"/"
+
txid
;
put
<
nlohmann
::
json
>
(
api_path
,
body
,
callback
);
...
...
@@ -522,18 +515,16 @@ Client::send_to_device(const std::string &event_type,
//
void
Client
::
upload_keys
(
const
mtx
::
requests
::
UploadKeys
&
req
,
std
::
function
<
void
(
const
mtx
::
responses
::
UploadKeys
&
res
,
RequestErr
err
)
>
callback
)
Client
::
upload_keys
(
const
mtx
::
requests
::
UploadKeys
&
req
,
Callback
<
mtx
::
responses
::
UploadKeys
>
callback
)
{
post
<
mtx
::
requests
::
UploadKeys
,
mtx
::
responses
::
UploadKeys
>
(
"/client/r0/keys/upload"
,
req
,
callback
);
}
void
Client
::
query_keys
(
const
mtx
::
requests
::
QueryKeys
&
req
,
std
::
function
<
void
(
const
mtx
::
responses
::
QueryKeys
&
res
,
RequestErr
err
)
>
callback
)
Client
::
query_keys
(
const
mtx
::
requests
::
QueryKeys
&
req
,
Callback
<
mtx
::
responses
::
QueryKeys
>
callback
)
{
post
<
mtx
::
requests
::
QueryKeys
,
mtx
::
responses
::
QueryKeys
>
(
"/client/r0/keys/query"
,
req
,
callback
);
...
...
@@ -543,7 +534,7 @@ Client::query_keys(
void
Client
::
claim_keys
(
const
mtx
::
identifiers
::
User
&
user
,
const
std
::
vector
<
std
::
string
>
&
devices
,
std
::
function
<
void
(
const
mtx
::
responses
::
ClaimKeys
&
res
,
RequestErr
err
)
>
cb
)
Callback
<
mtx
::
responses
::
ClaimKeys
>
cb
)
{
mtx
::
requests
::
ClaimKeys
req
;
...
...
@@ -558,10 +549,9 @@ Client::claim_keys(const mtx::identifiers::User &user,
}
void
Client
::
key_changes
(
const
std
::
string
&
from
,
const
std
::
string
&
to
,
std
::
function
<
void
(
const
mtx
::
responses
::
KeyChanges
&
res
,
RequestErr
err
)
>
callback
)
Client
::
key_changes
(
const
std
::
string
&
from
,
const
std
::
string
&
to
,
Callback
<
mtx
::
responses
::
KeyChanges
>
callback
)
{
std
::
map
<
std
::
string
,
std
::
string
>
params
;
...
...
@@ -579,7 +569,7 @@ Client::key_changes(
void
Client
::
enable_encryption
(
const
mtx
::
identifiers
::
Room
&
room
,
std
::
function
<
void
(
const
mtx
::
responses
::
EventId
&
,
RequestErr
)
>
callback
)
Callback
<
mtx
::
responses
::
EventId
>
callback
)
{
using
namespace
mtx
::
events
;
state
::
Encryption
event
;
...
...
This diff is collapsed.
Click to expand it.
src/client.hpp
+
90
−
110
View file @
e90cef99
...
...
@@ -38,7 +38,15 @@ to_string(PaginationDirection dir)
return
"f"
;
}
using
RequestErr
=
const
boost
::
optional
<
mtx
::
client
::
errors
::
ClientError
>
&
;
using
RequestErr
=
const
boost
::
optional
<
mtx
::
client
::
errors
::
ClientError
>
&
;
using
HeaderFields
=
const
boost
::
optional
<
boost
::
beast
::
http
::
fields
>
&
;
using
ErrCallback
=
std
::
function
<
void
(
RequestErr
)
>
;
template
<
class
Response
>
using
Callback
=
std
::
function
<
void
(
const
Response
&
,
RequestErr
)
>
;
template
<
class
Response
>
using
HeadersCallback
=
std
::
function
<
void
(
const
Response
&
,
HeaderFields
,
RequestErr
)
>
;
//! The main object that the user will interact.
class
Client
:
public
std
::
enable_shared_from_this
<
Client
>
...
...
@@ -65,68 +73,59 @@ public:
//! Generate a new transaction id.
std
::
string
generate_txn_id
()
{
return
utils
::
random_token
(
32
,
false
);
}
using
HeaderFields
=
const
boost
::
optional
<
boost
::
beast
::
http
::
fields
>
&
;
//! Perfom login.
void
login
(
const
std
::
string
&
username
,
const
std
::
string
&
password
,
std
::
function
<
void
(
const
mtx
::
responses
::
Login
&
response
,
RequestErr
err
)
>
);
Callback
<
mtx
::
responses
::
Login
>
cb
);
//! Register by not expecting a registration flow.
void
registration
(
const
std
::
string
&
user
,
const
std
::
string
&
pass
,
std
::
function
<
void
(
const
mtx
::
responses
::
Register
&
,
RequestErr
)
>
);
Callback
<
mtx
::
responses
::
Register
>
cb
);
//! Register through a registration flow.
void
flow_register
(
const
std
::
string
&
user
,
const
std
::
string
&
pass
,
std
::
function
<
void
(
const
mtx
::
responses
::
RegistrationFlows
&
,
RequestErr
)
>
);
void
flow_register
(
const
std
::
string
&
user
,
const
std
::
string
&
pass
,
Callback
<
mtx
::
responses
::
RegistrationFlows
>
cb
);
//! Complete the flow registration.
void
flow_response
(
const
std
::
string
&
user
,
const
std
::
string
&
pass
,
const
std
::
string
&
session
,
const
std
::
string
&
flow_type
,
std
::
function
<
void
(
const
mtx
::
responses
::
Register
&
,
RequestErr
)
>
);
Callback
<
mtx
::
responses
::
Register
>
cb
);
//! Perform logout.
void
logout
(
std
::
function
<
void
(
const
mtx
::
responses
::
Logout
&
response
,
RequestErr
err
)
>
);
void
logout
(
Callback
<
mtx
::
responses
::
Logout
>
cb
);
//! Change avatar.
void
set_avatar_url
(
const
std
::
string
&
avatar_url
,
std
::
function
<
void
(
RequestErr
err
)
>
);
void
set_avatar_url
(
const
std
::
string
&
avatar_url
,
ErrCallback
cb
);
//! Change displayname.
void
set_displayname
(
const
std
::
string
&
displayname
,
std
::
function
<
void
(
RequestErr
err
)
>
);
void
set_displayname
(
const
std
::
string
&
displayname
,
ErrCallback
cb
);
//! Get user profile.
void
get_profile
(
const
mtx
::
identifiers
::
User
&
user_id
,
std
::
function
<
void
(
const
mtx
::
responses
::
Profile
&
,
RequestErr
)
>
callback
);
Callback
<
mtx
::
responses
::
Profile
>
cb
);
//! Get user avatar URL.
void
get_avatar_url
(
const
mtx
::
identifiers
::
User
&
user_id
,
std
::
function
<
void
(
const
mtx
::
responses
::
AvatarUrl
&
,
RequestErr
)
>
callback
);
void
get_avatar_url
(
const
mtx
::
identifiers
::
User
&
user_id
,
Callback
<
mtx
::
responses
::
AvatarUrl
>
cb
);
//! Create a room with the given options.
void
create_room
(
const
mtx
::
requests
::
CreateRoom
&
room_options
,
std
::
function
<
void
(
const
mtx
::
responses
::
CreateRoom
&
response
,
RequestErr
err
)
>
);
void
create_room
(
const
mtx
::
requests
::
CreateRoom
&
room_options
,
Callback
<
mtx
::
responses
::
CreateRoom
>
cb
);
//! Join a room by its room_id.
void
join_room
(
const
mtx
::
identifiers
::
Room
&
room_id
,
std
::
function
<
void
(
const
nlohmann
::
json
&
res
,
RequestErr
err
)
>
);
void
join_room
(
const
mtx
::
identifiers
::
Room
&
room_id
,
Callback
<
nlohmann
::
json
>
cb
);
//! Join a room by an alias or a room_id.
void
join_room
(
const
std
::
string
&
room
,
std
::
function
<
void
(
const
nlohmann
::
json
&
res
,
RequestErr
err
)
>
);
void
join_room
(
const
std
::
string
&
room
,
Callback
<
nlohmann
::
json
>
cb
);
//! Leave a room by its room_id.
void
leave_room
(
const
mtx
::
identifiers
::
Room
&
room_id
,
std
::
function
<
void
(
const
nlohmann
::
json
&
res
,
RequestErr
err
)
>
);
void
leave_room
(
const
mtx
::
identifiers
::
Room
&
room_id
,
Callback
<
nlohmann
::
json
>
cb
);
//! Invite a user to a room.
void
invite_user
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
std
::
string
&
user_id
,
std
::
function
<
void
(
const
mtx
::
responses
::
RoomInvite
&
res
,
RequestErr
err
)
>
);
void
invite_user
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
std
::
string
&
user_id
,
Callback
<
mtx
::
responses
::
RoomInvite
>
cb
);
//! Perform sync.
void
sync
(
const
std
::
string
&
filter
,
const
std
::
string
&
since
,
bool
full_state
,
uint16_t
timeout
,
std
::
function
<
void
(
const
nlohmann
::
json
&
res
,
RequestErr
err
)
>
);
Callback
<
nlohmann
::
json
>
cb
);
//! Paginate through room messages.
void
messages
(
const
mtx
::
identifiers
::
Room
&
room_id
,
...
...
@@ -135,25 +134,24 @@ public:
PaginationDirection
dir
,
uint16_t
limit
,
const
std
::
string
&
filter
,
std
::
function
<
void
(
const
mtx
::
responses
::
Messages
&
res
,
RequestErr
err
)
>
);
Callback
<
mtx
::
responses
::
Messages
>
cb
);
//! Get the supported versions from the server.
void
versions
(
std
::
function
<
void
(
const
mtx
::
responses
::
Versions
&
res
,
RequestErr
err
)
>
);
void
versions
(
Callback
<
mtx
::
responses
::
Versions
>
cb
);
//! Mark an event as read.
void
read_event
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
mtx
::
identifiers
::
Event
&
event_id
,
std
::
function
<
void
(
RequestErr
err
)
>
);
ErrCallback
cb
);
//! Upload a filter
void
upload_filter
(
const
nlohmann
::
json
&
j
,
std
::
function
<
void
(
const
mtx
::
responses
::
FilterId
,
RequestErr
err
)
>
);
void
upload_filter
(
const
nlohmann
::
json
&
j
,
Callback
<
mtx
::
responses
::
FilterId
>
cb
);
//! Upload data to the content repository.
void
upload
(
const
std
::
string
&
data
,
const
std
::
string
&
content_type
,
const
std
::
string
&
filename
,
std
::
function
<
void
(
const
mtx
::
responses
::
ContentURI
&
res
,
RequestErr
err
)
>
cb
);
Callback
<
mtx
::
responses
::
ContentURI
>
cb
);
//! Retrieve data from the content repository.
void
download
(
const
std
::
string
&
server
,
const
std
::
string
&
media_id
,
...
...
@@ -162,51 +160,44 @@ public:
const
std
::
string
&
original_filename
,
RequestErr
err
)
>
cb
);
//! Send typing notifications to the room.
void
start_typing
(
const
mtx
::
identifiers
::
Room
&
room_id
,
uint64_t
timeout
,
std
::
function
<
void
(
RequestErr
err
)
>
cb
);
void
start_typing
(
const
mtx
::
identifiers
::
Room
&
room_id
,
uint64_t
timeout
,
ErrCallback
cb
);
//! Remove typing notifications from the room.
void
stop_typing
(
const
mtx
::
identifiers
::
Room
&
room_id
,
std
::
function
<
void
(
RequestErr
err
)
>
cb
);
void
stop_typing
(
const
mtx
::
identifiers
::
Room
&
room_id
,
ErrCallback
cb
);
//! Send a room message with auto-generated transaction id.
template
<
class
Payload
,
mtx
::
events
::
EventType
Event
>
void
send_room_message
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
Payload
&
payload
,
std
::
function
<
void
(
const
mtx
::
responses
::
EventId
&
,
RequestErr
)
>
callback
);
void
send_room_message
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
Payload
&
payload
,
Callback
<
mtx
::
responses
::
EventId
>
cb
);
//! Send a room message by providing transaction id.
template
<
class
Payload
,
mtx
::
events
::
EventType
Event
>
void
send_room_message
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
std
::
string
&
txn_id
,
const
Payload
&
payload
,
std
::
function
<
void
(
const
mtx
::
responses
::
EventId
&
,
RequestErr
)
>
callback
);
void
send_room_message
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
std
::
string
&
txn_id
,
const
Payload
&
payload
,
Callback
<
mtx
::
responses
::
EventId
>
cb
);
//! Send a state event by providing the state key.
template
<
class
Payload
,
mtx
::
events
::
EventType
Event
>
void
send_state_event
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
std
::
string
&
state_key
,
const
Payload
&
payload
,
std
::
function
<
void
(
const
mtx
::
responses
::
EventId
&
,
RequestErr
)
>
callback
);
void
send_state_event
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
std
::
string
&
state_key
,
const
Payload
&
payload
,
Callback
<
mtx
::
responses
::
EventId
>
cb
);
//! Send a state event with an empty state key.
template
<
class
Payload
,
mtx
::
events
::
EventType
Event
>
void
send_state_event
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
Payload
&
payload
,
std
::
function
<
void
(
const
mtx
::
responses
::
EventId
&
,
RequestErr
)
>
callback
);
void
send_state_event
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
Payload
&
payload
,
Callback
<
mtx
::
responses
::
EventId
>
cb
);
//! Send send-to-device events to a set of client devices with a specified transaction id.
void
send_to_device
(
const
std
::
string
&
event_type
,
const
std
::
string
&
txid
,
const
nlohmann
::
json
&
body
,
std
::
function
<
void
(
RequestErr
)
>
c
allback
);
ErrC
allback
cb
);
//! Send send-to-device events to a set of client devices with a generated transaction id.
void
send_to_device
(
const
std
::
string
&
event_type
,
const
nlohmann
::
json
&
body
,
std
::
function
<
void
(
RequestErr
)
>
c
allback
)
ErrC
allback
cb
)
{
send_to_device
(
event_type
,
generate_txn_id
(),
body
,
c
allback
);
send_to_device
(
event_type
,
generate_txn_id
(),
body
,
c
b
);
}
//
...
...
@@ -214,38 +205,33 @@ public:
//
//! Upload identity keys & one time keys.
void
upload_keys
(
const
mtx
::
requests
::
UploadKeys
&
req
,
std
::
function
<
void
(
const
mtx
::
responses
::
UploadKeys
&
res
,
RequestErr
err
)
>
cb
);
void
upload_keys
(
const
mtx
::
requests
::
UploadKeys
&
req
,
Callback
<
mtx
::
responses
::
UploadKeys
>
cb
);
//! Returns the current devices and identity keys for the given users.
void
query_keys
(
const
mtx
::
requests
::
QueryKeys
&
req
,
std
::
function
<
void
(
const
mtx
::
responses
::
QueryKeys
&
res
,
RequestErr
err
)
>
cb
);
void
query_keys
(
const
mtx
::
requests
::
QueryKeys
&
req
,
Callback
<
mtx
::
responses
::
QueryKeys
>
cb
);
//! Claims one-time keys for use in pre-key messages.
void
claim_keys
(
const
mtx
::
identifiers
::
User
&
user
,
const
std
::
vector
<
std
::
string
>
&
devices
,
std
::
function
<
void
(
const
mtx
::
responses
::
ClaimKeys
&
res
,
RequestErr
err
)
>
cb
);
void
claim_keys
(
const
mtx
::
identifiers
::
User
&
user
,
const
std
::
vector
<
std
::
string
>
&
devices
,
Callback
<
mtx
::
responses
::
ClaimKeys
>
cb
);
//! Gets a list of users who have updated their device identity keys
//! since a previous sync token.
void
key_changes
(
const
std
::
string
&
from
,
const
std
::
string
&
to
,
std
::
function
<
void
(
const
mtx
::
responses
::
KeyChanges
&
res
,
RequestErr
err
)
>
cb
);
void
key_changes
(
const
std
::
string
&
from
,
const
std
::
string
&
to
,
Callback
<
mtx
::
responses
::
KeyChanges
>
cb
);
//! Enable encryption in a room by sending a `m.room.encryption` state event.
void
enable_encryption
(
const
mtx
::
identifiers
::
Room
&
room
,
std
::
function
<
void
(
const
mtx
::
responses
::
EventId
&
res
,
RequestErr
err
)
>
);
void
enable_encryption
(
const
mtx
::
identifiers
::
Room
&
room
,
Callback
<
mtx
::
responses
::
EventId
>
cb
);
private
:
template
<
class
Request
,
class
Response
>
void
post
(
const
std
::
string
&
endpoint
,
const
Request
&
req
,
std
::
function
<
void
(
const
Response
&
,
RequestErr
)
>
,
Callback
<
Response
>
cb
,
bool
requires_auth
=
true
,
const
std
::
string
&
content_type
=
"application/json"
);
...
...
@@ -253,23 +239,22 @@ private:
template
<
class
Request
,
class
Response
>
void
put
(
const
std
::
string
&
endpoint
,
const
Request
&
req
,
std
::
function
<
void
(
const
Response
&
,
RequestErr
)
>
,
Callback
<
Response
>
cb
,
bool
requires_auth
=
true
);
template
<
class
Request
>
void
put
(
const
std
::
string
&
endpoint
,
const
Request
&
req
,
std
::
function
<
void
(
RequestErr
err
)
>
,
ErrCallback
cb
,
bool
requires_auth
=
true
);
template
<
class
Response
>
void
get
(
const
std
::
string
&
endpoint
,
std
::
function
<
void
(
const
Response
&
res
,
HeaderFields
fields
,
RequestErr
err
)
>
,
HeadersCallback
<
Response
>
cb
,
bool
requires_auth
=
true
);
template
<
class
Response
>
std
::
shared_ptr
<
Session
>
create_session
(
std
::
function
<
void
(
const
Response
&
res
,
HeaderFields
fields
,
RequestErr
err
)
>
callback
);
std
::
shared_ptr
<
Session
>
create_session
(
HeadersCallback
<
Response
>
callback
);
//! Setup http header with the access token if needed.
void
setup_auth
(
std
::
shared_ptr
<
Session
>
session
,
bool
auth
);
...
...
@@ -344,7 +329,7 @@ template<class Request, class Response>
void
mtx
::
client
::
Client
::
post
(
const
std
::
string
&
endpoint
,
const
Request
&
req
,
std
::
function
<
void
(
const
Response
&
,
RequestErr
)
>
callback
,
Callback
<
Response
>
callback
,
bool
requires_auth
,
const
std
::
string
&
content_type
)
{
...
...
@@ -373,7 +358,7 @@ template<class Request, class Response>
void
mtx
::
client
::
Client
::
put
(
const
std
::
string
&
endpoint
,
const
Request
&
req
,
std
::
function
<
void
(
const
Response
&
,
RequestErr
)
>
callback
,
Callback
<
Response
>
callback
,
bool
requires_auth
)
{
std
::
shared_ptr
<
Session
>
session
=
create_session
<
Response
>
(
...
...
@@ -401,7 +386,7 @@ template<class Request>
void
mtx
::
client
::
Client
::
put
(
const
std
::
string
&
endpoint
,
const
Request
&
req
,
std
::
function
<
void
(
RequestErr
)
>
callback
,
ErrCallback
callback
,
bool
requires_auth
)
{
mtx
::
client
::
Client
::
put
<
Request
,
mtx
::
responses
::
Empty
>
(
...
...
@@ -414,7 +399,7 @@ mtx::client::Client::put(const std::string &endpoint,
template
<
class
Response
>
void
mtx
::
client
::
Client
::
get
(
const
std
::
string
&
endpoint
,
std
::
function
<
void
(
const
Response
&
,
HeaderFields
,
RequestErr
)
>
callback
,
HeadersCallback
<
Response
>
callback
,
bool
requires_auth
)
{
std
::
shared_ptr
<
Session
>
session
=
create_session
<
Response
>
(
callback
);
...
...
@@ -436,8 +421,7 @@ mtx::client::Client::get(const std::string &endpoint,
template
<
class
Response
>
std
::
shared_ptr
<
mtx
::
client
::
Session
>
mtx
::
client
::
Client
::
create_session
(
std
::
function
<
void
(
const
Response
&
,
HeaderFields
,
RequestErr
)
>
callback
)
mtx
::
client
::
Client
::
create_session
(
HeadersCallback
<
Response
>
callback
)
{
boost
::
asio
::
ssl
::
context
ssl_ctx
{
boost
::
asio
::
ssl
::
context
::
sslv23_client
};
...
...
@@ -533,21 +517,19 @@ mtx::client::Client::create_session(
template
<
class
Payload
,
mtx
::
events
::
EventType
Event
>
void
mtx
::
client
::
Client
::
send_room_message
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
Payload
&
payload
,
std
::
function
<
void
(
const
mtx
::
responses
::
EventId
&
,
RequestErr
)
>
callback
)
mtx
::
client
::
Client
::
send_room_message
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
Payload
&
payload
,
Callback
<
mtx
::
responses
::
EventId
>
callback
)
{
send_room_message
<
Payload
,
Event
>
(
room_id
,
generate_txn_id
(),
payload
,
callback
);
}
template
<
class
Payload
,
mtx
::
events
::
EventType
Event
>
void
mtx
::
client
::
Client
::
send_room_message
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
std
::
string
&
txn_id
,
const
Payload
&
payload
,
std
::
function
<
void
(
const
mtx
::
responses
::
EventId
&
,
RequestErr
)
>
callback
)
mtx
::
client
::
Client
::
send_room_message
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
std
::
string
&
txn_id
,
const
Payload
&
payload
,
Callback
<
mtx
::
responses
::
EventId
>
callback
)
{
const
auto
api_path
=
"/client/r0/rooms/"
+
room_id
.
to_string
()
+
"/send/"
+
mtx
::
events
::
to_string
(
Event
)
+
"/"
+
txn_id
;
...
...
@@ -557,11 +539,10 @@ mtx::client::Client::send_room_message(
template
<
class
Payload
,
mtx
::
events
::
EventType
Event
>
void
mtx
::
client
::
Client
::
send_state_event
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
std
::
string
&
state_key
,
const
Payload
&
payload
,
std
::
function
<
void
(
const
mtx
::
responses
::
EventId
&
,
RequestErr
)
>
callback
)
mtx
::
client
::
Client
::
send_state_event
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
std
::
string
&
state_key
,
const
Payload
&
payload
,
Callback
<
mtx
::
responses
::
EventId
>
callback
)
{
const
auto
api_path
=
"/client/r0/rooms/"
+
room_id
.
to_string
()
+
"/state/"
+
mtx
::
events
::
to_string
(
Event
)
+
"/"
+
state_key
;
...
...
@@ -571,10 +552,9 @@ mtx::client::Client::send_state_event(
template
<
class
Payload
,
mtx
::
events
::
EventType
Event
>
void
mtx
::
client
::
Client
::
send_state_event
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
Payload
&
payload
,
std
::
function
<
void
(
const
mtx
::
responses
::
EventId
&
,
RequestErr
)
>
callback
)
mtx
::
client
::
Client
::
send_state_event
(
const
mtx
::
identifiers
::
Room
&
room_id
,
const
Payload
&
payload
,
Callback
<
mtx
::
responses
::
EventId
>
callback
)
{
send_state_event
<
Payload
,
Event
>
(
room_id
,
""
,
payload
,
callback
);
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment