HttpRequestTask.cpp 2.9 KB

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