using CloudNative.CloudEvents;
using Google.Cloud.Functions.Framework;
using Google.Events.Protobuf.Firebase.RemoteConfig.V1;
using Microsoft.Extensions.Logging;
using System.Threading;
using System.Threading.Tasks;
namespace FirebaseRemoteConfig
{
public class Function : ICloudEventFunction<RemoteConfigEventData>
{
private readonly ILogger _logger;
public Function(ILogger<Function> logger) =>
_logger = logger;
public Task HandleAsync(CloudEvent cloudEvent, RemoteConfigEventData data, CancellationToken cancellationToken)
{
_logger.LogInformation("Update type: {origin}", data.UpdateType);
_logger.LogInformation("Update origin: {origin}", data.UpdateOrigin);
_logger.LogInformation("Version number: {version}", data.VersionNumber);
// 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;
}
}
}
def hello_remote_config(data, context):
""" Triggered by a change to a Firebase Remote Config value.
Args:
data (dict): The event payload.
context (google.cloud.functions.Context): Metadata for the event.
"""
print(f'Update type: {data["updateType"]}')
print(f'Origin: {data["updateOrigin"]}')
print(f'Version: {data["versionNumber"]}')
require "functions_framework"
# Triggered by a change to a Firebase Remote Config value
FunctionsFramework.cloud_event "hello_remote_config" 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 event data.
payload = event.data
logger.info "Update type: #{payload['updateType']}"
logger.info "Origin: #{payload['updateOrigin']}"
logger.info "Version: #{payload['versionNumber']}"
end