This commit is contained in:
Tommy Parnell
2019-04-06 06:32:04 -04:00
parent a108eb6992
commit 747c36a87b
9 changed files with 125 additions and 11 deletions

9
Batter.cs Normal file
View File

@@ -0,0 +1,9 @@
using System;
namespace azure_functions_talk
{
public class Batter
{
public string Id { get; set; }
}
}

7
CompleteDounut.cs Normal file
View File

@@ -0,0 +1,7 @@
namespace azure_functions_talk
{
public class CompleteDounut : Fried
{
public string Topping { get; set; }
}
}

View File

@@ -12,13 +12,8 @@ namespace azure_functions_talk
{ {
public class Dounut public class Dounut
{ {
private static List<string> flavors = new List<string>() private static List<string> flavors = new List<string>() {
{ Enum.GetName(typeof(Toppings), Toppings.blackberry), Enum.GetName(typeof(Toppings), Toppings.bostonCreme), Enum.GetName(typeof(Toppings), Toppings.choco), Enum.GetName(typeof(Toppings), Toppings.strawberry), Enum.GetName(typeof(Toppings), Toppings.vanilla)
"choco",
"strawberry",
"blackberry",
"boston creme",
"vanilla"
}; };
public string Flavor { get; set; } = RandomFlavor(); public string Flavor { get; set; } = RandomFlavor();
public static string RandomFlavor() public static string RandomFlavor()

View File

@@ -24,11 +24,11 @@ namespace azure_functions_talk
var baseUrl = Environment.GetEnvironmentVariable("baseUrl"); var baseUrl = Environment.GetEnvironmentVariable("baseUrl");
try try
{ {
var tasks = Enumerable.Range(0, 12).Select(a => client.GetStringAsync(baseUrl + "/api/make")); var tasks = Enumerable.Range(0, 12).Select(a => {
await Task.WhenAll(tasks); return new CompleteDounut() { Id = Guid.NewGuid().ToString(), Topping = Topper.GetTopping() };
});
var dozen = tasks var dozen = tasks
.Select(a => JsonConvert.DeserializeObject<Dounut>(a.Result)) .Select(a => a.Topping)
.Select(a => a.Flavor)
.ToList(); .ToList();
return new OkObjectResult("Your dounuts sir! " + String.Join(' ', dozen)); return new OkObjectResult("Your dounuts sir! " + String.Join(' ', dozen));
} }

10
Fried.cs Normal file
View File

@@ -0,0 +1,10 @@
using System;
namespace azure_functions_talk
{
public class Fried : Batter
{
public bool Done = true;
}
}

24
Fryer.cs Normal file
View File

@@ -0,0 +1,24 @@
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
namespace azure_functions_talk
{
public static class Fryer
{
[FunctionName("Fryer")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] Batter req,
ILogger log)
{
await Task.Delay(100);
return new OkObjectResult(new Fried() { Id = req.Id });
}
}
}

23
GetBatter.cs Normal file
View File

@@ -0,0 +1,23 @@
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
namespace azure_functions_talk
{
public static class GetBatter
{
[FunctionName("GetBatter")]
public static IActionResult Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "batter")] HttpRequest req,
ILogger log)
{
return new OkObjectResult( new Batter() { Id = Guid.NewGuid().ToString() } );
}
}
}

35
Topper.cs Normal file
View File

@@ -0,0 +1,35 @@
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System.Collections.Generic;
namespace azure_functions_talk
{
public static class Topper
{
private static List<Toppings> flavors = new List<Toppings>() {
Toppings.blackberry,
Toppings.bostonCreme,
Toppings.choco,
Toppings.strawberry,
Toppings.vanilla
};
public static string GetTopping() {
return Enum.GetName(typeof(Toppings), flavors[new Random().Next(flavors.Count)]);
}
[FunctionName("Topper")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] Fried req,
ILogger log)
{
await Task.Delay(50);
return new OkObjectResult(new CompleteDounut() { Topping = GetTopping() });
}
}
}

11
Toppings.cs Normal file
View File

@@ -0,0 +1,11 @@
namespace azure_functions_talk
{
public enum Toppings
{
choco,
strawberry,
blackberry,
bostonCreme,
vanilla
}
}