27#include <simgear/io/HTTPFileRequest.hxx>
28#include <simgear/io/HTTPMemoryRequest.hxx>
30#include <simgear/nasal/cppbind/from_nasal.hxx>
31#include <simgear/nasal/cppbind/to_nasal.hxx>
32#include <simgear/nasal/cppbind/NasalHash.hxx>
33#include <simgear/nasal/cppbind/Ghost.hxx>
43 ctx.runtimeError(
"Failed to get HTTP subsystem");
53 const std::string url = ctx.requireArg<std::string>(0);
56 const std::string filename = ctx.requireArg<std::string>(1);
57 const SGPath validated_path = SGPath(filename).validate(
true);
59 if( validated_path.isNull() )
60 ctx.runtimeError(
"Access denied: can not write to %s", filename.c_str());
73 const std::string url = ctx.requireArg<std::string>(0);
78 const nasal::CallContext& ctx )
82 simgear::HTTP::Request_ptr req = ctx.from_nasal<simgear::HTTP::Request_ptr>(ctx.me);
90 using simgear::HTTP::Request;
91 typedef Request* (Request::*HTTPCallback)(
const Request::Callback&);
92 NasalRequest::init(
"http.Request")
93 .member(
"url", &Request::url)
94 .member(
"method", &Request::method)
95 .member(
"scheme", &Request::scheme)
96 .member(
"path", &Request::path)
97 .member(
"host", &Request::host)
98 .member(
"port", &Request::port)
99 .member(
"query", &Request::query)
100 .member(
"status", &Request::responseCode)
101 .member(
"reason", &Request::responseReason)
102 .member(
"readyState", &Request::readyState)
104 .method(
"done",
static_cast<HTTPCallback
>(&Request::done))
105 .method(
"fail",
static_cast<HTTPCallback
>(&Request::fail))
106 .method(
"always",
static_cast<HTTPCallback
>(&Request::always));
108 using simgear::HTTP::FileRequest;
109 NasalFileRequest::init(
"http.FileRequest")
112 using simgear::HTTP::MemoryRequest;
113 NasalMemoryRequest::init(
"http.MemoryRequest")
115 .member(
"response", &MemoryRequest::responseBody);
117 nasal::Hash globals_module(
globals, c),
118 http = globals_module.createHash(
"http");
nasal::Ghost< simgear::HTTP::FileRequestRef > NasalFileRequest
FGHTTPClient & requireHTTPClient(const nasal::ContextWrapper &ctx)
nasal::Ghost< simgear::HTTP::Request_ptr > NasalRequest
nasal::Ghost< simgear::HTTP::MemoryRequestRef > NasalMemoryRequest
static naRef f_http_load(const nasal::CallContext &ctx)
http.load(url)
static naRef f_request_abort(simgear::HTTP::Request &, const nasal::CallContext &ctx)
naRef initNasalHTTP(naRef globals, naContext c)
static naRef f_http_save(const nasal::CallContext &ctx)
http.save(url, filename)
simgear::HTTP::Client * client()