tencent_sdk_trtc.cpp 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #include "tencent_sdk_trtc.h"
  2. #include "dll_interface.h"
  3. #include <tencentcloud/core/Credential.h>
  4. #include <tencentcloud/core/profile/ClientProfile.h>
  5. #include <tencentcloud/core/profile/HttpProfile.h>
  6. #include <tencentcloud/trtc/v20190722/TrtcClient.h>
  7. #include <tencentcloud/trtc/v20190722/model/DismissRoomByStrRoomIdRequest.h>
  8. #include <tencentcloud/trtc/v20190722/model/DismissRoomByStrRoomIdResponse.h>
  9. #include <iostream>
  10. #include <string>
  11. #include <vector>
  12. #include "usersig.h"
  13. using namespace TencentCloud;
  14. using namespace TencentCloud::Trtc::V20190722;
  15. using namespace TencentCloud::Trtc::V20190722::Model;
  16. module::tencent_sdk_trtc::tencent_sdk_trtc()
  17. {
  18. }
  19. module::tencent_sdk_trtc::~tencent_sdk_trtc()
  20. {
  21. // cos_http_io_deinitialize();
  22. }
  23. std::pair<bool,std::string> module::tencent_sdk_trtc::dismissRoomByStrRoomId(const std::string& secret_id,const std::string& secret_key,long long sdkappid,const std::string& room_id)
  24. {
  25. // 密钥信息从环境变量读取,需要提前在环境变量中设置 TENCENTCLOUD_SECRET_ID 和 TENCENTCLOUD_SECRET_KEY
  26. // 使用环境变量方式可以避免密钥硬编码在代码中,提高安全性
  27. // 生产环境建议使用更安全的密钥管理方案,如密钥管理系统(KMS)、容器密钥注入等
  28. // 请参见:https://cloud.tencent.com/document/product/1278/85305
  29. // 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
  30. Credential cred = Credential(secret_id.c_str(), secret_key.c_str());
  31. // 使用临时密钥示例
  32. // Credential cred = Credential("SecretId", "SecretKey", "Token");
  33. // 实例化一个http选项,可选的,没有特殊需求可以跳过
  34. HttpProfile httpProfile = HttpProfile();
  35. httpProfile.SetEndpoint("trtc.tencentcloudapi.com");
  36. // 实例化一个client选项,可选的,没有特殊需求可以跳过
  37. ClientProfile clientProfile = ClientProfile();
  38. clientProfile.SetHttpProfile(httpProfile);
  39. // 实例化要请求产品的client对象,clientProfile是可选的
  40. TrtcClient client = TrtcClient(cred, "ap-beijing", clientProfile);
  41. // 实例化一个请求对象,每个接口都会对应一个request对象
  42. DismissRoomByStrRoomIdRequest req = DismissRoomByStrRoomIdRequest();
  43. req.SetSdkAppId(sdkappid);
  44. req.SetRoomId(room_id.c_str());
  45. // 返回的resp是一个DismissRoomByStrRoomIdResponse的实例,与请求对象对应
  46. auto outcome = client.DismissRoomByStrRoomId(req);
  47. if (!outcome.IsSuccess())
  48. {
  49. return std::make_pair(false, outcome.GetError().PrintAll());
  50. }
  51. DismissRoomByStrRoomIdResponse resp = outcome.GetResult();
  52. // 输出json格式的字符串回包
  53. return std::make_pair(true, resp.ToJsonString());
  54. }
  55. std::string module::tencent_sdk_trtc::getUserSig(long long sdkappid,const std::string& secret_key,const std::string& user_id,int expire_time)
  56. {
  57. std::string sig = GenerateUserSig(user_id, sdkappid, secret_key, expire_time);
  58. return sig;
  59. }
  60. void module::tencent_sdk_trtc::regist(sol::state* lua)
  61. {
  62. lua->new_usertype<module::tencent_sdk_trtc>("fw_tencent_sdk_trtc",
  63. "new", sol::constructors<module::tencent_sdk_trtc()>(),
  64. "dismissRoomByStrRoomId", &module::tencent_sdk_trtc::dismissRoomByStrRoomId,
  65. "getUserSig", &module::tencent_sdk_trtc::getUserSig
  66. );
  67. }
  68. void module::tencent_sdk_trtc::regist_global(const char* name, sol::state* lua)
  69. {
  70. lua->registry()[name] = this;
  71. (*lua)[name] = this;
  72. }