From 65a7da97aa5bd7738761404ff3bf1b423e11cf11 Mon Sep 17 00:00:00 2001 From: Jialin Xin Date: Thu, 24 Jun 2021 13:55:54 +0800 Subject: [PATCH 1/3] Add AWPS function samples. --- .../README.md | 25 ++++++++--------- ....WebJobs.Extensions.WebPubSub.Tests.csproj | 3 +- .../WebPubSubConnectionBindingFunction.cs | 25 +++++++++++++++++ .../Samples/WebPubSubOutputBindingFunction.cs | 28 +++++++++++++++++++ .../tests/Samples/WebPubSubTriggerFunction.cs | 24 ++++++++++++++++ .../WebPubSubTriggerReturnValueFunction.cs | 24 ++++++++++++++++ 6 files changed, 115 insertions(+), 14 deletions(-) create mode 100644 sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubConnectionBindingFunction.cs create mode 100644 sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubOutputBindingFunction.cs create mode 100644 sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubTriggerFunction.cs create mode 100644 sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubTriggerReturnValueFunction.cs diff --git a/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/README.md b/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/README.md index 0adcb2fb1a9a..185e7be074c4 100644 --- a/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/README.md +++ b/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/README.md @@ -56,11 +56,11 @@ In `Connect` and `Message` events, function will respect return values to send b ### Functions that uses Web PubSub input binding -```cs -[FunctionName("WebPubSubInputBindingFunction")] +```c# Snippet:WebPubSubConnectionBindingFunction +[FunctionName("WebPubSubConnectionBindingFunction")] public static WebPubSubConnection Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req, - [WebPubSubConnection(Hub = "simplechat", UserId = "{query.userid}")] WebPubSubConnection connection) + [WebPubSubConnection(Hub = "hub", UserId = "{query.userid}")] WebPubSubConnection connection) { Console.WriteLine("login"); return connection; @@ -69,11 +69,11 @@ public static WebPubSubConnection Run( ### Functions that uses Web PubSub output binding -```cs +```c# Snippet:WebPubSubOutputBindingFunction [FunctionName("WebPubSubOutputBindingFunction")] public static async Task RunAsync( [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req, - [WebPubSub(Hub = "simplechat")] IAsyncCollector operation) + [WebPubSub(Hub = "hub")] IAsyncCollector operation) { await operation.AddAsync(new SendToAll { @@ -85,25 +85,24 @@ public static async Task RunAsync( ### Functions that uses Web PubSub trigger -```cs +```c# Snippet: WebPubSubTriggerFunction [FunctionName("WebPubSubTriggerFunction")] public static void Run( - [WebPubSubTrigger("message", WebPubSubEventType.User)] - ConnectionContext context, + ILogger logger, + [WebPubSubTrigger("hub", WebPubSubEventType.User, "message")] ConnectionContext context, string message, MessageDataType dataType) { - Console.WriteLine($"Request from: {context.userId}"); - Console.WriteLine($"Request message: {message}"); - Console.WriteLine($"Request message DataType: {dataType}"); + logger.LogInformation("Request from: {user}, message: {message}, dataType: {dataType}", + context.UserId, message, dataType); } ``` ### Functions that uses Web PubSub trigger return value -```cs +```c# Snippet: WebPubSubTriggerReturnValueFunction [FunctionName("WebPubSubTriggerReturnValueFunction")] -public static MessageResponse RunAsync( +public static MessageResponse Run( [WebPubSubTrigger("message", WebPubSubEventType.User)] ConnectionContext context) { return new MessageResponse diff --git a/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Microsoft.Azure.WebJobs.Extensions.WebPubSub.Tests.csproj b/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Microsoft.Azure.WebJobs.Extensions.WebPubSub.Tests.csproj index 502eea7d5a0c..f920786f3a0f 100644 --- a/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Microsoft.Azure.WebJobs.Extensions.WebPubSub.Tests.csproj +++ b/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Microsoft.Azure.WebJobs.Extensions.WebPubSub.Tests.csproj @@ -7,10 +7,11 @@ + - + diff --git a/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubConnectionBindingFunction.cs b/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubConnectionBindingFunction.cs new file mode 100644 index 000000000000..b2a0bbfa41a7 --- /dev/null +++ b/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubConnectionBindingFunction.cs @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.Azure.WebJobs.Extensions.Http; +using Microsoft.Azure.WebJobs.Extensions.WebPubSub; + +namespace Microsoft.Azure.WebJobs.Samples +{ + #region Snippet:WebPubSubConnectionBindingFunction + public static class WebPubSubConnectionBindingFunction + { + [FunctionName("WebPubSubConnectionBindingFunction")] + public static WebPubSubConnection Run( + [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req, + [WebPubSubConnection(Hub = "hub", UserId = "{query.userid}")] WebPubSubConnection connection) + { + Console.WriteLine("login"); + return connection; + } + } + #endregion +} diff --git a/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubOutputBindingFunction.cs b/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubOutputBindingFunction.cs new file mode 100644 index 000000000000..238aa164cbbe --- /dev/null +++ b/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubOutputBindingFunction.cs @@ -0,0 +1,28 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.Azure.WebJobs.Extensions.Http; +using Microsoft.Azure.WebJobs.Extensions.WebPubSub; + +namespace Microsoft.Azure.WebJobs.Samples +{ + #region Snippet:WebPubSubOutputBindingFunction + public static class WebPubSubOutputBindingFunction + { + [FunctionName("WebPubSubOutputBindingFunction")] + public static async Task RunAsync( + [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req, + [WebPubSub(Hub = "hub")] IAsyncCollector operation) + { + await operation.AddAsync(new SendToAll + { + Message = BinaryData.FromString("Hello Web PubSub"), + DataType = MessageDataType.Text + }); + } + } + #endregion +} diff --git a/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubTriggerFunction.cs b/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubTriggerFunction.cs new file mode 100644 index 000000000000..3687f9d33716 --- /dev/null +++ b/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubTriggerFunction.cs @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using Microsoft.Azure.WebJobs.Extensions.WebPubSub; +using Microsoft.Extensions.Logging; + +namespace Microsoft.Azure.WebJobs.Samples +{ + #region Snippet:WebPubSubTriggerFunction + public static class WebPubSubTriggerFunction + { + [FunctionName("WebPubSubTriggerFunction")] + public static void Run( + ILogger logger, + [WebPubSubTrigger("hub", WebPubSubEventType.User, "message")] ConnectionContext context, + string message, + MessageDataType dataType) + { + logger.LogInformation("Request from: {user}, message: {message}, dataType: {dataType}", + context.UserId, message, dataType); + } + } + #endregion +} diff --git a/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubTriggerReturnValueFunction.cs b/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubTriggerReturnValueFunction.cs new file mode 100644 index 000000000000..739d59fddf45 --- /dev/null +++ b/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubTriggerReturnValueFunction.cs @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +using System; +using Microsoft.Azure.WebJobs.Extensions.WebPubSub; + +namespace Microsoft.Azure.WebJobs.Samples +{ + #region Snippet:WebPubSubTriggerReturnValueFunction + public static class WebPubSubTriggerReturnValueFunction + { + [FunctionName("WebPubSubTriggerReturnValueFunction")] + public static MessageResponse Run( + [WebPubSubTrigger("hub", WebPubSubEventType.User, "message")] ConnectionContext context) + { + return new MessageResponse + { + Message = BinaryData.FromString("ack"), + DataType = MessageDataType.Text + }; + } + } + #endregion +} From e0740fa4fa3f11a7b4336c84e71c3e89eed8e214 Mon Sep 17 00:00:00 2001 From: Jialin Xin Date: Tue, 29 Jun 2021 14:37:30 +0800 Subject: [PATCH 2/3] move file and fix snippet. --- .../README.md | 84 +++++++++++-------- .../WebPubSubConnectionBindingFunction.cs | 0 .../WebPubSubOutputBindingFunction.cs | 0 .../WebPubSubTriggerFunction.cs | 0 .../WebPubSubTriggerReturnValueFunction.cs | 0 5 files changed, 51 insertions(+), 33 deletions(-) rename sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/{tests/Samples => samples}/WebPubSubConnectionBindingFunction.cs (100%) rename sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/{tests/Samples => samples}/WebPubSubOutputBindingFunction.cs (100%) rename sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/{tests/Samples => samples}/WebPubSubTriggerFunction.cs (100%) rename sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/{tests/Samples => samples}/WebPubSubTriggerReturnValueFunction.cs (100%) diff --git a/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/README.md b/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/README.md index 185e7be074c4..2e45997783bb 100644 --- a/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/README.md +++ b/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/README.md @@ -2,6 +2,12 @@ This extension provides functionality for receiving Web PubSub webhook calls in Azure Functions, allowing you to easily write functions that respond to any event published to Web PubSub. +[Source code](https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/src) | +[Package](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.WebPubSub) | +[API reference documentation](https://azure.github.io/azure-webpubsub/references/functions-bindings) | +[Product documentation](https://aka.ms/awps/doc) | +[Samples](https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/) + ## Getting started ### Install the package @@ -56,60 +62,72 @@ In `Connect` and `Message` events, function will respect return values to send b ### Functions that uses Web PubSub input binding -```c# Snippet:WebPubSubConnectionBindingFunction -[FunctionName("WebPubSubConnectionBindingFunction")] -public static WebPubSubConnection Run( - [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req, - [WebPubSubConnection(Hub = "hub", UserId = "{query.userid}")] WebPubSubConnection connection) +```C# Snippet:WebPubSubConnectionBindingFunction +public static class WebPubSubConnectionBindingFunction { - Console.WriteLine("login"); - return connection; + [FunctionName("WebPubSubConnectionBindingFunction")] + public static WebPubSubConnection Run( + [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req, + [WebPubSubConnection(Hub = "hub", UserId = "{query.userid}")] WebPubSubConnection connection) + { + Console.WriteLine("login"); + return connection; + } } ``` ### Functions that uses Web PubSub output binding -```c# Snippet:WebPubSubOutputBindingFunction -[FunctionName("WebPubSubOutputBindingFunction")] -public static async Task RunAsync( - [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req, - [WebPubSub(Hub = "hub")] IAsyncCollector operation) +```C# Snippet:WebPubSubOutputBindingFunction +public static class WebPubSubOutputBindingFunction { - await operation.AddAsync(new SendToAll + [FunctionName("WebPubSubOutputBindingFunction")] + public static async Task RunAsync( + [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post")] HttpRequest req, + [WebPubSub(Hub = "hub")] IAsyncCollector operation) { - Message = BinaryData.FromString("Hello Web PubSub"), - DataType = MessageDataType.Text - }); + await operation.AddAsync(new SendToAll + { + Message = BinaryData.FromString("Hello Web PubSub"), + DataType = MessageDataType.Text + }); + } } ``` ### Functions that uses Web PubSub trigger -```c# Snippet: WebPubSubTriggerFunction -[FunctionName("WebPubSubTriggerFunction")] -public static void Run( - ILogger logger, - [WebPubSubTrigger("hub", WebPubSubEventType.User, "message")] ConnectionContext context, - string message, - MessageDataType dataType) +```C# Snippet:WebPubSubTriggerFunction +public static class WebPubSubTriggerFunction { - logger.LogInformation("Request from: {user}, message: {message}, dataType: {dataType}", - context.UserId, message, dataType); + [FunctionName("WebPubSubTriggerFunction")] + public static void Run( + ILogger logger, + [WebPubSubTrigger("hub", WebPubSubEventType.User, "message")] ConnectionContext context, + string message, + MessageDataType dataType) + { + logger.LogInformation("Request from: {user}, message: {message}, dataType: {dataType}", + context.UserId, message, dataType); + } } ``` ### Functions that uses Web PubSub trigger return value -```c# Snippet: WebPubSubTriggerReturnValueFunction -[FunctionName("WebPubSubTriggerReturnValueFunction")] -public static MessageResponse Run( - [WebPubSubTrigger("message", WebPubSubEventType.User)] ConnectionContext context) +```C# Snippet:WebPubSubTriggerReturnValueFunction +public static class WebPubSubTriggerReturnValueFunction { - return new MessageResponse + [FunctionName("WebPubSubTriggerReturnValueFunction")] + public static MessageResponse Run( + [WebPubSubTrigger("hub", WebPubSubEventType.User, "message")] ConnectionContext context) { - Message = BinaryData.FromString("ack"), - DataType = MessageDataType.Text - }; + return new MessageResponse + { + Message = BinaryData.FromString("ack"), + DataType = MessageDataType.Text + }; + } } ``` diff --git a/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubConnectionBindingFunction.cs b/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/samples/WebPubSubConnectionBindingFunction.cs similarity index 100% rename from sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubConnectionBindingFunction.cs rename to sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/samples/WebPubSubConnectionBindingFunction.cs diff --git a/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubOutputBindingFunction.cs b/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/samples/WebPubSubOutputBindingFunction.cs similarity index 100% rename from sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubOutputBindingFunction.cs rename to sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/samples/WebPubSubOutputBindingFunction.cs diff --git a/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubTriggerFunction.cs b/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/samples/WebPubSubTriggerFunction.cs similarity index 100% rename from sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubTriggerFunction.cs rename to sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/samples/WebPubSubTriggerFunction.cs diff --git a/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubTriggerReturnValueFunction.cs b/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/samples/WebPubSubTriggerReturnValueFunction.cs similarity index 100% rename from sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/WebPubSubTriggerReturnValueFunction.cs rename to sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/samples/WebPubSubTriggerReturnValueFunction.cs From c018766c89498628aecbdb8b714b8e619b35f466 Mon Sep 17 00:00:00 2001 From: Jialin Xin Date: Thu, 1 Jul 2021 11:45:53 +0800 Subject: [PATCH 3/3] fix link. --- .../Microsoft.Azure.WebJobs.Extensions.WebPubSub/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/README.md b/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/README.md index 2e45997783bb..f64da2ede16c 100644 --- a/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/README.md +++ b/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/README.md @@ -6,7 +6,7 @@ This extension provides functionality for receiving Web PubSub webhook calls in [Package](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.WebPubSub) | [API reference documentation](https://azure.github.io/azure-webpubsub/references/functions-bindings) | [Product documentation](https://aka.ms/awps/doc) | -[Samples](https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/tests/Samples/) +[Samples](https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/webpubsub/Microsoft.Azure.WebJobs.Extensions.WebPubSub/samples/) ## Getting started