internal Task <JsonElement?> EvaluateExpressionAsync( string script, bool isFunction, object arg, bool serializeArgument = false) { JsonSerializerOptions serializerOptions; if (serializeArgument) { serializerOptions = JsonExtensions.GetNewDefaultSerializerOptions(false); arg = new EvaluateArgument { Handles = new List <EvaluateArgumentGuidElement>(), Value = arg, }; serializerOptions.Converters.Add(new EvaluateArgumentConverter()); } else { serializerOptions = Connection.GetDefaultJsonSerializerOptions(false); } return(Connection.SendMessageToServerAsync <JsonElement?>( Guid, "evaluateExpression", new Dictionary <string, object> { ["expression"] = script, ["isFunction"] = isFunction, ["arg"] = arg, }, serializerOptions: serializerOptions)); }
internal static T ParseEvaluateResult <T>(JsonElement?result) { var serializerOptions = JsonExtensions.GetNewDefaultSerializerOptions(false); serializerOptions.Converters.Add(new EvaluateArgumentValueConverter <T>(null)); return(result == null ? default : result.Value.ToObject <T>(serializerOptions)); }
internal JsonSerializerOptions GetDefaultJsonSerializerOptions() { var options = JsonExtensions.GetNewDefaultSerializerOptions(); options.Converters.Add(new ChannelOwnerToGuidConverter(this)); options.Converters.Add(new ChannelToGuidConverter(this)); return(options); }
internal JsonSerializerOptions GetDefaultJsonSerializerOptions(bool ignoreNullValues = false) { var options = JsonExtensions.GetNewDefaultSerializerOptions(ignoreNullValues); options.Converters.Add(new ChannelOwnerToGuidConverter(this)); options.Converters.Add(new ChannelToGuidConverter(this)); options.Converters.Add(new HttpMethodConverter()); return(options); }
internal Task <JSHandleChannel> WaitForFunctionAsync( string expression, bool isFunction, object arg, bool isPage, int?timeout, int?polling, bool serializeArgument = false) { JsonSerializerOptions serializerOptions; if (serializeArgument) { serializerOptions = JsonExtensions.GetNewDefaultSerializerOptions(false); arg = new EvaluateArgument { Handles = new List <EvaluateArgumentGuidElement>(), Value = arg, }; serializerOptions.Converters.Add(new EvaluateArgumentConverter()); } else { serializerOptions = Connection.GetDefaultJsonSerializerOptions(false); } var args = new Dictionary <string, object> { ["expression"] = expression, ["isFunction"] = isFunction, ["arg"] = arg, ["isPage"] = isPage, }; if (timeout != null) { args["timeout"] = timeout; } if (polling != null) { args["pollingInterval"] = polling; } return(Connection.SendMessageToServerAsync <JSHandleChannel>( Guid, "waitForFunction", args, serializerOptions: serializerOptions)); }
public override void Write(Utf8JsonWriter writer, EvaluateArgument value, JsonSerializerOptions options) { var serializerOptions = JsonExtensions.GetNewDefaultSerializerOptions(false); serializerOptions.Converters.Add(new EvaluateArgumentValueConverter <object>(value)); writer.WriteStartObject(); writer.WritePropertyName("value"); if (value.Value == null) { writer.WriteStartObject(); writer.WriteString("v", "null"); writer.WriteEndObject(); } else { JsonSerializer.Serialize(writer, value.Value, serializerOptions); } writer.WritePropertyName("handles"); JsonSerializer.Serialize(writer, value.Handles, options); writer.WriteEndObject(); }
internal static string SerializeScriptCall(string script, object[] args) { args ??= Array.Empty <object>(); if (script.IsJavascriptFunction()) { return($"({script})({string.Join(",", args.Select(a => JsonSerializer.Serialize(a, JsonExtensions.GetNewDefaultSerializerOptions())))})"); } if (args.Length > 0) { throw new PlaywrightSharpException("Cannot evaluate a string with arguments"); } return(script); }