MinitScript  0.9.31 PRE-BETA
HTTPDownloadClientClass.cpp
Go to the documentation of this file.
1 #include <memory>
2 #include <span>
3 #include <string>
4 
6 
11 
12 using std::make_shared;
13 using std::shared_ptr;
14 using std::span;
15 using std::string;
16 
18 
22 
23 const string HTTPDownloadClientClass::TYPE_NAME = "HTTPDownloadClient";
24 
25 void HTTPDownloadClientClass::initialize() {
26 }
27 
28 void HTTPDownloadClientClass::registerConstants(MinitScript* minitScript) const {
29 }
30 
31 void HTTPDownloadClientClass::registerMethods(MinitScript* minitScript) const {
32  //
33  {
34  //
35  class MethodHTTPDownloadClient: public MinitScript::Method {
36  private:
37  MinitScript* minitScript { nullptr };
38  public:
39  MethodHTTPDownloadClient(MinitScript* minitScript):
40  MinitScript::Method({}, MinitScript::TYPE_HTTPDOWNLOADCLIENT),
41  minitScript(minitScript) {}
42  const string getMethodName() override {
43  return "HTTPDownloadClient";
44  }
45  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
46  if (arguments.size() == 0) {
47  auto& scriptContext = *static_cast<HTTPDownloadClientClass::HTTPDownloadClientClassScriptContext*>(minitScript->getDataTypeScriptContext(MinitScript::TYPE_HTTPDOWNLOADCLIENT));
48  //
49  auto httpDownloadClient = make_shared<_HTTPDownloadClient>();
50  scriptContext.getInstances().push_back(httpDownloadClient);
51  scriptContext.setRequiresGarbageCollection();
52  //
53  returnValue.setType(MinitScript::TYPE_HTTPDOWNLOADCLIENT);
54  returnValue.setValue(&httpDownloadClient);
55  } else {
56  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
57  }
58  }
59  };
60  minitScript->registerMethod(new MethodHTTPDownloadClient(minitScript));
61  }
62  {
63  //
64  class MethodHTTPDownloadClientGetUserName: public MinitScript::Method {
65  private:
66  MinitScript* minitScript { nullptr };
67  public:
68  MethodHTTPDownloadClientGetUserName(MinitScript* minitScript):
70  {
71  { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
72  },
73  MinitScript::TYPE_STRING
74  ),
75  minitScript(minitScript) {}
76  const string getMethodName() override {
77  return "HTTPDownloadClient::getUserName";
78  }
79  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
80  shared_ptr<_HTTPDownloadClient> httpDownloadClient;
81  if (arguments.size() == 1 &&
82  HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) == true) {
83  returnValue.setValue(httpDownloadClient->getUsername());
84  } else {
85  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
86  }
87  }
88  };
89  minitScript->registerMethod(new MethodHTTPDownloadClientGetUserName(minitScript));
90  }
91  {
92  //
93  class MethodHTTPDownloadClientSetUserName: public MinitScript::Method {
94  private:
95  MinitScript* minitScript { nullptr };
96  public:
97  MethodHTTPDownloadClientSetUserName(MinitScript* minitScript):
99  {
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 },
102  },
103  MinitScript::TYPE_NULL
104  ),
105  minitScript(minitScript) {}
106  const string getMethodName() override {
107  return "HTTPDownloadClient::setUserName";
108  }
109  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
110  shared_ptr<_HTTPDownloadClient> httpDownloadClient;
111  string userName;
112  if (arguments.size() == 2 &&
113  HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) == true &&
114  MinitScript::getStringValue(arguments, 1, userName) == true) {
115  httpDownloadClient->setUsername(userName);
116  } else {
117  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
118  }
119  }
120  };
121  minitScript->registerMethod(new MethodHTTPDownloadClientSetUserName(minitScript));
122  }
123  {
124  //
125  class MethodHTTPDownloadClientGetPassword: public MinitScript::Method {
126  private:
127  MinitScript* minitScript { nullptr };
128  public:
129  MethodHTTPDownloadClientGetPassword(MinitScript* minitScript):
131  {
132  { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
133  },
134  MinitScript::TYPE_STRING
135  ),
136  minitScript(minitScript) {}
137  const string getMethodName() override {
138  return "HTTPDownloadClient::getPassword";
139  }
140  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
141  shared_ptr<_HTTPDownloadClient> httpDownloadClient;
142  if (arguments.size() == 1 &&
143  HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) == true) {
144  returnValue.setValue(httpDownloadClient->getPassword());
145  } else {
146  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
147  }
148  }
149  };
150  minitScript->registerMethod(new MethodHTTPDownloadClientGetPassword(minitScript));
151  }
152  {
153  //
154  class MethodHTTPDownloadClientSetPassword: public MinitScript::Method {
155  private:
156  MinitScript* minitScript { nullptr };
157  public:
158  MethodHTTPDownloadClientSetPassword(MinitScript* minitScript):
160  {
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 },
163  },
164  MinitScript::TYPE_NULL
165  ),
166  minitScript(minitScript) {}
167  const string getMethodName() override {
168  return "HTTPDownloadClient::setPassword";
169  }
170  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
171  shared_ptr<_HTTPDownloadClient> httpDownloadClient;
172  string password;
173  if (arguments.size() == 2 &&
174  HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) == true &&
175  MinitScript::getStringValue(arguments, 1, password) == true) {
176  httpDownloadClient->setPassword(password);
177  } else {
178  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
179  }
180  }
181  };
182  minitScript->registerMethod(new MethodHTTPDownloadClientSetPassword(minitScript));
183  }
184  {
185  //
186  class MethodHTTPDownloadClientGetURL: public MinitScript::Method {
187  private:
188  MinitScript* minitScript { nullptr };
189  public:
190  MethodHTTPDownloadClientGetURL(MinitScript* minitScript):
192  {
193  { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
194  },
195  MinitScript::TYPE_STRING
196  ),
197  minitScript(minitScript) {}
198  const string getMethodName() override {
199  return "HTTPDownloadClient::getURL";
200  }
201  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
202  shared_ptr<_HTTPDownloadClient> httpDownloadClient;
203  if (arguments.size() == 1 &&
204  HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) == true) {
205  returnValue.setValue(httpDownloadClient->getURL());
206  } else {
207  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
208  }
209  }
210  };
211  minitScript->registerMethod(new MethodHTTPDownloadClientGetURL(minitScript));
212  }
213  {
214  //
215  class MethodHTTPDownloadClientSetURL: public MinitScript::Method {
216  private:
217  MinitScript* minitScript { nullptr };
218  public:
219  MethodHTTPDownloadClientSetURL(MinitScript* minitScript):
221  {
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 },
224  },
225  MinitScript::TYPE_NULL
226  ),
227  minitScript(minitScript) {}
228  const string getMethodName() override {
229  return "HTTPDownloadClient::setURL";
230  }
231  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
232  shared_ptr<_HTTPDownloadClient> httpDownloadClient;
233  string url;
234  if (arguments.size() == 2 &&
235  HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) == true &&
236  MinitScript::getStringValue(arguments, 1, url) == true) {
237  httpDownloadClient->setURL(url);
238  } else {
239  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
240  }
241  }
242  };
243  minitScript->registerMethod(new MethodHTTPDownloadClientSetURL(minitScript));
244  }
245  {
246  //
247  class MethodHTTPDownloadClientGetFile: public MinitScript::Method {
248  private:
249  MinitScript* minitScript { nullptr };
250  public:
251  MethodHTTPDownloadClientGetFile(MinitScript* minitScript):
253  {
254  { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
255  },
256  MinitScript::TYPE_STRING
257  ),
258  minitScript(minitScript) {}
259  const string getMethodName() override {
260  return "HTTPDownloadClient::getFile";
261  }
262  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
263  shared_ptr<_HTTPDownloadClient> httpDownloadClient;
264  if (arguments.size() == 1 &&
265  HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) == true) {
266  returnValue.setValue(httpDownloadClient->getFile());
267  } else {
268  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
269  }
270  }
271  };
272  minitScript->registerMethod(new MethodHTTPDownloadClientGetFile(minitScript));
273  }
274  {
275  //
276  class MethodHTTPDownloadClientSetFile: public MinitScript::Method {
277  private:
278  MinitScript* minitScript { nullptr };
279  public:
280  MethodHTTPDownloadClientSetFile(MinitScript* minitScript):
282  {
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 },
285  },
286  MinitScript::TYPE_NULL
287  ),
288  minitScript(minitScript) {}
289  const string getMethodName() override {
290  return "HTTPDownloadClient::setFile";
291  }
292  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
293  shared_ptr<_HTTPDownloadClient> httpDownloadClient;
294  string file;
295  if (arguments.size() == 2 &&
296  HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) == true &&
297  MinitScript::getStringValue(arguments, 1, file) == true) {
298  httpDownloadClient->setFile(file);
299  } else {
300  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
301  }
302  }
303  };
304  minitScript->registerMethod(new MethodHTTPDownloadClientSetFile(minitScript));
305  }
306  {
307  //
308  class MethodHTTPDownloadClientReset: public MinitScript::Method {
309  private:
310  MinitScript* minitScript { nullptr };
311  public:
312  MethodHTTPDownloadClientReset(MinitScript* minitScript):
314  {
315  { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
316  },
317  MinitScript::TYPE_NULL
318  ),
319  minitScript(minitScript) {}
320  const string getMethodName() override {
321  return "HTTPDownloadClient::reset";
322  }
323  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
324  shared_ptr<_HTTPDownloadClient> httpDownloadClient;
325  if (arguments.size() == 1 &&
326  HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) == true) {
327  httpDownloadClient->reset();
328  } else {
329  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
330  }
331  }
332  };
333  minitScript->registerMethod(new MethodHTTPDownloadClientReset(minitScript));
334  }
335  {
336  //
337  class MethodHTTPDownloadClientStart: public MinitScript::Method {
338  private:
339  MinitScript* minitScript { nullptr };
340  public:
341  MethodHTTPDownloadClientStart(MinitScript* minitScript):
343  {
344  { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
345  },
346  MinitScript::TYPE_NULL
347  ),
348  minitScript(minitScript) {}
349  const string getMethodName() override {
350  return "HTTPDownloadClient::start";
351  }
352  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
353  shared_ptr<_HTTPDownloadClient> httpDownloadClient;
354  if (arguments.size() == 1 &&
355  HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) == true) {
356  httpDownloadClient->start();
357  } else {
358  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
359  }
360  }
361  };
362  minitScript->registerMethod(new MethodHTTPDownloadClientStart(minitScript));
363  }
364  {
365  //
366  class MethodHTTPDownloadClientCancel: public MinitScript::Method {
367  private:
368  MinitScript* minitScript { nullptr };
369  public:
370  MethodHTTPDownloadClientCancel(MinitScript* minitScript):
372  {
373  { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
374  },
375  MinitScript::TYPE_NULL
376  ),
377  minitScript(minitScript) {}
378  const string getMethodName() override {
379  return "HTTPDownloadClient::cancel";
380  }
381  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
382  shared_ptr<_HTTPDownloadClient> httpDownloadClient;
383  if (arguments.size() == 1 &&
384  HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) == true) {
385  httpDownloadClient->cancel();
386  } else {
387  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
388  }
389  }
390  };
391  minitScript->registerMethod(new MethodHTTPDownloadClientCancel(minitScript));
392  }
393  {
394  //
395  class MethodHTTPDownloadClientJoin: public MinitScript::Method {
396  private:
397  MinitScript* minitScript { nullptr };
398  public:
399  MethodHTTPDownloadClientJoin(MinitScript* minitScript):
401  {
402  { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
403  },
404  MinitScript::TYPE_NULL
405  ),
406  minitScript(minitScript) {}
407  const string getMethodName() override {
408  return "HTTPDownloadClient::join";
409  }
410  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
411  shared_ptr<_HTTPDownloadClient> httpDownloadClient;
412  if (arguments.size() == 1 &&
413  HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) == true) {
414  httpDownloadClient->join();
415  } else {
416  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
417  }
418  }
419  };
420  minitScript->registerMethod(new MethodHTTPDownloadClientJoin(minitScript));
421  }
422  {
423  //
424  class MethodHTTPDownloadClientGetProgress: public MinitScript::Method {
425  private:
426  MinitScript* minitScript { nullptr };
427  public:
428  MethodHTTPDownloadClientGetProgress(MinitScript* minitScript):
430  {
431  { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
432  },
433  MinitScript::TYPE_FLOAT
434  ),
435  minitScript(minitScript) {}
436  const string getMethodName() override {
437  return "HTTPDownloadClient::getProgress";
438  }
439  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
440  shared_ptr<_HTTPDownloadClient> httpDownloadClient;
441  if (arguments.size() == 1 &&
442  HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) == true) {
443  returnValue.setValue(httpDownloadClient->getProgress());
444  } else {
445  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
446  }
447  }
448  };
449  minitScript->registerMethod(new MethodHTTPDownloadClientGetProgress(minitScript));
450  }
451  {
452  //
453  class MethodHTTPDownloadClientIsFinished: public MinitScript::Method {
454  private:
455  MinitScript* minitScript { nullptr };
456  public:
457  MethodHTTPDownloadClientIsFinished(MinitScript* minitScript):
459  {
460  { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
461  },
462  MinitScript::TYPE_BOOLEAN
463  ),
464  minitScript(minitScript) {}
465  const string getMethodName() override {
466  return "HTTPDownloadClient::isFinished";
467  }
468  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
469  shared_ptr<_HTTPDownloadClient> httpDownloadClient;
470  if (arguments.size() == 1 &&
471  HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) == true) {
472  returnValue.setValue(httpDownloadClient->isFinished());
473  } else {
474  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
475  }
476  }
477  };
478  minitScript->registerMethod(new MethodHTTPDownloadClientIsFinished(minitScript));
479  }
480  {
481  //
482  class MethodHTTPDownloadClientGetStatusCode: public MinitScript::Method {
483  private:
484  MinitScript* minitScript { nullptr };
485  public:
486  MethodHTTPDownloadClientGetStatusCode(MinitScript* minitScript):
488  {
489  { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
490  },
491  MinitScript::TYPE_INTEGER
492  ),
493  minitScript(minitScript) {}
494  const string getMethodName() override {
495  return "HTTPDownloadClient::getStatusCode";
496  }
497  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
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()));
502  } else {
503  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
504  }
505  }
506  };
507  minitScript->registerMethod(new MethodHTTPDownloadClientGetStatusCode(minitScript));
508  }
509  {
510  //
511  class MethodHTTPDownloadClientGetResponseHeaders: public MinitScript::Method {
512  private:
513  MinitScript* minitScript { nullptr };
514  public:
515  MethodHTTPDownloadClientGetResponseHeaders(MinitScript* minitScript):
517  {
518  { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
519  },
520  MinitScript::TYPE_MAP
521  ),
522  minitScript(minitScript) {}
523  const string getMethodName() override {
524  return "HTTPDownloadClient::getResponseHeaders";
525  }
526  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
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()) {
532  returnValue.setMapEntry(headerName, MinitScript::Variable(string(headerValue)));
533  }
534  } else {
535  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
536  }
537  }
538  };
539  minitScript->registerMethod(new MethodHTTPDownloadClientGetResponseHeaders(minitScript));
540  }
541  {
542  //
543  class MethodHTTPDownloadClientGetGETParameters: public MinitScript::Method {
544  private:
545  MinitScript* minitScript { nullptr };
546  public:
547  MethodHTTPDownloadClientGetGETParameters(MinitScript* minitScript):
549  {
550  { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
551  },
552  MinitScript::TYPE_MAP
553  ),
554  minitScript(minitScript) {}
555  const string getMethodName() override {
556  return "HTTPDownloadClient::getGETParameters";
557  }
558  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
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()) {
564  returnValue.setMapEntry(parameterName, MinitScript::Variable(string(parameterValue)));
565  }
566  } else {
567  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
568  }
569  }
570  };
571  minitScript->registerMethod(new MethodHTTPDownloadClientGetGETParameters(minitScript));
572  }
573  {
574  //
575  class MethodHTTPDownloadClientSetGETParameters: public MinitScript::Method {
576  private:
577  MinitScript* minitScript { nullptr };
578  public:
579  MethodHTTPDownloadClientSetGETParameters(MinitScript* minitScript):
581  {
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 },
584  },
585  MinitScript::TYPE_NULL
586  ),
587  minitScript(minitScript) {}
588  const string getMethodName() override {
589  return "HTTPDownloadClient::setGETParameters";
590  }
591  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
592  shared_ptr<_HTTPDownloadClient> httpDownloadClient;
593  if (arguments.size() == 2 &&
594  HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) == true &&
595  arguments[1].getType() == MinitScript::TYPE_MAP) {
596  //
597  unordered_map<string, string> getParameters;
598  for (const auto& [parameterName, parameterValue]: *arguments[1].getMapPointer()) {
599  getParameters[parameterName] = parameterValue->getValueAsString();
600  }
601  httpDownloadClient->setGETParameters(getParameters);
602  } else {
603  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
604  }
605  }
606  };
607  minitScript->registerMethod(new MethodHTTPDownloadClientSetGETParameters(minitScript));
608  }
609  {
610  //
611  class MethodHTTPDownloadClientGetHeaders: public MinitScript::Method {
612  private:
613  MinitScript* minitScript { nullptr };
614  public:
615  MethodHTTPDownloadClientGetHeaders(MinitScript* minitScript):
617  {
618  { .type = MinitScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
619  },
620  MinitScript::TYPE_MAP
621  ),
622  minitScript(minitScript) {}
623  const string getMethodName() override {
624  return "HTTPDownloadClient::getHeaders";
625  }
626  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
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()) {
632  returnValue.setMapEntry(headerName, MinitScript::Variable(string(headerValue)));
633  }
634  } else {
635  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
636  }
637  }
638  };
639  minitScript->registerMethod(new MethodHTTPDownloadClientGetHeaders(minitScript));
640  }
641  {
642  //
643  class MethodHTTPDownloadClientSetHeaders: public MinitScript::Method {
644  private:
645  MinitScript* minitScript { nullptr };
646  public:
647  MethodHTTPDownloadClientSetHeaders(MinitScript* minitScript):
649  {
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 },
652  },
653  MinitScript::TYPE_NULL
654  ),
655  minitScript(minitScript) {}
656  const string getMethodName() override {
657  return "HTTPDownloadClient::setHeaders";
658  }
659  void executeMethod(span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) override {
660  shared_ptr<_HTTPDownloadClient> httpDownloadClient;
661  if (arguments.size() == 2 &&
662  HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient) == true &&
663  arguments[1].getType() == MinitScript::TYPE_MAP) {
664  //
665  unordered_map<string, string> headers;
666  for (const auto& [mapEntryName, mapEntryValue]: *arguments[1].getMapPointer()) {
667  headers[mapEntryName] = mapEntryValue->getValueAsString();
668  }
669  httpDownloadClient->setHeaders(headers);
670  } else {
671  MINITSCRIPT_METHODUSAGE_COMPLAIN(getMethodName());
672  }
673  }
674  };
675  minitScript->registerMethod(new MethodHTTPDownloadClientSetHeaders(minitScript));
676  }
677 }
678 
679 void HTTPDownloadClientClass::unsetVariableValue(MinitScript::Variable& variable) const {
680  delete static_cast<shared_ptr<_HTTPDownloadClient>*>(variable.getValuePtr());
681 }
682 
683 void HTTPDownloadClientClass::setVariableValue(MinitScript::Variable& variable) const {
684  variable.setValuePtr(new shared_ptr<_HTTPDownloadClient>(nullptr));
685 }
686 
687 void HTTPDownloadClientClass::setVariableValue(MinitScript::Variable& variable, const void* value) const {
688  *static_cast<shared_ptr<_HTTPDownloadClient>*>(variable.getValuePtr()) = *static_cast<const shared_ptr<_HTTPDownloadClient>*>(value);
689 }
690 
691 void HTTPDownloadClientClass::copyVariable(MinitScript::Variable& to, const MinitScript::Variable& from) const {
692  to.setType(MinitScript::TYPE_HTTPDOWNLOADCLIENT);
693  *static_cast<shared_ptr<_HTTPDownloadClient>*>(to.getValuePtr()) = *static_cast<shared_ptr<_HTTPDownloadClient>*>(from.getValuePtr());
694 }
695 
696 bool HTTPDownloadClientClass::mul(MinitScript* minitScript, const span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) const {
697  return false;
698 }
699 
700 bool HTTPDownloadClientClass::div(MinitScript* minitScript, const span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) const {
701  return false;
702 }
703 
704 bool HTTPDownloadClientClass::add(MinitScript* minitScript, const span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) const {
705  return false;
706 }
707 
708 bool HTTPDownloadClientClass::sub(MinitScript* minitScript, const span<MinitScript::Variable>& arguments, MinitScript::Variable& returnValue, const MinitScript::SubStatement& subStatement) const {
709  return false;
710 }
711 
712 const string& HTTPDownloadClientClass::getTypeAsString() const {
713  return TYPE_NAME;
714 }
715 
716 const string HTTPDownloadClientClass::getValueAsString(const MinitScript::Variable& variable) const {
717  const auto& httpDownloadClient = *static_cast<shared_ptr<_HTTPDownloadClient>*>(variable.getValuePtr());
718  return "HTTPDownloadClientClass(url: " + httpDownloadClient->getURL() + ", file: " + httpDownloadClient->getFile() + ")";
719 }
720 
721 MinitScript::DataType::ScriptContext* HTTPDownloadClientClass::createScriptContext() const {
723 }
724 
725 void HTTPDownloadClientClass::deleteScriptContext(MinitScript::DataType::ScriptContext* context) const {
726  delete static_cast<HTTPDownloadClientClassScriptContext*>(context);
727 }
728 
729 void HTTPDownloadClientClass::garbageCollection(MinitScript::DataType::ScriptContext* context) const {
730  auto& scriptContext = *static_cast<HTTPDownloadClientClassScriptContext*>(context);
731  auto& instances = scriptContext.getInstances();
732  for (auto i = 0; i < instances.size(); i++) {
733  auto& instance = instances[i];
734  if (instance.use_count() == 1 && instance->isFinished() == true) {
735  instance->join();
736  instances.erase(instances.begin() + i);
737  i--;
738  }
739  }
740  if (instances.empty() == true) {
741  scriptContext.unsetRequiresGarbageCollection();
742  }
743 }
#define MINITSCRIPT_METHODUSAGE_COMPLAIN(methodName)
Definition: MinitScript.h:59
void setMapEntry(const string &key, const Variable &value, bool _private=false)
Set entry in map with given key.
Definition: MinitScript.h:1993
void setValuePtr(void *valuePtr)
Set value pointer.
Definition: MinitScript.h:1391
void setType(VariableType newType)
Set type.
Definition: MinitScript.h:1253
void setValue(const Variable &variable)
Set value from given variable into variable.
Definition: MinitScript.h:1618
DataType::ScriptContext * getDataTypeScriptContext(VariableType type)
Return data type script context.
Definition: MinitScript.h:4274
void registerMethod(Method *method)
Register method.