public static bool TryCreatePushNotification()

in src/Microsoft.Extensions.Configuration.AzureAppConfiguration/Extensions/EventGridEventExtensions.cs [23:90]


        public static bool TryCreatePushNotification(this EventGridEvent eventGridEvent, out PushNotification pushNotification)
        {
            pushNotification = null;

            if (eventGridEvent.Data == null || eventGridEvent.EventType == null || eventGridEvent.Subject == null)
            {
                return false;
            }

            if (Uri.TryCreate(eventGridEvent.Subject, UriKind.Absolute, out Uri resourceUri))
            {
                string syncToken = null;

                try
                {
                    var reader = new Utf8JsonReader(System.Text.Encoding.UTF8.GetBytes(eventGridEvent.Data.ToString()));

                    if (reader.Read() && reader.TokenType != JsonTokenType.StartObject)
                    {
                        return false;
                    }

                    while (reader.Read() && reader.TokenType != JsonTokenType.EndObject)
                    {
                        if (reader.TokenType != JsonTokenType.PropertyName)
                        {
                            continue;
                        }

                        if (reader.GetString() == SyncTokenPropertyName)
                        {
                            if (reader.Read() && reader.TokenType == JsonTokenType.String)
                            {
                                syncToken = reader.GetString();
                            }
                            else
                            {
                                return false;
                            }
                        }
                        else
                        {
                            reader.Skip();
                        }
                    }
                }
                catch (JsonException)
                {
                    return false;
                }

                if (syncToken == null)
                {
                    return false;
                }

                pushNotification = new PushNotification()
                {
                    SyncToken = syncToken,
                    EventType = eventGridEvent.EventType,
                    ResourceUri = resourceUri
                };

                return true;
            }

            return false;
        }