WebAPIBase.cpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #include "WebAPIBase.h"
  2. #include "lhhttpapi.h"
  3. WebAPIBase::WebAPIBase()
  4. {
  5. m_logger = spdlog::get("FromWebAPI");
  6. if(m_logger == nullptr)
  7. {
  8. fmt::print("FromWebAPI logger is nullptr");
  9. return;
  10. }
  11. }
  12. WebAPIBase::~WebAPIBase()
  13. {
  14. if(m_httpApi != nullptr)
  15. {
  16. delete m_httpApi;
  17. m_httpApi = nullptr;
  18. }
  19. }
  20. /* 初始化WebAPI */
  21. bool WebAPIBase::initWebApi(const QString& url, const QString& serID, const QString appType, const QString serverIP)
  22. {
  23. if(m_httpApi == nullptr)
  24. {
  25. m_httpApi = new lhhttpapi;
  26. }
  27. if(!m_httpApi->Load())
  28. {
  29. SPDLOG_LOGGER_ERROR(m_logger, "Load WebAPI failed");
  30. return false;
  31. }
  32. SPDLOG_LOGGER_DEBUG(m_logger, "URL: {}", url.toStdString());
  33. SPDLOG_LOGGER_DEBUG(m_logger, "ServerID: {}", serID.toStdString());
  34. SPDLOG_LOGGER_DEBUG(m_logger, "ServerKey: {}", appType.toStdString());
  35. void* pHttp = nullptr;
  36. int i = 0;
  37. for(i = 0; i < 3; i++)
  38. {
  39. pHttp = m_httpApi->DBInit(url.toStdString().c_str(), true);
  40. if(pHttp != nullptr)
  41. {
  42. break;
  43. }
  44. SPDLOG_LOGGER_ERROR(m_logger, "设置WebAPI地址失败: {}", m_httpApi->DoGetLastError(&i).toStdString());
  45. }
  46. if(i >= 3)
  47. {
  48. SPDLOG_LOGGER_ERROR(m_logger, "WebAPI设置地址错误!");
  49. return false;
  50. }
  51. int ret = 0;
  52. #ifdef QT_DEBUG
  53. /* 获取服务器列表 */
  54. // char serverList[8192]={0};
  55. // ret = m_httpApi->DBGetServerList(serverList, 8192-1);
  56. // if(ret != 0)
  57. // {
  58. // SPDLOG_LOGGER_ERROR(m_logger, "Get server list failed: {}, error info: {}", ret, m_httpApi->DoGetLastError(&ret).toStdString());
  59. // return false;
  60. // }
  61. // SPDLOG_LOGGER_INFO(m_logger, QString("\nGet server list success:%1").arg(serverList));
  62. #endif
  63. /* 登录,第二个参数是限制的服务 */
  64. for(i = 0; i < 3; i++)
  65. {
  66. ret = m_httpApi->DBLogin("", serID, appType, m_userToken, true, pHttp);
  67. if(ret == 0)
  68. {
  69. break;
  70. }
  71. SPDLOG_LOGGER_ERROR(m_logger, "Login failed: {}, error info: {}", ret, m_httpApi->DoGetLastError(&ret).toStdString());
  72. /* 登录失败,等待一段时间 */
  73. QThread::msleep(200);
  74. }
  75. if(i >= 3)
  76. {
  77. SPDLOG_LOGGER_ERROR(m_logger, "登陆WebAPI失败!");
  78. return false;
  79. }
  80. SPDLOG_LOGGER_INFO(m_logger, "WebAPI Login success!");
  81. return true;
  82. }