using CloudNative.CloudEvents;
using Google.Cloud.Functions.Framework;
using Google.Events.Protobuf.Firebase.Auth.V1;
using Microsoft.Extensions.Logging;
using System.Threading;
using System.Threading.Tasks;
namespace FirebaseAuth
{
public class Function : ICloudEventFunction<AuthEventData>
{
private readonly ILogger _logger;
public Function(ILogger<Function> logger) =>
_logger = logger;
public Task HandleAsync(CloudEvent cloudEvent, AuthEventData data, CancellationToken cancellationToken)
{
_logger.LogInformation("Function triggered by change to user: {uid}", data.Uid);
if (data.Metadata is UserMetadata metadata)
{
_logger.LogInformation("User created at: {created:s}", metadata.CreateTime.ToDateTimeOffset());
}
if (!string.IsNullOrEmpty(data.Email))
{
_logger.LogInformation("Email: {email}", data.Email);
}
// In this example, we don't need to perform any asynchronous operations, so the
// method doesn't need to be declared async.
return Task.CompletedTask;
}
}
}
import json
def hello_auth(data, context):
""" Triggered by creation or deletion of a Firebase Auth user object.
Args:
data (dict): The event payload.
context (google.cloud.functions.Context): Metadata for the event.
"""
print('Function triggered by creation/deletion of user: %s' % data["uid"])
print('Created at: %s' % data["metadata"]["createdAt"])
if 'email' in data:
print('Email: %s' % data["email"])
require "functions_framework"
# Triggered by creation or deletion of a Firebase Auth user object.
FunctionsFramework.cloud_event "hello_auth" do |event|
# Event-triggered Ruby functions receive a CloudEvents::Event::V1 object.
# See https://cloudevents.github.io/sdk-ruby/latest/CloudEvents/Event/V1.html
# The Firebase event payload can be obtained from the `data` field.
payload = event.data
logger.info "Function triggered by creation/deletion of user: #{payload['uid']}"
logger.info "Created at: #{payload['metadata']['createdAt']}"
logger.info "Email: #{payload['email']}" if payload.key? "email"
end