versionmanager.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. #include "versionmanager.h"
  2. #include "SNCDataBase.h"
  3. #include "loghelper.h"
  4. VersionManager::VersionManager()
  5. {
  6. this->local_app_version = SNCDataBase::getAppVersion();
  7. this->local_seg_version = SNCDataBase::getSegVersion();
  8. this->config_urls = SNCDataBase::getConfigServerUrls();
  9. stop = false;
  10. }
  11. bool VersionManager::needUpdate()
  12. {
  13. if(!getServerConfig())
  14. return false;
  15. SNCDataBase::updateConfigUrls(parser.config_urls);
  16. SNCDataBase::updateBannerAd(parser.banner_ad);
  17. SNCDataBase::updateTextAd(parser.text_ads);
  18. SNCDataBase::updateCorpPrefix(parser.corp_prefix);
  19. //SNCDataBase::updateClientConfig(parser.client_config);
  20. int server_app_sn = parser.current_app_version;
  21. int local_app_sn= parser.app_map.value(this->local_app_version);
  22. if(server_app_sn<=local_app_sn)
  23. return false;
  24. QFile file(QDir::tempPath()+"/snc_update.log");
  25. if(!file.open(QIODevice::WriteOnly))
  26. return 0 ;
  27. QTextStream out(&file);
  28. for(int i=server_app_sn-1;i>=local_app_sn;i--)
  29. {
  30. QString log_file = parser.app_update_logs.value(i);
  31. QString content = downloadFile(log_file);
  32. out << content+"\r\n";
  33. }
  34. file.close();
  35. this->app_patch_url = parser.app_patch_urls.value(local_app_sn);
  36. this->app_update = parser.update;
  37. return true;
  38. }
  39. QString VersionManager::getAppPatchUrl()
  40. {
  41. return this->app_patch_url;
  42. }
  43. QString VersionManager::getAppUpdateState()
  44. {
  45. return this->app_update;
  46. }
  47. bool VersionManager::getServerConfig()
  48. {
  49. bool success = false;
  50. for(int i=0;i<config_urls.size();i++)
  51. {
  52. QString config_url = config_urls.at(i);
  53. QString content = downloadFile(config_url);
  54. ConfigParser p;
  55. if(p.readConfig(content))
  56. {
  57. success= true;
  58. this->parser = p;
  59. break;
  60. }
  61. }
  62. return success;
  63. }
  64. void VersionManager::replyFinished(QNetworkReply *reply)
  65. {
  66. QTextCodec *codec;
  67. QVariant var = reply->header(QNetworkRequest::ContentTypeHeader);
  68. QString codeType = var.toByteArray();
  69. int index = codeType.size() - codeType.lastIndexOf("=") - 1;
  70. codeType = codeType.right(index);
  71. codec = QTextCodec::codecForName(codeType.toAscii());
  72. file_content = reply->readAll();
  73. emit finished1();
  74. stop =true;
  75. }
  76. QString VersionManager::downloadFile(QString http_url)
  77. {
  78. QUrl url(http_url);
  79. QNetworkAccessManager manager;
  80. QNetworkReply *reply = manager.get(QNetworkRequest(url));
  81. QTextCodec *codec;
  82. QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
  83. QTimer::singleShot(10000, &loop, SLOT(quit()));
  84. loop.exec();
  85. QVariant var = reply->header(QNetworkRequest::ContentTypeHeader);
  86. QString codeType = var.toByteArray();
  87. int index = codeType.size() - codeType.lastIndexOf("=") - 1;
  88. codeType = codeType.right(index);
  89. codec = QTextCodec::codecForName(codeType.toAscii());
  90. QString content = reply->readAll();
  91. return content;
  92. }