From 0bfd858d4c814869a3a529db789385da82e02a79 Mon Sep 17 00:00:00 2001 From: Kevin Carroll Date: Tue, 22 Apr 2025 06:53:01 -0700 Subject: [PATCH 1/2] Added strawberry shake demo --- Custom-HttpProcessor/README.md | 2 - Subscriptions-StrawberryShake/README.md | 3 + .../.config/dotnet-tools.json | 13 ++++ .../Strawberry-Shake-Client/.graphqlrc.json | 20 +++++ .../Strawberry-Shake-Client/Program.cs | 59 ++++++++++++++ .../Queries/Query-Time.graphql | 3 + .../Subscription-OnTimeChanged.graphql | 5 ++ .../Strawberry-Shake-Client.csproj | 21 +++++ .../schema.extensions.graphql | 13 ++++ .../Strawberry-Shake-Client/schema.graphql | 19 +++++ .../BackgroundServices/TimeEventPublisher.cs | 77 +++++++++++++++++++ .../Controllers/QueryController.cs | 23 ++++++ .../Controllers/SubscriptionController.cs | 28 +++++++ .../Models/CurrentSecondEventData.cs | 9 +++ .../Subscription-Server/Program.cs | 76 ++++++++++++++++++ .../Properties/launchSettings.json | 15 ++++ .../Subscription-Server.csproj | 12 +++ .../Subscription-Server/appsettings.json | 10 +++ .../Subscriptions-StrawberryShake.sln | 31 ++++++++ Subscriptions-StrawberryShake/graphiql.html | 67 ++++++++++++++++ 20 files changed, 504 insertions(+), 2 deletions(-) create mode 100644 Subscriptions-StrawberryShake/README.md create mode 100644 Subscriptions-StrawberryShake/Strawberry-Shake-Client/.config/dotnet-tools.json create mode 100644 Subscriptions-StrawberryShake/Strawberry-Shake-Client/.graphqlrc.json create mode 100644 Subscriptions-StrawberryShake/Strawberry-Shake-Client/Program.cs create mode 100644 Subscriptions-StrawberryShake/Strawberry-Shake-Client/Queries/Query-Time.graphql create mode 100644 Subscriptions-StrawberryShake/Strawberry-Shake-Client/Queries/Subscription-OnTimeChanged.graphql create mode 100644 Subscriptions-StrawberryShake/Strawberry-Shake-Client/Strawberry-Shake-Client.csproj create mode 100644 Subscriptions-StrawberryShake/Strawberry-Shake-Client/schema.extensions.graphql create mode 100644 Subscriptions-StrawberryShake/Strawberry-Shake-Client/schema.graphql create mode 100644 Subscriptions-StrawberryShake/Subscription-Server/BackgroundServices/TimeEventPublisher.cs create mode 100644 Subscriptions-StrawberryShake/Subscription-Server/Controllers/QueryController.cs create mode 100644 Subscriptions-StrawberryShake/Subscription-Server/Controllers/SubscriptionController.cs create mode 100644 Subscriptions-StrawberryShake/Subscription-Server/Models/CurrentSecondEventData.cs create mode 100644 Subscriptions-StrawberryShake/Subscription-Server/Program.cs create mode 100644 Subscriptions-StrawberryShake/Subscription-Server/Properties/launchSettings.json create mode 100644 Subscriptions-StrawberryShake/Subscription-Server/Subscription-Server.csproj create mode 100644 Subscriptions-StrawberryShake/Subscription-Server/appsettings.json create mode 100644 Subscriptions-StrawberryShake/Subscriptions-StrawberryShake.sln create mode 100644 Subscriptions-StrawberryShake/graphiql.html diff --git a/Custom-HttpProcessor/README.md b/Custom-HttpProcessor/README.md index 066461a..9d86279 100644 --- a/Custom-HttpProcessor/README.md +++ b/Custom-HttpProcessor/README.md @@ -2,6 +2,4 @@ This example project shows how to override the default HTTP Processor to take control of the `HttpContext` and perform any custom processing that may be needed related to the request/response pipeline surrounding GraphQL ASP.NET. -_Project Type_: .NET 7.0 - _Solution:_ `Custom-HttpProcessor.sln` diff --git a/Subscriptions-StrawberryShake/README.md b/Subscriptions-StrawberryShake/README.md new file mode 100644 index 0000000..e4159c3 --- /dev/null +++ b/Subscriptions-StrawberryShake/README.md @@ -0,0 +1,3 @@ +## Strawberry Shake Client Demo +A demo project that uses Chilli Cream's .NET GraphQL client. This demo creates a subscription server that constantly emits the server's current time and a .NET client that can watch for said events and displays them to a console window. + diff --git a/Subscriptions-StrawberryShake/Strawberry-Shake-Client/.config/dotnet-tools.json b/Subscriptions-StrawberryShake/Strawberry-Shake-Client/.config/dotnet-tools.json new file mode 100644 index 0000000..7e2ebee --- /dev/null +++ b/Subscriptions-StrawberryShake/Strawberry-Shake-Client/.config/dotnet-tools.json @@ -0,0 +1,13 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "strawberryshake.tools": { + "version": "15.1.3", + "commands": [ + "dotnet-graphql" + ], + "rollForward": false + } + } +} \ No newline at end of file diff --git a/Subscriptions-StrawberryShake/Strawberry-Shake-Client/.graphqlrc.json b/Subscriptions-StrawberryShake/Strawberry-Shake-Client/.graphqlrc.json new file mode 100644 index 0000000..9c27b44 --- /dev/null +++ b/Subscriptions-StrawberryShake/Strawberry-Shake-Client/.graphqlrc.json @@ -0,0 +1,20 @@ +{ + "schema": "schema.graphql", + "documents": "**/*.graphql", + "extensions": { + "strawberryShake": { + "name": "TimeOfDayServer", + "url": "http://localhost:5000/graphql", + "records": { + "inputs": false, + "entities": false + }, + "transportProfiles": [ + { + "default": "Http", + "subscription": "WebSocket" + } + ] + } + } +} \ No newline at end of file diff --git a/Subscriptions-StrawberryShake/Strawberry-Shake-Client/Program.cs b/Subscriptions-StrawberryShake/Strawberry-Shake-Client/Program.cs new file mode 100644 index 0000000..efd7c50 --- /dev/null +++ b/Subscriptions-StrawberryShake/Strawberry-Shake-Client/Program.cs @@ -0,0 +1,59 @@ + + +namespace GraphQL.AspNet.Examples.StrawberryShakeClient +{ + using System; + using System.Threading.Tasks; + using Microsoft.Extensions.DependencyInjection; + + internal class Program + { + static async Task Main(string[] args) + { + var services = new ServiceCollection(); + + // Add the graphql server + // this call is code generated by Strawberry shake, it does not exist in the project files + services.AddTimeOfDayServer() + .ConfigureHttpClient(client => + { + client.BaseAddress = new Uri("http://localhost:5000/graphql"); + }) + .ConfigureWebSocketClient(client => + { + client.Uri = new Uri("ws://localhost:5000/graphql"); + }); + + var provider = services.BuildServiceProvider(); + + using var scope = provider.CreateScope(); + + var server = scope.ServiceProvider.GetService(); + + + // do a get request which won't return until the server is online + // this makes sure that if the server and client are started + // at the same time in this demo that hte client wont try to subscribe until + // the server is ready + var time = await server.GetCurrentTime.ExecuteAsync(); + Console.WriteLine($"Client Started...{time.Data.CurrentTime}"); + + // subscribe to the server and print time events to the console + server.OnTimeChanged.Watch() + .Subscribe(result => + { + var formattedTime = "-error-"; + var time = result?.Data?.OnTimeChanged?.CurrentTime; + if (time is not null) + { + formattedTime = time; + } + + Console.WriteLine($"Server Time: {time}"); + }); + + Console.ReadKey(); + + } + } +} diff --git a/Subscriptions-StrawberryShake/Strawberry-Shake-Client/Queries/Query-Time.graphql b/Subscriptions-StrawberryShake/Strawberry-Shake-Client/Queries/Query-Time.graphql new file mode 100644 index 0000000..c3f39c8 --- /dev/null +++ b/Subscriptions-StrawberryShake/Strawberry-Shake-Client/Queries/Query-Time.graphql @@ -0,0 +1,3 @@ +query GetCurrentTime{ + currentTime +} \ No newline at end of file diff --git a/Subscriptions-StrawberryShake/Strawberry-Shake-Client/Queries/Subscription-OnTimeChanged.graphql b/Subscriptions-StrawberryShake/Strawberry-Shake-Client/Queries/Subscription-OnTimeChanged.graphql new file mode 100644 index 0000000..af8e2e0 --- /dev/null +++ b/Subscriptions-StrawberryShake/Strawberry-Shake-Client/Queries/Subscription-OnTimeChanged.graphql @@ -0,0 +1,5 @@ +subscription OnTimeChanged{ + onTimeChanged { + currentTime + } +} \ No newline at end of file diff --git a/Subscriptions-StrawberryShake/Strawberry-Shake-Client/Strawberry-Shake-Client.csproj b/Subscriptions-StrawberryShake/Strawberry-Shake-Client/Strawberry-Shake-Client.csproj new file mode 100644 index 0000000..f9572e9 --- /dev/null +++ b/Subscriptions-StrawberryShake/Strawberry-Shake-Client/Strawberry-Shake-Client.csproj @@ -0,0 +1,21 @@ + + + + net8.0 + GraphQL.AspNet.Examples.StrawberryShakeClient + Exe + + + + + + + + + + + + + + + diff --git a/Subscriptions-StrawberryShake/Strawberry-Shake-Client/schema.extensions.graphql b/Subscriptions-StrawberryShake/Strawberry-Shake-Client/schema.extensions.graphql new file mode 100644 index 0000000..0b5fbd9 --- /dev/null +++ b/Subscriptions-StrawberryShake/Strawberry-Shake-Client/schema.extensions.graphql @@ -0,0 +1,13 @@ +scalar _KeyFieldSet + +directive @key(fields: _KeyFieldSet!) on SCHEMA | OBJECT + +directive @serializationType(name: String!) on SCALAR + +directive @runtimeType(name: String!) on SCALAR + +directive @enumValue(value: String!) on ENUM_VALUE + +directive @rename(name: String!) on INPUT_FIELD_DEFINITION | INPUT_OBJECT | ENUM | ENUM_VALUE + +extend schema @key(fields: "id") \ No newline at end of file diff --git a/Subscriptions-StrawberryShake/Strawberry-Shake-Client/schema.graphql b/Subscriptions-StrawberryShake/Strawberry-Shake-Client/schema.graphql new file mode 100644 index 0000000..40bfba2 --- /dev/null +++ b/Subscriptions-StrawberryShake/Strawberry-Shake-Client/schema.graphql @@ -0,0 +1,19 @@ +schema { + query: Query + subscription: Subscription +} + +"A time of day that does not include a date component." +scalar TimeOnly + +type Query { + currentTime: TimeOnly! +} + +type CurrentTimeEventData { + currentTime: TimeOnly! +} + +type Subscription { + onTimeChanged: CurrentTimeEventData +} \ No newline at end of file diff --git a/Subscriptions-StrawberryShake/Subscription-Server/BackgroundServices/TimeEventPublisher.cs b/Subscriptions-StrawberryShake/Subscription-Server/BackgroundServices/TimeEventPublisher.cs new file mode 100644 index 0000000..f346aeb --- /dev/null +++ b/Subscriptions-StrawberryShake/Subscription-Server/BackgroundServices/TimeEventPublisher.cs @@ -0,0 +1,77 @@ +namespace GraphQL.AspNet.Examples.StrawberryShakeServer.BackgroundServices +{ + using System; + using System.Threading; + using System.Threading.Tasks; + using GraphQL.AspNet.Examples.StrawberryShakeServer.Controllers; + using GraphQL.AspNet.Examples.StrawberryShakeServer.Models; + using GraphQL.AspNet.Interfaces.Subscriptions; + using GraphQL.AspNet.Schemas; + using Microsoft.Extensions.Hosting; + using Microsoft.Extensions.Logging; + + /// + /// A simple hosted service that runs in the background on the server continually rasing the time of + /// day each second as it changes. + /// + internal sealed class TimeEventPublisher : BackgroundService + { + private readonly ISubscriptionEventRouter _eventRouter; + private readonly ILogger _logger; + + public TimeEventPublisher(ISubscriptionEventRouter eventRouter, ILogger logger) + { + _eventRouter = eventRouter; + _logger = logger; + } + + protected override async Task ExecuteAsync(CancellationToken stoppingToken) + { + _logger?.LogInformation("Time Publisher started."); + var currentTime = TimeOnly.FromTimeSpan(TimeSpan.FromSeconds(Math.Round(DateTime.UtcNow.TimeOfDay.TotalSeconds))); + while (!stoppingToken.IsCancellationRequested) + { + try + { + await Task.Delay(500, stoppingToken); + } + catch (TaskCanceledException) + { + break; + } + + var now = TimeOnly.FromTimeSpan(TimeSpan.FromSeconds(Math.Round(DateTime.UtcNow.TimeOfDay.TotalSeconds))); + if (currentTime != now) + { + var eventData = new CurrentTimeEventData + { + CurrentTime = now, + }; + RaisePublishedEvent(eventData, SubscriptionController.TIME_CHANGED_EVENT); + _logger.LogDebug($"Time Change Published: {now:HH:mm:ss}"); + } + + currentTime = now; + } + } + + /// + /// When the time of day changes + /// + /// The data package to publish + /// The name of the event to publish teh data package as + private void RaisePublishedEvent(CurrentTimeEventData eventData, string eventName) + { + var subscriptionEvent = new GraphQL.AspNet.SubscriptionServer.SubscriptionEvent + { + Id = Guid.NewGuid().ToString(), + EventName = eventName, + Data = eventData, + SchemaTypeName = typeof(GraphSchema).AssemblyQualifiedName, + DataTypeName = typeof(CurrentTimeEventData).AssemblyQualifiedName, + }; + + _eventRouter?.RaisePublishedEvent(subscriptionEvent); + } + } +} diff --git a/Subscriptions-StrawberryShake/Subscription-Server/Controllers/QueryController.cs b/Subscriptions-StrawberryShake/Subscription-Server/Controllers/QueryController.cs new file mode 100644 index 0000000..aaa57f7 --- /dev/null +++ b/Subscriptions-StrawberryShake/Subscription-Server/Controllers/QueryController.cs @@ -0,0 +1,23 @@ +namespace GraphQL.AspNet.Examples.StrawberryShakeServer.Controllers +{ + using System; + using GraphQL.AspNet.Attributes; + using GraphQL.AspNet.Controllers; + + /// + /// A query controller allowing anyone to retrieve the current second value from the server. + /// + public class QueryController : GraphController + { + /// + /// Returns the current time on the server. Provides a nice, ever changing + /// value to see repeated in the demo client. + /// + [QueryRoot("CurrentTime", typeof(TimeOnly))] + public TimeOnly CurrentTime() + { + // round to the last second + return TimeOnly.FromTimeSpan(TimeSpan.FromSeconds(Math.Round(DateTime.UtcNow.TimeOfDay.TotalSeconds))); + } + } +} diff --git a/Subscriptions-StrawberryShake/Subscription-Server/Controllers/SubscriptionController.cs b/Subscriptions-StrawberryShake/Subscription-Server/Controllers/SubscriptionController.cs new file mode 100644 index 0000000..ada4e82 --- /dev/null +++ b/Subscriptions-StrawberryShake/Subscription-Server/Controllers/SubscriptionController.cs @@ -0,0 +1,28 @@ +namespace GraphQL.AspNet.Examples.StrawberryShakeServer.Controllers +{ + using GraphQL.AspNet.Attributes; + using GraphQL.AspNet.Controllers; + using GraphQL.AspNet.Examples.StrawberryShakeServer.Models; + using GraphQL.AspNet.Interfaces.Controllers; + + /// + /// A simple controller that allows clients to subscribe and receive the current time + /// of the server. + /// + public class SubscriptionController : GraphController + { + public const string TIME_CHANGED_EVENT = "TIME_CHANGED"; + + /// + /// A subscription that relays the time value whenever its raised to the server. + /// + /// The data package raised with the event. + /// + [SubscriptionRoot("onTimeChanged", typeof(CurrentTimeEventData), EventName = TIME_CHANGED_EVENT)] + public IGraphActionResult OnTimeChanged(CurrentTimeEventData eventData) + { + // relay the event data to each connected client. + return this.Ok(eventData); + } + } +} diff --git a/Subscriptions-StrawberryShake/Subscription-Server/Models/CurrentSecondEventData.cs b/Subscriptions-StrawberryShake/Subscription-Server/Models/CurrentSecondEventData.cs new file mode 100644 index 0000000..d41de1d --- /dev/null +++ b/Subscriptions-StrawberryShake/Subscription-Server/Models/CurrentSecondEventData.cs @@ -0,0 +1,9 @@ +namespace GraphQL.AspNet.Examples.StrawberryShakeServer.Models +{ + using System; + + public class CurrentTimeEventData + { + public TimeOnly CurrentTime { get; set; } + } +} diff --git a/Subscriptions-StrawberryShake/Subscription-Server/Program.cs b/Subscriptions-StrawberryShake/Subscription-Server/Program.cs new file mode 100644 index 0000000..ea89a25 --- /dev/null +++ b/Subscriptions-StrawberryShake/Subscription-Server/Program.cs @@ -0,0 +1,76 @@ +namespace Subscription_Server +{ + using System; + using GraphQL.AspNet.Configuration; + using GraphQL.AspNet.Examples.StrawberryShakeServer.BackgroundServices; + using Microsoft.AspNetCore.Builder; + using Microsoft.AspNetCore.WebSockets; + using Microsoft.Extensions.DependencyInjection; + + public class Program + { + private const string ALL_ORIGINS_POLICY = "_allOrigins"; + + public static void Main(string[] args) + { + var builder = WebApplication.CreateBuilder(args); + + // Set up cors to allow anything through + // For demo purposes only. Don't do this in a real application. + // ------------------------------------------------- + builder.Services.AddCors(options => + { + options.AddPolicy( + ALL_ORIGINS_POLICY, + builder => + { + builder.AllowAnyOrigin() + .AllowAnyHeader() + .AllowAnyMethod(); + }); + }); + + builder.Services.AddWebSockets(options => + { + // server address + options.AllowedOrigins.Add("http://localhost:5000"); + options.AllowedOrigins.Add("ws://localhost:5000"); + + // here add some common origins of various tools that may be + // used for running this demo + // do not add these in a production app + options.AllowedOrigins.Add("null"); + + // some electron-based graphql tools send a file reference + // as their origin + // do not add these in a production app + options.AllowedOrigins.Add("file://"); + options.AllowedOrigins.Add("ws://"); + }); + + // Setup Graph QL + // ------------------------------------------------- + builder.Services + .AddGraphQL() + .AddSubscriptions(); + + // Add the background service that will continuously raise + // event data about the time of day. + builder.Services.AddHostedService(); + + // Configure the HTTP request pipeline. + var app = builder.Build(); + + app.UseCors(ALL_ORIGINS_POLICY); + + // make sure we can accept web socket connections + app.UseWebSockets(); + + // handle graphql requests + app.UseGraphQL(); + + app.MapGet("/", () => "Hello World!"); + app.Run(); + } + } +} diff --git a/Subscriptions-StrawberryShake/Subscription-Server/Properties/launchSettings.json b/Subscriptions-StrawberryShake/Subscription-Server/Properties/launchSettings.json new file mode 100644 index 0000000..2ac396a --- /dev/null +++ b/Subscriptions-StrawberryShake/Subscription-Server/Properties/launchSettings.json @@ -0,0 +1,15 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": false, + "launchUrl": "", + "applicationUrl": "http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Subscriptions-StrawberryShake/Subscription-Server/Subscription-Server.csproj b/Subscriptions-StrawberryShake/Subscription-Server/Subscription-Server.csproj new file mode 100644 index 0000000..afd025c --- /dev/null +++ b/Subscriptions-StrawberryShake/Subscription-Server/Subscription-Server.csproj @@ -0,0 +1,12 @@ + + + + net8.0 + GraphQL.AspNet.Examples.StrawberryShakeServer + + + + + + + diff --git a/Subscriptions-StrawberryShake/Subscription-Server/appsettings.json b/Subscriptions-StrawberryShake/Subscription-Server/appsettings.json new file mode 100644 index 0000000..d7beba1 --- /dev/null +++ b/Subscriptions-StrawberryShake/Subscription-Server/appsettings.json @@ -0,0 +1,10 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning", + "GraphQL.AspNet": "Information" + } + }, + "AllowedHosts": "*" +} diff --git a/Subscriptions-StrawberryShake/Subscriptions-StrawberryShake.sln b/Subscriptions-StrawberryShake/Subscriptions-StrawberryShake.sln new file mode 100644 index 0000000..d090e96 --- /dev/null +++ b/Subscriptions-StrawberryShake/Subscriptions-StrawberryShake.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.13.35931.197 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Strawberry-Shake-Client", "Strawberry-Shake-Client\Strawberry-Shake-Client.csproj", "{AB8235CD-5B35-49E8-91B6-5155F732FBD0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Subscription-Server", "Subscription-Server\Subscription-Server.csproj", "{9519D1C0-ECDF-4681-BE34-060146DE45B9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {AB8235CD-5B35-49E8-91B6-5155F732FBD0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AB8235CD-5B35-49E8-91B6-5155F732FBD0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AB8235CD-5B35-49E8-91B6-5155F732FBD0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AB8235CD-5B35-49E8-91B6-5155F732FBD0}.Release|Any CPU.Build.0 = Release|Any CPU + {9519D1C0-ECDF-4681-BE34-060146DE45B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9519D1C0-ECDF-4681-BE34-060146DE45B9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9519D1C0-ECDF-4681-BE34-060146DE45B9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9519D1C0-ECDF-4681-BE34-060146DE45B9}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {21198A9A-A921-4289-8DCA-3DB71C89F9F4} + EndGlobalSection +EndGlobal diff --git a/Subscriptions-StrawberryShake/graphiql.html b/Subscriptions-StrawberryShake/graphiql.html new file mode 100644 index 0000000..a2b4351 --- /dev/null +++ b/Subscriptions-StrawberryShake/graphiql.html @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + +
Loading...
+ + + + From fa41935dca4365b7a8cb2b1ea8c3c9980bf5bc22 Mon Sep 17 00:00:00 2001 From: Kevin Carroll Date: Fri, 25 Apr 2025 08:57:32 -0700 Subject: [PATCH 2/2] WIP, update library version to 1.4.3 across the board --- Authorization/Authorization.csproj | 2 +- Custom-Directives/Custom-Directives.csproj | 2 +- Custom-HttpProcessor/Custom-HttpProcessor.csproj | 2 +- File-Uploads/src/FileUploads.API/FileUploads.API.csproj | 2 +- .../firebase-authentication/firebase-authentication.csproj | 2 +- LoggingProvider/LoggingProvider.csproj | 2 +- .../src/SharedResources/SharedResources.csproj | 4 ++-- .../graphql-aspnet-azure-servicebus-connector.csproj | 4 ++-- .../src/Bakery.API/Bakery.API.csproj | 4 ++-- .../Strawberry-Shake-Client/Strawberry-Shake-Client.csproj | 2 +- .../Subscription-Server/Subscription-Server.csproj | 6 +++--- Unit-Testing/unit-testable-api/unit-testable-api.csproj | 2 +- Unit-Testing/unit-tests/unit-tests.csproj | 4 ++-- 13 files changed, 19 insertions(+), 19 deletions(-) diff --git a/Authorization/Authorization.csproj b/Authorization/Authorization.csproj index 94f4bed..1a46f8c 100644 --- a/Authorization/Authorization.csproj +++ b/Authorization/Authorization.csproj @@ -6,7 +6,7 @@ - + diff --git a/Custom-Directives/Custom-Directives.csproj b/Custom-Directives/Custom-Directives.csproj index 40ec73b..926d178 100644 --- a/Custom-Directives/Custom-Directives.csproj +++ b/Custom-Directives/Custom-Directives.csproj @@ -6,7 +6,7 @@ - + diff --git a/Custom-HttpProcessor/Custom-HttpProcessor.csproj b/Custom-HttpProcessor/Custom-HttpProcessor.csproj index 1aecdc0..598b935 100644 --- a/Custom-HttpProcessor/Custom-HttpProcessor.csproj +++ b/Custom-HttpProcessor/Custom-HttpProcessor.csproj @@ -6,7 +6,7 @@ - + diff --git a/File-Uploads/src/FileUploads.API/FileUploads.API.csproj b/File-Uploads/src/FileUploads.API/FileUploads.API.csproj index 904f6c8..1fe365e 100644 --- a/File-Uploads/src/FileUploads.API/FileUploads.API.csproj +++ b/File-Uploads/src/FileUploads.API/FileUploads.API.csproj @@ -6,7 +6,7 @@ - + diff --git a/Firebase-Authentication/firebase-authentication/firebase-authentication.csproj b/Firebase-Authentication/firebase-authentication/firebase-authentication.csproj index b5556b2..eb9bb48 100644 --- a/Firebase-Authentication/firebase-authentication/firebase-authentication.csproj +++ b/Firebase-Authentication/firebase-authentication/firebase-authentication.csproj @@ -7,7 +7,7 @@ - + diff --git a/LoggingProvider/LoggingProvider.csproj b/LoggingProvider/LoggingProvider.csproj index a1739f8..6735990 100644 --- a/LoggingProvider/LoggingProvider.csproj +++ b/LoggingProvider/LoggingProvider.csproj @@ -6,7 +6,7 @@ - + diff --git a/Subscriptions-AzureServiceBus/src/SharedResources/SharedResources.csproj b/Subscriptions-AzureServiceBus/src/SharedResources/SharedResources.csproj index 78447eb..0ffb01c 100644 --- a/Subscriptions-AzureServiceBus/src/SharedResources/SharedResources.csproj +++ b/Subscriptions-AzureServiceBus/src/SharedResources/SharedResources.csproj @@ -12,8 +12,8 @@ - - + + diff --git a/Subscriptions-AzureServiceBus/src/graphql-aspnet-azure-servicebus-connector/graphql-aspnet-azure-servicebus-connector.csproj b/Subscriptions-AzureServiceBus/src/graphql-aspnet-azure-servicebus-connector/graphql-aspnet-azure-servicebus-connector.csproj index b283463..07e3e65 100644 --- a/Subscriptions-AzureServiceBus/src/graphql-aspnet-azure-servicebus-connector/graphql-aspnet-azure-servicebus-connector.csproj +++ b/Subscriptions-AzureServiceBus/src/graphql-aspnet-azure-servicebus-connector/graphql-aspnet-azure-servicebus-connector.csproj @@ -14,8 +14,8 @@ - - + + diff --git a/Subscriptions-ReactApolloClient/src/Bakery.API/Bakery.API.csproj b/Subscriptions-ReactApolloClient/src/Bakery.API/Bakery.API.csproj index 5cf77f5..553a5a4 100644 --- a/Subscriptions-ReactApolloClient/src/Bakery.API/Bakery.API.csproj +++ b/Subscriptions-ReactApolloClient/src/Bakery.API/Bakery.API.csproj @@ -6,8 +6,8 @@ - - + + \ No newline at end of file diff --git a/Subscriptions-StrawberryShake/Strawberry-Shake-Client/Strawberry-Shake-Client.csproj b/Subscriptions-StrawberryShake/Strawberry-Shake-Client/Strawberry-Shake-Client.csproj index f9572e9..8a0c400 100644 --- a/Subscriptions-StrawberryShake/Strawberry-Shake-Client/Strawberry-Shake-Client.csproj +++ b/Subscriptions-StrawberryShake/Strawberry-Shake-Client/Strawberry-Shake-Client.csproj @@ -1,7 +1,7 @@  - net8.0 + net9.0 GraphQL.AspNet.Examples.StrawberryShakeClient Exe diff --git a/Subscriptions-StrawberryShake/Subscription-Server/Subscription-Server.csproj b/Subscriptions-StrawberryShake/Subscription-Server/Subscription-Server.csproj index afd025c..6d1b51d 100644 --- a/Subscriptions-StrawberryShake/Subscription-Server/Subscription-Server.csproj +++ b/Subscriptions-StrawberryShake/Subscription-Server/Subscription-Server.csproj @@ -1,12 +1,12 @@  - net8.0 + net9.0 GraphQL.AspNet.Examples.StrawberryShakeServer - - + + diff --git a/Unit-Testing/unit-testable-api/unit-testable-api.csproj b/Unit-Testing/unit-testable-api/unit-testable-api.csproj index 6482a05..8f7b23c 100644 --- a/Unit-Testing/unit-testable-api/unit-testable-api.csproj +++ b/Unit-Testing/unit-testable-api/unit-testable-api.csproj @@ -6,7 +6,7 @@ - + diff --git a/Unit-Testing/unit-tests/unit-tests.csproj b/Unit-Testing/unit-tests/unit-tests.csproj index 02581b2..0853375 100644 --- a/Unit-Testing/unit-tests/unit-tests.csproj +++ b/Unit-Testing/unit-tests/unit-tests.csproj @@ -9,8 +9,8 @@ - - + +