diff --git a/libmxclient/mxclientlib.go b/libmxclient/mxclientlib.go index c80d31a..5276191 100644 --- a/libmxclient/mxclientlib.go +++ b/libmxclient/mxclientlib.go @@ -368,6 +368,24 @@ func apiv0_leaveroom(cid C.int, roomid *C.char) *C.char { return C.CString("SUCCESS.") } +//export apiv0_joinroom +func apiv0_joinroom(cid C.int, roomid *C.char) *C.char { + cli, err := getClient(int(cid)) + if err != nil { + return C.CString(fmt.Sprintf("ERR: %v", err)) + } + resp, err := cli.JoinRoomByID(context.Background(), id.RoomID(C.GoString(roomid))) + if err != nil { + return C.CString(fmt.Sprintf("ERR: %v", err)) + } + out, err := json.Marshal(resp) + if err != nil { + return C.CString(fmt.Sprintf("ERR: %v", err)) + } + s := string(out) + return C.CString(s) +} + //export apiv0_joinedrooms func apiv0_joinedrooms(cid C.int) *C.char { cli, err := getClient(int(cid)) diff --git a/pygomx/build_ffi.py b/pygomx/build_ffi.py index 2adea06..3e981f8 100644 --- a/pygomx/build_ffi.py +++ b/pygomx/build_ffi.py @@ -62,6 +62,7 @@ ffibuilder.cdef( extern char* apiv0_sendmessage(int cid, char* data); extern char* apiv0_leaveroom(int cid, char* roomid); extern char* apiv0_joinedrooms(int cid); + extern char* apiv0_joinroom(int cid, char* roomid); extern char* apiv0_createroom(int cid, char* data); extern char* apiv0_createdm(int cid, char* uid); extern char* apiv0_genericrequest(int cid, char* method, char* path, char* data); diff --git a/pygomx/libmxclient.def b/pygomx/libmxclient.def index b47f4f1..43cbb50 100644 --- a/pygomx/libmxclient.def +++ b/pygomx/libmxclient.def @@ -11,6 +11,7 @@ apiv0_getoptions apiv0_getuserdm apiv0_initialize apiv0_joinedrooms +apiv0_joinroom apiv0_leaveroom apiv0_listclients apiv0_login diff --git a/pygomx/src/pygomx/apiv0.py b/pygomx/src/pygomx/apiv0.py index 578dcab..514e779 100644 --- a/pygomx/src/pygomx/apiv0.py +++ b/pygomx/src/pygomx/apiv0.py @@ -65,6 +65,10 @@ class ApiV0Api: def getuserdm(cid, userid): return _stringresult(lib.apiv0_getuserdm(cid, _autostring(userid))) + @staticmethod + def joinroom(cid, roomid): + return _stringresult(lib.apiv0_joinroom(cid, _autostring(roomid))) + class ApiV0: """ApiV0""" diff --git a/pygomx/src/pygomx/client.py b/pygomx/src/pygomx/client.py index a5bd00f..c80395b 100644 --- a/pygomx/src/pygomx/client.py +++ b/pygomx/src/pygomx/client.py @@ -88,6 +88,10 @@ class _AsyncClient: r = ApiV0Api.joinedrooms(self.client_id) return CheckApiResult(r) + async def joinroom(self, roomid): + r = ApiV0Api.joinroom(self.client_id) + return CheckApiResult(r) + async def createroom(self, data_dict): r = ApiV0Api.createroom(self.client_id, data_dict) return CheckApiResult(r)