Skip to content

Commit de97d23

Browse files
committed
ext: updated MiniScript
1 parent d9538db commit de97d23

File tree

2 files changed

+417
-0
lines changed

2 files changed

+417
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,337 @@
1+
#include <memory>
2+
#include <span>
3+
#include <string>
4+
5+
#include <miniscript/miniscript/MiniScript.h>
6+
7+
#include <miniscript/miniscript.h>
8+
#include <miniscript/utilities/Console.h>
9+
#include <miniscript/miniscript/HTTPDownloadClientClass.h>
10+
#include <miniscript/network/httpclient/HTTPDownloadClient.h>
11+
12+
using std::make_shared;
13+
using std::shared_ptr;
14+
using std::span;
15+
using std::string;
16+
17+
using miniscript::miniscript::HTTPDownloadClientClass;
18+
19+
using miniscript::miniscript::MiniScript;
20+
using _Console = miniscript::utilities::Console;
21+
using _HTTPDownloadClient = miniscript::network::httpclient::HTTPDownloadClient;
22+
23+
const string HTTPDownloadClientClass::TYPE_NAME = "HTTPDownloadClient";
24+
vector<shared_ptr<_HTTPDownloadClient>> HTTPDownloadClientClass::instances;
25+
26+
void HTTPDownloadClientClass::initialize() {
27+
}
28+
29+
void HTTPDownloadClientClass::registerConstants(MiniScript* miniScript) const {
30+
}
31+
32+
void HTTPDownloadClientClass::registerMethods(MiniScript* miniScript) const {
33+
//
34+
{
35+
//
36+
class MethodHTTPDownloadClient: public MiniScript::Method {
37+
private:
38+
MiniScript* miniScript { nullptr };
39+
public:
40+
MethodHTTPDownloadClient(MiniScript* miniScript):
41+
MiniScript::Method({}, MiniScript::TYPE_HTTPDOWNLOADCLIENT),
42+
miniScript(miniScript) {}
43+
const string getMethodName() override {
44+
return "HTTPDownloadClient";
45+
}
46+
void executeMethod(span<MiniScript::Variable>& arguments, MiniScript::Variable& returnValue, const MiniScript::Statement& statement) override {
47+
auto httpDownloadClient = make_shared<_HTTPDownloadClient>();
48+
returnValue.setType(MiniScript::TYPE_HTTPDOWNLOADCLIENT);
49+
returnValue.setValue(&httpDownloadClient);
50+
}
51+
};
52+
miniScript->registerMethod(new MethodHTTPDownloadClient(miniScript));
53+
}
54+
{
55+
//
56+
class MethodHTTPDownloadClientGetURL: public MiniScript::Method {
57+
private:
58+
MiniScript* miniScript { nullptr };
59+
public:
60+
MethodHTTPDownloadClientGetURL(MiniScript* miniScript):
61+
MiniScript::Method(
62+
{
63+
{ .type = MiniScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
64+
},
65+
MiniScript::TYPE_STRING
66+
),
67+
miniScript(miniScript) {}
68+
const string getMethodName() override {
69+
return "HTTPDownloadClient::getURL";
70+
}
71+
void executeMethod(span<MiniScript::Variable>& arguments, MiniScript::Variable& returnValue, const MiniScript::Statement& statement) override {
72+
shared_ptr<_HTTPDownloadClient> httpDownloadClient;
73+
if (HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient, false) == true) {
74+
returnValue.setValue(httpDownloadClient->getURL());
75+
} else {
76+
_Console::println(getMethodName() + "(): " + miniScript->getStatementInformation(statement) + ": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
77+
miniScript->startErrorScript();
78+
}
79+
}
80+
};
81+
miniScript->registerMethod(new MethodHTTPDownloadClientGetURL(miniScript));
82+
}
83+
{
84+
//
85+
class MethodHTTPDownloadClientSetURL: public MiniScript::Method {
86+
private:
87+
MiniScript* miniScript { nullptr };
88+
public:
89+
MethodHTTPDownloadClientSetURL(MiniScript* miniScript):
90+
MiniScript::Method(
91+
{
92+
{ .type = MiniScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
93+
{ .type = MiniScript::TYPE_STRING, .name = "url", .optional = false, .reference = false, .nullable = false },
94+
},
95+
MiniScript::TYPE_NULL
96+
),
97+
miniScript(miniScript) {}
98+
const string getMethodName() override {
99+
return "HTTPDownloadClient::setURL";
100+
}
101+
void executeMethod(span<MiniScript::Variable>& arguments, MiniScript::Variable& returnValue, const MiniScript::Statement& statement) override {
102+
shared_ptr<_HTTPDownloadClient> httpDownloadClient;
103+
string url;
104+
if (HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient, false) == true &&
105+
MiniScript::getStringValue(arguments, 1, url, false) == true) {
106+
httpDownloadClient->setURL(url);
107+
} else {
108+
_Console::println(getMethodName() + "(): " + miniScript->getStatementInformation(statement) + ": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
109+
miniScript->startErrorScript();
110+
}
111+
}
112+
};
113+
miniScript->registerMethod(new MethodHTTPDownloadClientSetURL(miniScript));
114+
}
115+
{
116+
//
117+
class MethodHTTPDownloadClientGetFile: public MiniScript::Method {
118+
private:
119+
MiniScript* miniScript { nullptr };
120+
public:
121+
MethodHTTPDownloadClientGetFile(MiniScript* miniScript):
122+
MiniScript::Method(
123+
{
124+
{ .type = MiniScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
125+
},
126+
MiniScript::TYPE_STRING
127+
),
128+
miniScript(miniScript) {}
129+
const string getMethodName() override {
130+
return "HTTPDownloadClient::getFile";
131+
}
132+
void executeMethod(span<MiniScript::Variable>& arguments, MiniScript::Variable& returnValue, const MiniScript::Statement& statement) override {
133+
shared_ptr<_HTTPDownloadClient> httpDownloadClient;
134+
if (HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient, false) == true) {
135+
returnValue.setValue(httpDownloadClient->getFile());
136+
} else {
137+
_Console::println(getMethodName() + "(): " + miniScript->getStatementInformation(statement) + ": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
138+
miniScript->startErrorScript();
139+
}
140+
}
141+
};
142+
miniScript->registerMethod(new MethodHTTPDownloadClientGetFile(miniScript));
143+
}
144+
{
145+
//
146+
class MethodHTTPDownloadClientSetFile: public MiniScript::Method {
147+
private:
148+
MiniScript* miniScript { nullptr };
149+
public:
150+
MethodHTTPDownloadClientSetFile(MiniScript* miniScript):
151+
MiniScript::Method(
152+
{
153+
{ .type = MiniScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
154+
{ .type = MiniScript::TYPE_STRING, .name = "url", .optional = false, .reference = false, .nullable = false },
155+
},
156+
MiniScript::TYPE_NULL
157+
),
158+
miniScript(miniScript) {}
159+
const string getMethodName() override {
160+
return "HTTPDownloadClient::setFile";
161+
}
162+
void executeMethod(span<MiniScript::Variable>& arguments, MiniScript::Variable& returnValue, const MiniScript::Statement& statement) override {
163+
shared_ptr<_HTTPDownloadClient> httpDownloadClient;
164+
string file;
165+
if (HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient, false) == true &&
166+
MiniScript::getStringValue(arguments, 1, file, false) == true) {
167+
httpDownloadClient->setFile(file);
168+
} else {
169+
_Console::println(getMethodName() + "(): " + miniScript->getStatementInformation(statement) + ": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
170+
miniScript->startErrorScript();
171+
}
172+
}
173+
};
174+
miniScript->registerMethod(new MethodHTTPDownloadClientSetFile(miniScript));
175+
}
176+
{
177+
//
178+
class MethodHTTPDownloadClientReset: public MiniScript::Method {
179+
private:
180+
MiniScript* miniScript { nullptr };
181+
public:
182+
MethodHTTPDownloadClientReset(MiniScript* miniScript):
183+
MiniScript::Method(
184+
{
185+
{ .type = MiniScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
186+
},
187+
MiniScript::TYPE_NULL
188+
),
189+
miniScript(miniScript) {}
190+
const string getMethodName() override {
191+
return "HTTPDownloadClient::reset";
192+
}
193+
void executeMethod(span<MiniScript::Variable>& arguments, MiniScript::Variable& returnValue, const MiniScript::Statement& statement) override {
194+
shared_ptr<_HTTPDownloadClient> httpDownloadClient;
195+
if (HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient, false) == true) {
196+
httpDownloadClient->reset();
197+
} else {
198+
_Console::println(getMethodName() + "(): " + miniScript->getStatementInformation(statement) + ": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
199+
miniScript->startErrorScript();
200+
}
201+
}
202+
};
203+
miniScript->registerMethod(new MethodHTTPDownloadClientReset(miniScript));
204+
}
205+
{
206+
//
207+
class MethodHTTPDownloadClientExecute: public MiniScript::Method {
208+
private:
209+
MiniScript* miniScript { nullptr };
210+
public:
211+
MethodHTTPDownloadClientExecute(MiniScript* miniScript):
212+
MiniScript::Method(
213+
{
214+
{ .type = MiniScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
215+
},
216+
MiniScript::TYPE_NULL
217+
),
218+
miniScript(miniScript) {}
219+
const string getMethodName() override {
220+
return "HTTPDownloadClient::execute";
221+
}
222+
void executeMethod(span<MiniScript::Variable>& arguments, MiniScript::Variable& returnValue, const MiniScript::Statement& statement) override {
223+
shared_ptr<_HTTPDownloadClient> httpDownloadClient;
224+
if (HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient, false) == true) {
225+
httpDownloadClient->start();
226+
} else {
227+
_Console::println(getMethodName() + "(): " + miniScript->getStatementInformation(statement) + ": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
228+
miniScript->startErrorScript();
229+
}
230+
}
231+
};
232+
miniScript->registerMethod(new MethodHTTPDownloadClientExecute(miniScript));
233+
}
234+
{
235+
//
236+
class MethodHTTPDownloadClientGetProgress: public MiniScript::Method {
237+
private:
238+
MiniScript* miniScript { nullptr };
239+
public:
240+
MethodHTTPDownloadClientGetProgress(MiniScript* miniScript):
241+
MiniScript::Method(
242+
{
243+
{ .type = MiniScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
244+
},
245+
MiniScript::TYPE_FLOAT
246+
),
247+
miniScript(miniScript) {}
248+
const string getMethodName() override {
249+
return "HTTPDownloadClient::getProgress";
250+
}
251+
void executeMethod(span<MiniScript::Variable>& arguments, MiniScript::Variable& returnValue, const MiniScript::Statement& statement) override {
252+
shared_ptr<_HTTPDownloadClient> httpDownloadClient;
253+
if (HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient, false) == true) {
254+
returnValue.setValue(httpDownloadClient->getProgress());
255+
} else {
256+
_Console::println(getMethodName() + "(): " + miniScript->getStatementInformation(statement) + ": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
257+
miniScript->startErrorScript();
258+
}
259+
}
260+
};
261+
miniScript->registerMethod(new MethodHTTPDownloadClientGetProgress(miniScript));
262+
}
263+
{
264+
//
265+
class MethodHTTPDownloadClientIsFinished: public MiniScript::Method {
266+
private:
267+
MiniScript* miniScript { nullptr };
268+
public:
269+
MethodHTTPDownloadClientIsFinished(MiniScript* miniScript):
270+
MiniScript::Method(
271+
{
272+
{ .type = MiniScript::TYPE_HTTPDOWNLOADCLIENT, .name = "httpdownloadclient", .optional = false, .reference = false, .nullable = false },
273+
},
274+
MiniScript::TYPE_BOOLEAN
275+
),
276+
miniScript(miniScript) {}
277+
const string getMethodName() override {
278+
return "HTTPDownloadClient::isFinished";
279+
}
280+
void executeMethod(span<MiniScript::Variable>& arguments, MiniScript::Variable& returnValue, const MiniScript::Statement& statement) override {
281+
shared_ptr<_HTTPDownloadClient> httpDownloadClient;
282+
if (HTTPDownloadClientClass::getHTTPDownloadClientValue(arguments, 0, httpDownloadClient, false) == true) {
283+
returnValue.setValue(httpDownloadClient->isFinished());
284+
} else {
285+
_Console::println(getMethodName() + "(): " + miniScript->getStatementInformation(statement) + ": argument mismatch: expected arguments: " + miniScript->getArgumentInformation(getMethodName()));
286+
miniScript->startErrorScript();
287+
}
288+
}
289+
};
290+
miniScript->registerMethod(new MethodHTTPDownloadClientIsFinished(miniScript));
291+
}
292+
}
293+
294+
void HTTPDownloadClientClass::unsetVariableValue(MiniScript::Variable& variable) const {
295+
delete static_cast<shared_ptr<_HTTPDownloadClient>*>(variable.getValuePtr());
296+
}
297+
298+
void HTTPDownloadClientClass::setVariableValue(MiniScript::Variable& variable) const {
299+
auto sharedPtr = make_shared<_HTTPDownloadClient>();
300+
instances.push_back(sharedPtr);
301+
variable.setValuePtr(new shared_ptr<_HTTPDownloadClient>(sharedPtr));
302+
}
303+
304+
void HTTPDownloadClientClass::setVariableValue(MiniScript::Variable& variable, const void* value) const {
305+
*static_cast<shared_ptr<_HTTPDownloadClient>*>(variable.getValuePtr()) = *static_cast<const shared_ptr<_HTTPDownloadClient>*>(value);
306+
}
307+
308+
void HTTPDownloadClientClass::copyVariable(MiniScript::Variable& to, const MiniScript::Variable& from) const {
309+
to.setType(MiniScript::TYPE_HTTPDOWNLOADCLIENT);
310+
*static_cast<shared_ptr<_HTTPDownloadClient>*>(to.getValuePtr()) = *static_cast<shared_ptr<_HTTPDownloadClient>*>(from.getValuePtr());
311+
}
312+
313+
bool HTTPDownloadClientClass::mul(MiniScript* miniScript, const span<MiniScript::Variable>& arguments, MiniScript::Variable& returnValue, const MiniScript::Statement& statement) const {
314+
return false;
315+
}
316+
317+
bool HTTPDownloadClientClass::div(MiniScript* miniScript, const span<MiniScript::Variable>& arguments, MiniScript::Variable& returnValue, const MiniScript::Statement& statement) const {
318+
return false;
319+
}
320+
321+
bool HTTPDownloadClientClass::add(MiniScript* miniScript, const span<MiniScript::Variable>& arguments, MiniScript::Variable& returnValue, const MiniScript::Statement& statement) const {
322+
return false;
323+
}
324+
325+
bool HTTPDownloadClientClass::sub(MiniScript* miniScript, const span<MiniScript::Variable>& arguments, MiniScript::Variable& returnValue, const MiniScript::Statement& statement) const {
326+
return false;
327+
}
328+
329+
const string& HTTPDownloadClientClass::getTypeAsString() const {
330+
return TYPE_NAME;
331+
}
332+
333+
const string HTTPDownloadClientClass::getValueAsString(const MiniScript::Variable& variable) const {
334+
const auto& httpDownloadClient = *static_cast<shared_ptr<_HTTPDownloadClient>*>(variable.getValuePtr());
335+
return "HTTPDownloadClientClass(url: " + httpDownloadClient->getURL() + ", file: " + httpDownloadClient->getFile() + ")";
336+
}
337+

0 commit comments

Comments
 (0)