private static DaprBindingMessage GetDaprBindingMessageFromValueKindObject()

in src/Microsoft.Azure.WebJobs.Extensions.Dapr/DaprExtensionConfigProvider.cs [230:262]


        private static DaprBindingMessage GetDaprBindingMessageFromValueKindObject(JsonElement jsonElement)
        {
            var propertyBag = jsonElement.ToCaseInsensitiveDictionary();
            if (!propertyBag.TryGetValue("data", out JsonElement data))
            {
                throw new ArgumentException("A 'data' parameter is required for Dapr Binding operations.", nameof(jsonElement));
            }

            object? dataObj = data.Deserialize<object>();
            if (dataObj == null)
            {
                throw new ArgumentException("Could not deserialize 'data' parameter for Dapr Binding operations.", nameof(jsonElement));
            }

            DaprBindingMessage message = new DaprBindingMessage(dataObj);

            if (propertyBag.TryGetValue("operation", out JsonElement operation))
            {
                message.Operation = JsonSerializer.Deserialize<string>(operation);
            }

            if (propertyBag.TryGetValue("metadata", out JsonElement metadata))
            {
                message.Metadata = JsonSerializer.Deserialize<Dictionary<string, object>>(metadata);
            }

            if (propertyBag.TryGetValue("bindingname", out JsonElement binding))
            {
                message.BindingName = JsonSerializer.Deserialize<string>(binding);
            }

            return message;
        }