-
Notifications
You must be signed in to change notification settings - Fork 49
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Call EvaluateAsync #17
Comments
Hey, sure. If you provide me with more details around it and what you are
trying to achieve, I can try to help you...
Thanks, Vassili
…On Wed, Mar 4, 2020 at 4:33 PM bakman23 ***@***.***> wrote:
Hello,
is it possible to raise only this method when I call my custom function ?
` protected override async Task EvaluateAsync(ParsingScript script)
{
List args = script.GetFunctionArgs();
Utils.CheckArgs(args.Count, 1, m_name);
var url = Utils.GetSafeString(args, 0);
Variable results = await HttpGet(url);
return results;
}`
Thanks :)
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#17?email_source=notifications&email_token=AE74VFEWMKOEG7MVEU72S4TRFZYDJA5CNFSM4LBK4Y72YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4ISNRCNA>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AE74VFFJO4VKS63YF252CHLRFZYDJANCNFSM4LBK4Y7Q>
.
|
Thanks fr your response, I find a solution, `
` |
Can you send the whole class, including its name and how it’s registered
with the parser (if registered)?
…On Thu, 5 Mar 2020 at 10:19, bakman23 ***@***.***> wrote:
Thanks fr your response,
the case is simple I have a custom function and I need to call an async
method in the method Evaluate.
I see it's possible to override EvaluateAsync, but I don't know how and
when this method is called.
I find a solution,
Call directly EvaluateAsync from Evaluate method like that:
` protected override Variable Evaluate(ParsingScript script)
{
return EvaluateAsync(script).Result;
}
protected override async Task<Variable> EvaluateAsync(ParsingScript script)
{
List<Variable> args = script.GetFunctionArgs();
Utils.CheckArgs(args.Count, 1, m_name);
var url = Utils.GetSafeString(args, 0);
Variable results = await HttpGetAsync(url);
return results;
}
`
Is it correct ?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#17?email_source=notifications&email_token=AE74VFDLOJXBUMQSUIIROQ3RF5VD3A5CNFSM4LBK4Y72YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEN4MOOQ#issuecomment-595117882>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AE74VFGLMCH7VRP6KOS4OKLRF5VD3ANCNFSM4LBK4Y7Q>
.
|
`
` And the registration is in Interpreter.cs -> RegisterFunctions() Api.Init(); |
Basically you don't need to override anything.
First you register your class with the parser as follows:
ParserFunction.RegisterFunction("ApiGet", new ApiGetFonction());
You already do this. So now every time the parser parses ApiGet();
the code in EvaluateAsync() will be triggered.
So to change the functionality you just change the contents of
EvaluateAsync() method.
Let me know if I understand your question right.
Thanks,
Vassili
…On Thu, Mar 5, 2020 at 11:07 AM bakman23 ***@***.***> wrote:
`
class Api {
public static void Init()
{
ParserFunction.RegisterFunction("ApiGet", new ApiGetFonction());
}
}
class ApiGetFonction : ParserFunction
{
protected override async Task<Variable> EvaluateAsync(ParsingScript script)
{
List<Variable> args = script.GetFunctionArgs();
Utils.CheckArgs(args.Count, 1, m_name);
var url = Utils.GetSafeString(args, 0);
Variable results = await HttpGetAsync(url);
return results;
}
protected override Variable Evaluate(ParsingScript script)
{
return EvaluateAsync(script).Result;
}
public async Task<Variable> HttpGetAsync(string url) {
HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
Variable results = new Variable(Variable.VarType.STRING);
results.AddVariable(new Variable(responseBody));
return results;
}
}
`
And the registration is in Interpreter.cs -> RegisterFunctions()
Api.Init();
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#17?email_source=notifications&email_token=AE74VFFW6IZBWNCDABQ4XSDRF52VFA5CNFSM4LBK4Y72YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEN4SIEQ#issuecomment-595141650>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AE74VFB5JQWEMCUUUQYLYPLRF52VFANCNFSM4LBK4Y7Q>
.
|
Hello,
is it possible to raise only this method when I call my custom function ?
` protected override async Task EvaluateAsync(ParsingScript script)
{
List args = script.GetFunctionArgs();
Utils.CheckArgs(args.Count, 1, m_name);
Thanks :)
The text was updated successfully, but these errors were encountered: