HttpRequestEmscriptenTask.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include "HttpRequestEmscriptenTask.h"
  2. #include <emscripten.h>
  3. #include "core/file.h"
  4. namespace oxygine
  5. {
  6. spHttpRequestTask HttpRequestTask::create()
  7. {
  8. return new HttpRequestEmscriptenTask;
  9. }
  10. void HttpRequestTask::init()
  11. {
  12. }
  13. void HttpRequestTask::release()
  14. {
  15. }
  16. void HttpRequestEmscriptenTask::_onload(void* data, unsigned size)
  17. {
  18. log::messageln("HttpRequestEmscriptenTask::_onload");
  19. _response.assign((char*)data, (char*)data + size);
  20. if (!_fname.empty())
  21. {
  22. file::write(_fname.c_str(), data, size);
  23. }
  24. onComplete();
  25. releaseRef();
  26. }
  27. void HttpRequestEmscriptenTask::_onerror(int, const char*)
  28. {
  29. log::messageln("HttpRequestEmscriptenTask::_onerror");
  30. onError();
  31. releaseRef();
  32. }
  33. void HttpRequestEmscriptenTask::_onprogress(int, int)
  34. {
  35. Event ev(HttpRequestTask::PROGRESS);
  36. dispatchEvent(&ev);
  37. }
  38. void HttpRequestEmscriptenTask::_run()
  39. {
  40. addRef();
  41. log::messageln("HttpRequestEmscriptenTask::_run %s", _url.c_str());
  42. const char* method = _postData.empty() ? "GET" : "POST";
  43. if (!_postData.empty())
  44. _postData.push_back(0);
  45. emscripten_async_wget2_data(_url.c_str(), method, (char*)&_postData.front(), this, false, onload, onerror, onprogress);
  46. }
  47. //int emscripten_async_wget2_data(const char* url, const char* requesttype, const char* param, void *arg, int free, em_async_wget2_data_onload_func onload, em_async_wget2_data_onerror_func onerror, em_async_wget2_data_onprogress_func onprogress);
  48. //void emscripten_async_wget2_data(const char* url, const char* requesttype, const char* param, void *arg, int free, void (*onload)(void*, void*, unsigned), void (*onerror)(void*, int, const char*), void (*onprogress)(void*, int, int));
  49. //void emscripten_async_wget2_data(const char* url, const char* requesttype, const char* param, void *arg, int free, em_async_wget2_data_onload_func onload, em_async_wget2_data_onerror_func onerror, em_async_wget2_data_onprogress_func onprogress);
  50. }