Merge branch 'master' of https://github.com/SciSharp/BotSharp into features/add-chart-handler
This commit is contained in:
commit
180ffc5068
|
|
@ -4,5 +4,6 @@ namespace BotSharp.Abstraction.Browsing;
|
|||
|
||||
public interface IWebDriverHook
|
||||
{
|
||||
Task<List<string>> GetUploadFiles(MessageInfo message);
|
||||
Task<List<string>> GetUploadFiles(MessageInfo message) => Task.FromResult(new List<string>());
|
||||
Task OnLocateElement(MessageInfo message, string content) => Task.CompletedTask;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,8 +82,8 @@ public class ChatStreamMiddleware
|
|||
var (eventType, data) = MapEvents(conn, receivedText);
|
||||
if (eventType == "start")
|
||||
{
|
||||
var states = InitStates(data);
|
||||
await ConnectToModel(hub, webSocket, states);
|
||||
var request = InitRequest(data);
|
||||
await ConnectToModel(hub, webSocket, request?.States);
|
||||
}
|
||||
else if (eventType == "media")
|
||||
{
|
||||
|
|
@ -157,16 +157,15 @@ public class ChatStreamMiddleware
|
|||
});
|
||||
}
|
||||
|
||||
private List<MessageState> InitStates(string data)
|
||||
private ChatStreamRequest? InitRequest(string data)
|
||||
{
|
||||
try
|
||||
{
|
||||
var states = JsonSerializer.Deserialize<List<MessageState>>(data, BotSharpOptions.defaultJsonOptions);
|
||||
return states ?? [];
|
||||
return JsonSerializer.Deserialize<ChatStreamRequest>(data, BotSharpOptions.defaultJsonOptions);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return [];
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,10 @@
|
|||
using BotSharp.Abstraction.Models;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace BotSharp.Plugin.ChatHub.Models.Stream;
|
||||
|
||||
public class ChatStreamRequest
|
||||
{
|
||||
[JsonPropertyName("states")]
|
||||
public List<MessageState> States { get; set; } = [];
|
||||
}
|
||||
|
|
@ -33,7 +33,7 @@ public class ExecuteQueryFn : IFunctionCallback
|
|||
var results = dbType.ToLower() switch
|
||||
{
|
||||
"mysql" => RunQueryInMySql(args.SqlStatements),
|
||||
"sqlserver" => RunQueryInSqlServer(args.SqlStatements),
|
||||
"sqlserver" or "mssql" => RunQueryInSqlServer(args.SqlStatements),
|
||||
"redshift" => RunQueryInRedshift(args.SqlStatements),
|
||||
_ => throw new NotImplementedException($"Database type {dbType} is not supported.")
|
||||
};
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ public class GetTableDefinitionFn : IFunctionCallback
|
|||
var tableDdls = dbType switch
|
||||
{
|
||||
"mysql" => GetDdlFromMySql(tables),
|
||||
"sqlserver" => GetDdlFromSqlServer(tables),
|
||||
"sqlserver" or "mssql" => GetDdlFromSqlServer(tables),
|
||||
"redshift" => GetDdlFromRedshift(tables),
|
||||
_ => throw new NotImplementedException($"Database type {dbType} is not supported.")
|
||||
};
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public class SqlSelect : IFunctionCallback
|
|||
var result = dbType switch
|
||||
{
|
||||
"mysql" => RunQueryInMySql(args),
|
||||
"sqlserver" => RunQueryInSqlServer(args),
|
||||
"sqlserver" or "mssql" => RunQueryInSqlServer(args),
|
||||
"redshift" => RunQueryInRedshift(args),
|
||||
_ => throw new NotImplementedException($"Database type {dbType} is not supported.")
|
||||
};
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ public class SqlValidateFn : IFunctionCallback
|
|||
var validateSql = dbType.ToLower() switch
|
||||
{
|
||||
"mysql" => $"EXPLAIN\r\n{sql.Replace("SET ", "-- SET ", StringComparison.InvariantCultureIgnoreCase).Replace(";", "; EXPLAIN ").TrimEnd("EXPLAIN ".ToCharArray())}",
|
||||
"sqlserver" => $"SET PARSEONLY ON;\r\n{sql}\r\nSET PARSEONLY OFF;",
|
||||
"sqlserver" or "mssql" => $"SET PARSEONLY ON;\r\n{sql}\r\nSET PARSEONLY OFF;",
|
||||
"redshift" => $"explain\r\n{sql}",
|
||||
_ => throw new NotImplementedException($"Database type {dbType} is not supported.")
|
||||
};
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ public class GetTableDefinitionFn : IFunctionCallback
|
|||
var tableDdls = dbType switch
|
||||
{
|
||||
"mysql" => GetDdlFromMySql(tables),
|
||||
"sqlserver" => GetDdlFromSqlServer(tables),
|
||||
"sqlserver" or "mssql" => GetDdlFromSqlServer(tables),
|
||||
"redshift" => GetDdlFromRedshift(tables,schema),
|
||||
_ => throw new NotImplementedException($"Database type {dbType} is not supported.")
|
||||
};
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ public class SqlSelect : IFunctionCallback
|
|||
var result = dbType switch
|
||||
{
|
||||
"mysql" => RunQueryInMySql(args),
|
||||
"sqlserver" => RunQueryInSqlServer(args),
|
||||
"sqlserver" or "mssql" => RunQueryInSqlServer(args),
|
||||
"redshift" => RunQueryInRedshift(args),
|
||||
_ => throw new NotImplementedException($"Database type {dbType} is not supported.")
|
||||
};
|
||||
|
|
|
|||
|
|
@ -114,6 +114,11 @@ public partial class PlaywrightWebDriver
|
|||
// fix if html has &
|
||||
result.Body = HttpUtility.HtmlDecode(html);
|
||||
result.IsSuccess = true;
|
||||
var hooks = _services.GetServices<IWebDriverHook>();
|
||||
foreach (var hook in hooks)
|
||||
{
|
||||
await hook.OnLocateElement(message, result.Body);
|
||||
}
|
||||
}
|
||||
else if (count > 1)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ public class UtilWebCloseBrowserFn : IFunctionCallback
|
|||
ContextId = webDriverService.GetMessageContext(message)
|
||||
};
|
||||
|
||||
await browser.CloseBrowser(message.CurrentAgentId);
|
||||
await browser.CloseBrowser(msg.ContextId);
|
||||
|
||||
message.Content = $"Browser closed.";
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ public class UtilWebLocateElementFn : IFunctionCallback
|
|||
MessageId = message.MessageId,
|
||||
ContextId = webDriverService.GetMessageContext(message)
|
||||
};
|
||||
browser.SetServiceProvider(_services);
|
||||
var result = await browser.LocateElement(msg, locatorArgs);
|
||||
|
||||
message.Content = $"Locating element {(result.IsSuccess ? "success" : "failed")}. ";
|
||||
|
|
|
|||
Loading…
Reference in a new issue