From 00a9339fc83bc71f34f219075199d761d46cf47b Mon Sep 17 00:00:00 2001 From: Marc Duiker Date: Sat, 19 Mar 2022 21:04:00 +0100 Subject: [PATCH 1/4] Add blob lesson and code (WIP) --- lessons/dotnet6/blob/README.md | 617 ++++++++++++++++++ .../blob/blob-homework-resume-api-dotnet.md | 22 + .../blob/img/AzureFunctionsStorage.png | Bin 0 -> 9004 bytes lessons/dotnet6/blob/img/in-folder.png | Bin 0 -> 38257 bytes .../dotnet6/blob/img/player-1-in-folder.png | Bin 0 -> 42525 bytes .../blob/img/samples-workitems-output.png | Bin 0 -> 24672 bytes .../img/storage-explorer-sample-items.png | Bin 0 -> 12730 bytes .../azureite_start_blob_service.png | Bin 0 -> 25111 bytes .../azurite_blob_service_started.png | Bin 0 -> 10302 bytes .../dotnet6/prerequisites/azurite_files.png | Bin 0 -> 20244 bytes .../prerequisites/azurite_folder_location.png | Bin 0 -> 62380 bytes src/azurite/README.md | 5 + src/dotnet6/blob/AzFuncUni.Blob/.gitignore | 264 ++++++++ .../AzFuncUni.Blob/.vscode/extensions.json | 6 + .../blob/AzFuncUni.Blob/.vscode/launch.json | 11 + .../blob/AzFuncUni.Blob/.vscode/settings.json | 6 + .../blob/AzFuncUni.Blob/.vscode/tasks.json | 69 ++ .../blob/AzFuncUni.Blob/AzFuncUni.Blob.csproj | 27 + src/dotnet6/blob/AzFuncUni.Blob/Program.cs | 7 + .../StorePlayerWithStringBlobOutput.cs | 31 + src/dotnet6/blob/AzFuncUni.Blob/host.json | 11 + .../blob/AzFuncUni.Blob/local.settings.json | 7 + .../dotnet6/blob-dotnet6.code-workspace | 34 + 23 files changed, 1117 insertions(+) create mode 100644 lessons/dotnet6/blob/README.md create mode 100644 lessons/dotnet6/blob/blob-homework-resume-api-dotnet.md create mode 100644 lessons/dotnet6/blob/img/AzureFunctionsStorage.png create mode 100644 lessons/dotnet6/blob/img/in-folder.png create mode 100644 lessons/dotnet6/blob/img/player-1-in-folder.png create mode 100644 lessons/dotnet6/blob/img/samples-workitems-output.png create mode 100644 lessons/dotnet6/blob/img/storage-explorer-sample-items.png create mode 100644 lessons/dotnet6/prerequisites/azureite_start_blob_service.png create mode 100644 lessons/dotnet6/prerequisites/azurite_blob_service_started.png create mode 100644 lessons/dotnet6/prerequisites/azurite_files.png create mode 100644 lessons/dotnet6/prerequisites/azurite_folder_location.png create mode 100644 src/azurite/README.md create mode 100644 src/dotnet6/blob/AzFuncUni.Blob/.gitignore create mode 100644 src/dotnet6/blob/AzFuncUni.Blob/.vscode/extensions.json create mode 100644 src/dotnet6/blob/AzFuncUni.Blob/.vscode/launch.json create mode 100644 src/dotnet6/blob/AzFuncUni.Blob/.vscode/settings.json create mode 100644 src/dotnet6/blob/AzFuncUni.Blob/.vscode/tasks.json create mode 100644 src/dotnet6/blob/AzFuncUni.Blob/AzFuncUni.Blob.csproj create mode 100644 src/dotnet6/blob/AzFuncUni.Blob/Program.cs create mode 100644 src/dotnet6/blob/AzFuncUni.Blob/StorePlayerWithStringBlobOutput.cs create mode 100644 src/dotnet6/blob/AzFuncUni.Blob/host.json create mode 100644 src/dotnet6/blob/AzFuncUni.Blob/local.settings.json create mode 100644 workspaces/dotnet6/blob-dotnet6.code-workspace diff --git a/lessons/dotnet6/blob/README.md b/lessons/dotnet6/blob/README.md new file mode 100644 index 00000000..c971b5f1 --- /dev/null +++ b/lessons/dotnet6/blob/README.md @@ -0,0 +1,617 @@ +# Blob Bindings + + + +## **Goal** + +The goal of this lesson is to use Blob storage input and output bindings which lets you easily read & write blob data in your functions. In addition you'll create a Blob triggered function that reacts to changes in blob storage data. + +This lessons consists of the following exercises: + +|Nr|Exercise +|-|- +|0|Prerequisites +|1|[Using the Microsoft Azure Storage Explorer and Azurite Emulator](#1-using-the-microsoft-azure-storage-explorer-and-azurite-emulator) +|2|[Using `string` Blob output bindings](#2-using-string-Blob-output-bindings) +|3|[Using `CloudBlobContainer` Blob output bindings](#3-using-cloudblobcontainer-blob-output-bindings) +|4|[Using `dynamic` Blob output bindings](#4-using-dynamic-blob-output-bindings) +|5|[Using `Stream` Blob input bindings](#5-using-stream-Blob-input-bindings) +|6|[Using `CloudBlobContainer` Blob input bindings](#6-using-cloudblobcontainer-blob-input-bindings) +|7|[Using `dynamic` Blob input bindings](#7-using-dynamic-blob-input-bindings) +|8|[Creating a Blob triggered function](#8-creating-a-blob-triggered-function) +|9|[Homework](#9-homework) +|10|[More info](#10-more-info) + +> πŸ“ **Tip** - If you're stuck at any point you can have a look at the [source code](../../../src/dotnet6/AzureFunctions.Blob) in this repository. + +--- +## 0. Prerequisites + +| Prerequisite | Exercise +| - | - +| .NET 6 SDK | 2-8 +| Azure Functions Core Tools | 2-8 +| VS Code with Azure Functions extension| 2-8 +| REST Client for VS Code or Postman | 2-7 +| Azurite | 1-8 +| Azure Storage Explorer | 1-8 + +See [.NET 6 prerequisites](../prerequisites/README.md) for more details. + +## 1. Using the Microsoft Azure Storage Explorer and Azurite Emulator + +We're going to be using local storage instead of creating a storage account in Azure, this is great for local development. + +### Steps + +1. Start the Azurite blob service. If you have installed the Azurite VS Code extension, you can start the blob service via `CTRL+SHIFT+P`, and `Azurite: Start Blob Service`. +2. Open Azure Storage Explorer, expand Local & Attached > Storage Accounts > (Emulator - Default Ports) (Keys) > Right click on Blob containers and create a new `players` container. + ![Storage Explorer sample-items](img/storage-explorer-sample-items.png) +3. In the `players` container create a folder called `in`. + ![In folder](img/in-folder.png) +4. Drag [player-1.json](../../../src/dotnet6/AzureFunctions.Blob/player-1.json) there. You can create more player json files and add them here if you'd like, we've provided one example. + ![player-1 In folder](img/player-1-in-folder.png) +5. You're now all set to work with local storage. + +> πŸ“ **Tip** - Read about [Azurite](https://docs.microsoft.com/azure/storage/common/storage-use-azurite) and [Azure Storage Explorer](https://azure.microsoft.com/features/storage-explorer/). + +## 2. Using `string` Blob output bindings + +In this exercise, we'll be creating a HTTP Function App with the default HTTPTrigger and extend it with a Blob output binding in order to write a `Player` json object to a "players/out" path in Blob Storage. + +### Steps + +1. In VSCode Create a new HTTP Trigger Function App with the following settings: + 1. Location: *AzFuncUni.Blob* + 2. Language: *C#* + 3. .NET Runtime: *`.NET 6` (isolated)* + + If you don't see .NET 6, choose: + - `Change Azure Functions version` + - Select `Azure Functions v4` + - Select `.NET 6 (isolated)` + + > πŸ“ **Tip** - More information about the isolated process can be found in the [official Azure documentation](https://docs.microsoft.com/azure/azure-functions/dotnet-isolated-process-guide). + + 4. Template: *HttpTrigger* + 5. Function name: *StorePlayerWithStringBlobOutput* + 6. Namespace: *AzFuncUni.Blob* + 7. AccessRights: *Function* +2. Once the Function App is generated, add a reference to the `Microsoft.Azure.WebJobs.Extensions.Storage` NuGet package to the project. This allows us to use bindings for Blobs (and Queues): + + 1. Ensure you're in the folder where the `.csproj` file is located. + 2. Type: `dotnet add package Microsoft.Azure.WebJobs.Extensions.Storage --version 5.0.0`. + 3. Your .csproj file should include this line now: + ```xml + + ``` + +3. We want to store an object with (game)player data. Create a new file in the project called `Player.cs` and add the contents from this [Player.cs](../../../src/dotnetcore31/AzureFunctions.Blob/Models/Player.cs) file. +4. Now open the `StorePlayerWithStringBlobOutput.cs` function file and add the following output binding directly underneath the `HttpTrigger` method argument: + + ```csharp + [Blob( + "players/out/string-{rand-guid}.json", + FileAccess.Write)] out string playerBlob + ``` + + > πŸ”Ž **Observation** - The first part parameter of the `Blob` attribute is the full path where the blob will be stored. The **{rand-guid}** section in path is a so-called **binding expression**. This specific expression creates a random guid. There are more expressions available as is described [in the documentation](https://docs.microsoft.com/azure/azure-functions/functions-bindings-expressions-patterns). The second parameter indicates we are writing to Blob Storage. Finally we specify that there is an output argument of type `string` named `playerBlob`. + + > πŸ”Ž **Observation** - Notice that we're not specifying the Connection property for the `Blob` binding. This means the storage connection of the Function App itself is used for the Blob storage. It now uses the `"AzureWebJobsStorage"` setting in the `local.settings.json` file. The value of this setting should be: `"UseDevelopmentStorage=true"` when emulated storage is used. When an Azure Storage Account is used this value should contain the connection string to that Storage Account. + +5. Go back to the function class. We'll be doing a POST to the function so the `"get"` can be removed from the `HttpTrigger` attribute. +6. Change the function input type and name from `HttpRequest req` to `Player player` so we have direct access to the `Player` object in the request. +7. Remove the existing content of the function method, since we'll be writing a new implementation. +8. To return a meaningful response the the client, based on a valid `Player` object, add the following lines of code in the method: + + ```csharp + playerBlob = default; + IActionResult result; + + if (player == null) + { + result = new BadRequestObjectResult("No player data in request."); + } + else + { + result = new AcceptedResult(); + } + + return result; + ``` + +12. Since we're using `string` as the output type the `Player` object needs to be serialized. This can be done as follows inside the `else` statement in the method: + + ```csharp + playerBlob = JsonConvert.SerializeObject(player, Formatting.Indented); + ``` + +13. Ensure that the function looks as follows: + + ```csharp + public static class StorePlayerWithStringBlobOutput + { + [FunctionName(nameof(StorePlayerWithStringBlobOutput))] + public static IActionResult Run( + [HttpTrigger( + AuthorizationLevel.Function, + nameof(HttpMethods.Post), + Route = null)] Player player, + [Blob( + "players/out/string-{rand-guid}.json", + FileAccess.Write)] out string playerBlob) + { + playerBlob = default; + IActionResult result; + + if (player == null) + { + result = new BadRequestObjectResult("No player data in request."); + } + else + { + playerBlob = JsonConvert.SerializeObject(player, Formatting.Indented); + result = new AcceptedResult(); + } + + return result; + } + } + ``` + +11. Build & run the `AzureFunctions.Blob` Function App. +12. Make a POST call to the `StorePlayerWithStringBlobOutput` endpoint and provide a valid json body with a `Player` object: + + ```http + POST http://localhost:7071/api/StorePlayerWithStringBlobOutput + Content-Type: application/json + + { + "id": "{{$guid}}", + "nickName" : "Ada", + "email" : "ada@lovelace.org", + "region" : "United Kingdom" + } + ``` + + > πŸ“ **Tip** - The `{{$guid}}` part in the body creates a new random guid when the request is made. This functionality is part of the VSCode REST Client extension. + +13. > ❔ **Question** - Is there a blob created blob storage? What is the exact path of the blob? + +14. > ❔ **Question** - What do you think would happen if you run the function again with the exact same input? + +## 3. Using `CloudBlobContainer` Blob output bindings + +In this exercise, we'll be adding an HttpTrigger function and use the Blob output binding with the `CloudBlobContainer` type in order to write a `Player` json object to a "players/out" path in Blob Storage. + +### Steps + +1. Create a copy of the `StorePlayerWithStringBlobOutput.cs` file and rename the file, the class and the function to `StorePlayerWithContainerBlobOutput`. +2. Change the `Blob` attribute as follows: + + ```csharp + [Blob( + "players", + FileAccess.Write)] CloudBlobContainer cloudBlobContainer + ``` + + > πŸ”Ž **Observation** - The `CloudBlobContainer` refers to a blob container and not directly to a specific blob. Therefore we only have to specify the `"players"` container in the `Blob` attribute. +3. Update the code inside the `else` statement. Remove the line with `playerBlob = JsonConvert.SerializeObject...` and replace it with: + + ```csharp + var blob = cloudBlobContainer.GetBlockBlobReference($"out/cloudblob-{player.NickName}.json"); + var playerBlob = JsonConvert.SerializeObject(player); + await blob.UploadTextAsync(playerBlob); + ``` + + > πŸ”Ž **Observation** - Notice that the argument for getting a reference to a blockblob includes the `out/` path. This part is a virtual folder, it is not a real container such as the `"player"` container. The filename of the blob is a concatenation of "cloudblob-", the nickname of the player object, and the json extension. +4. Build & run the `AzureFunctions.Blob` Function App. +5. Make a POST call to the `StorePlayerWithContainerBlobOutput` endpoint and provide a valid json body with a `Player` object: + + ```http + POST http://localhost:7071/api/StorePlayerWithContainerBlobOutput + Content-Type: application/json + + { + "id": "{{$guid}}", + "nickName" : "Margaret", + "email" : "margaret@hamilton.org", + "region" : "United States of America" + } + ``` + +6. > ❔ **Question** - Is the blob created in the `players/in` location? +7. > ❔ **Question** - What happens when you run the function with the exact same input? +8. > ❔ **Question** - Use one of the other `Player` properties as the partial filename. Does that work? + +## 4. Using `dynamic` Blob output bindings + +In this exercise, we'll be adding an HttpTrigger function and use a dynamic Blob output binding in order to write a `Player` json object to a "players/out" path in Blob Storage. + +> πŸ“ **Tip** - Dynamic bindings are useful when output or input bindings can only be determined at runtime. In this case we'll use the dynamic binding to create a blob path that contains a property of a `Player` object that is provided in the HTTP request. + +### Steps + +1. Create a copy of the `StorePlayerWithStringBlobOutput.cs` file and rename the file, the class and the function to `StorePlayerWithStringBlobOutputDynamic`. +2. Remove the existing `Blob` attribute from the method and replace it with: + + ```csharp + IBinder binder + ``` + + > πŸ”Ž **Observation** - The IBinder is the interface of a dynamic binding. It only has one method `BindAsync()` which we'll use in the next step. +3. Update the `else` statement to it looks like this: + + ```csharp + var blobAttribute = new BlobAttribute($"players/out/dynamic-{player.Id}.json"); + using (var output = await binder.BindAsync(blobAttribute)) + { + await output.WriteAsync(JsonConvert.SerializeObject(player)); + } + result = new AcceptedResult(); + ``` + + > πŸ”Ž **Observation** - First, a new instance of a `BlobAttribute` type is created which contains the path to the blob. A property of the `Player` object is used as part of the filename. Then, the `BindAsync` method is called on the `IBinder` interface. Since we'll be writing json to a file, we can use the `TextWriter` as the generic type. The `BindAsync` method will return a `Task`. When the method is awaited we can acces methods on the `TextWriter` object to write the serialized `Player` object to the blob. +4. Build & run the `AzureFunctions.Blob` Function App. +5. Make a POST call to the `StorePlayerWithStringBlobOutputDynamic` endpoint and provide a valid json body with a `Player` object: + + ```http + POST http://localhost:7071/api/StorePlayerWithStringBlobOutputDynamic + Content-Type: application/json + + { + "id": "{{$guid}}", + "nickName" : "Grace", + "email" : "grace@hopper.org", + "region" : "United States of America" + } + ``` + +6. > ❔ **Question** - Is the blob created in the `players/in` location? +7. > ❔ **Question** - Could you think of other scenarios where dynamic bindings are useful? + +## 5. Using `Stream` Blob input bindings + +Let's see how we can use the `Stream` type to work with Blobs. We will create an HTTP Trigger function that expects a player ID in the URL, and with that ID it will return the content from the Blob that matches it. + +### Steps + +1. Create a new HTTP triggered function, we will name it GetPlayerWithStreamInput.cs +2. We're going to make some changes to the method definition: + 1. Change the `HTTPTrigger` `Route` value, set it to + + ```csharp + Route = "GetPlayerWithStreamInput/{id}" + ``` + + 2. Add a parameter to the method + + ```csharp + string id + ``` + + 3. Add the Blob Input Binding + + ```csharp + [Blob( + "players/in/player-{id}.json", + FileAccess.Read)] Stream playerStream + ``` + + 4. Your method definition should should look like this now: + + ```csharp + [FunctionName(nameof(GetPlayerWithStreamInput))] + public static async Task Run( + [HttpTrigger( + AuthorizationLevel.Function, + nameof(HttpMethods.Get), + Route = "GetPlayerWithStreamInput/{id}")] HttpRequest request, + string id, + [Blob( + "players/in/player-{id}.json", + FileAccess.Read)] Stream playerStream) + ``` + +3. Let's make some edits to the body of the method. + 1. Remove all the code in the body. + 2. Create an object to store our IActionResult: + + ```csharp + IActionResult result; + ``` + + 3. Let's make sure the id is not empty or null, if it is, return a BadRequestObjectResult with a custom message: + + ```csharp + if (string.IsNullOrEmpty(id)) + { + result = new BadRequestObjectResult("No player id route."); + } + ``` + + 4. If we do have a value for id, use StreamReader to get the contents of playerStream and return it: + + ```csharp + else + { + using var reader = new StreamReader(playerStream); + var content = await reader.ReadToEndAsync(); + result = new ContentResult + { + Content = content, + ContentType = MediaTypeNames.Application.Json, + StatusCode = 200 + }; + } + return result; + ``` + + > πŸ”Ž **Observation** - `StreamReader` reads characters from a byte stream in a particular encoding. In this demo we are creating a new `StreamReader` from the playerStream. The `ReadToEndAsync()` method reads all characters from the playerStream (which is the content of the blob). We then create a result with the content of the blob, json as the `ContentType` and `StatusCode 200` to indicate success. + +4. Run the Function App, make a request to the endpoint, and provide an ID in the URL. As long as there is a blob with the name matching the ID you provided, you will see the contents of the blob output. + 1. URL: + + ```http + GET http://localhost:7071/api/GetPlayerWithStreamInput/1 + ``` + + 2. Output: (this is the contents of [player-1.json](../../../src/dotnetcore31/AzureFunctions.Blob/player-1.json) make sure it's in your local storage blob container, we covered this in the first step of this lesson.) + + ```json + { + "id":"1", + "nickName":"gwyneth", + "email":"gwyneth@game.com", + "region": "usa" + } + ``` + +## 6. Using `CloudBlobContainer` Blob input bindings + +Let's see how we can use the `CloudBlobContainer` type to work with Blobs. We will create an HTTP Trigger function that will return the names of every blob in our `players` container. + +### Steps + +1. Create a new HTTP Trigger Function App, we will name it `GetBlobNamesWithContainerBlobInput.cs`. +2. We're going to make some changes to the method definition: + 1. Change the HTTPTrigger to only allow GET calls: + + ```csharp + nameof(HttpMethods.Get) + ``` + + 2. Add the Blob Input Binding: + + ```csharp + [Blob( + "players", + FileAccess.Read)] CloudBlobContainer cloudBlobContainer) + ``` + + 3. Your method definition should should look like this now: + + ```csharp + public static IActionResult Run( + [HttpTrigger( + AuthorizationLevel.Function, + nameof(HttpMethods.Get), + Route = null)] HttpRequest request, + [Blob( + "players", + FileAccess.Read)] CloudBlobContainer cloudBlobContainer) + ``` + +3. Let's make some edits to the body of the method. + 1. Remove all the code in the body. + 2. Create an object to store our the list of blobs in our container: + + ```csharp + var blobList = cloudBlobContainer.ListBlobs(prefix: "in/")OfType(); + ``` + + 3. Create an object to store the names of each blob from the blobList: + + ```csharp + var blobNames = blobList.Select(blob => new { BlobName = blob.Name }); + ``` + + 4. Return an OkObjectResult with the blobNames found: + + ```csharp + return new OkObjectResult(blobNames); + ``` + + > πŸ”Ž **Observation** - Azure storage service offers three types of blobs. Block blobs are optimized for uploading large amounts of data efficiently (e.g pictures, documents). Page blobs are optimized for random read and writes (e.g VHD). Append blobs are optimized for append operations (e.g logs). Read more [here](https://docs.microsoft.com/rest/api/storageservices/understanding-block-blobs--append-blobs--and-page-blobs) + +4. Run the Function App and make a request to the endpoint. + 1. URL: + + ```http + GET http://localhost:7071/api/GetBlobNamesWithContainerBlobInput + ``` + + 2. Output: (In my case, I have 2 play json files) + + ```json + [ + {"blobName":"in/player-1.json"}, + {"blobName":"in/player-2.json"} + ] + ``` + +## 7. Using `dynamic` Blob input bindings + +Often you won't know the path of the blob until runtime, for those cases we can perform the binding imperatively in our code (instead of declaratively via the method definition). Meaning the binding will execute at runtime instead of compile time. For this we can use `IBinder`. Let's take a look. + +Okay so to summarize, use dynamic when you are getting the path at runtime. String and byte[] load the entire blob into memory, not ideal for large files, but Stream and CloudBlockBlob with the blob binding don’t load it entirely into memory, so ideal for processing large files. + +### Steps + +1. Create a new HTTP Trigger Function App, we will name it `GetPlayerWithStringInputDynamic.cs`. +2. We're going to make some changes to the method definition: + 1. Change the HTTPTrigger to only allow GET calls: + + ```csharp + nameof(HttpMethods.Get) + ``` + + 2. Add an IBinder parameter to the method definition: + + ```csharp + IBinder binder + ``` + + 3. Your method definition should should look like this now: + + ```csharp + public static async Task Run( + [HttpTrigger(AuthorizationLevel.Function, "get", Route = null)] HttpRequest request, + IBinder binder + ``` + +3. Let's make some edits to the body of the method. + 1. Remove all the code in the body. + 2. Create a string object to store `id` and `result`: + + ```csharp + string id = request.Query["id"]; + IActionResult result; + ``` + + 3. Let's do some validation to make sure we have a value for `id`. If we do have a value for `id` we create a `BlobAttribute` with the value in the path. Then we will use `BindAsync to read the contents of the blob and finally assign the content to the result and return the result. + + ```csharp + if (string.IsNullOrEmpty(id)) + { + result = new BadRequestObjectResult("No player data in request."); + } + else + { + string content; + var blobAttribute = new BlobAttribute($"players/in/player-{id}.json"); + using (var input = await binder.BindAsync(blobAttribute)) + { + content = await input.ReadToEndAsync(); + } + result = new ContentResult + { + Content = content, + ContentType = MediaTypeNames.Application.Json, + StatusCode = 200 + }; + } + + return result; + ``` + + > πŸ”Ž **Observation** - We are using `TextReader` for this simple example, but other options include `Stream` and `CloudBlockBlob` which we've used in other examples. + + > πŸ”Ž **Observation** - By wrapping the Binder instance in a `using` we are indicating that the instance must be properly disposed. This just means that once the code inside of the `using` is executed, it will call the Dispose method of `IBinder` and clean up the object. [Here](https://www.codeproject.com/Articles/6564/Understanding-the-using-statement-in-C) is a great explanation. + +4. Run the Function App, make a request to the endpoint, and provide an ID in the URL. As long as there is a blob with the name matching the ID you provided, you will see the contents of the blob output. + 1. URL: + + ```http + GET http://localhost:7071/api/GetPlayerWithStringInputDynamic/1 + ``` + + 2. Output: (this is the contents of [player-1.json](../../../src/dotnetcore31/AzureFunctions.Blob/player-1.json) make sure it's in your local storage blob container, we covered this in the first step of this lesson.) + + ```json + { + "id":"1", + "nickName":"gwyneth", + "email":"gwyneth@game.com", + "region": "usa" + } + ``` + +## 8. Creating a Blob triggered Function App + +First, you'll be creating a Function App with the BlobTrigger and review the generated code. + +### Steps + +1. Create the Function App by running `AzureFunctions: Create New Project` in the VSCode Command Palette (CTRL+SHIFT+P). + + > πŸ“ **Tip** - Create a folder with a descriptive name since that will be used as the name for the project. + +2. Select the language you'll be using to code the function, in this lesson we'll be using `C#`. +3. Select `BlobTrigger` as the template. +4. Give the function a name (e.g. `HelloWorldBlobTrigger`). +5. Enter a namespace for the function (e.g. `AzureFunctionsUniversity.Demo`). +6. Select `Create a new local app setting`. + + > πŸ”Ž **Observation** - The local app settings file (local.settings.json) is used to store environment variables and other useful configurations. + +7. Select the Azure subscription you will be using. +8. Since we are using the BlobTrigger, we need to provide a storage account, select one or create a new storage account. + 1. If you select a new one, provide a name. The name you provide must be unique to all Azure. +9. Select a resource group or create a new one. + 1. If you create a new one, you must select a region. Use the one closest to you. +10. Enter the path that the trigger will monitor, you can leave the default value `samples-workitems` if you'd like or change it. Make sure to keep this in mind as we will be referencing it later on. +11. When asked about storage required for debugging choose _Use local emulator_. + + ![AzureFunctionsRuntime storage](img/AzureFunctionsStorage.png) + +Now the Function App with a BlobTrigger function will be created. + +## 8.1 Examining the Function App + +Great, we've got our Function Project and Blob Trigger created, let's examine what has been generated for us. + +```csharp +public static void Run( + [BlobTrigger( + "samples-workitems/{name}", + Connection = "azfunctionsuniversitygps_STORAGE")] + Stream myBlob, + string name, + ILogger log) + { + log.LogInformation($"C# Blob trigger function + Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes"); + } +``` + +This is the function with BlobTrigger created for us. A few things in here were generated and set for us thanks to the wizard. Let's look at the binding. + +```csharp +[BlobTrigger( + "samples-workitems/{name}", + Connection = "azfunctionsuniversitygps_STORAGE")] Stream myBlob +``` + +We can see this BlobTrigger has a few parts: + +- **"samples-workitems/{name}"**: This is the path we set that the function will monitor. +- **Connection = "azfunctionsuniversitygps_STORAGE"**: This is the value in our local.settings.json file where our connection string to our storage account is stored. +- **Stream myBlob**: This is the object where the blob that triggered the function will be stored and can be used in code. + +As for the body of the function: + +```csharp +log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes"); +``` + +the name and size of the blob that triggered the function will print to console. + +## 8.2 Run the function + +Okay now it actually is time to fun the function, go ahead and run it, and then add a file to the blob container that the function is monitoring. You should see output similar to this. The name and size of the tile you uploaded will appear in your Visual Studio terminal output. + +![Storage Explorer sample-items](img/samples-workitems-output.png) + +> πŸ”Ž **Observation** - Great! That's how the BlobTrigger works, can you start to see how useful this trigger could be in your work? + +## 9. Homework + +[Here](blob-homework-resume-api-dotnet.md) is the assignment for this lesson. + +## 10. More info + +For more info about the Blob Trigger and bindings have a look at the official [Azure Functions Blob Bindings](https://docs.microsoft.com/azure/azure-functions/functions-bindings-storage-blob) documentation. + +--- +[πŸ”Ό Lesson Index](../../README.md) diff --git a/lessons/dotnet6/blob/blob-homework-resume-api-dotnet.md b/lessons/dotnet6/blob/blob-homework-resume-api-dotnet.md new file mode 100644 index 00000000..8a7d6817 --- /dev/null +++ b/lessons/dotnet6/blob/blob-homework-resume-api-dotnet.md @@ -0,0 +1,22 @@ +# Blob lesson Homework, improve your resume API, get the content from blob + +## Goal 🎯 + +The goal for this lesson is to grab the resume API you built in the [first homework assignment](../http/http-homework-dotnet.md) and instead of including the json in your code, upload it to a blob container and read its contents using Blob bindings. + +## Assignment + +Create an Azure Function with HTTP trigger that and Blob binding that returns your resume information in JSON. The JSON should not be in your code, you should upload it to a blob container and grab it's contents from there, when the function is triggered. + +## Resources + +- Solution can be found [here](../../../src/dotnetcore31/homework/resume-api/ResumeFromBlob.cs), try to accomplish it on your own first. +- Make sure to update your local.settings.json to use development storage and to have either storage emulator or Azurite running. +- Make sure your resume json file is in the correct blob container that your function is looking for. + + +## Share + +Please share you solutions on LinkedIn and Twitter using the #AzFuncUni hashtag and mention us. We would love to see it! + +[Gwyneth](https://twitter.com/madebygps) and [Marc](https://twitter.com/marcduiker) \ No newline at end of file diff --git a/lessons/dotnet6/blob/img/AzureFunctionsStorage.png b/lessons/dotnet6/blob/img/AzureFunctionsStorage.png new file mode 100644 index 0000000000000000000000000000000000000000..d6b09ba2a2c0f363a2f02f273718e688be59f8bc GIT binary patch literal 9004 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 Yno{(4x?ZUz{h>qaj-FcC?Z-j?1Edo1bpQYW literal 0 HcmV?d00001 diff --git a/lessons/dotnet6/blob/img/in-folder.png b/lessons/dotnet6/blob/img/in-folder.png new file mode 100644 index 0000000000000000000000000000000000000000..662043e7c7f40821faeabcadd48c3a10c9b00d81 GIT binary patch literal 38257 zcmbrl2Uru?-!|;7ySlCggpt)EzrOFi-uL>RnF}&=X6BrkbAIR7?)$`F zwZFXe$2~u;Teohj)fLNY>(+hmwQk)vNk41=N)CS4f(L%SxpVFEuj{J&_OgMK@BGi( zonN=ECS~*Ljqic;O}DSO-dVS9+xxY@Z^-b{o9otPY_PICe?8iZH@4}ehc8O0WO+Y4 zet3RA{kww)zEO=-|DikIX{T#_#%mYnodK8*(x11gY`#wq)cy4})oI7;ofYR^LwCAX zcIO{Xuf1^fn@!ul{VVG`k8=d&ia9HmWzK5x_v`xridy(ED$#u*`w-Q4C+~#`>w}3u zQTV~&LY-f)=5Ecr303_bu{V|=s`;Zc`Qh-CB*q=f#>-wpn*pdltj%TwS#FHz0D zylEM<@(YfhY@ZbJ@!*92f?k3U6 zS{Quo=D!Qpt=sY~+T-8j<7dlMasGLCAGOV9X|-+E$L}ZnQ}McW-Y{D5q@B0O?H578hUo<%@YkK&x_PCI6CvkM$J;#_%HaO5K&3g zGWR%73P%gG>%U)0_~nH(!8zFC_)4Iav-T}LE7@Qs@l5X5T3*(+bM3Q7r^I`_vf8Fq zaqcG~vWaI}st2o;3sEE+_qn9bAZl~f9#X{Hd*3fC_UH=*D(Kq{q^gYj+hQurSUET< zi!wt}%1C2o%oTgEe0eGb$E^kmJ<6P|BGG4e*oOm98K^D)r(SQgK|$ zWznQe6Vh)k435#;aRm0hu)?)&) zV`Q9W%wyz23oCZ=D(IIeMo81MF1iHI0)=LWGzx@c5%jTz6&5y1BeeMsq*BIYrRBop z9A|k*Ew{RDWpKWQ#YL@rzOT}n9opKZV+U3UQc8FrK0^)kMA)xX!GH=+T~{&xvQFtz zMV^ZT<3G~XdzD|_tF-kRF-PsP&yF!^TPvJ#ktrZ?^d9Z>*sv%q&?=%#&N}lM4+#L?LHUyV8jK^?W>-rU0W|NN(jbW85*fy+UX#=J$^*K$W;V+bA zjBl~{lq3@7-hQ`fA>Gkl6z`<{t6q&%h*geeGD6K5nSOmaCPX~DSSg$lkTGv`LilZb z3+1j#kZ41$1uBN1Uga7!7J(Xcl92dB_!1@K=Fhz)D@^%@ zIR2EC^FO`(@&UpQk6!#e+uf`2)61-OZa+q`SyBZ@=_cpM+I1|RdfBAnl1uYqD)x9f z^PTSw_b7%k!K)K0sIuuYZ3I=r$;wGPfU4^>M1h{U{)Yn+0+!d46j^lqNam$Y!#*jX zYP7P#$rmQT$QaB#uRDMck@)&!PU*3RhdsYe(9Yv_cnfixbBiHzltJ_5^-Anmn%OYL zVkW!6_C@3(`L-lFyDD zOEEjA$d)_OY?t;A~Od+_RoJ%+^(LO<0(t;S07VooQwmK{y&QH1LX)*9h8(8aJWx^a~hp(}e;p{4k8nRuesyWFumZ`u%GxK_?_t!zGuuZn3a#)frw5ka0y&5gr;er^>t0hD5y;D%vJ zXCySBzu?0!-$Sp~HXLOKTFvBZjb2-XZVLF?m+^mC;m7Z?axF~C#>>yfzR}L~;Pjab zKh$^L$||mL1_V%8324=Y1l{Trdjro6-Jx}2pnUq;B!?MgDMUDBn-(?#&<-MSc@bIo z$tQ)H*4SGK%n7WsFd*1DBf)SsX!ypDoz~z&Q3VY2^wLUUMSL2rwfcdkVIUc}rK#tqUmFa>4O2UCA+e5O2b zO!Oo4-nC8FlM778Pm)$oW3Ti4PKO`7wfuV~VcxeOwfcaD_nXE)YFrs0$tZ;#@lSg% zNy#nbid1;(s<_Btte`(+8V$Ty1FGh1Om1fYbP!7L+GxT)Ze4uVrZs_cJuUpJFl^{~ z9)o|9>BSY43t$)D@A&JbBrH&p)b-cFFN?);CkSho)PlC1kx zDy|1tW$0#>IR6p96j%S&$#?aR7P6J$f`asNUWlz~1aVS-}_D%)k=!=AIDSv+ie$_o%+Lo&49c(?Ymy9(qrW+;obpzT;XGi?y<=w>jYy$>cRiP zY2Z)lNrEifnhz&V)hKP|ZM?menV&M-+ZFmX`tk8{m^VySO-5=b9zG(*#G|Zi=au%g z&0Q%$$%RD+`VReH?LFicExMGXq@)D7`Z-;HVSK^XHs`>RBYoS|)chaE#~ZY_x9|4$ zp4=k18Gi@l6>;Za%cbDQb);W&DR#LoX$m+GGsXyU*k z?XM&E^3K36+_SWz!vBwLzCKA6cj4rUK+n4S?J<}z%V_8%4sM*AnwnbcS|*PZAM)io zKGPotJBn?((7)G?rOGvYhg0R7wY9Zpe#>;2H1uh4y^wP`ht5S*a>Vh%$G|StdjcI( z+)VL-HbH<(Yr7H6*eOERe)qrcKFOPbw#DF!wxcYB{o8Qw$ukF!oJ=t2pv2p4{92H; zY&;NcdJ6Fq>nB^CBld?Vz{#moH3t^R&HDwWszv_s@stWLtxgkdj@m{*cq%kcA!4W% z`}>YLV2#g>jv3R+Ed+%rcdUnWw%InWovmFzbi^JP(@xmMQpNd_bzT)*Nx@jeA9XMZdIy1Ug+b?MCOaI;f{$dM+ z=Kp5*sxxLzH7InB#itD(THrSqvw@GTUjp9ubjd*YWKD;mU5OeX{zeWp0cUcJ&*!8B zW!VFti;GDvR?}IV6TlnW;K)<=PI);(i=!SIrx?TWQ!Z4V8fyozi`@5Cw930Q$>pI~ z;L_R-ul!%*@$Xx9?z$XLe|6@7M$+YTwxg1oWA51J&z~D7+7+^^eL<>j2(y;{~@K} zX7=eg$p1!|TlcZla8_WI|{qK zooMUh2t~Hv-$y@_Yi|q8*p%m=GUaMOHLky&J^xkK*5r*2|9^k}zumC*o7LXZUIF=w zrZ^1voF3nLueA;I0Y0CsMdAG8Xt?N{MTdq0cF=Fv(U4#GWo3t7zJP^4q5~9=!^XOEbQRgiMDU) znrOPNiRRiSE8m;@)%dJimt*ulm`MdwfHbBF_o_lD_5paYxt*JZ5lASA~+d->eer%eYsGr|&pWX(Z zoE1!VsJA7abn{552qhu^>85tBn`AcVS1m-Ta9?Q;M{(b$n+cudeA~vg|KiOd|#`HW}hhVe4 z*{nXd@MmqD@`|xhlRJYW#jP^P_P;0j4whZs@*|CB%?9eZ?48t;7iSKoxRexMjgVmX zf3-ziZ1gQ!1CmB-#uJ- zUXX$S9OeWd3ceFYLAKlkpBoMx?q^}s$MldP%6yfN_7*EYF;^~h(VdBl8KG7oV9fH4 zhC8#WLdR>sHrrE54&o0wQ~HdjK1}NdzBydu-SJ}-73$pbo~5?bASyNgX!t1cD$6ItCqxbVrnr46`3Z^+Dn%m^XW!hi?3wVGf?3O z0a1BPOhu@2z4%UrbJfWRjM{E8Xs|q#q(0>tH8#d;WZ)gTXgYb(LqLT5vTbEnyFn=M z*KH%6Puw`MS~upR#UU(aPy!LW*%99G(xTvyuG6vv1vSq@$0KhjRf$a6%E$}uQWe_hjm;4V_M%uv4KGOh#@9RqpgG5Zi`g zk4K=RL{RW;R*tZNxGU_ptK#*&-QVlvx-nqNHsqvpO6z+S3^v;|;!sqNp3zWWn^ri) ze5F)22FJKFQt;h&*v5=(vnV4#aJbFdHfWEEy87#~w5pt>3tQ)+aqyO;j+?92GD|*e zUf!5my;=R_mkVDWP^Q|0D#Yo((~YcR7aJmN>$f>p%@zP|$KIjS;GuK8&R5eANP5@# z&)!&VG2v?9_2V>NmRIq;@pm_U@`4;((^5TqCHXXQ#D3MTkdQwk+=c=5x=K)7DB)K0@BLS zduPJRV?R4dpjAareYHj ztGjHEOFy62sTb}R{tU8&xzm?lN!=nGOhQJ&o5-5T=}`aR%S%}`^Dsjq`-b>}8+&6% z+80{CPpthwP>lcmLc>I*m;Sa;g%>k`s^R-`sL1(yHKr z>T8>49#d(!B>9g8h@AJZ_jF`K8pOgR`4WY{`<7PN(y7ZOO)s;c5MFVP-(rhwh_%X z+v0t1Zd=eEYN1fyGbY)cARQi2pkP|`pXb*~k+Gvq;!jbd@aALOxKHhjx zGdFtQ0A}l@KRIFM{xXw=M;fW;=cskispg$j`uVXKB1bnwl!tRbw)-Rn9S?zjyVkhu zz&4~GY9h&CFy2s`h0C5t*cI{Y7F}QzF}U7QR|V3Ozr4`KxAwa=Fn%*dzxB((sELQ_ zw3AY4Bv1N%F1aKpEN}$vr??T9QVyG$(pO`pmok%^bLHIK4MrI^Aawf$T&Qa2o!MX} zSa#o~LW@CAFEq#~(@MK-ukC&1k!m2_;64MQG2dXzqF` zkM+SyhnAl6Z{NsH_i1~f{Aj1^)vosC8qg)bQFVModDU;1md?|Bn8F4p_^n%dVC<|) ziQ|)o`iq*(aTwrlk~E6Y(|+Tc$X3v7FSmKY@i9 z&|iDBhFg)jGvyW4ixR|W4SA>iS~QolW#->R)$+c{5UKV>!g|MhjZV!^M>0-!N^d;6 zD--XUoOy4Fg zt9`5N3cL!=!_;{lOKE*wz18IqV26=89@7C5!?wJ+&L- z3=Tj2Ow33|`YK0{(o{lLG^-Nz!#0EQuPw$xod+Y{zWaVFODA+McYXUj{-nF|&TQW% z@%ke#PBB!HLV=*ua}ZVv5wEY}s<`3Fc%#-3zfcx&1qdYluI-Qd>F{s58geccZ%x4p05nx>Xasd?OUfJNza+q<>482gH{BTTXc` zihT)Rm%D8LSzKkwHG!GYF(Wvh{rWyGH^V1HIpk=;Yha|}Z6daGKyRzfZFZ6R^2CN>J7k8L#5|exycg`>cQRBd zAJ4lK5BPMWdPHN{H@HYG2)JGT8e=fEn<41%h@fUHtk*KGt`!$Cr{YIQpYC27SaHdy zv9L9h&iQayyMQFmT25=B*BIOx#C!JoT7QRO2vxx1jZE}@Q{kg~m6Jp8BREP-nN2meK`M39lK?O3L#zz+`uy(5W6Dp74 zS>)-~E}izwyhL&DNY;dmy(AkZdn>sO4f}0dp8*&Xa%VB8YbSU->gC(j2q+n79k+j5 zKz5zh30-8Ds1hzzbPr)q)Z~JX?v8#B$^7YvXLc`t2g{qViH<%Gem8TGq7EDS4g8zz z&r-C}-}XpPK~+mxv1EUE!D#c08ZKzWFyH97mC&qBrvE&Ix+jVv$&&ditr1muu91=u z3)i5@!k`y2oo!35m0BT#L7(RE(WH^0>W7t@n8OH^A3Mo2{ zmF;;k>p5I5vEC-pg;8}fxwt8TroT=us&(-8SZl$mUZ6PQ55A!SlOqQ;Wmb5wWRJ`X6Us$+$ z6UOP4R$lMJ7EA2Ktj)eGttFrt*hLTJ4bBEiMY0;DMEm{jhH5}OZOvT}7J{s_9x83i zCH!l#pA}5cYo8*lz}ZgrV*CljV&$f!p^h{=+ut;yJ_3gjFn!exukv(rKVXf<*D^_o zQ)v`0kTfBJQ1XO+SJp-MP_aR_y6G?UF>IFLm0s=AZsavhFH>6fUC(Y>$`qcH2gwI} zhcKnuu^E>bEsc`(+l+rxvH^4hf~$!6xEV z{+i~31?>eE-?Rk}^SYKR4V%WZVnHz?j=%iscVXjq{fj_uLY|U^QMl76R9)q=s(dGq z#vp;cQNI->4xrCitwJg2N5(ir4)6X2Y6JE!a?i7|TrUG^BgFRaI0BB zd*M3yHYr8+24TTodN`7O8Rbj3ACskdh=rji?cuYvDEO7v}zrN^wQ5U!Vdv5G44zEKjr3dqk{cp;KIq{WYz8yH6$ zyux_Cy+;BOp)qzRpOmCr$Z`CIpgw6Z2;ViQVE_Q)ar&aS1y8USMe&I~`$zyBEBl_* z|F~EZ8(bcU+c;%dfsN30GM~e23CaaS;n1->I~5;!DQzjhU7Kz=dd?KZ8QLljF=!fY zWdA+IpIf|`^mzj6R7vseE6=@Po^Kg^ktac|)fVhw;CW%&nJg~{b32e{QT|#&6{?Cv zsj7>kMJ>bo&)WoJRPS#O!dq%zI02FbnBk=Y<@Wu)lnfUKeZxe%+f?10 z@gT&@>vF_nkzMkkC)ZQBZfvAi(-Vk%=~%%?Vh5#dACSJ~N9M$Sig>OC1jKRb%U04^ z+tah$Sj=khSukQzhfWbKRAxd8q{Vb^T(VTYi+j12=F0M2`15|s?I4`6WGfev-I&1$ zr`%8`Z`i8)i+^8VC>FKtwt;^rH%{%7KY#rlk#B7W;L2|_bh`XN4V*4-el`xCTYcq# zG8kT~6WR_Kwur^H?*m55(IquvrSvs17xenvZXuCVL_Ar$y|3Ku? zv(N^kVIPsD6j;41(cfU0dz>@%;h$Sdu<>-qY#C5BKg-l#3kvein7W+&UMzE+9p2mFeQ zf>AeyW3es5S^1gs?(al)+JTdrQxS)+^#2H?H4V?zB$ID-IfG||?n@P0{XS9}EN0y_ zB&-NC0INZ#xxjq2f{@nX6=dk*1-C@81OV@0-qr`{grcDN#D;xtmd+%*MI1ABGKgd%bkR ztg(K&Xm!Ns@-``lFVz}S1wRRjlfdZwHKi=uZ^3R)3%ju8gemt!aCH7XsVVrX>c`2P z^J~x(Y&$H13RRTzpL(1}ngqlST6LXTD%VXr^@@8uko4p~vBUDsg0F!<+W93oY3dR- zV{3)Tx^jI@%dH$bNZvRMOjc{bIE1aXk6h$-V%E7kLSTr)LiM1=yyz}9d;;d-C zOB5b5=;a+o=A189+a`;F>hM5#?}rSbNSK;e4FGm=Za^-*3GC|4Q(N+}mtM8i;dK?= zt)yRuO0c{5E=>;rIICHG@&tPiP}5ad7zh?b?zU`^^=xtS;Ip%icvggB4o>1Z48ABj zLpf1(m_1TT)b{MDzr1%3KH8c$Dhcw(rge60Uq5Wo5Ur@m(U%}|oKdpg$vgdKWE?gP z9AVwMtvmo0QfAkHTDZ$Pl7EEsv_c;CnK@9-Qri0?U8m8g!4uorjEX~Y|5R)u> zBOpt?EMkPEZ)q9Et3ym|j(FA8#Vpzn84q%DXxLFJ3II2lmn5Fv4+=vlko-v5(l=rFL@=fi!SD4u1*$~aKBl2 ze5fw3n)iVT5J1l4eu5paSGwhtRuji4B+P8nkJd4#_K+5moT zB1I#Iq_`nVZ@nkJv%#3wY$d&+r(Mm(PC9=g0?1nE-vEdCB>p7%P9xS4bExt=A1Y6B zXCB!~JY>}x8H1PImTzntoDRwss#wQPCEEa_9aS=AoRu(w<3|4bv_%3nU}{dHm3yg6 zpQXbb{n1hg$vthj+kYr&LP0<$t|^m)G^3|yu0K&N+N1d^_fSc)I6M#WwkfTUdpR(q zoEJGO`4`fQIkT4f*<)Q>C%PU2Z?}Qt2U4s`YHd*fw%Ubb!RC=)mW^KNaU@|tehZx; zC;_9&A+3QP7qPJ+fH~;-2VLxHupE|xc4DIk?~P=?+&m@;f)~?Z7?kplKUI?x`V}0y zTOT-YEyp&s1M@bf)#)~#vPu(*mh^K5#H;tW>sRNREl+%JP2*<+jwr;OJ++qGIzUqq zaF$hLmM7xmyYkOIEA>1>a|-@5<^YF1QjUJ{Ne33h>jeiB&Bj#BKH@D9q;>!ppX}0H zYfitDU&@2r*)+6A?quokj(T#B_e(|Z>()R`h!VI>E{Io$#XePb-s|+G3IsZI<kk`!5FNd^c{T%;wN{II(Z;)*KM{5@>iLHclPQRrY# z3@h1}2Gbx;^(jS&;gzHAnShq7*72+=3F=zuenwMFCQ=h`O_Z|J<%KEhP;S?ZbIf%vUQ7qOt5jT$u zK!EQGSom5pkDj|9*Nb>4P2vrc@9;bCOLOJ$?t3y=7qxd8y+TxoaonK55 zD}Y*|+TUCdQ!0pS@Mvj!PzO&<#olB2QRzFe&K)2Z!cqf==ko*BlHQG#%z)L0`Z*J6 zxEO;NntFerE4DdmDmU^+@%o?ZFPkqTa5)%N33{|gmTAI(^JjY*6vB+2jOxvr?aSr% zwDD;&br$-|{fg1lBAdHlfR$o9dRUV>1wFLA)GgoXkLb^nV^Pfap104ZhL?9gy{tL$ zY`nSfi{gms_^CO>)r&}=fEkFm^ zsMBcFA4MDA4ju5i=dxzX4Ci}JUDo361oBvfq7m_XmrdisJ~MKaE1~$h{5u4$L$L7| zAfsR&jlkt%RI|quhe_MjG`xXWV|U>1VV`Y?oQqagCeKoFyHa3XiWjvoYw`MY-m`h; z(Vl1Xu%iGLzOgL{?Gbd8y$L|jul|jhr>36PUE_7|(gC@(?v7u}9;Th82rgm&slSBZ}GYFvkSnXVc;?15oW;9&3H4m*RD+f*fk+ODX{$}mO8`vhj z60(<~srt7cu4%d$5a6r*!!iMg%zz_>o&WDFht56!jsNkL1rod_NU0g3mEpp}_STby z^OR55shXz%ep6c5o4>gfD_;wApRAEDWZs|uVOZ>5W=y+-)bbijG8*M4g5~NsF+#cTS#lJiF#eU$C&EA67Se*^Q=Sw|g*Dc2-d3%M6Z`f{@(Hj~iewQ!a(pEs;ASejZ64o- zwTMx;AY^dRZ6fJRRvsJc!a7FfliWILI3rEMw_jG~8m=CWBOF#Z3f|i#%)!8G1E5!xqnBoZJ$hZ^Ei`STE@}5`AeZuAyk4|;fuSHe= zvgn-cJpPQfJ6-Eq99fCT7qUAL#UApS&KF@Kvy@z5HHmNN>{;C6MpNAqyX-to<1|e_ z>KKgF5g*CwPp@EF<>VaIkIM8|B#cVi0HwRyYGc2xrzvwz@~P#RWAS&O%uA5WJ_i4U zSDl~Tf~aWm<$b0b){986tdPE#WRE2^w#tyC= zZzXxf8_aMrlN&}S=`H(gGJd#asGKu)XjB}@4(0UJirTc+JY?hQu|Ly)ZlE8{YgI^z zmE{D$d#0?=J);sJr_W{)=^A2*?-4LTIb~@+_G4RZ>G9!a>CQDki0xI+yzSN~fJVog-en4J6(JM)G*(UgaO8MKU3Bgd$jc8>d-GR=_oc zGE&i$Wdxv3zp_Vlj89&{=c@z5Y7c;tf$;92jrL2Ls8l>F4;KXk$#fUm(-sMCecNXdw%K7Q`q(zA9iB*}t61J`?cMh+J#>@E>m z;Yx@8)H26nsgbq%MeZf|Iwf1Ee12)yX2Jo|jjpX0JJy9$fW;=^b^iQ6FBOE;^@@qx zez_8!Lo>M?>%lCJzE)P>#h4ev`5=3BLnJ9tF42!2i&9U=Hz); zCBC{j_Xix^ldFY-{u-~B&E!;scs4{Xby7JML(!)u!ZYY4u$iV9X`q|2r*nkzhS>^Y zi;xG^lm*2{OWT;jlQ1{_`E0Kxd`K&5rrn!L7dn8nkN?Dt)cy|2FKCzvhMgbc-Dqot zRlvi0y)zPbYG1H<0Hneq484eAsBL!jHLh9kWyXEIoMwU(KvE>7Ed%RQ1cVA;ISuy5 z5^VivOYC0Lr9UrlDI$CWdQS*^Vs*s+{md(oFQum%_nHve-bg%2n7@X3C+Uk)%#=zG zWHa+pKq@w+!;u>LTGTpvjdw<)R*i8bcC~9Vy0ya%-21F#&dr$Q1$KfJ(csNvBdce> zOQbpmQ&Nm4|B?!agddlH;Ih3KD$f^fw^#Sv%t~o;M4|L^sw+mo4|#ztffhCoPz!gI z*P}6KNgY|$^dVLduEmVsN+C!Mal4`5meif!BRoj1Cwhxhv}s&dLL{(8>*hQyI%Ze) z?HD|$Y)eU;OmcgL8(qr2fozn!nu)2j*M#G1dHG>uFaE?507&S|Lt;>mC_GUytBOvd z8ny1EHQ~xe7Juy5IYUz2#(C;Xc~8F(J4y?q7rvGYlI-f(t$v7tDd@oJ#L{Xr$`yH$ z;cDy|t``ipAYH9wgvih{Uv%Z%E0p&le@X~(Ir;`LRWA5);%Y{be9ur}Z=C$&dO>)y zf4OE2sg(NkwsaFlXr+Y4>WVT@*~EcM*~<)InSr|zMlm3YiR%X!TaX&mo9b*vp4ic$ zz3Mc_w&M}ttWc5R-g{Ka_8-q;M)NxIgX~I51i(_TdB&Kjr+xm6nniUJQS@cR$C?xH z0^m>OlExkdycWMFmxb{Osa_ptJ$WC%^K&sWCz$BW*aEERk-=kzN{M<0;Oix#J_AgF zo$9$I4=8rVm|-FJ63*zDDP&Vg#Sk=6J1L|!*Z;ApPHFBJ(e81QH8s;uSeC?8cJx@K zz(fgsX6@priK*m%{`HY?qVUNC%lka3HDVY=D1BPb(O)-KM^e0UKu0)VJ98&0ko%(-;?+nr*O>EF; ze!=)~oAIHWc<@wAY*td|kAuz!uft#!A1@N(LJ2cZ>MsrIBA~oCJ`}K6kRnZ63if!l zBT9i;Eg@l0+MNp|ggzxO4_+KmIX%9%ASMOZcJ}Ug*Bxt3Twc?*TUls!QRZ@1SFOzm z13}J>H3_1ffOX?Rvn$uEwiMjY(}Ps4*UKcyuS`X}6nq9?m=JcYjb@4_Ze-w(7PQiA z{y7q#ueKjBnB~6JvU(Z)4lTPJPwUZzuX=+Tk$i$tvMo`O@UzNB?#WX)VwFzMRI1JU z5YP)|V~D#Kr%Ke)UoLSc%4ysR!4%~BK7Zm;5k{bMI|k)@sUOESjc=qghy5`fWH(K$ zauqDK%nl)y!}}pUOsn>6#KM?6=n<7}xjtt@&kj9Si zxOVo7d%+xrvwi^b$*U+$QD%eDdgW(^bvkA>e$oZkl`q@OW%#T{OWmr$okwuWU^BaC z!&`0891Cufqro+%7Gu#tmam!Hs!}5-TW!uti7U0Npgp|>E}1bWGLV(6Vil9=k1?ty zj-iTZf(Cqq zEW&JBh!7eo%AzWkM;?2DM~DCmsIhWMFJs?W>Il(|OD%@g8?yyJV{tcSOCMdZm3NF;1!FWkXSXigp}#z zF2HBHFAvJlP?Y&QDe8NcT2~B5yxhQXmUH{R6O4e!>Tm7&boT?mX&xn%5IER5~!$2D$C z>by_Aqp3MwYoU~rR$KU}9HYs!k4>Ykg_^7gFp)og8=J8gB68c@Ut(ZYNx$$y$o0cD zSq|p)Ia+Z09sQcW-y9t5-L*hM_c`2-bt?I;LBA1vg*b`LQF$bDwsST!B~w=Z&?I5? zL06aUITbnN%FTgb#L$CKmSG>fj!7jM%Fo zAn)a+=sjVAInlo41Mb8Ta?srXz}Th5{&q|!=gV8^qHWCSlyOb^+^#H5tuvaKSbV+E zs6e1C&4R=wK_Yi@Aqw`ptkfiS=9N55IfRk9_;CkUZ;!)P^}) zE$A0OPD^qmF&OW{`>%nS2e0av;AJ3-ogm^Dfnu2qw$`#y%= zC>eKiQ)gkZ^2xe-FBm(Q7OvAbCn`)cA`nv{s)m9oEt^VKk&LpbDi4FV_(?`~aaV~{a=P|ebXLwh zh-tma2nfRf)V{Vs-gUyIrAsG=y+op4+rSMto=LpH#MDz`n&Ofq3dpjqxNtAyvIQgK zfY**wfu+wG=&>Nmogol!*;tfJ9(uN9+$8|%h>TpNY`j5JIIz!F%Hw*Ac>Aq#Ty-0Q z0#F7tU=0Pj#h4P&>H>I1ET1xM1 zX5gf43%g5j97)*Lq6HHkQhF@KT(49quAO=Qp-`Hof3v4g)i4mkc%dCRCDS)0{UFH} zN89dF&xIW39@B6u8eTm;Ypiz>VPCQ4{zWniyjg}aK{HK3PZwHkl0<+2yN&E zCni2DS{Lg9&4-==;g!<>X)EgUA8{oqcMx*HEkzFrGf+B%%j>*>1S^MmipDQ1w^klM zi)-+A>xf?z>Dl)=&hOPWfz`+dd^6D`be^{;!o0W7F;#fL%FSN!%!Cxm5)}*6zsOS` zP%g^W_g1tQ8MDDRX ziy4@5@P_uhe}XNClQ$DEgMzc>u+9BiRm9yAW4+{J?y61CTQTz@U#kJ%5GyxoxYUr@ zk*{()c~*Z!Ghz!>a31uK#d|u>crV(m3Ac+zM=Ms86L88(k+%)EZRjD1~ z4i^}40QK?vY#KBm<*2sBlxDU-xJ_++4QMs~&qND>{jITwR$dOjI`qJ}=XK7+oX7_v zwr5v2vD=F?^&%YF;3?-bT^wA4t2e`hnWJgG;Qx{H#Z}|4Fo+%Dp5LqKk0fG**nsL-BS2Z3Y+N zS34}O4lbQ9nkk&R`PY*Qcf9vz*rPp!aV_K-PbW5_;Yz_&qnNH?DO>VV)56WKWaZBs zoruj1_UFwTUGQ;*Om(Q{nSDS-#3aV>NpE$m^=e!!VXP+0qSSk?{h!(sE-$jQ`m2tO zW6uQoyL9!!e7o$_nq&#RabqY6Gwsr*Y=6$sECVNMZpf>3;)wm6s$*|oR~dIo&@3_k zaxOK;>D}<$-MIAIG}D-w`uUA7>toTb?w7~TTwxuv{);W(nv}787OU`K;b?EZ`qHw| z*x{9dcc<&IRFoe`hfyNYy%wI6f#kOt-GxyL$>^p4lVO=hM*a-EGiGlB6aG_3N~Fbd zf?nfon`cKr9d+<4NyTKfgnpfGUNUD?aoyb`#@}`KIqd+8Kl%K~L70PDo~`O7)JZpK zF(Nz%<13u1o^V(!$4W?V?fQ>2#s2Vqkfe|oFgtCjlLL-YwixGm+2tI|BPyia68Oio zZZZBc9deXd5$RnBIUCUylfHbPH<`G42U-ciM*QjJX7)=tdZZqQZBtIuVuDZDKl8jw za+12d3N7;-DEVT#BYKJmU+lrq=Bwl-f1L&84(q`bznvwKx<-!OB3%TQ9ckUEe0>S~ z&Zq+SUAn5n&TI#fylR+d`f4-e<@G?+k%%*Cq^w?SU*_oEcEOV133NHA3pS=`!K_wd zEP&M;Nz51a)`~*JvN`k!fftw-M1d&ZvE(9>{4XZ8$z9axQRDp({B%gp{qD=SY(Xg6 ztc8Ui2*BNHH5W{$J){uMoIUIL4E#K}$qC#>I%8iD4U7Y!@)4)FhIAm8G#TCG%%6wF zDSBOa4_qigX?Q>GE3ad>aKn*-BCKs@g*V3e?W)z*3fEsik27wkFkL=P)s62Etz19z zSfc@K3aou&qAO9z7t&6017?K(h>~_ZEA{oK%_Z*N>sP=*uR>ZzG@R`8h07z!z)Gxr zk#Nwd4xNc>3De|DD ze*wGLVZP_^#|$Y|2OFEO>Ce-S&GCXa<_^QGW+9WWiPj8wU`#YvWK5`;h#8!+VmJ>6 z-_jlwby0(I&MJ-QeVIx_<`YF}w4&vn5caTDJK2|&>%~%QdiDm&E<>AR_8|3&Q>t-{ zoHqHB?AS2cg7bxgbK*+$>C5KIEW-*;4S@ex?XuIdrVZFu6&!ZbAI8c(xJTosq{-ft zTQTol9#$JZKbf3TqBx?ZfiX<($${BW=j0z+^$33la4RG@Bv{?i8RXyLQkX!=;BSU4>FxZ*<~0{q{T0rJDvE~8)Mc2yp) zKOa_FTZV+aGUlN@r6Ig=1M_)O~JU>L>7Gdz~k)LKcbH{DhSa!jFQpRg}KY&0TN zVc2Y0@fy%lwv)qH@q$(Fn(lc;opGN18i)cx&|~mtIj%47^VJlVs9+k5gurbqxQX3% zPAqzKFvgr<-E(zg_ZJH1bU!2JVL)tANaKqc1%Fm4tg*Px>+bALiZzsHydB`^BwW zw*_(IRs;lWh>C!81w&L61O-ItB~f~hv;cu5x>XPnP^xq(f|L*`Nu(qwEkdN1Kte#8 z5JG~Kgc1U0;dcMu_xsMA^39x?^DRbZ;lRpzR(Z;OU)S&U#dfzOL!PX?RxXR5eg&%g zu^LW~N+JXHrD=jK^5F@Dk=ts!NoauDOv;`9{4^)1u9yBG8}Ejk5pKDDi9d^7Lq;WK zMapCu%6dq4AtG7w`w2ZpT6U$!+2qO?^$l1U8nF)>!u9M<73hLo#wMW_edO~B)Eu_| zD@0ar>^pEv%sZOWA@902o~$dHU7R~p?1d|dL#|Czso5~rh7NJCDn(SAeU2`PndTOM z94wbFg1Xcd3ex&Src6jD7)bDHi%1x(Cj*YipgS&Wu1Y6s+`i)0AgsX~f8kMLE_wRx zK?!mn!T-i0T&>?-+(S3g_SO#D6Pn_p55lH(0?`r$=8+zwO*;Nf&Iknj*!kTZN zV&i%#$>i}BlM>_D0_ToyE1hVP%b zSWJG;Q*STMw5*u_Tw?_OS~7*~eLZ&@W-#D;#;)$1HWHTY=w=#<->9s^F}0TKmc{Cp z2-`n7bsd}cu(s(5DH(S2`*M7AWUV&bXzjjZqad5eJXav8?h7+%_?Bef##6OvEB%k9oI>y zkC>6<(s7IBEKLNU;nUjPYhcOKHE&sZcPq~O3`)?n=xN)ha`$f|ivCug3tpWpF1wGz zXr`en*8{wZJ;3p|VU=~=OHE=0bWE0#r%7a`R}CiPO+Ge$cGtO6sIaQHE=x;Ajsi^t zDvqe^4uL-QE;ua4$O=c_O!Ayx@_HXL#&p3FdGmA=jjvZU1mDwOyx5Z))qW)6MIRLU z#i9)rrU`iy(-KxclKyS{J69DCa^H+Im~rJZY&vs5O}uS!%|WTGD%Nl70 zq}CZJIsBdF_Y+o4A_wK8Yc4Q9g(dyIhiS2?gORxg7T zJn(9Hz{-&4eMa0|oJ@_%S=rcsY3bY0hCX{L8Wq+yJknUkgRPZySWM}r0I~OO3qhAJ zM8&?vOhH>X;_bjN81JKGF+>t zmIul;7g_?4j9Z|7MVqk4vC;c?Zq7%~in%HgCsfd%zMxE%M>hWcU1nidH;`U9$W&+v zh~As0X_=~6y)k3yX@_yD76p%9wS!$Z)6WW*kebE>K~AGL8PB;bZ<{TLTt|pu=hyyH z4jGnNF00}u(R-%6vqWQ8o<2qFC?YAqKu{1`)^TyX9Jjd=aIL_^jC-2%W0fcWvE6=w zND-`6W?nW-Wp2DQcB;2}flrPV*smO=Bg4wzQ!ptO*==2pNtT*xzwB>{2pwDBT*-$j zu1)B?Zo@j~GW968Sf>m+`}=)UUsdr^S;+Jw^W1U~iRO)!#b)pZ@Ar{~$e9Ul@@>m8 zeg2alTsfP}mff&xa=26zY{V($S6{K-5PI7*q-kD2Ug+rnZ%UE`=anyyEpMkm-RUov zEj7@1#s(%<7KnAh!o0LwUam~Jjz5n^)%G>hz!T9cnFnl8h%f}I1@QrEB)7<#mt{Q& z;IFdP(lWgYS~fm4C-!d)xmD44Fc5?Hh7h5oy2|g_7%Sb$FP_lP_JFD6$ei=^Sz2si z8JB3DpvnA&kx?Lfq2IL31yu;HqUz`~8>(wU2K0vu;o8~U0-nlbrb+&~K(5FKEHe@W z^E=;$TJdSj*lgSUqg}gvZJw8Y(?RgTY#l-69rYQJAehl>eKg^uIPP;pTF=JmLd!68 z%8Ucu^%={y2Z!#4C!X@K!6jGCE>QlSeDh(E@bzY8hAi8iZ-lStT23B;x%9*fT;R1x z-k|G@On#ad$ayQQ)ykU-!HikeEXtK3%+7TcW+p@DR&HXkqp#eExW zy~JNqw8k<+eG+B1_d9frn>nn0+Fl;g_hbbF0}Uz7HIFl0mN%n9=Xedm)2lAvuzt>X zEKVEkJ2V|!v{*24S@u$9^J4O)Iz>L>Rwb&IFmzP9Cyu#xTtCBqU^PLfvP<)a7lQZs z4*Yy@zzoTue)?%yImL%gj zxQqclnN=!0Vtb0u`Vp*dk1wk_uvzQMLnHKsjdkYcH0AaXs$^wD^}WEi4V;MCm=|pi+2jKYBXwC!>E z{k=ca&^pX_p}54EYDu8b679r|O;EDn5cacJD1SRcS`jS#XU}`|v5a_$=%!yqJBxL)k8i&*AG49*!EI5EzHj zmog((x7fStCyVd$pH1jy9a7<^Yn zZ@3$43sXF=5j|GE<)&kFCz;fOEei$j+2EILmM(RYFXpIc`q#{D5e?qUSa{-_ms7<> zK--fQZt!~^UMi||bhm=?|76$T7*Dy}$Ikr_5|RiJl<$Ge(K0(WzptXIXWYRB)H)w( z05Q9d&9m7plS~s?c4eGlO}TttvnZrj+FKLv48@q1OchT`D(YvrG6TKMuwUUWz`2i@ zfj~0!xU^sod$`!X5B#(+47 z(5;p_Y%+BgVHD1OU+KTUxIo0)3yry+??XTutXvG_$hCc^6gG`++~kYnBr{{hGJ=kH znoxAP_2VU^&#pZfWDV$YmPY|_Q8mvQ1=sWwld|v!o19~G^M{QqLDq%ru9)lxp<3ZD zzVBULwi%|OD)?u8sEvdz>;TX4(l4gbggoF$|EklKadFMbY?qVNu}9~;>M{_QmYaD} z4z|12bg>-Wo!cmf1r91c#fJT)Q7&xW;A_iG16x@SZK=8>fn=+L?Y2jsH9X!wRvDzt zpZ_UAat2r)D8f&mhphAR7Io&oQ$9A1C9K)hA;N4frxgE3%6m68D&A1X2nuo@%Nd+Roe zWBGms84%V6TRw{mZtwHhxcXvbkt4D;g_ZfS#uVO+ALc{>i#ukN=}(G`AMp1`hq1h0 z(5H{P#)pnz!ThS`M1umvn!4iHK3{M%-8*gl#09!0kRi(tOK0o)%sT_>*n{z^E}LG@ zLqWqnbfjf_=5%{j z7y$??<#^~@CDgjl#sBx1qia<>Xz=^HMZLljit|SY0LanlD9Nvz}AX7$DIE~iWE8|nFxqt z0639gL?;%IHyk|3fAz)+EeHhuWFSIz{C3rr`%`B03!fDKuMP}S^N;>(?VtaE)NM_5<^BVv@&rq#s(bRj{P?j? zW@BvF7P)(0++YQqD@)gWWc)!y9DLq(X)oTqGRk|Wa~VeH(|yO6zetBd@2x%`!M5Dr z0l4VR09wEnV+OO;c)aD$pX73WUWxFn>yZ9SV;5Im*LoTRDVCug+Y+B)fBKsK8GU}* zjL_x({p=(?e+hyAmCOO6xw57zWyl=SWW4p1_~6rX|05s^crt#<&$qmWndg0;k7iV*lP5Q-d z6ADmF{`ZL$dMTwV{0sL5=nX*-%Thbee}HaN)Bp8gp8VfySMom(Xo+3bP_mHF+nQOc zeE<-)iEk(L>3a5m(d%AHW8Yj@;{0~u3k{TCZn8t@eptYQPV%^l(6L_k_5|sFd3*m$ zkiCDV} z1I8WII~K1B>E54P9s{7>Y%QVE}f|rhzBE-@ScF7NCdD1JWw5Z%@=c zGr7*1wQGGfRr)eWwP-}cj~|C|&Yi?YN2NmVT^wN8OxvO&4lPWI?GQ0gRL; zCDf=(M<$!c2+CUO|LkgDDe3U-nHc0v0Oi+1EHKgCJ6p|a=WOuN%wcY+<50BbaDs8m zz2A5MoOl{56WBZIQ^R)Qv&>l@W9ql7GyPf%nHb`Ds%L42Sqt?769IfEpU$aWEHy}Z zv_*^-61uXPddc5&SrhGF8#-G?W*EpJ)rhz<;C_51PJzg)EC5~nQmMEf*XW6rvu|@U zAT=9M0VZq^GodB<-(#SAe*CroG+;2<`7(dDf-@0svS?t-O~Tk%ied$E0qRdOgT0ah z)Z>*`5ubk_`H}1sG8ekpZSU9O09^lwZd(b@0-x9Z9RfnB4#8sS@=_R&KG()nU|(Wa znyjt{c5#cM14Fh8-coscg@A_~kZr>P3pzUQ59rTfn{%(31o_cl2#dOwLiGMHaA`*~v0mPxKcZ4K=;OXYC4zDy58J%|! zjyIY?^E8-&<-Nc$Q+C*-Jaisx*S8yh;P$m!B^XqvLT-_4$~jTc%OK)A)zmDfhLz6p zKCQcBezk7e1MUS46{gLF0|$-U4jRH|ggM#GqP6J~=g& z8+Zm>a=AeU!UCip*eaRzZ)9eI$Jx~a_HW}2kO&5X@j89ZNYcCVwNm00DRJ?6Dm{Bu zgAvd}!+EG;$5VsZ)V$(CmHCeVeW;pR`@N4-4D|-D7Okb4EEZ=No9ce1xZDLXh z9fDBsZ5D?HP$B$-gbp3p^v7jI;Bi@tM?50&a5ZaB?Sn(sn6BLt(}A{LWhwkN7>Wh- z5@Jk+c7SNSxypTCzGvn}ab~c`K}R6ni5gL&kYzT_5mEm43JyRpi6$I+dn-dK;oYm461%+u~>8NRn_d7<5XW{JVIOWn5^g#{=Yp~rZkFRt{T zW}X=w@agV*O1VE=8^Xje-sL4hgv21hWwFc$1EIWOzAy*Cr<&Zn7I5P1YSHx{S9eLh z8vYx_tLn&@302mt4jVg&PU{Coj`%?yy#o$h?d-X;;{1MsV!Q0K3sr^sn7Du==M72c z+`%wuA|$k_K?FQTQ6QvqC~$WYkXJYtU8MSJE}XY(v^9}}yksG>@@bbx@=Q%v7LrHx zNUrF4Uu6jdp>Px*ph3X<{tjMsDVi4a<#@!$c$19;6Q`f@QFYJ$ynA}Z=a?Rqw>j0U z(r^PyOodB_iGd}EQ;=EYqFc!>-G?OFwv0Q*tg?o@o0Cc5I%hGWP(ItUb&Lz3uaHbj@f=gmtbTgX`hX~iIrPBbBhKE}txU-qYQ zuf-IId!B^s5(P^u$Y<;zcQk$P>-=3*3Fhs81BAhlK>AT#bxYgoBfvu|PcokE-E3!s z&I#Om?P|!qa9(6|<)V!UE7byf5@%f*`zMiF!c)bfI2g*m|F!<^w2yL`2)%O#Vs{-hXQK-tc%{%m%8;<; zkQGd+^dR~jvgw6>n9@~GXzXemY?v+=W0W%WU>Wd6kLX{l%LfUTRCTsV^;mMyfXe(Y z<9L@?(-z7HF%PStjdj8*9ksE@pK17A&G!4eS}tCL=C&Q !j$IZ@Hce2}(GC<8a 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 literal 0 HcmV?d00001 diff --git a/lessons/dotnet6/blob/img/player-1-in-folder.png b/lessons/dotnet6/blob/img/player-1-in-folder.png new file mode 100644 index 0000000000000000000000000000000000000000..8921c67f0ada3ae2ebd2c951a2c85cc13e82f505 GIT binary patch literal 42525 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 Q-@0836YI<67q8v>7fYTN3jhEB literal 0 HcmV?d00001 diff --git a/lessons/dotnet6/blob/img/samples-workitems-output.png b/lessons/dotnet6/blob/img/samples-workitems-output.png new file mode 100644 index 0000000000000000000000000000000000000000..72b1387fa8a3089a9315d5a7db193c6b9f74af67 GIT binary patch literal 24672 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 Fe*hpxa+m-B literal 0 HcmV?d00001 diff --git a/lessons/dotnet6/blob/img/storage-explorer-sample-items.png b/lessons/dotnet6/blob/img/storage-explorer-sample-items.png new file mode 100644 index 0000000000000000000000000000000000000000..0acd6c7324357741984b5a1b1c47cac4bcb486a2 GIT binary patch literal 12730 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 a_*Rx)C|oyve&F{O7;4IzO65?~!2bc8&?Z~} literal 0 HcmV?d00001 diff --git a/lessons/dotnet6/prerequisites/azureite_start_blob_service.png b/lessons/dotnet6/prerequisites/azureite_start_blob_service.png new file mode 100644 index 0000000000000000000000000000000000000000..14e14bb6eedc4914b858ef0e7602bf0d6cc16bf4 GIT binary patch literal 25111 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 aH0czG*-4-4!2QetPfJZtwM@k>?B4)Y887w# literal 0 HcmV?d00001 diff --git a/lessons/dotnet6/prerequisites/azurite_blob_service_started.png b/lessons/dotnet6/prerequisites/azurite_blob_service_started.png new file mode 100644 index 0000000000000000000000000000000000000000..edee9be3b1e109a235dc53a680ae61cff4d6bed0 GIT binary patch literal 10302 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 literal 0 HcmV?d00001 diff --git a/lessons/dotnet6/prerequisites/azurite_folder_location.png b/lessons/dotnet6/prerequisites/azurite_folder_location.png new file mode 100644 index 0000000000000000000000000000000000000000..f2c97c4b35a389eba43f4673484c16ffc58d85fd GIT binary patch literal 62380 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 wdFSpH5vk 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 literal 0 HcmV?d00001 diff --git a/src/azurite/README.md b/src/azurite/README.md new file mode 100644 index 00000000..5186f930 --- /dev/null +++ b/src/azurite/README.md @@ -0,0 +1,5 @@ +# Azurite Folder + +This location is intended to be used by the [VSCode Azurite extension](https://docs.microsoft.com/azure/storage/common/storage-use-azurite) to store Azurite files. + +This folder is referenced in lessons related to Blob, Queue and Table triggers & bindings. diff --git a/src/dotnet6/blob/AzFuncUni.Blob/.gitignore b/src/dotnet6/blob/AzFuncUni.Blob/.gitignore new file mode 100644 index 00000000..fea9bfe3 --- /dev/null +++ b/src/dotnet6/blob/AzFuncUni.Blob/.gitignore @@ -0,0 +1,264 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# Azure Functions localsettings file +#local.settings.json + +# User-specific files +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ + +# Visual Studio 2015 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# DNX +project.lock.json +project.fragment.lock.json +artifacts/ + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding add-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# TODO: Comment the next line if you want to checkin your web deploy settings +# but database connection strings (with potential passwords) will be unencrypted +#*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# The packages folder can be ignored because of Package Restore +**/packages/* +# except build/, which is used as an MSBuild target. +!**/packages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/packages/repositories.config +# NuGet v3's project.json files produces more ignoreable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +node_modules/ +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# JetBrains Rider +.idea/ +*.sln.iml + +# CodeRush +.cr/ + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc \ No newline at end of file diff --git a/src/dotnet6/blob/AzFuncUni.Blob/.vscode/extensions.json b/src/dotnet6/blob/AzFuncUni.Blob/.vscode/extensions.json new file mode 100644 index 00000000..de991f40 --- /dev/null +++ b/src/dotnet6/blob/AzFuncUni.Blob/.vscode/extensions.json @@ -0,0 +1,6 @@ +{ + "recommendations": [ + "ms-azuretools.vscode-azurefunctions", + "ms-dotnettools.csharp" + ] +} diff --git a/src/dotnet6/blob/AzFuncUni.Blob/.vscode/launch.json b/src/dotnet6/blob/AzFuncUni.Blob/.vscode/launch.json new file mode 100644 index 00000000..8d17a193 --- /dev/null +++ b/src/dotnet6/blob/AzFuncUni.Blob/.vscode/launch.json @@ -0,0 +1,11 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Attach to .NET Functions", + "type": "coreclr", + "request": "attach", + "processId": "${command:azureFunctions.pickProcess}" + } + ] +} diff --git a/src/dotnet6/blob/AzFuncUni.Blob/.vscode/settings.json b/src/dotnet6/blob/AzFuncUni.Blob/.vscode/settings.json new file mode 100644 index 00000000..9aecc121 --- /dev/null +++ b/src/dotnet6/blob/AzFuncUni.Blob/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "azureFunctions.deploySubpath": "bin/Release/net6.0/publish", + "azureFunctions.projectLanguage": "C#", + "azureFunctions.projectRuntime": "~4", + "azureFunctions.preDeployTask": "publish (functions)" +} \ No newline at end of file diff --git a/src/dotnet6/blob/AzFuncUni.Blob/.vscode/tasks.json b/src/dotnet6/blob/AzFuncUni.Blob/.vscode/tasks.json new file mode 100644 index 00000000..c8aa348f --- /dev/null +++ b/src/dotnet6/blob/AzFuncUni.Blob/.vscode/tasks.json @@ -0,0 +1,69 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "clean (functions)", + "command": "dotnet", + "args": [ + "clean", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "type": "process", + "problemMatcher": "$msCompile" + }, + { + "label": "build (functions)", + "command": "dotnet", + "args": [ + "build", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "type": "process", + "dependsOn": "clean (functions)", + "group": { + "kind": "build", + "isDefault": true + }, + "problemMatcher": "$msCompile" + }, + { + "label": "clean release (functions)", + "command": "dotnet", + "args": [ + "clean", + "--configuration", + "Release", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "type": "process", + "problemMatcher": "$msCompile" + }, + { + "label": "publish (functions)", + "command": "dotnet", + "args": [ + "publish", + "--configuration", + "Release", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "type": "process", + "dependsOn": "clean release (functions)", + "problemMatcher": "$msCompile" + }, + { + "type": "func", + "dependsOn": "build (functions)", + "options": { + "cwd": "${workspaceFolder}/bin/Debug/net6.0" + }, + "command": "host start", + "isBackground": true, + "problemMatcher": "$func-dotnet-watch" + } + ] +} diff --git a/src/dotnet6/blob/AzFuncUni.Blob/AzFuncUni.Blob.csproj b/src/dotnet6/blob/AzFuncUni.Blob/AzFuncUni.Blob.csproj new file mode 100644 index 00000000..c7cd01a9 --- /dev/null +++ b/src/dotnet6/blob/AzFuncUni.Blob/AzFuncUni.Blob.csproj @@ -0,0 +1,27 @@ + + + net6.0 + v4 + Exe + enable + enable + + + + + + + + + + PreserveNewest + + + PreserveNewest + Never + + + + + + \ No newline at end of file diff --git a/src/dotnet6/blob/AzFuncUni.Blob/Program.cs b/src/dotnet6/blob/AzFuncUni.Blob/Program.cs new file mode 100644 index 00000000..cd97ae1f --- /dev/null +++ b/src/dotnet6/blob/AzFuncUni.Blob/Program.cs @@ -0,0 +1,7 @@ +using Microsoft.Extensions.Hosting; + +var host = new HostBuilder() + .ConfigureFunctionsWorkerDefaults() + .Build(); + +host.Run(); \ No newline at end of file diff --git a/src/dotnet6/blob/AzFuncUni.Blob/StorePlayerWithStringBlobOutput.cs b/src/dotnet6/blob/AzFuncUni.Blob/StorePlayerWithStringBlobOutput.cs new file mode 100644 index 00000000..f5b07d4b --- /dev/null +++ b/src/dotnet6/blob/AzFuncUni.Blob/StorePlayerWithStringBlobOutput.cs @@ -0,0 +1,31 @@ +using System.Collections.Generic; +using System.Net; +using Microsoft.Azure.Functions.Worker; +using Microsoft.Azure.Functions.Worker.Http; +using Microsoft.Extensions.Logging; + +namespace AzFuncUni.Blob +{ + public class StorePlayerWithStringBlobOutput + { + private readonly ILogger _logger; + + public StorePlayerWithStringBlobOutput(ILoggerFactory loggerFactory) + { + _logger = loggerFactory.CreateLogger(); + } + + [Function(nameof(StorePlayerWithStringBlobOutput))] + public HttpResponseData Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req) + { + _logger.LogInformation("C# HTTP trigger function processed a request."); + + var response = req.CreateResponse(HttpStatusCode.OK); + response.Headers.Add("Content-Type", "text/plain; charset=utf-8"); + + response.WriteString("Welcome to Azure Functions!"); + + return response; + } + } +} diff --git a/src/dotnet6/blob/AzFuncUni.Blob/host.json b/src/dotnet6/blob/AzFuncUni.Blob/host.json new file mode 100644 index 00000000..beb2e402 --- /dev/null +++ b/src/dotnet6/blob/AzFuncUni.Blob/host.json @@ -0,0 +1,11 @@ +{ + "version": "2.0", + "logging": { + "applicationInsights": { + "samplingSettings": { + "isEnabled": true, + "excludedTypes": "Request" + } + } + } +} \ No newline at end of file diff --git a/src/dotnet6/blob/AzFuncUni.Blob/local.settings.json b/src/dotnet6/blob/AzFuncUni.Blob/local.settings.json new file mode 100644 index 00000000..fc6e688f --- /dev/null +++ b/src/dotnet6/blob/AzFuncUni.Blob/local.settings.json @@ -0,0 +1,7 @@ +{ + "IsEncrypted": false, + "Values": { + "AzureWebJobsStorage": "DevelopmentStorage=true", + "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated" + } +} diff --git a/workspaces/dotnet6/blob-dotnet6.code-workspace b/workspaces/dotnet6/blob-dotnet6.code-workspace new file mode 100644 index 00000000..e937c75f --- /dev/null +++ b/workspaces/dotnet6/blob-dotnet6.code-workspace @@ -0,0 +1,34 @@ +{ + "folders": [ + { + "path": "../../lessons/dotnet6/prerequisites", + "name" : ".NET6 Prerequisites" + }, + { + "path": "../../lessons/dotnet6/blob", + "name" : "Blob Lesson" + }, + { + "path": "../../src/dotnet6/blob/AzFuncUni.Blob", + "name" : "AzFuncUni.Blob Function App" + }, + { + "path": "../../src/azurite", + "name" : "Azurite files" + }, + { + "path": "../../src/dotnet6/blob/Homework.Blob", + "name" : "Homework (solution)" + } + ], + "settings": { + "debug.internalConsoleOptions": "neverOpen" + }, + "extensions": { + "recommendations": [ + "ms-azuretools.vscode-azurefunctions", + "ms-dotnettools.csharp", + "azurite.azurite", + ] + } +} \ No newline at end of file From 9555c544402ff1bcb3e32928af0ecb5b019db661 Mon Sep 17 00:00:00 2001 From: Marc Duiker Date: Wed, 11 May 2022 21:44:53 +0200 Subject: [PATCH 2/4] Start updating blob ouput sample --- lessons/dotnet6/blob/README.md | 10 +++---- .../blob/AzFuncUni.Blob/AzFuncUni.Blob.csproj | 1 + .../Models/HttpAndBlobOutput.cs | 21 ++++++++++++++ .../blob/AzFuncUni.Blob/Models/Player.cs | 13 +++++++++ .../StorePlayerWithStringBlobOutput.cs | 28 ++++++++++++------- src/dotnet6/blob/AzFuncUni.Blob/local.http | 12 ++++++++ .../blob/AzFuncUni.Blob/local.settings.json | 3 +- src/dotnet6/blob/AzFuncUni.Blob/player-1.json | 9 ++++++ 8 files changed, 80 insertions(+), 17 deletions(-) create mode 100644 src/dotnet6/blob/AzFuncUni.Blob/Models/HttpAndBlobOutput.cs create mode 100644 src/dotnet6/blob/AzFuncUni.Blob/Models/Player.cs create mode 100644 src/dotnet6/blob/AzFuncUni.Blob/local.http create mode 100644 src/dotnet6/blob/AzFuncUni.Blob/player-1.json diff --git a/lessons/dotnet6/blob/README.md b/lessons/dotnet6/blob/README.md index c971b5f1..8f943531 100644 --- a/lessons/dotnet6/blob/README.md +++ b/lessons/dotnet6/blob/README.md @@ -80,19 +80,17 @@ In this exercise, we'll be creating a HTTP Function App with the default HTTPTri 2. Once the Function App is generated, add a reference to the `Microsoft.Azure.WebJobs.Extensions.Storage` NuGet package to the project. This allows us to use bindings for Blobs (and Queues): 1. Ensure you're in the folder where the `.csproj` file is located. - 2. Type: `dotnet add package Microsoft.Azure.WebJobs.Extensions.Storage --version 5.0.0`. + 2. Type: `dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs`. 3. Your .csproj file should include this line now: ```xml - + ``` -3. We want to store an object with (game)player data. Create a new file in the project called `Player.cs` and add the contents from this [Player.cs](../../../src/dotnetcore31/AzureFunctions.Blob/Models/Player.cs) file. +3. We want to store an object with (game)player data. Create a new file in the project called `Player.cs` and add the contents from this [Player.cs](../../../src/dotnet6/AzFuncUni.Blob/Models/Player.cs) file. 4. Now open the `StorePlayerWithStringBlobOutput.cs` function file and add the following output binding directly underneath the `HttpTrigger` method argument: ```csharp - [Blob( - "players/out/string-{rand-guid}.json", - FileAccess.Write)] out string playerBlob + [BlobInput("players/out/string-{rand-guid}.json")] out string playerBlob ``` > πŸ”Ž **Observation** - The first part parameter of the `Blob` attribute is the full path where the blob will be stored. The **{rand-guid}** section in path is a so-called **binding expression**. This specific expression creates a random guid. There are more expressions available as is described [in the documentation](https://docs.microsoft.com/azure/azure-functions/functions-bindings-expressions-patterns). The second parameter indicates we are writing to Blob Storage. Finally we specify that there is an output argument of type `string` named `playerBlob`. diff --git a/src/dotnet6/blob/AzFuncUni.Blob/AzFuncUni.Blob.csproj b/src/dotnet6/blob/AzFuncUni.Blob/AzFuncUni.Blob.csproj index c7cd01a9..9dab588f 100644 --- a/src/dotnet6/blob/AzFuncUni.Blob/AzFuncUni.Blob.csproj +++ b/src/dotnet6/blob/AzFuncUni.Blob/AzFuncUni.Blob.csproj @@ -8,6 +8,7 @@ + diff --git a/src/dotnet6/blob/AzFuncUni.Blob/Models/HttpAndBlobOutput.cs b/src/dotnet6/blob/AzFuncUni.Blob/Models/HttpAndBlobOutput.cs new file mode 100644 index 00000000..b12c87e1 --- /dev/null +++ b/src/dotnet6/blob/AzFuncUni.Blob/Models/HttpAndBlobOutput.cs @@ -0,0 +1,21 @@ +using Microsoft.Azure.Functions.Worker; +using Microsoft.Azure.Functions.Worker.Http; + +namespace AzFuncUni.Blob.Models +{ + public class HttpAndBlobOutput + { + public HttpAndBlobOutput( + string? blobData, + HttpResponseData httpData) + { + BlobData = blobData; + HttpData = httpData; + } + + [BlobOutput("players/out/string-{rand-guid}.json", Connection = "AzureWebJobsBlobStorage")] + public string? BlobData { get; set; } + + public HttpResponseData HttpData { get; set; } + } +} \ No newline at end of file diff --git a/src/dotnet6/blob/AzFuncUni.Blob/Models/Player.cs b/src/dotnet6/blob/AzFuncUni.Blob/Models/Player.cs new file mode 100644 index 00000000..f749e10e --- /dev/null +++ b/src/dotnet6/blob/AzFuncUni.Blob/Models/Player.cs @@ -0,0 +1,13 @@ +namespace AzFuncUni.Blob.Models +{ + public class Player + { + public string Id { get; set; } + + public string NickName { get; set; } + + public string Email { get; set; } + + public string Region { get; set; } + } +} \ No newline at end of file diff --git a/src/dotnet6/blob/AzFuncUni.Blob/StorePlayerWithStringBlobOutput.cs b/src/dotnet6/blob/AzFuncUni.Blob/StorePlayerWithStringBlobOutput.cs index f5b07d4b..0cc3b54e 100644 --- a/src/dotnet6/blob/AzFuncUni.Blob/StorePlayerWithStringBlobOutput.cs +++ b/src/dotnet6/blob/AzFuncUni.Blob/StorePlayerWithStringBlobOutput.cs @@ -1,12 +1,13 @@ -using System.Collections.Generic; using System.Net; +using System.Text.Json; +using AzFuncUni.Blob.Models; using Microsoft.Azure.Functions.Worker; using Microsoft.Azure.Functions.Worker.Http; using Microsoft.Extensions.Logging; namespace AzFuncUni.Blob { - public class StorePlayerWithStringBlobOutput + public class StorePlayerWithStringBlobOutput { private readonly ILogger _logger; @@ -16,16 +17,23 @@ public StorePlayerWithStringBlobOutput(ILoggerFactory loggerFactory) } [Function(nameof(StorePlayerWithStringBlobOutput))] - public HttpResponseData Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req) + public async Task Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req) { - _logger.LogInformation("C# HTTP trigger function processed a request."); + var player = await req.ReadFromJsonAsync(); + HttpResponseData response; + string? serializedPlayer = default; + + if (player == null) + { + response = req.CreateResponse(HttpStatusCode.BadRequest); + } + else + { + response = req.CreateResponse(HttpStatusCode.OK); + serializedPlayer = JsonSerializer.Serialize(player); + } - var response = req.CreateResponse(HttpStatusCode.OK); - response.Headers.Add("Content-Type", "text/plain; charset=utf-8"); - - response.WriteString("Welcome to Azure Functions!"); - - return response; + return new HttpAndBlobOutput(serializedPlayer, response); } } } diff --git a/src/dotnet6/blob/AzFuncUni.Blob/local.http b/src/dotnet6/blob/AzFuncUni.Blob/local.http new file mode 100644 index 00000000..695f14a9 --- /dev/null +++ b/src/dotnet6/blob/AzFuncUni.Blob/local.http @@ -0,0 +1,12 @@ +POST http://localhost:7071/api/StorePlayerWithStringBlobOutput +Content-Type: application/json + +{ + "id": "1", + "nickName": "Iron Man", + "email": "tony.stark@avengers.com", + "location": { + "region": "california", + "country": "usa" + } +} diff --git a/src/dotnet6/blob/AzFuncUni.Blob/local.settings.json b/src/dotnet6/blob/AzFuncUni.Blob/local.settings.json index fc6e688f..f42b902d 100644 --- a/src/dotnet6/blob/AzFuncUni.Blob/local.settings.json +++ b/src/dotnet6/blob/AzFuncUni.Blob/local.settings.json @@ -1,7 +1,8 @@ { "IsEncrypted": false, "Values": { - "AzureWebJobsStorage": "DevelopmentStorage=true", + "AzureWebJobsStorage": "UseDevelopmentStorage=true", + "AzureWebJobsBlobStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated" } } diff --git a/src/dotnet6/blob/AzFuncUni.Blob/player-1.json b/src/dotnet6/blob/AzFuncUni.Blob/player-1.json new file mode 100644 index 00000000..2693067f --- /dev/null +++ b/src/dotnet6/blob/AzFuncUni.Blob/player-1.json @@ -0,0 +1,9 @@ +{ + "id": "1", + "nickName": "Iron Man", + "email": "tony.stark@avengers.com", + "location": { + "region": "california", + "country": "usa" + } +} From 5436de23af6d6586e57023aed78e060fada9e3af Mon Sep 17 00:00:00 2001 From: Marc Duiker Date: Sun, 11 Sep 2022 19:48:24 +0200 Subject: [PATCH 3/4] update packages --- lessons/dotnet6/blob/README.md | 2 +- src/dotnet6/blob/AzFuncUni.Blob/.vscode/extensions.json | 3 ++- src/dotnet6/blob/AzFuncUni.Blob/AzFuncUni.Blob.csproj | 7 +++---- .../blob/AzFuncUni.Blob/Models/HttpAndBlobOutput.cs | 4 ++-- .../blob/AzFuncUni.Blob/StorePlayerWithStringBlobOutput.cs | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lessons/dotnet6/blob/README.md b/lessons/dotnet6/blob/README.md index 8f943531..b584aff2 100644 --- a/lessons/dotnet6/blob/README.md +++ b/lessons/dotnet6/blob/README.md @@ -49,7 +49,7 @@ We're going to be using local storage instead of creating a storage account in A ![Storage Explorer sample-items](img/storage-explorer-sample-items.png) 3. In the `players` container create a folder called `in`. ![In folder](img/in-folder.png) -4. Drag [player-1.json](../../../src/dotnet6/AzureFunctions.Blob/player-1.json) there. You can create more player json files and add them here if you'd like, we've provided one example. +4. Drag [player-1.json](../../../src/dotnet6/AzFuncUni.Blob/player-1.json) there. You can create more player json files and add them here if you'd like, we've provided one example. ![player-1 In folder](img/player-1-in-folder.png) 5. You're now all set to work with local storage. diff --git a/src/dotnet6/blob/AzFuncUni.Blob/.vscode/extensions.json b/src/dotnet6/blob/AzFuncUni.Blob/.vscode/extensions.json index de991f40..830ea032 100644 --- a/src/dotnet6/blob/AzFuncUni.Blob/.vscode/extensions.json +++ b/src/dotnet6/blob/AzFuncUni.Blob/.vscode/extensions.json @@ -1,6 +1,7 @@ { "recommendations": [ "ms-azuretools.vscode-azurefunctions", - "ms-dotnettools.csharp" + "ms-dotnettools.csharp", + "Azurite.azurite" ] } diff --git a/src/dotnet6/blob/AzFuncUni.Blob/AzFuncUni.Blob.csproj b/src/dotnet6/blob/AzFuncUni.Blob/AzFuncUni.Blob.csproj index 9dab588f..aec44bd5 100644 --- a/src/dotnet6/blob/AzFuncUni.Blob/AzFuncUni.Blob.csproj +++ b/src/dotnet6/blob/AzFuncUni.Blob/AzFuncUni.Blob.csproj @@ -7,11 +7,10 @@ enable - + - - - + + diff --git a/src/dotnet6/blob/AzFuncUni.Blob/Models/HttpAndBlobOutput.cs b/src/dotnet6/blob/AzFuncUni.Blob/Models/HttpAndBlobOutput.cs index b12c87e1..53a7c6e2 100644 --- a/src/dotnet6/blob/AzFuncUni.Blob/Models/HttpAndBlobOutput.cs +++ b/src/dotnet6/blob/AzFuncUni.Blob/Models/HttpAndBlobOutput.cs @@ -6,7 +6,7 @@ namespace AzFuncUni.Blob.Models public class HttpAndBlobOutput { public HttpAndBlobOutput( - string? blobData, + string blobData, HttpResponseData httpData) { BlobData = blobData; @@ -14,7 +14,7 @@ public HttpAndBlobOutput( } [BlobOutput("players/out/string-{rand-guid}.json", Connection = "AzureWebJobsBlobStorage")] - public string? BlobData { get; set; } + public string BlobData { get; set; } public HttpResponseData HttpData { get; set; } } diff --git a/src/dotnet6/blob/AzFuncUni.Blob/StorePlayerWithStringBlobOutput.cs b/src/dotnet6/blob/AzFuncUni.Blob/StorePlayerWithStringBlobOutput.cs index 0cc3b54e..ecbcad16 100644 --- a/src/dotnet6/blob/AzFuncUni.Blob/StorePlayerWithStringBlobOutput.cs +++ b/src/dotnet6/blob/AzFuncUni.Blob/StorePlayerWithStringBlobOutput.cs @@ -21,7 +21,7 @@ public async Task Run([HttpTrigger(AuthorizationLevel.Functio { var player = await req.ReadFromJsonAsync(); HttpResponseData response; - string? serializedPlayer = default; + string serializedPlayer = string.Empty; if (player == null) { From 9a35032ccc8ffa9d2b9cbf95474d927c2ca0d4a0 Mon Sep 17 00:00:00 2001 From: Marc Duiker Date: Sun, 11 Sep 2022 22:05:15 +0200 Subject: [PATCH 4/4] Ignore Azurite files --- src/dotnet6/blob/AzFuncUni.Blob/.gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/dotnet6/blob/AzFuncUni.Blob/.gitignore b/src/dotnet6/blob/AzFuncUni.Blob/.gitignore index fea9bfe3..2e88b724 100644 --- a/src/dotnet6/blob/AzFuncUni.Blob/.gitignore +++ b/src/dotnet6/blob/AzFuncUni.Blob/.gitignore @@ -1,6 +1,10 @@ ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. +__azurite* +__blobstorage__ +__queuestorage__ + # Azure Functions localsettings file #local.settings.json