HttpRequestTask.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #include "HttpRequestTask.h"
  2. #include "core/file.h"
  3. #include "core/oxygine.h"
  4. namespace oxygine
  5. {
  6. #if OX_NO_HTTP
  7. spHttpRequestTask HttpRequestTask::create()
  8. {
  9. return 0;
  10. }
  11. void HttpRequestTask::init() {}
  12. void HttpRequestTask::release() {}
  13. #endif
  14. HttpRequestTask::HttpRequestTask() : _loaded(0), _cacheEnabled(true)
  15. {
  16. }
  17. HttpRequestTask::~HttpRequestTask()
  18. {
  19. log::messageln("~HttpRequestTask");
  20. }
  21. void HttpRequestTask::setPostData(const std::vector<unsigned char>& data)
  22. {
  23. _postData = data;
  24. _setPostData(data);
  25. }
  26. void HttpRequestTask::setUrl(const std::string& url)
  27. {
  28. _url = url;
  29. _setUrl(url);
  30. }
  31. void HttpRequestTask::setFileName(const std::string& name)
  32. {
  33. _fname = name;
  34. _setFileName(name);
  35. }
  36. void HttpRequestTask::setCacheEnabled(bool enabled)
  37. {
  38. _cacheEnabled = enabled;
  39. _setCacheEnabled(enabled);
  40. }
  41. void HttpRequestTask::addHeader(const std::string& key, const std::string& value)
  42. {
  43. OX_ASSERT(!"not implemented");
  44. _addHeader(key, value);
  45. }
  46. const std::vector<unsigned char>& HttpRequestTask::getPostData() const
  47. {
  48. return _postData;
  49. }
  50. const std::vector<unsigned char>& HttpRequestTask::getResponse() const
  51. {
  52. return _response;
  53. }
  54. void HttpRequestTask::getResponseSwap(std::vector<unsigned char>& r)
  55. {
  56. std::swap(r, _response);
  57. }
  58. const std::string& HttpRequestTask::getFileName() const
  59. {
  60. return _fname;
  61. }
  62. void HttpRequestTask::_prerun()
  63. {
  64. _loaded = 0;
  65. _response.clear();
  66. if (!_fname.empty())
  67. {
  68. file::deleteFile(_fname, ep_ignore_error);
  69. }
  70. }
  71. void HttpRequestTask::dispatchProgress(int loaded, int total)
  72. {
  73. int delta = loaded - _loaded;
  74. _loaded = loaded;
  75. ProgressEvent event(delta, loaded, total);
  76. dispatchEvent(&event);
  77. }
  78. void HttpRequestTask::_onCustom(const ThreadDispatcher::message& msg)
  79. {
  80. dispatchProgress((int)(size_t)msg.arg1, (int)(size_t)msg.arg2);
  81. }
  82. void HttpRequestTask::progress(int loaded, int total)
  83. {
  84. if (!syncEvent(customID, (void*)(size_t)loaded, (void*)(size_t)total))
  85. {
  86. dispatchProgress(loaded, total);
  87. }
  88. }
  89. void HttpRequestTask::_onError()
  90. {
  91. log::warning("http request error: %s", _url.c_str());
  92. }
  93. void HttpRequestTask::_onComplete()
  94. {
  95. log::messageln("http request done: %s", _url.c_str());
  96. }
  97. }