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;
}