TestHttp.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #pragma once
  2. #include "test.h"
  3. #include "ClipRectActor.h"
  4. #include "WebImage.h"
  5. #include "ProgressBar.h"
  6. #include "HttpRequestTask.h"
  7. class TestHttp: public Test
  8. {
  9. public:
  10. spProgressBar _bar;
  11. TestHttp()
  12. {
  13. //Testing http GET request
  14. spWebImage image1 = new WebImage;
  15. image1->load("http://oxygine.org/img/madewith.png");
  16. image1->setSize(100, 100);
  17. image1->setPosition(image1->getPosition() + Vector2(image1->getWidth() + 10, 0));
  18. image1->attachTo(content);
  19. //Testing http GET request with redirect
  20. spWebImage image2 = new WebImage;
  21. image2->load("http://graph.facebook.com/1373973107/picture?type=normal&return_ssl_resources=0");
  22. image2->setSize(100, 100);
  23. image2->setPosition(getStage()->getSize() / 2);
  24. image2->attachTo(content);
  25. //Testing loading a file in memory
  26. spHttpRequestTask task = HttpRequestTask::create();
  27. task->setUrl("http://nist.time.gov/actualtime.cgi");
  28. task->addEventListener(HttpRequestTask::COMPLETE, CLOSURE(this, &TestHttp::dateTimeLoaded));
  29. task->run();
  30. //Testing downloading a file to disk
  31. task = HttpRequestTask::create();
  32. task->setUrl("http://oxygine.org/emscripten/MPHello.js.gz");
  33. task->setFileName("somefile.abc");
  34. task->addEventListener(HttpRequestTask::COMPLETE, CLOSURE(this, &TestHttp::loaded));
  35. task->addEventListener(HttpRequestTask::PROGRESS, CLOSURE(this, &TestHttp::progress));
  36. task->run();
  37. //OX_ASSERT(!file::exists("somefile.abc"));
  38. file::deleteFile("somefile.abc", ep_ignore_error);
  39. _bar = new ProgressBar;
  40. _bar->setResAnim(resources.getResAnim("slide"));
  41. _bar->setProgress(0);
  42. _bar->setY(getStage()->getHeight() - _bar->getHeight());
  43. _bar->attachTo(content);
  44. //Testing http POST
  45. task = HttpRequestTask::create();
  46. task->setUrl("http://oxygine.org/test/reply.php");
  47. vector<unsigned char> postBody;
  48. for (int i = 0; i < 256; ++i)
  49. postBody.push_back(i);
  50. task->setPostData(postBody);
  51. task->addEventListener(HttpRequestTask::COMPLETE, CLOSURE(this, &TestHttp::onPostLoaded));
  52. task->run();
  53. //fix conflict with windows.h
  54. #undef ERROR
  55. task = HttpRequestTask::create();
  56. task->setUrl("http://oxygine.org/test/missing.php");
  57. task->addEventListener(HttpRequestTask::ERROR, CLOSURE(this, &TestHttp::onError));
  58. task->run();
  59. }
  60. void progress(Event* event)
  61. {
  62. HttpRequestTask::ProgressEvent* ev = safeCast<HttpRequestTask::ProgressEvent*>(event);
  63. float p = ev->loaded / (float)ev->total;
  64. _bar->setProgress(p);
  65. }
  66. void onError(Event* event)
  67. {
  68. //HttpRequestTask* task = safeCast<HttpRequestTask*>(event->currentTarget.get());
  69. //OX_ASSERT(task->_ref_counter == 2);
  70. }
  71. void onPostLoaded(Event* event)
  72. {
  73. notify("onPostLoaded");
  74. spHttpRequestTask task = safeCast<HttpRequestTask*>(event->currentTarget.get());
  75. std::vector<unsigned char> res = task->getResponse();
  76. OX_ASSERT(res.size() == 256);
  77. for (size_t i = 0; i < 256; ++i)
  78. {
  79. OX_ASSERT(res[i] == i);
  80. }
  81. }
  82. void dateTimeLoaded(Event* event)
  83. {
  84. HttpRequestTask* task = safeCast<HttpRequestTask*>(event->currentTarget.get());
  85. const std::vector<unsigned char>& response = task->getResponse();
  86. pugi::xml_document doc;
  87. doc.load_buffer(&response.front(), response.size());
  88. string time = doc.root().first_child().attribute("time").as_string();
  89. notify("internet time:\n" + time, 2000);
  90. }
  91. void loaded(Event* event)
  92. {
  93. //OX_ASSERT(file::exists("somefile.abc"));
  94. if (file::exists("somefile.abc"))
  95. {
  96. notify("file loaded");
  97. }
  98. }
  99. };