JSNetwork.cpp 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #ifdef ATOMIC_NETWORK
  2. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  3. // Please see LICENSE.md in repository root for license information
  4. // https://github.com/AtomicGameEngine/AtomicGameEngine
  5. #include "JSNetwork.h"
  6. #include "JSVM.h"
  7. #include <Atomic/Network/HttpRequest.h>
  8. namespace Atomic
  9. {
  10. static int HttpRequest_Read(duk_context* ctx)
  11. {
  12. duk_push_this(ctx);
  13. HttpRequest* request = js_to_class_instance<HttpRequest>(ctx, -1, 0);
  14. if (!request->GetAvailableSize())
  15. {
  16. duk_push_string(ctx, "");
  17. return 1;
  18. }
  19. PODVector<unsigned char> buffer(request->GetAvailableSize());
  20. request->Read(&buffer[0], buffer.Size());
  21. duk_push_lstring(ctx, (const char*) &buffer[0], buffer.Size());
  22. return 1;
  23. }
  24. void jsapi_init_network(JSVM* vm)
  25. {
  26. duk_context* ctx = vm->GetJSContext();
  27. js_class_get_prototype(ctx, "Atomic", "HttpRequest");
  28. duk_push_c_function(ctx, HttpRequest_Read, 0);
  29. duk_put_prop_string(ctx, -2, "read");
  30. duk_pop(ctx);
  31. }
  32. }
  33. #endif