12 using std::make_shared;
13 using std::shared_ptr;
23 const string HTTPDownloadClientClass::TYPE_NAME =
"HTTPDownloadClient";
25 void HTTPDownloadClientClass::initialize() {
28 void HTTPDownloadClientClass::registerConstants(
MinitScript* minitScript)
const {
31 void HTTPDownloadClientClass::registerMethods(
MinitScript* minitScript)
const {
41 minitScript(minitScript) {}
42 const string getMethodName()
override {
43 return "HTTPDownloadClient";
46 if (arguments.size() == 0) {
49 auto httpDownloadClient = make_shared<_HTTPDownloadClient>();
50 scriptContext.getInstances().push_back(httpDownloadClient);
51 scriptContext.setRequiresGarbageCollection();
53 returnValue.
setType(MinitScript::TYPE_HTTPDOWNLOADCLIENT);
54 returnValue.
setValue(&httpDownloadClient);
60 minitScript->
registerMethod(
new MethodHTTPDownloadClient(minitScript));
68 MethodHTTPDownloadClientGetUserName(
MinitScript* minitScript):
71 { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name =
"httpdownloadclient", .optional =
false, .reference =
false, .nullable =
false },
73 MinitScript::TYPE_STRING
75 minitScript(minitScript) {}
76 const string getMethodName()
override {
77 return "HTTPDownloadClient::getUserName";
80 shared_ptr<_HTTPDownloadClient> httpDownloadClient;
81 if (arguments.size() == 1 &&
82 HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) ==
true) {
83 returnValue.
setValue(httpDownloadClient->getUsername());
89 minitScript->
registerMethod(
new MethodHTTPDownloadClientGetUserName(minitScript));
97 MethodHTTPDownloadClientSetUserName(
MinitScript* minitScript):
100 { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name =
"httpdownloadclient", .optional =
false, .reference =
false, .nullable =
false },
101 { .type = MinitScript::TYPE_STRING, .name =
"userName", .optional =
false, .reference =
false, .nullable =
false },
103 MinitScript::TYPE_NULL
105 minitScript(minitScript) {}
106 const string getMethodName()
override {
107 return "HTTPDownloadClient::setUserName";
110 shared_ptr<_HTTPDownloadClient> httpDownloadClient;
112 if (arguments.size() == 2 &&
113 HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) ==
true &&
114 MinitScript::getStringValue(arguments, 1, userName) ==
true) {
115 httpDownloadClient->setUsername(userName);
121 minitScript->
registerMethod(
new MethodHTTPDownloadClientSetUserName(minitScript));
129 MethodHTTPDownloadClientGetPassword(
MinitScript* minitScript):
132 { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name =
"httpdownloadclient", .optional =
false, .reference =
false, .nullable =
false },
134 MinitScript::TYPE_STRING
136 minitScript(minitScript) {}
137 const string getMethodName()
override {
138 return "HTTPDownloadClient::getPassword";
141 shared_ptr<_HTTPDownloadClient> httpDownloadClient;
142 if (arguments.size() == 1 &&
143 HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) ==
true) {
144 returnValue.
setValue(httpDownloadClient->getPassword());
150 minitScript->
registerMethod(
new MethodHTTPDownloadClientGetPassword(minitScript));
158 MethodHTTPDownloadClientSetPassword(
MinitScript* minitScript):
161 { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name =
"httpdownloadclient", .optional =
false, .reference =
false, .nullable =
false },
162 { .type = MinitScript::TYPE_STRING, .name =
"password", .optional =
false, .reference =
false, .nullable =
false },
164 MinitScript::TYPE_NULL
166 minitScript(minitScript) {}
167 const string getMethodName()
override {
168 return "HTTPDownloadClient::setPassword";
171 shared_ptr<_HTTPDownloadClient> httpDownloadClient;
173 if (arguments.size() == 2 &&
174 HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) ==
true &&
175 MinitScript::getStringValue(arguments, 1, password) ==
true) {
176 httpDownloadClient->setPassword(password);
182 minitScript->
registerMethod(
new MethodHTTPDownloadClientSetPassword(minitScript));
190 MethodHTTPDownloadClientGetURL(
MinitScript* minitScript):
193 { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name =
"httpdownloadclient", .optional =
false, .reference =
false, .nullable =
false },
195 MinitScript::TYPE_STRING
197 minitScript(minitScript) {}
198 const string getMethodName()
override {
199 return "HTTPDownloadClient::getURL";
202 shared_ptr<_HTTPDownloadClient> httpDownloadClient;
203 if (arguments.size() == 1 &&
204 HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) ==
true) {
205 returnValue.
setValue(httpDownloadClient->getURL());
211 minitScript->
registerMethod(
new MethodHTTPDownloadClientGetURL(minitScript));
219 MethodHTTPDownloadClientSetURL(
MinitScript* minitScript):
222 { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name =
"httpdownloadclient", .optional =
false, .reference =
false, .nullable =
false },
223 { .type = MinitScript::TYPE_STRING, .name =
"url", .optional =
false, .reference =
false, .nullable =
false },
225 MinitScript::TYPE_NULL
227 minitScript(minitScript) {}
228 const string getMethodName()
override {
229 return "HTTPDownloadClient::setURL";
232 shared_ptr<_HTTPDownloadClient> httpDownloadClient;
234 if (arguments.size() == 2 &&
235 HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) ==
true &&
236 MinitScript::getStringValue(arguments, 1, url) ==
true) {
237 httpDownloadClient->setURL(url);
243 minitScript->
registerMethod(
new MethodHTTPDownloadClientSetURL(minitScript));
251 MethodHTTPDownloadClientGetFile(
MinitScript* minitScript):
254 { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name =
"httpdownloadclient", .optional =
false, .reference =
false, .nullable =
false },
256 MinitScript::TYPE_STRING
258 minitScript(minitScript) {}
259 const string getMethodName()
override {
260 return "HTTPDownloadClient::getFile";
263 shared_ptr<_HTTPDownloadClient> httpDownloadClient;
264 if (arguments.size() == 1 &&
265 HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) ==
true) {
266 returnValue.
setValue(httpDownloadClient->getFile());
272 minitScript->
registerMethod(
new MethodHTTPDownloadClientGetFile(minitScript));
280 MethodHTTPDownloadClientSetFile(
MinitScript* minitScript):
283 { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name =
"httpdownloadclient", .optional =
false, .reference =
false, .nullable =
false },
284 { .type = MinitScript::TYPE_STRING, .name =
"url", .optional =
false, .reference =
false, .nullable =
false },
286 MinitScript::TYPE_NULL
288 minitScript(minitScript) {}
289 const string getMethodName()
override {
290 return "HTTPDownloadClient::setFile";
293 shared_ptr<_HTTPDownloadClient> httpDownloadClient;
295 if (arguments.size() == 2 &&
296 HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) ==
true &&
297 MinitScript::getStringValue(arguments, 1, file) ==
true) {
298 httpDownloadClient->setFile(file);
304 minitScript->
registerMethod(
new MethodHTTPDownloadClientSetFile(minitScript));
312 MethodHTTPDownloadClientReset(
MinitScript* minitScript):
315 { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name =
"httpdownloadclient", .optional =
false, .reference =
false, .nullable =
false },
317 MinitScript::TYPE_NULL
319 minitScript(minitScript) {}
320 const string getMethodName()
override {
321 return "HTTPDownloadClient::reset";
324 shared_ptr<_HTTPDownloadClient> httpDownloadClient;
325 if (arguments.size() == 1 &&
326 HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) ==
true) {
327 httpDownloadClient->reset();
333 minitScript->
registerMethod(
new MethodHTTPDownloadClientReset(minitScript));
341 MethodHTTPDownloadClientStart(
MinitScript* minitScript):
344 { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name =
"httpdownloadclient", .optional =
false, .reference =
false, .nullable =
false },
346 MinitScript::TYPE_NULL
348 minitScript(minitScript) {}
349 const string getMethodName()
override {
350 return "HTTPDownloadClient::start";
353 shared_ptr<_HTTPDownloadClient> httpDownloadClient;
354 if (arguments.size() == 1 &&
355 HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) ==
true) {
356 httpDownloadClient->start();
362 minitScript->
registerMethod(
new MethodHTTPDownloadClientStart(minitScript));
370 MethodHTTPDownloadClientCancel(
MinitScript* minitScript):
373 { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name =
"httpdownloadclient", .optional =
false, .reference =
false, .nullable =
false },
375 MinitScript::TYPE_NULL
377 minitScript(minitScript) {}
378 const string getMethodName()
override {
379 return "HTTPDownloadClient::cancel";
382 shared_ptr<_HTTPDownloadClient> httpDownloadClient;
383 if (arguments.size() == 1 &&
384 HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) ==
true) {
385 httpDownloadClient->cancel();
391 minitScript->
registerMethod(
new MethodHTTPDownloadClientCancel(minitScript));
399 MethodHTTPDownloadClientJoin(
MinitScript* minitScript):
402 { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name =
"httpdownloadclient", .optional =
false, .reference =
false, .nullable =
false },
404 MinitScript::TYPE_NULL
406 minitScript(minitScript) {}
407 const string getMethodName()
override {
408 return "HTTPDownloadClient::join";
411 shared_ptr<_HTTPDownloadClient> httpDownloadClient;
412 if (arguments.size() == 1 &&
413 HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) ==
true) {
414 httpDownloadClient->join();
420 minitScript->
registerMethod(
new MethodHTTPDownloadClientJoin(minitScript));
428 MethodHTTPDownloadClientGetProgress(
MinitScript* minitScript):
431 { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name =
"httpdownloadclient", .optional =
false, .reference =
false, .nullable =
false },
433 MinitScript::TYPE_FLOAT
435 minitScript(minitScript) {}
436 const string getMethodName()
override {
437 return "HTTPDownloadClient::getProgress";
440 shared_ptr<_HTTPDownloadClient> httpDownloadClient;
441 if (arguments.size() == 1 &&
442 HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) ==
true) {
443 returnValue.
setValue(httpDownloadClient->getProgress());
449 minitScript->
registerMethod(
new MethodHTTPDownloadClientGetProgress(minitScript));
457 MethodHTTPDownloadClientIsFinished(
MinitScript* minitScript):
460 { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name =
"httpdownloadclient", .optional =
false, .reference =
false, .nullable =
false },
462 MinitScript::TYPE_BOOLEAN
464 minitScript(minitScript) {}
465 const string getMethodName()
override {
466 return "HTTPDownloadClient::isFinished";
469 shared_ptr<_HTTPDownloadClient> httpDownloadClient;
470 if (arguments.size() == 1 &&
471 HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) ==
true) {
472 returnValue.
setValue(httpDownloadClient->isFinished());
478 minitScript->
registerMethod(
new MethodHTTPDownloadClientIsFinished(minitScript));
486 MethodHTTPDownloadClientGetStatusCode(
MinitScript* minitScript):
489 { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name =
"httpdownloadclient", .optional =
false, .reference =
false, .nullable =
false },
491 MinitScript::TYPE_INTEGER
493 minitScript(minitScript) {}
494 const string getMethodName()
override {
495 return "HTTPDownloadClient::getStatusCode";
498 shared_ptr<_HTTPDownloadClient> httpDownloadClient;
499 if (arguments.size() == 1 &&
500 HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) ==
true) {
501 returnValue.
setValue(
static_cast<int64_t
>(httpDownloadClient->getStatusCode()));
507 minitScript->
registerMethod(
new MethodHTTPDownloadClientGetStatusCode(minitScript));
515 MethodHTTPDownloadClientGetResponseHeaders(
MinitScript* minitScript):
518 { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name =
"httpdownloadclient", .optional =
false, .reference =
false, .nullable =
false },
520 MinitScript::TYPE_MAP
522 minitScript(minitScript) {}
523 const string getMethodName()
override {
524 return "HTTPDownloadClient::getResponseHeaders";
527 shared_ptr<_HTTPDownloadClient> httpDownloadClient;
528 if (arguments.size() == 1 &&
529 HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) ==
true) {
530 returnValue.
setType(MinitScript::TYPE_MAP);
531 for (
const auto& [headerName, headerValue]: httpDownloadClient->getResponseHeaders()) {
539 minitScript->
registerMethod(
new MethodHTTPDownloadClientGetResponseHeaders(minitScript));
547 MethodHTTPDownloadClientGetGETParameters(
MinitScript* minitScript):
550 { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name =
"httpdownloadclient", .optional =
false, .reference =
false, .nullable =
false },
552 MinitScript::TYPE_MAP
554 minitScript(minitScript) {}
555 const string getMethodName()
override {
556 return "HTTPDownloadClient::getGETParameters";
559 shared_ptr<_HTTPDownloadClient> httpDownloadClient;
560 if (arguments.size() == 1 &&
561 HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) ==
true) {
562 returnValue.
setType(MinitScript::TYPE_MAP);
563 for (
const auto& [parameterName, parameterValue]: httpDownloadClient->getGETParameters()) {
571 minitScript->
registerMethod(
new MethodHTTPDownloadClientGetGETParameters(minitScript));
579 MethodHTTPDownloadClientSetGETParameters(
MinitScript* minitScript):
582 { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name =
"httpdownloadclient", .optional =
false, .reference =
false, .nullable =
false },
583 { .type = MinitScript::TYPE_MAP, .name =
"getParameters", .optional =
false, .reference =
false, .nullable =
false },
585 MinitScript::TYPE_NULL
587 minitScript(minitScript) {}
588 const string getMethodName()
override {
589 return "HTTPDownloadClient::setGETParameters";
592 shared_ptr<_HTTPDownloadClient> httpDownloadClient;
593 if (arguments.size() == 2 &&
594 HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) ==
true &&
595 arguments[1].getType() == MinitScript::TYPE_MAP) {
597 unordered_map<string, string> getParameters;
598 for (
const auto& [parameterName, parameterValue]: *arguments[1].getMapPointer()) {
599 getParameters[parameterName] = parameterValue->getValueAsString();
601 httpDownloadClient->setGETParameters(getParameters);
607 minitScript->
registerMethod(
new MethodHTTPDownloadClientSetGETParameters(minitScript));
615 MethodHTTPDownloadClientGetHeaders(
MinitScript* minitScript):
618 { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name =
"httpdownloadclient", .optional =
false, .reference =
false, .nullable =
false },
620 MinitScript::TYPE_MAP
622 minitScript(minitScript) {}
623 const string getMethodName()
override {
624 return "HTTPDownloadClient::getHeaders";
627 shared_ptr<_HTTPDownloadClient> httpDownloadClient;
628 if (arguments.size() == 1 &&
629 HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) ==
true) {
630 returnValue.
setType(MinitScript::TYPE_MAP);
631 for (
const auto& [headerName, headerValue]: httpDownloadClient->getHeaders()) {
639 minitScript->
registerMethod(
new MethodHTTPDownloadClientGetHeaders(minitScript));
647 MethodHTTPDownloadClientSetHeaders(
MinitScript* minitScript):
650 { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name =
"httpdownloadclient", .optional =
false, .reference =
false, .nullable =
false },
651 { .type = MinitScript::TYPE_MAP, .name =
"headers", .optional =
false, .reference =
false, .nullable =
false },
653 MinitScript::TYPE_NULL
655 minitScript(minitScript) {}
656 const string getMethodName()
override {
657 return "HTTPDownloadClient::setHeaders";
660 shared_ptr<_HTTPDownloadClient> httpDownloadClient;
661 if (arguments.size() == 2 &&
662 HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) ==
true &&
663 arguments[1].getType() == MinitScript::TYPE_MAP) {
665 unordered_map<string, string> headers;
666 for (
const auto& [mapEntryName, mapEntryValue]: *arguments[1].getMapPointer()) {
667 headers[mapEntryName] = mapEntryValue->getValueAsString();
669 httpDownloadClient->setHeaders(headers);
675 minitScript->
registerMethod(
new MethodHTTPDownloadClientSetHeaders(minitScript));
680 delete static_cast<shared_ptr<_HTTPDownloadClient>*
>(variable.
getValuePtr());
684 variable.
setValuePtr(
new shared_ptr<_HTTPDownloadClient>(
nullptr));
688 *
static_cast<shared_ptr<_HTTPDownloadClient>*
>(variable.
getValuePtr()) = *
static_cast<const shared_ptr<_HTTPDownloadClient>*
>(value);
692 to.
setType(MinitScript::TYPE_HTTPDOWNLOADCLIENT);
693 *
static_cast<shared_ptr<_HTTPDownloadClient>*
>(to.
getValuePtr()) = *
static_cast<shared_ptr<_HTTPDownloadClient>*
>(from.
getValuePtr());
712 const string& HTTPDownloadClientClass::getTypeAsString()
const {
717 const auto& httpDownloadClient = *
static_cast<shared_ptr<_HTTPDownloadClient>*
>(variable.
getValuePtr());
718 return "HTTPDownloadClientClass(url: " + httpDownloadClient->getURL() +
", file: " + httpDownloadClient->getFile() +
")";
732 for (
auto i = 0; i < instances.size(); i++) {
733 auto& instance = instances[i];
734 if (instance.use_count() == 1 && instance->isFinished() ==
true) {
736 instances.erase(instances.begin() + i);
740 if (instances.empty() ==
true) {
741 scriptContext.unsetRequiresGarbageCollection();
#define MINITSCRIPT_METHODUSAGE_COMPLAIN(methodName)
vector< shared_ptr< _HTTPDownloadClient > > & getInstances()
void setMapEntry(const string &key, const Variable &value, bool _private=false)
Set entry in map with given key.
void * getValuePtr() const
void setValuePtr(void *valuePtr)
Set value pointer.
void setType(VariableType newType)
Set type.
void setValue(const Variable &variable)
Set value from given variable into variable.
DataType::ScriptContext * getDataTypeScriptContext(VariableType type)
Return data type script context.
void registerMethod(Method *method)
Register method.