💥 Rename Pusher to Ring
This commit is contained in:
		
							
								
								
									
										377
									
								
								.github/workflows/docker-build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										377
									
								
								.github/workflows/docker-build.yml
									
									
									
									
										vendored
									
									
								
							| @@ -1,189 +1,188 @@ | |||||||
|  name: Build and Push Microservices | name: Build and Push Microservices | ||||||
|   |  | ||||||
|  on: | on: | ||||||
|    push: |   push: | ||||||
|      branches: |     branches: | ||||||
|        - master |       - master | ||||||
|    workflow_dispatch: |   workflow_dispatch: | ||||||
|   |  | ||||||
|  jobs: | jobs: | ||||||
|    build-sphere: |   build-sphere: | ||||||
|      runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|      permissions: |     permissions: | ||||||
|        contents: read |       contents: read | ||||||
|        packages: write |       packages: write | ||||||
|      steps: |     steps: | ||||||
|        - name: Checkout repository |       - name: Checkout repository | ||||||
|          uses: actions/checkout@v3 |         uses: actions/checkout@v3 | ||||||
|          with: |         with: | ||||||
|            fetch-depth: 0 |           fetch-depth: 0 | ||||||
|        - name: Setup NBGV |       - name: Setup NBGV | ||||||
|          uses: dotnet/nbgv@master |         uses: dotnet/nbgv@master | ||||||
|          id: nbgv |         id: nbgv | ||||||
|        - name: Set up Docker Buildx |       - name: Set up Docker Buildx | ||||||
|          uses: docker/setup-buildx-action@v3 |         uses: docker/setup-buildx-action@v3 | ||||||
|        - name: Log in to GitHub Container Registry |       - name: Log in to GitHub Container Registry | ||||||
|          uses: docker/login-action@v3 |         uses: docker/login-action@v3 | ||||||
|          with: |         with: | ||||||
|            registry: ghcr.io |           registry: ghcr.io | ||||||
|            username: ${{ github.actor }} |           username: ${{ github.actor }} | ||||||
|            password: ${{ secrets.GITHUB_TOKEN }} |           password: ${{ secrets.GITHUB_TOKEN }} | ||||||
|        - name: Build and push DysonNetwork.Sphere Docker image |       - name: Build and push DysonNetwork.Sphere Docker image | ||||||
|          uses: docker/build-push-action@v6 |         uses: docker/build-push-action@v6 | ||||||
|          with: |         with: | ||||||
|            file: DysonNetwork.Sphere/Dockerfile |           file: DysonNetwork.Sphere/Dockerfile | ||||||
|            context: . |           context: . | ||||||
|            push: true |           push: true | ||||||
|            tags: ghcr.io/${{ vars.PACKAGE_OWNER }}/dyson-sphere:latest |           tags: ghcr.io/${{ vars.PACKAGE_OWNER }}/dyson-sphere:latest | ||||||
|            platforms: linux/amd64 |           platforms: linux/amd64 | ||||||
|   |  | ||||||
|    build-pass: |   build-pass: | ||||||
|      runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|      permissions: |     permissions: | ||||||
|        contents: read |       contents: read | ||||||
|        packages: write |       packages: write | ||||||
|      steps: |     steps: | ||||||
|        - name: Checkout repository |       - name: Checkout repository | ||||||
|          uses: actions/checkout@v3 |         uses: actions/checkout@v3 | ||||||
|          with: |         with: | ||||||
|            fetch-depth: 0 |           fetch-depth: 0 | ||||||
|        - name: Setup NBGV |       - name: Setup NBGV | ||||||
|          uses: dotnet/nbgv@master |         uses: dotnet/nbgv@master | ||||||
|          id: nbgv |         id: nbgv | ||||||
|        - name: Set up Docker Buildx |       - name: Set up Docker Buildx | ||||||
|          uses: docker/setup-buildx-action@v3 |         uses: docker/setup-buildx-action@v3 | ||||||
|        - name: Log in to GitHub Container Registry |       - name: Log in to GitHub Container Registry | ||||||
|          uses: docker/login-action@v3 |         uses: docker/login-action@v3 | ||||||
|          with: |         with: | ||||||
|            registry: ghcr.io |           registry: ghcr.io | ||||||
|            username: ${{ github.actor }} |           username: ${{ github.actor }} | ||||||
|            password: ${{ secrets.GITHUB_TOKEN }} |           password: ${{ secrets.GITHUB_TOKEN }} | ||||||
|        - name: Build and push DysonNetwork.Pass Docker image |       - name: Build and push DysonNetwork.Pass Docker image | ||||||
|          uses: docker/build-push-action@v6 |         uses: docker/build-push-action@v6 | ||||||
|          with: |         with: | ||||||
|            file: DysonNetwork.Pass/Dockerfile |           file: DysonNetwork.Pass/Dockerfile | ||||||
|            context: . |           context: . | ||||||
|            push: true |           push: true | ||||||
|            tags: ghcr.io/${{ vars.PACKAGE_OWNER }}/dyson-pass:latest |           tags: ghcr.io/${{ vars.PACKAGE_OWNER }}/dyson-pass:latest | ||||||
|            platforms: linux/amd64 |           platforms: linux/amd64 | ||||||
|   |  | ||||||
|    build-pusher: |   build-ring: | ||||||
|      runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|      permissions: |     permissions: | ||||||
|        contents: read |       contents: read | ||||||
|        packages: write |       packages: write | ||||||
|      steps: |     steps: | ||||||
|        - name: Checkout repository |       - name: Checkout repository | ||||||
|          uses: actions/checkout@v3 |         uses: actions/checkout@v3 | ||||||
|          with: |         with: | ||||||
|            fetch-depth: 0 |           fetch-depth: 0 | ||||||
|        - name: Setup NBGV |       - name: Setup NBGV | ||||||
|          uses: dotnet/nbgv@master |         uses: dotnet/nbgv@master | ||||||
|          id: nbgv |         id: nbgv | ||||||
|        - name: Set up Docker Buildx |       - name: Set up Docker Buildx | ||||||
|          uses: docker/setup-buildx-action@v3 |         uses: docker/setup-buildx-action@v3 | ||||||
|        - name: Log in to GitHub Container Registry |       - name: Log in to GitHub Container Registry | ||||||
|          uses: docker/login-action@v3 |         uses: docker/login-action@v3 | ||||||
|          with: |         with: | ||||||
|            registry: ghcr.io |           registry: ghcr.io | ||||||
|            username: ${{ github.actor }} |           username: ${{ github.actor }} | ||||||
|            password: ${{ secrets.GITHUB_TOKEN }} |           password: ${{ secrets.GITHUB_TOKEN }} | ||||||
|        - name: Build and push DysonNetwork.Pusher Docker image |       - name: Build and push DysonNetwork.Pusher Docker image | ||||||
|          uses: docker/build-push-action@v6 |         uses: docker/build-push-action@v6 | ||||||
|          with: |         with: | ||||||
|            file: DysonNetwork.Pusher/Dockerfile |           file: DysonNetwork.Ring/Dockerfile | ||||||
|            context: . |           context: . | ||||||
|            push: true |           push: true | ||||||
|            tags: ghcr.io/${{ vars.PACKAGE_OWNER }}/dyson-pusher:latest |           tags: ghcr.io/${{ vars.PACKAGE_OWNER }}/dyson-ring:latest | ||||||
|            platforms: linux/amd64 |           platforms: linux/amd64 | ||||||
|   |  | ||||||
|    build-drive: |   build-drive: | ||||||
|      runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|      permissions: |     permissions: | ||||||
|        contents: read |       contents: read | ||||||
|        packages: write |       packages: write | ||||||
|      steps: |     steps: | ||||||
|        - name: Checkout repository |       - name: Checkout repository | ||||||
|          uses: actions/checkout@v3 |         uses: actions/checkout@v3 | ||||||
|          with: |         with: | ||||||
|            fetch-depth: 0 |           fetch-depth: 0 | ||||||
|        - name: Setup NBGV |       - name: Setup NBGV | ||||||
|          uses: dotnet/nbgv@master |         uses: dotnet/nbgv@master | ||||||
|          id: nbgv |         id: nbgv | ||||||
|        - name: Set up Docker Buildx |       - name: Set up Docker Buildx | ||||||
|          uses: docker/setup-buildx-action@v3 |         uses: docker/setup-buildx-action@v3 | ||||||
|        - name: Log in to GitHub Container Registry |       - name: Log in to GitHub Container Registry | ||||||
|          uses: docker/login-action@v3 |         uses: docker/login-action@v3 | ||||||
|          with: |         with: | ||||||
|            registry: ghcr.io |           registry: ghcr.io | ||||||
|            username: ${{ github.actor }} |           username: ${{ github.actor }} | ||||||
|            password: ${{ secrets.GITHUB_TOKEN }} |           password: ${{ secrets.GITHUB_TOKEN }} | ||||||
|        - name: Build and push DysonNetwork.Drive Docker image |       - name: Build and push DysonNetwork.Drive Docker image | ||||||
|          uses: docker/build-push-action@v6 |         uses: docker/build-push-action@v6 | ||||||
|          with: |         with: | ||||||
|            file: DysonNetwork.Drive/Dockerfile |           file: DysonNetwork.Drive/Dockerfile | ||||||
|            context: . |           context: . | ||||||
|            push: true |           push: true | ||||||
|            tags: ghcr.io/${{ vars.PACKAGE_OWNER }}/dyson-drive:latest |           tags: ghcr.io/${{ vars.PACKAGE_OWNER }}/dyson-drive:latest | ||||||
|            platforms: linux/amd64 |           platforms: linux/amd64 | ||||||
|   |  | ||||||
|    build-gateway: |   build-gateway: | ||||||
|      runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|      permissions: |     permissions: | ||||||
|        contents: read |       contents: read | ||||||
|        packages: write |       packages: write | ||||||
|      steps: |     steps: | ||||||
|        - name: Checkout repository |       - name: Checkout repository | ||||||
|          uses: actions/checkout@v3 |         uses: actions/checkout@v3 | ||||||
|          with: |         with: | ||||||
|            fetch-depth: 0 |           fetch-depth: 0 | ||||||
|        - name: Setup NBGV |       - name: Setup NBGV | ||||||
|          uses: dotnet/nbgv@master |         uses: dotnet/nbgv@master | ||||||
|          id: nbgv |         id: nbgv | ||||||
|        - name: Set up Docker Buildx |       - name: Set up Docker Buildx | ||||||
|          uses: docker/setup-buildx-action@v3 |         uses: docker/setup-buildx-action@v3 | ||||||
|        - name: Log in to GitHub Container Registry |       - name: Log in to GitHub Container Registry | ||||||
|          uses: docker/login-action@v3 |         uses: docker/login-action@v3 | ||||||
|          with: |         with: | ||||||
|            registry: ghcr.io |           registry: ghcr.io | ||||||
|            username: ${{ github.actor }} |           username: ${{ github.actor }} | ||||||
|            password: ${{ secrets.GITHUB_TOKEN }} |           password: ${{ secrets.GITHUB_TOKEN }} | ||||||
|        - name: Build and push DysonNetwork.Gateway Docker image |       - name: Build and push DysonNetwork.Gateway Docker image | ||||||
|          uses: docker/build-push-action@v6 |         uses: docker/build-push-action@v6 | ||||||
|          with: |         with: | ||||||
|            file: DysonNetwork.Gateway/Dockerfile |           file: DysonNetwork.Gateway/Dockerfile | ||||||
|            context: . |           context: . | ||||||
|            push: true |           push: true | ||||||
|            tags: ghcr.io/${{ vars.PACKAGE_OWNER }}/dyson-gateway:latest |           tags: ghcr.io/${{ vars.PACKAGE_OWNER }}/dyson-gateway:latest | ||||||
|            platforms: linux/amd64 |           platforms: linux/amd64 | ||||||
|   |  | ||||||
|    build-develop: |   build-develop: | ||||||
|      runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|      permissions: |     permissions: | ||||||
|        contents: read |       contents: read | ||||||
|        packages: write |       packages: write | ||||||
|      steps: |     steps: | ||||||
|        - name: Checkout repository |       - name: Checkout repository | ||||||
|          uses: actions/checkout@v3 |         uses: actions/checkout@v3 | ||||||
|          with: |         with: | ||||||
|            fetch-depth: 0 |           fetch-depth: 0 | ||||||
|        - name: Setup NBGV |       - name: Setup NBGV | ||||||
|          uses: dotnet/nbgv@master |         uses: dotnet/nbgv@master | ||||||
|          id: nbgv |         id: nbgv | ||||||
|        - name: Set up Docker Buildx |       - name: Set up Docker Buildx | ||||||
|          uses: docker/setup-buildx-action@v3 |         uses: docker/setup-buildx-action@v3 | ||||||
|        - name: Log in to GitHub Container Registry |       - name: Log in to GitHub Container Registry | ||||||
|          uses: docker/login-action@v3 |         uses: docker/login-action@v3 | ||||||
|          with: |         with: | ||||||
|            registry: ghcr.io |           registry: ghcr.io | ||||||
|            username: ${{ github.actor }} |           username: ${{ github.actor }} | ||||||
|            password: ${{ secrets.GITHUB_TOKEN }} |           password: ${{ secrets.GITHUB_TOKEN }} | ||||||
|        - name: Build and push DysonNetwork.Develop Docker image |       - name: Build and push DysonNetwork.Develop Docker image | ||||||
|          uses: docker/build-push-action@v6 |         uses: docker/build-push-action@v6 | ||||||
|          with: |         with: | ||||||
|            file: DysonNetwork.Develop/Dockerfile |           file: DysonNetwork.Develop/Dockerfile | ||||||
|            context: . |           context: . | ||||||
|            push: true |           push: true | ||||||
|            tags: ghcr.io/${{ vars.PACKAGE_OWNER }}/dyson-develop:latest |           tags: ghcr.io/${{ vars.PACKAGE_OWNER }}/dyson-develop:latest | ||||||
|            platforms: linux/amd64 |           platforms: linux/amd64 | ||||||
|   |  | ||||||
|   | |||||||
| @@ -21,7 +21,7 @@ | |||||||
|   "DomainMappings": { |   "DomainMappings": { | ||||||
|     "DysonNetwork.Pass": "id.solsynth.dev", |     "DysonNetwork.Pass": "id.solsynth.dev", | ||||||
|     "DysonNetwork.Drive": "drive.solsynth.dev", |     "DysonNetwork.Drive": "drive.solsynth.dev", | ||||||
|     "DysonNetwork.Pusher": "push.solsynth.dev", |     "DysonNetwork.Ring": "push.solsynth.dev", | ||||||
|     "DysonNetwork.Sphere": "sphere.solsynth.dev" |     "DysonNetwork.Sphere": "sphere.solsynth.dev" | ||||||
|   }, |   }, | ||||||
|   "PathAliases": { |   "PathAliases": { | ||||||
| @@ -31,7 +31,7 @@ | |||||||
|   "DirectRoutes": [ |   "DirectRoutes": [ | ||||||
|     { |     { | ||||||
|       "Path": "/ws", |       "Path": "/ws", | ||||||
|       "Service": "DysonNetwork.Pusher" |       "Service": "DysonNetwork.Ring" | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "Path": "/api/tus", |       "Path": "/api/tus", | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ public class AccountEventService( | |||||||
|     Wallet.PaymentService payment, |     Wallet.PaymentService payment, | ||||||
|     ICacheService cache, |     ICacheService cache, | ||||||
|     IStringLocalizer<Localization.AccountEventResource> localizer, |     IStringLocalizer<Localization.AccountEventResource> localizer, | ||||||
|     PusherService.PusherServiceClient pusher, |     RingService.RingServiceClient pusher, | ||||||
|     SubscriptionService subscriptions, |     SubscriptionService subscriptions, | ||||||
|     Pass.Leveling.ExperienceService experienceService |     Pass.Leveling.ExperienceService experienceService | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -28,7 +28,7 @@ public class AccountService( | |||||||
|     FileReferenceService.FileReferenceServiceClient fileRefs, |     FileReferenceService.FileReferenceServiceClient fileRefs, | ||||||
|     AccountUsernameService uname, |     AccountUsernameService uname, | ||||||
|     EmailService mailer, |     EmailService mailer, | ||||||
|     PusherService.PusherServiceClient pusher, |     RingService.RingServiceClient pusher, | ||||||
|     IStringLocalizer<NotificationResource> localizer, |     IStringLocalizer<NotificationResource> localizer, | ||||||
|     IStringLocalizer<EmailResource> emailLocalizer, |     IStringLocalizer<EmailResource> emailLocalizer, | ||||||
|     ICacheService cache, |     ICacheService cache, | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ namespace DysonNetwork.Pass.Account; | |||||||
| public class RelationshipService( | public class RelationshipService( | ||||||
|     AppDatabase db, |     AppDatabase db, | ||||||
|     ICacheService cache, |     ICacheService cache, | ||||||
|     PusherService.PusherServiceClient pusher, |     RingService.RingServiceClient pusher, | ||||||
|     IStringLocalizer<NotificationResource> localizer |     IStringLocalizer<NotificationResource> localizer | ||||||
| ) | ) | ||||||
| { | { | ||||||
|   | |||||||
| @@ -22,7 +22,7 @@ public class AuthController( | |||||||
|     AuthService auth, |     AuthService auth, | ||||||
|     GeoIpService geo, |     GeoIpService geo, | ||||||
|     ActionLogService als, |     ActionLogService als, | ||||||
|     PusherService.PusherServiceClient pusher, |     RingService.RingServiceClient pusher, | ||||||
|     IConfiguration configuration, |     IConfiguration configuration, | ||||||
|     IStringLocalizer<NotificationResource> localizer |     IStringLocalizer<NotificationResource> localizer | ||||||
| ) : ControllerBase | ) : ControllerBase | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ using Microsoft.AspNetCore.Components; | |||||||
| namespace DysonNetwork.Pass.Email; | namespace DysonNetwork.Pass.Email; | ||||||
|  |  | ||||||
| public class EmailService( | public class EmailService( | ||||||
|     PusherService.PusherServiceClient pusher, |     RingService.RingServiceClient pusher, | ||||||
|     RazorViewRenderer viewRenderer, |     RazorViewRenderer viewRenderer, | ||||||
|     ILogger<EmailService> logger |     ILogger<EmailService> logger | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -22,7 +22,7 @@ builder.Services.AddAppServices(builder.Configuration); | |||||||
| builder.Services.AddAppRateLimiting(); | builder.Services.AddAppRateLimiting(); | ||||||
| builder.Services.AddAppAuthentication(); | builder.Services.AddAppAuthentication(); | ||||||
| builder.Services.AddAppSwagger(); | builder.Services.AddAppSwagger(); | ||||||
| builder.Services.AddPusherService(); | builder.Services.AddRingService(); | ||||||
| builder.Services.AddDriveService(); | builder.Services.AddDriveService(); | ||||||
| builder.Services.AddDevelopService(); | builder.Services.AddDevelopService(); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -53,7 +53,7 @@ public static class ServiceCollectionExtensions | |||||||
|             options.MaxSendMessageSize = 16 * 1024 * 1024; // 16MB |             options.MaxSendMessageSize = 16 * 1024 * 1024; // 16MB | ||||||
|         }); |         }); | ||||||
|  |  | ||||||
|         services.AddPusherService(); |         services.AddRingService(); | ||||||
|  |  | ||||||
|         // Register OIDC services |         // Register OIDC services | ||||||
|         services.AddScoped<OidcService, GoogleOidcService>(); |         services.AddScoped<OidcService, GoogleOidcService>(); | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ namespace DysonNetwork.Pass.Wallet; | |||||||
| public class PaymentService( | public class PaymentService( | ||||||
|     AppDatabase db, |     AppDatabase db, | ||||||
|     WalletService wat, |     WalletService wat, | ||||||
|     PusherService.PusherServiceClient pusher, |     RingService.RingServiceClient pusher, | ||||||
|     IStringLocalizer<NotificationResource> localizer, |     IStringLocalizer<NotificationResource> localizer, | ||||||
|     INatsConnection nats |     INatsConnection nats | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -18,7 +18,7 @@ public class SubscriptionService( | |||||||
|     AppDatabase db, |     AppDatabase db, | ||||||
|     PaymentService payment, |     PaymentService payment, | ||||||
|     AccountService accounts, |     AccountService accounts, | ||||||
|     PusherService.PusherServiceClient pusher, |     RingService.RingServiceClient pusher, | ||||||
|     IStringLocalizer<NotificationResource> localizer, |     IStringLocalizer<NotificationResource> localizer, | ||||||
|     IConfiguration configuration, |     IConfiguration configuration, | ||||||
|     ICacheService cache, |     ICacheService cache, | ||||||
|   | |||||||
| @@ -1,27 +0,0 @@ | |||||||
| FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base |  | ||||||
| WORKDIR /app |  | ||||||
| EXPOSE 8080 |  | ||||||
| EXPOSE 8081 |  | ||||||
|  |  | ||||||
| RUN apt-get update && apt-get install -y --no-install-recommends \ |  | ||||||
|     libkrb5-dev |  | ||||||
|  |  | ||||||
| USER $APP_UID |  | ||||||
|  |  | ||||||
| FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build |  | ||||||
| ARG BUILD_CONFIGURATION=Release |  | ||||||
| WORKDIR /src |  | ||||||
| COPY ["DysonNetwork.Pusher/DysonNetwork.Pusher.csproj", "DysonNetwork.Pusher/"] |  | ||||||
| RUN dotnet restore "DysonNetwork.Pusher/DysonNetwork.Pusher.csproj" |  | ||||||
| COPY . . |  | ||||||
| WORKDIR "/src/DysonNetwork.Pusher" |  | ||||||
| RUN dotnet build "./DysonNetwork.Pusher.csproj" -c $BUILD_CONFIGURATION -o /app/build |  | ||||||
|  |  | ||||||
| FROM build AS publish |  | ||||||
| ARG BUILD_CONFIGURATION=Release |  | ||||||
| RUN dotnet publish "./DysonNetwork.Pusher.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false |  | ||||||
|  |  | ||||||
| FROM base AS final |  | ||||||
| WORKDIR /app |  | ||||||
| COPY --from=publish /app/publish . |  | ||||||
| ENTRYPOINT ["dotnet", "DysonNetwork.Pusher.dll"] |  | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| using System.Linq.Expressions; | using System.Linq.Expressions; | ||||||
| using System.Reflection; | using System.Reflection; | ||||||
| using DysonNetwork.Pusher.Notification; | using DysonNetwork.Ring.Notification; | ||||||
| using DysonNetwork.Shared.Data; | using DysonNetwork.Shared.Data; | ||||||
| using Microsoft.EntityFrameworkCore; | using Microsoft.EntityFrameworkCore; | ||||||
| using Microsoft.EntityFrameworkCore.Design; | using Microsoft.EntityFrameworkCore.Design; | ||||||
| @@ -8,7 +8,7 @@ using Microsoft.EntityFrameworkCore.Query; | |||||||
| using NodaTime; | using NodaTime; | ||||||
| using Quartz; | using Quartz; | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher; | namespace DysonNetwork.Ring; | ||||||
| 
 | 
 | ||||||
| public class AppDatabase( | public class AppDatabase( | ||||||
|     DbContextOptions<AppDatabase> options, |     DbContextOptions<AppDatabase> options, | ||||||
| @@ -1,4 +1,4 @@ | |||||||
| namespace DysonNetwork.Pusher.Connection; | namespace DysonNetwork.Ring.Connection; | ||||||
| 
 | 
 | ||||||
| public class ClientTypeMiddleware(RequestDelegate next) | public class ClientTypeMiddleware(RequestDelegate next) | ||||||
| { | { | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| using System.Net.WebSockets; | using System.Net.WebSockets; | ||||||
| using DysonNetwork.Shared.Proto; | using DysonNetwork.Shared.Proto; | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Connection; | namespace DysonNetwork.Ring.Connection; | ||||||
| 
 | 
 | ||||||
| public interface IWebSocketPacketHandler | public interface IWebSocketPacketHandler | ||||||
| { | { | ||||||
| @@ -4,7 +4,7 @@ using Microsoft.AspNetCore.Authorization; | |||||||
| using Microsoft.AspNetCore.Mvc; | using Microsoft.AspNetCore.Mvc; | ||||||
| using Swashbuckle.AspNetCore.Annotations; | using Swashbuckle.AspNetCore.Annotations; | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Connection; | namespace DysonNetwork.Ring.Connection; | ||||||
| 
 | 
 | ||||||
| [ApiController] | [ApiController] | ||||||
| public class WebSocketController(WebSocketService ws, ILogger<WebSocketContext> logger) : ControllerBase | public class WebSocketController(WebSocketService ws, ILogger<WebSocketContext> logger) : ControllerBase | ||||||
| @@ -4,7 +4,7 @@ using DysonNetwork.Shared.Proto; | |||||||
| using NodaTime; | using NodaTime; | ||||||
| using NodaTime.Serialization.SystemTextJson; | using NodaTime.Serialization.SystemTextJson; | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Connection; | namespace DysonNetwork.Ring.Connection; | ||||||
| 
 | 
 | ||||||
| public class WebSocketPacket | public class WebSocketPacket | ||||||
| { | { | ||||||
| @@ -5,7 +5,7 @@ using DysonNetwork.Shared.Data; | |||||||
| using DysonNetwork.Shared.Proto; | using DysonNetwork.Shared.Proto; | ||||||
| using Grpc.Core; | using Grpc.Core; | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Connection; | namespace DysonNetwork.Ring.Connection; | ||||||
| 
 | 
 | ||||||
| public class WebSocketService | public class WebSocketService | ||||||
| { | { | ||||||
| @@ -159,7 +159,7 @@ public class WebSocketService | |||||||
|                             clientKeyPath, |                             clientKeyPath, | ||||||
|                             clientCertPassword |                             clientCertPassword | ||||||
|                         ); |                         ); | ||||||
|                     var client = new PusherHandlerService.PusherHandlerServiceClient(callInvoker); |                     var client = new RingHandlerService.RingHandlerServiceClient(callInvoker); | ||||||
| 
 | 
 | ||||||
|                     try |                     try | ||||||
|                     { |                     { | ||||||
							
								
								
									
										27
									
								
								DysonNetwork.Ring/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								DysonNetwork.Ring/Dockerfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS base | ||||||
|  | WORKDIR /app | ||||||
|  | EXPOSE 8080 | ||||||
|  | EXPOSE 8081 | ||||||
|  |  | ||||||
|  | RUN apt-get update && apt-get install -y --no-install-recommends \ | ||||||
|  |     libkrb5-dev | ||||||
|  |  | ||||||
|  | USER $APP_UID | ||||||
|  |  | ||||||
|  | FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build | ||||||
|  | ARG BUILD_CONFIGURATION=Release | ||||||
|  | WORKDIR /src | ||||||
|  | COPY ["DysonNetwork.Ring/DysonNetwork.Ring.csproj", "DysonNetwork.Ring/"] | ||||||
|  | RUN dotnet restore "DysonNetwork.Ring/DysonNetwork.Ring.csproj" | ||||||
|  | COPY . . | ||||||
|  | WORKDIR "/src/DysonNetwork.Ring" | ||||||
|  | RUN dotnet build "./DysonNetwork.Ring.csproj" -c $BUILD_CONFIGURATION -o /app/build | ||||||
|  |  | ||||||
|  | FROM build AS publish | ||||||
|  | ARG BUILD_CONFIGURATION=Release | ||||||
|  | RUN dotnet publish "./DysonNetwork.Ring.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false | ||||||
|  |  | ||||||
|  | FROM base AS final | ||||||
|  | WORKDIR /app | ||||||
|  | COPY --from=publish /app/publish . | ||||||
|  | ENTRYPOINT ["dotnet", "DysonNetwork.Ring.dll"] | ||||||
| @@ -5,6 +5,7 @@ | |||||||
|         <Nullable>enable</Nullable> |         <Nullable>enable</Nullable> | ||||||
|         <ImplicitUsings>enable</ImplicitUsings> |         <ImplicitUsings>enable</ImplicitUsings> | ||||||
|         <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> |         <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS> | ||||||
|  |         <RootNamespace>DysonNetwork.Pusher</RootNamespace> | ||||||
|     </PropertyGroup> |     </PropertyGroup> | ||||||
| 
 | 
 | ||||||
|     <ItemGroup> |     <ItemGroup> | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| using MailKit.Net.Smtp; | using MailKit.Net.Smtp; | ||||||
| using MimeKit; | using MimeKit; | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Email; | namespace DysonNetwork.Ring.Email; | ||||||
| 
 | 
 | ||||||
| public class EmailServiceConfiguration | public class EmailServiceConfiguration | ||||||
| { | { | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| // <auto-generated /> | // <auto-generated /> | ||||||
| using System; | using System; | ||||||
| using System.Collections.Generic; | using System.Collections.Generic; | ||||||
| using DysonNetwork.Pusher; | using DysonNetwork.Ring; | ||||||
| using Microsoft.EntityFrameworkCore; | using Microsoft.EntityFrameworkCore; | ||||||
| using Microsoft.EntityFrameworkCore.Infrastructure; | using Microsoft.EntityFrameworkCore.Infrastructure; | ||||||
| using Microsoft.EntityFrameworkCore.Migrations; | using Microsoft.EntityFrameworkCore.Migrations; | ||||||
| @@ -11,7 +11,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; | |||||||
| 
 | 
 | ||||||
| #nullable disable | #nullable disable | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Migrations | namespace DysonNetwork.Ring.Migrations | ||||||
| { | { | ||||||
|     [DbContext(typeof(AppDatabase))] |     [DbContext(typeof(AppDatabase))] | ||||||
|     [Migration("20250713122638_InitialMigration")] |     [Migration("20250713122638_InitialMigration")] | ||||||
| @@ -27,7 +27,7 @@ namespace DysonNetwork.Pusher.Migrations | |||||||
| 
 | 
 | ||||||
|             NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); |             NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); | ||||||
| 
 | 
 | ||||||
|             modelBuilder.Entity("DysonNetwork.Pusher.Notification.Notification", b => |             modelBuilder.Entity("DysonNetwork.Ring.Notification.Notification", b => | ||||||
|                 { |                 { | ||||||
|                     b.Property<Guid>("Id") |                     b.Property<Guid>("Id") | ||||||
|                         .ValueGeneratedOnAdd() |                         .ValueGeneratedOnAdd() | ||||||
| @@ -89,7 +89,7 @@ namespace DysonNetwork.Pusher.Migrations | |||||||
|                     b.ToTable("notifications", (string)null); |                     b.ToTable("notifications", (string)null); | ||||||
|                 }); |                 }); | ||||||
| 
 | 
 | ||||||
|             modelBuilder.Entity("DysonNetwork.Pusher.Notification.PushSubscription", b => |             modelBuilder.Entity("DysonNetwork.Ring.Notification.PushSubscription", b => | ||||||
|                 { |                 { | ||||||
|                     b.Property<Guid>("Id") |                     b.Property<Guid>("Id") | ||||||
|                         .ValueGeneratedOnAdd() |                         .ValueGeneratedOnAdd() | ||||||
| @@ -5,7 +5,7 @@ using NodaTime; | |||||||
| 
 | 
 | ||||||
| #nullable disable | #nullable disable | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Migrations | namespace DysonNetwork.Ring.Migrations | ||||||
| { | { | ||||||
|     /// <inheritdoc /> |     /// <inheritdoc /> | ||||||
|     public partial class InitialMigration : Migration |     public partial class InitialMigration : Migration | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| // <auto-generated /> | // <auto-generated /> | ||||||
| using System; | using System; | ||||||
| using System.Collections.Generic; | using System.Collections.Generic; | ||||||
| using DysonNetwork.Pusher; | using DysonNetwork.Ring; | ||||||
| using Microsoft.EntityFrameworkCore; | using Microsoft.EntityFrameworkCore; | ||||||
| using Microsoft.EntityFrameworkCore.Infrastructure; | using Microsoft.EntityFrameworkCore.Infrastructure; | ||||||
| using Microsoft.EntityFrameworkCore.Migrations; | using Microsoft.EntityFrameworkCore.Migrations; | ||||||
| @@ -11,7 +11,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; | |||||||
| 
 | 
 | ||||||
| #nullable disable | #nullable disable | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Migrations | namespace DysonNetwork.Ring.Migrations | ||||||
| { | { | ||||||
|     [DbContext(typeof(AppDatabase))] |     [DbContext(typeof(AppDatabase))] | ||||||
|     [Migration("20250724070546_UpdateNotificationMeta")] |     [Migration("20250724070546_UpdateNotificationMeta")] | ||||||
| @@ -27,7 +27,7 @@ namespace DysonNetwork.Pusher.Migrations | |||||||
| 
 | 
 | ||||||
|             NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); |             NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); | ||||||
| 
 | 
 | ||||||
|             modelBuilder.Entity("DysonNetwork.Pusher.Notification.Notification", b => |             modelBuilder.Entity("DysonNetwork.Ring.Notification.Notification", b => | ||||||
|                 { |                 { | ||||||
|                     b.Property<Guid>("Id") |                     b.Property<Guid>("Id") | ||||||
|                         .ValueGeneratedOnAdd() |                         .ValueGeneratedOnAdd() | ||||||
| @@ -90,7 +90,7 @@ namespace DysonNetwork.Pusher.Migrations | |||||||
|                     b.ToTable("notifications", (string)null); |                     b.ToTable("notifications", (string)null); | ||||||
|                 }); |                 }); | ||||||
| 
 | 
 | ||||||
|             modelBuilder.Entity("DysonNetwork.Pusher.Notification.PushSubscription", b => |             modelBuilder.Entity("DysonNetwork.Ring.Notification.PushSubscription", b => | ||||||
|                 { |                 { | ||||||
|                     b.Property<Guid>("Id") |                     b.Property<Guid>("Id") | ||||||
|                         .ValueGeneratedOnAdd() |                         .ValueGeneratedOnAdd() | ||||||
| @@ -3,7 +3,7 @@ using Microsoft.EntityFrameworkCore.Migrations; | |||||||
| 
 | 
 | ||||||
| #nullable disable | #nullable disable | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Migrations | namespace DysonNetwork.Ring.Migrations | ||||||
| { | { | ||||||
|     /// <inheritdoc /> |     /// <inheritdoc /> | ||||||
|     public partial class UpdateNotificationMeta : Migration |     public partial class UpdateNotificationMeta : Migration | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| // <auto-generated /> | // <auto-generated /> | ||||||
| using System; | using System; | ||||||
| using System.Collections.Generic; | using System.Collections.Generic; | ||||||
| using DysonNetwork.Pusher; | using DysonNetwork.Ring; | ||||||
| using Microsoft.EntityFrameworkCore; | using Microsoft.EntityFrameworkCore; | ||||||
| using Microsoft.EntityFrameworkCore.Infrastructure; | using Microsoft.EntityFrameworkCore.Infrastructure; | ||||||
| using Microsoft.EntityFrameworkCore.Storage.ValueConversion; | using Microsoft.EntityFrameworkCore.Storage.ValueConversion; | ||||||
| @@ -10,7 +10,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; | |||||||
| 
 | 
 | ||||||
| #nullable disable | #nullable disable | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Migrations | namespace DysonNetwork.Ring.Migrations | ||||||
| { | { | ||||||
|     [DbContext(typeof(AppDatabase))] |     [DbContext(typeof(AppDatabase))] | ||||||
|     partial class AppDatabaseModelSnapshot : ModelSnapshot |     partial class AppDatabaseModelSnapshot : ModelSnapshot | ||||||
| @@ -24,7 +24,7 @@ namespace DysonNetwork.Pusher.Migrations | |||||||
| 
 | 
 | ||||||
|             NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); |             NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); | ||||||
| 
 | 
 | ||||||
|             modelBuilder.Entity("DysonNetwork.Pusher.Notification.Notification", b => |             modelBuilder.Entity("DysonNetwork.Ring.Notification.Notification", b => | ||||||
|                 { |                 { | ||||||
|                     b.Property<Guid>("Id") |                     b.Property<Guid>("Id") | ||||||
|                         .ValueGeneratedOnAdd() |                         .ValueGeneratedOnAdd() | ||||||
| @@ -87,7 +87,7 @@ namespace DysonNetwork.Pusher.Migrations | |||||||
|                     b.ToTable("notifications", (string)null); |                     b.ToTable("notifications", (string)null); | ||||||
|                 }); |                 }); | ||||||
| 
 | 
 | ||||||
|             modelBuilder.Entity("DysonNetwork.Pusher.Notification.PushSubscription", b => |             modelBuilder.Entity("DysonNetwork.Ring.Notification.PushSubscription", b => | ||||||
|                 { |                 { | ||||||
|                     b.Property<Guid>("Id") |                     b.Property<Guid>("Id") | ||||||
|                         .ValueGeneratedOnAdd() |                         .ValueGeneratedOnAdd() | ||||||
| @@ -3,7 +3,7 @@ using System.ComponentModel.DataAnnotations.Schema; | |||||||
| using DysonNetwork.Shared.Data; | using DysonNetwork.Shared.Data; | ||||||
| using NodaTime; | using NodaTime; | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Notification; | namespace DysonNetwork.Ring.Notification; | ||||||
| 
 | 
 | ||||||
| public class Notification : ModelBase | public class Notification : ModelBase | ||||||
| { | { | ||||||
| @@ -6,7 +6,7 @@ using Microsoft.AspNetCore.Mvc; | |||||||
| using Microsoft.EntityFrameworkCore; | using Microsoft.EntityFrameworkCore; | ||||||
| using NodaTime; | using NodaTime; | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Notification; | namespace DysonNetwork.Ring.Notification; | ||||||
| 
 | 
 | ||||||
| [ApiController] | [ApiController] | ||||||
| [Route("/api/notifications")] | [Route("/api/notifications")] | ||||||
| @@ -3,7 +3,7 @@ using EFCore.BulkExtensions; | |||||||
| using NodaTime; | using NodaTime; | ||||||
| using Quartz; | using Quartz; | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Notification; | namespace DysonNetwork.Ring.Notification; | ||||||
| 
 | 
 | ||||||
| public class NotificationFlushHandler(AppDatabase db) : IFlushHandler<Notification> | public class NotificationFlushHandler(AppDatabase db) : IFlushHandler<Notification> | ||||||
| { | { | ||||||
| @@ -1,13 +1,13 @@ | |||||||
| using CorePush.Apple; | using CorePush.Apple; | ||||||
| using CorePush.Firebase; | using CorePush.Firebase; | ||||||
| using DysonNetwork.Pusher.Connection; | using DysonNetwork.Ring.Connection; | ||||||
| using DysonNetwork.Pusher.Services; | using DysonNetwork.Ring.Services; | ||||||
| using DysonNetwork.Shared.Proto; | using DysonNetwork.Shared.Proto; | ||||||
| using Microsoft.EntityFrameworkCore; | using Microsoft.EntityFrameworkCore; | ||||||
| using NodaTime; | using NodaTime; | ||||||
| using WebSocketPacket = DysonNetwork.Pusher.Connection.WebSocketPacket; | using WebSocketPacket = DysonNetwork.Ring.Connection.WebSocketPacket; | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Notification; | namespace DysonNetwork.Ring.Notification; | ||||||
| 
 | 
 | ||||||
| public class PushService | public class PushService | ||||||
| { | { | ||||||
| @@ -3,7 +3,7 @@ using DysonNetwork.Shared.Data; | |||||||
| using Microsoft.EntityFrameworkCore; | using Microsoft.EntityFrameworkCore; | ||||||
| using NodaTime; | using NodaTime; | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Notification; | namespace DysonNetwork.Ring.Notification; | ||||||
| 
 | 
 | ||||||
| public enum PushProvider | public enum PushProvider | ||||||
| { | { | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| using DysonNetwork.Pusher; | using DysonNetwork.Ring; | ||||||
| using DysonNetwork.Pusher.Startup; | using DysonNetwork.Ring.Startup; | ||||||
| using DysonNetwork.Shared.Auth; | using DysonNetwork.Shared.Auth; | ||||||
| using DysonNetwork.Shared.Http; | using DysonNetwork.Shared.Http; | ||||||
| using DysonNetwork.Shared.Registry; | using DysonNetwork.Shared.Registry; | ||||||
| @@ -1,19 +1,19 @@ | |||||||
| using DysonNetwork.Pusher.Connection; | using DysonNetwork.Ring.Connection; | ||||||
| using DysonNetwork.Pusher.Email; | using DysonNetwork.Ring.Email; | ||||||
| using DysonNetwork.Pusher.Notification; | using DysonNetwork.Ring.Notification; | ||||||
| using DysonNetwork.Shared.Proto; | using DysonNetwork.Shared.Proto; | ||||||
| using DysonNetwork.Shared.Registry; | using DysonNetwork.Shared.Registry; | ||||||
| using Google.Protobuf.WellKnownTypes; | using Google.Protobuf.WellKnownTypes; | ||||||
| using Grpc.Core; | using Grpc.Core; | ||||||
| using System.Text.Json; | using System.Text.Json; | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Services; | namespace DysonNetwork.Ring.Services; | ||||||
| 
 | 
 | ||||||
| public class PusherServiceGrpc( | public class RingServiceGrpc( | ||||||
|     QueueService queueService, |     QueueService queueService, | ||||||
|     WebSocketService websocket, |     WebSocketService websocket, | ||||||
|     PushService pushService |     PushService pushService | ||||||
| ) : PusherService.PusherServiceBase | ) : RingService.RingServiceBase | ||||||
| { | { | ||||||
|     public override async Task<Empty> SendEmail(SendEmailRequest request, ServerCallContext context) |     public override async Task<Empty> SendEmail(SendEmailRequest request, ServerCallContext context) | ||||||
|     { |     { | ||||||
| @@ -1,6 +1,6 @@ | |||||||
| using System.Text.Json; | using System.Text.Json; | ||||||
| using DysonNetwork.Pusher.Email; | using DysonNetwork.Ring.Email; | ||||||
| using DysonNetwork.Pusher.Notification; | using DysonNetwork.Ring.Notification; | ||||||
| using DysonNetwork.Shared.Proto; | using DysonNetwork.Shared.Proto; | ||||||
| using DysonNetwork.Shared.Registry; | using DysonNetwork.Shared.Registry; | ||||||
| using DysonNetwork.Shared.Stream; | using DysonNetwork.Shared.Stream; | ||||||
| @@ -10,7 +10,7 @@ using NATS.Client.JetStream; | |||||||
| using NATS.Client.JetStream.Models; | using NATS.Client.JetStream.Models; | ||||||
| using NATS.Net; | using NATS.Net; | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Services; | namespace DysonNetwork.Ring.Services; | ||||||
| 
 | 
 | ||||||
| public class QueueBackgroundService( | public class QueueBackgroundService( | ||||||
|     INatsConnection nats, |     INatsConnection nats, | ||||||
| @@ -4,7 +4,7 @@ using NATS.Client.Core; | |||||||
| using NATS.Client.JetStream; | using NATS.Client.JetStream; | ||||||
| using NATS.Net; | using NATS.Net; | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Services; | namespace DysonNetwork.Ring.Services; | ||||||
| 
 | 
 | ||||||
| public class QueueService(INatsConnection nats) | public class QueueService(INatsConnection nats) | ||||||
| { | { | ||||||
| @@ -1,9 +1,9 @@ | |||||||
| using System.Net; | using System.Net; | ||||||
| using DysonNetwork.Pusher.Services; | using DysonNetwork.Ring.Services; | ||||||
| using DysonNetwork.Shared.Http; | using DysonNetwork.Shared.Http; | ||||||
| using Microsoft.AspNetCore.HttpOverrides; | using Microsoft.AspNetCore.HttpOverrides; | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Startup; | namespace DysonNetwork.Ring.Startup; | ||||||
| 
 | 
 | ||||||
| public static class ApplicationConfiguration | public static class ApplicationConfiguration | ||||||
| { | { | ||||||
| @@ -39,7 +39,7 @@ public static class ApplicationConfiguration | |||||||
|      |      | ||||||
|     public static WebApplication ConfigureGrpcServices(this WebApplication app) |     public static WebApplication ConfigureGrpcServices(this WebApplication app) | ||||||
|     { |     { | ||||||
|         app.MapGrpcService<PusherServiceGrpc>(); |         app.MapGrpcService<RingServiceGrpc>(); | ||||||
|          |          | ||||||
|         return app; |         return app; | ||||||
|     } |     } | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| using DysonNetwork.Pusher.Notification; | using DysonNetwork.Ring.Notification; | ||||||
| using Quartz; | using Quartz; | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Startup; | namespace DysonNetwork.Ring.Startup; | ||||||
| 
 | 
 | ||||||
| public static class ScheduledJobsConfiguration | public static class ScheduledJobsConfiguration | ||||||
| { | { | ||||||
| @@ -3,10 +3,10 @@ using System.Text.Json.Serialization; | |||||||
| using System.Threading.RateLimiting; | using System.Threading.RateLimiting; | ||||||
| using CorePush.Apple; | using CorePush.Apple; | ||||||
| using CorePush.Firebase; | using CorePush.Firebase; | ||||||
| using DysonNetwork.Pusher.Connection; | using DysonNetwork.Ring.Connection; | ||||||
| using DysonNetwork.Pusher.Email; | using DysonNetwork.Ring.Email; | ||||||
| using DysonNetwork.Pusher.Notification; | using DysonNetwork.Ring.Notification; | ||||||
| using DysonNetwork.Pusher.Services; | using DysonNetwork.Ring.Services; | ||||||
| using DysonNetwork.Shared.Cache; | using DysonNetwork.Shared.Cache; | ||||||
| using Microsoft.AspNetCore.RateLimiting; | using Microsoft.AspNetCore.RateLimiting; | ||||||
| using Microsoft.OpenApi.Models; | using Microsoft.OpenApi.Models; | ||||||
| @@ -14,7 +14,7 @@ using NodaTime; | |||||||
| using NodaTime.Serialization.SystemTextJson; | using NodaTime.Serialization.SystemTextJson; | ||||||
| using StackExchange.Redis; | using StackExchange.Redis; | ||||||
| 
 | 
 | ||||||
| namespace DysonNetwork.Pusher.Startup; | namespace DysonNetwork.Ring.Startup; | ||||||
| 
 | 
 | ||||||
| public static class ServiceCollectionExtensions | public static class ServiceCollectionExtensions | ||||||
| { | { | ||||||
| @@ -44,7 +44,7 @@ public static class ServiceCollectionExtensions | |||||||
|         services.AddGrpc(); |         services.AddGrpc(); | ||||||
| 
 | 
 | ||||||
|         // Register gRPC services |         // Register gRPC services | ||||||
|         services.AddScoped<PusherServiceGrpc>(); |         services.AddScoped<RingServiceGrpc>(); | ||||||
| 
 | 
 | ||||||
|         // Register OIDC services |         // Register OIDC services | ||||||
|         services.AddControllers().AddJsonOptions(options => |         services.AddControllers().AddJsonOptions(options => | ||||||
| @@ -88,7 +88,7 @@ public static class ServiceCollectionExtensions | |||||||
|             options.SwaggerDoc("v1", new OpenApiInfo |             options.SwaggerDoc("v1", new OpenApiInfo | ||||||
|             { |             { | ||||||
|                 Version = "v1", |                 Version = "v1", | ||||||
|                 Title = "Dyson Pusher", |                 Title = "Dyson Ring", | ||||||
|                 Description = "The pusher service of the Dyson Network. Mainly handling emailing, notifications and websockets.", |                 Description = "The pusher service of the Dyson Network. Mainly handling emailing, notifications and websockets.", | ||||||
|                 TermsOfService = new Uri("https://solsynth.dev/terms"), |                 TermsOfService = new Uri("https://solsynth.dev/terms"), | ||||||
|                 License = new OpenApiLicense |                 License = new OpenApiLicense | ||||||
| @@ -44,7 +44,7 @@ | |||||||
|     "::1" |     "::1" | ||||||
|   ], |   ], | ||||||
|   "Service": { |   "Service": { | ||||||
|     "Name": "DysonNetwork.Pusher", |     "Name": "DysonNetwork.Ring", | ||||||
|     "Url": "https://localhost:7259", |     "Url": "https://localhost:7259", | ||||||
|     "ClientCert": "../Certificates/client.crt", |     "ClientCert": "../Certificates/client.crt", | ||||||
|     "ClientKey": "../Certificates/client.key" |     "ClientKey": "../Certificates/client.key" | ||||||
| @@ -110,15 +110,15 @@ public static class GrpcClientHelper | |||||||
|             clientCertPassword)); |             clientCertPassword)); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     public static async Task<PusherService.PusherServiceClient> CreatePusherServiceClient( |     public static async Task<RingService.RingServiceClient> CreateRingServiceClient( | ||||||
|         IEtcdClient etcdClient, |         IEtcdClient etcdClient, | ||||||
|         string clientCertPath, |         string clientCertPath, | ||||||
|         string clientKeyPath, |         string clientKeyPath, | ||||||
|         string? clientCertPassword = null |         string? clientCertPassword = null | ||||||
|     ) |     ) | ||||||
|     { |     { | ||||||
|         var url = await GetServiceUrlFromEtcd(etcdClient, "DysonNetwork.Pusher"); |         var url = await GetServiceUrlFromEtcd(etcdClient, "DysonNetwork.Ring"); | ||||||
|         return new PusherService.PusherServiceClient(CreateCallInvoker(url, clientCertPath, clientKeyPath, |         return new RingService.RingServiceClient(CreateCallInvoker(url, clientCertPath, clientKeyPath, | ||||||
|             clientCertPassword)); |             clientCertPassword)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -10,8 +10,8 @@ import "google/protobuf/wrappers.proto"; | |||||||
|  |  | ||||||
| import "account.proto"; | import "account.proto"; | ||||||
|  |  | ||||||
| // PusherService provides methods to send various types of notifications. | // RingService provides methods to send various types of notifications. | ||||||
| service PusherService { | service RingService { | ||||||
|   // Sends an email. |   // Sends an email. | ||||||
|   rpc SendEmail(SendEmailRequest) returns (google.protobuf.Empty) {} |   rpc SendEmail(SendEmailRequest) returns (google.protobuf.Empty) {} | ||||||
|  |  | ||||||
| @@ -117,7 +117,7 @@ message GetWebsocketConnectionStatusResponse { | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| service PusherHandlerService { | service RingHandlerService { | ||||||
|   rpc ReceiveWebSocketPacket(ReceiveWebSocketPacketRequest) returns (google.protobuf.Empty) {} |   rpc ReceiveWebSocketPacket(ReceiveWebSocketPacketRequest) returns (google.protobuf.Empty) {} | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -7,9 +7,9 @@ namespace DysonNetwork.Shared.Registry; | |||||||
|  |  | ||||||
| public static class ServiceInjectionHelper | public static class ServiceInjectionHelper | ||||||
| { | { | ||||||
|     public static IServiceCollection AddPusherService(this IServiceCollection services) |     public static IServiceCollection AddRingService(this IServiceCollection services) | ||||||
|     { |     { | ||||||
|         services.AddSingleton<PusherService.PusherServiceClient>(sp => |         services.AddSingleton<RingService.RingServiceClient>(sp => | ||||||
|         { |         { | ||||||
|             var etcdClient = sp.GetRequiredService<IEtcdClient>(); |             var etcdClient = sp.GetRequiredService<IEtcdClient>(); | ||||||
|             var config = sp.GetRequiredService<IConfiguration>(); |             var config = sp.GetRequiredService<IConfiguration>(); | ||||||
| @@ -18,7 +18,7 @@ public static class ServiceInjectionHelper | |||||||
|             var clientCertPassword = config["Service:CertPassword"]; |             var clientCertPassword = config["Service:CertPassword"]; | ||||||
|  |  | ||||||
|             return GrpcClientHelper |             return GrpcClientHelper | ||||||
|                 .CreatePusherServiceClient(etcdClient, clientCertPath, clientKeyPath, clientCertPassword) |                 .CreateRingServiceClient(etcdClient, clientCertPath, clientKeyPath, clientCertPassword) | ||||||
|                 .GetAwaiter() |                 .GetAwaiter() | ||||||
|                 .GetResult(); |                 .GetResult(); | ||||||
|         });        |         });        | ||||||
|   | |||||||
| @@ -26,7 +26,7 @@ public class ChatRoomController( | |||||||
|     FileService.FileServiceClient files, |     FileService.FileServiceClient files, | ||||||
|     FileReferenceService.FileReferenceServiceClient fileRefs, |     FileReferenceService.FileReferenceServiceClient fileRefs, | ||||||
|     ActionLogService.ActionLogServiceClient als, |     ActionLogService.ActionLogServiceClient als, | ||||||
|     PusherService.PusherServiceClient pusher, |     RingService.RingServiceClient pusher, | ||||||
|     AccountClientHelper accountsHelper |     AccountClientHelper accountsHelper | ||||||
| ) : ControllerBase | ) : ControllerBase | ||||||
| { | { | ||||||
|   | |||||||
| @@ -202,7 +202,7 @@ public partial class ChatService( | |||||||
|         message.ChatRoom = room; |         message.ChatRoom = room; | ||||||
|  |  | ||||||
|         using var scope = scopeFactory.CreateScope(); |         using var scope = scopeFactory.CreateScope(); | ||||||
|         var scopedNty = scope.ServiceProvider.GetRequiredService<PusherService.PusherServiceClient>(); |         var scopedNty = scope.ServiceProvider.GetRequiredService<RingService.RingServiceClient>(); | ||||||
|         var scopedCrs = scope.ServiceProvider.GetRequiredService<ChatRoomService>(); |         var scopedCrs = scope.ServiceProvider.GetRequiredService<ChatRoomService>(); | ||||||
|  |  | ||||||
|         var members = await scopedCrs.ListRoomMembers(room.Id); |         var members = await scopedCrs.ListRoomMembers(room.Id); | ||||||
|   | |||||||
| @@ -6,8 +6,8 @@ using Grpc.Core; | |||||||
|  |  | ||||||
| namespace DysonNetwork.Sphere.Connection; | namespace DysonNetwork.Sphere.Connection; | ||||||
|  |  | ||||||
| public class WebSocketHandlerGrpc(PusherService.PusherServiceClient pusher, ChatRoomService crs, ChatService cs) | public class WebSocketHandlerGrpc(RingService.RingServiceClient pusher, ChatRoomService crs, ChatService cs) | ||||||
|     : PusherHandlerService.PusherHandlerServiceBase |     : RingHandlerService.RingHandlerServiceBase | ||||||
| { | { | ||||||
|     public override async Task<Empty> ReceiveWebSocketPacket( |     public override async Task<Empty> ReceiveWebSocketPacket( | ||||||
|         ReceiveWebSocketPacketRequest request, |         ReceiveWebSocketPacketRequest request, | ||||||
|   | |||||||
| @@ -25,7 +25,7 @@ public partial class PostService( | |||||||
|     ILogger<PostService> logger, |     ILogger<PostService> logger, | ||||||
|     FileService.FileServiceClient files, |     FileService.FileServiceClient files, | ||||||
|     FileReferenceService.FileReferenceServiceClient fileRefs, |     FileReferenceService.FileReferenceServiceClient fileRefs, | ||||||
|     PusherService.PusherServiceClient pusher, |     RingService.RingServiceClient pusher, | ||||||
|     PollService polls, |     PollService polls, | ||||||
|     Publisher.PublisherService ps, |     Publisher.PublisherService ps, | ||||||
|     WebReaderService reader |     WebReaderService reader | ||||||
| @@ -165,7 +165,7 @@ public partial class PostService( | |||||||
|                 var sender = post.Publisher; |                 var sender = post.Publisher; | ||||||
|                 using var scope = factory.CreateScope(); |                 using var scope = factory.CreateScope(); | ||||||
|                 var pub = scope.ServiceProvider.GetRequiredService<Publisher.PublisherService>(); |                 var pub = scope.ServiceProvider.GetRequiredService<Publisher.PublisherService>(); | ||||||
|                 var nty = scope.ServiceProvider.GetRequiredService<PusherService.PusherServiceClient>(); |                 var nty = scope.ServiceProvider.GetRequiredService<RingService.RingServiceClient>(); | ||||||
|                 var accounts = scope.ServiceProvider.GetRequiredService<AccountService.AccountServiceClient>(); |                 var accounts = scope.ServiceProvider.GetRequiredService<AccountService.AccountServiceClient>(); | ||||||
|                 try |                 try | ||||||
|                 { |                 { | ||||||
| @@ -534,7 +534,7 @@ public partial class PostService( | |||||||
|             { |             { | ||||||
|                 using var scope = factory.CreateScope(); |                 using var scope = factory.CreateScope(); | ||||||
|                 var pub = scope.ServiceProvider.GetRequiredService<Publisher.PublisherService>(); |                 var pub = scope.ServiceProvider.GetRequiredService<Publisher.PublisherService>(); | ||||||
|                 var nty = scope.ServiceProvider.GetRequiredService<PusherService.PusherServiceClient>(); |                 var nty = scope.ServiceProvider.GetRequiredService<RingService.RingServiceClient>(); | ||||||
|                 var accounts = scope.ServiceProvider.GetRequiredService<AccountService.AccountServiceClient>(); |                 var accounts = scope.ServiceProvider.GetRequiredService<AccountService.AccountServiceClient>(); | ||||||
|                 try |                 try | ||||||
|                 { |                 { | ||||||
| @@ -937,7 +937,7 @@ public partial class PostService( | |||||||
|         { |         { | ||||||
|             using var scope = factory.CreateScope(); |             using var scope = factory.CreateScope(); | ||||||
|             var pub = scope.ServiceProvider.GetRequiredService<Publisher.PublisherService>(); |             var pub = scope.ServiceProvider.GetRequiredService<Publisher.PublisherService>(); | ||||||
|             var nty = scope.ServiceProvider.GetRequiredService<PusherService.PusherServiceClient>(); |             var nty = scope.ServiceProvider.GetRequiredService<RingService.RingServiceClient>(); | ||||||
|             var accounts = scope.ServiceProvider.GetRequiredService<AccountService.AccountServiceClient>(); |             var accounts = scope.ServiceProvider.GetRequiredService<AccountService.AccountServiceClient>(); | ||||||
|             var accountsHelper = scope.ServiceProvider.GetRequiredService<AccountClientHelper>(); |             var accountsHelper = scope.ServiceProvider.GetRequiredService<AccountClientHelper>(); | ||||||
|             try |             try | ||||||
|   | |||||||
| @@ -26,7 +26,7 @@ builder.Services.AddAppAuthentication(); | |||||||
| builder.Services.AddAppSwagger(); | builder.Services.AddAppSwagger(); | ||||||
| builder.Services.AddDysonAuth(); | builder.Services.AddDysonAuth(); | ||||||
| builder.Services.AddAccountService(); | builder.Services.AddAccountService(); | ||||||
| builder.Services.AddPusherService(); | builder.Services.AddRingService(); | ||||||
| builder.Services.AddDriveService(); | builder.Services.AddDriveService(); | ||||||
|  |  | ||||||
| // Add flush handlers and websocket handlers | // Add flush handlers and websocket handlers | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ public class PublisherSubscriptionService( | |||||||
|     PostService ps, |     PostService ps, | ||||||
|     IStringLocalizer<NotificationResource> localizer, |     IStringLocalizer<NotificationResource> localizer, | ||||||
|     ICacheService cache, |     ICacheService cache, | ||||||
|     PusherService.PusherServiceClient pusher, |     RingService.RingServiceClient pusher, | ||||||
|     AccountService.AccountServiceClient accounts |     AccountService.AccountServiceClient accounts | ||||||
| ) | ) | ||||||
| { | { | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ namespace DysonNetwork.Sphere.Realm; | |||||||
|  |  | ||||||
| public class RealmService( | public class RealmService( | ||||||
|     AppDatabase db, |     AppDatabase db, | ||||||
|     PusherService.PusherServiceClient pusher, |     RingService.RingServiceClient pusher, | ||||||
|     AccountService.AccountServiceClient accounts, |     AccountService.AccountServiceClient accounts, | ||||||
|     IStringLocalizer<NotificationResource> localizer, |     IStringLocalizer<NotificationResource> localizer, | ||||||
|     AccountClientHelper accountsHelper, |     AccountClientHelper accountsHelper, | ||||||
|   | |||||||
| @@ -12,7 +12,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DysonNetwork.Pass", "DysonN | |||||||
| EndProject | EndProject | ||||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DysonNetwork.Shared", "DysonNetwork.Shared\DysonNetwork.Shared.csproj", "{DB46D1A6-79B4-43FC-A9A9-115CDA26947A}" | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DysonNetwork.Shared", "DysonNetwork.Shared\DysonNetwork.Shared.csproj", "{DB46D1A6-79B4-43FC-A9A9-115CDA26947A}" | ||||||
| EndProject | EndProject | ||||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DysonNetwork.Pusher", "DysonNetwork.Pusher\DysonNetwork.Pusher.csproj", "{D5DAFB0D-487E-48EF-BA2F-C581C846F63B}" | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DysonNetwork.Ring", "DysonNetwork.Ring\DysonNetwork.Ring.csproj", "{D5DAFB0D-487E-48EF-BA2F-C581C846F63B}" | ||||||
| EndProject | EndProject | ||||||
| Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DysonNetwork.Drive", "DysonNetwork.Drive\DysonNetwork.Drive.csproj", "{8DE0B783-8852-494D-B90A-201ABBB71202}" | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DysonNetwork.Drive", "DysonNetwork.Drive\DysonNetwork.Drive.csproj", "{8DE0B783-8852-494D-B90A-201ABBB71202}" | ||||||
| EndProject | EndProject | ||||||
|   | |||||||
| @@ -57,15 +57,15 @@ services: | |||||||
|       etcd: |       etcd: | ||||||
|         condition: service_healthy |         condition: service_healthy | ||||||
|  |  | ||||||
|   pusher: |   ring: | ||||||
|     image: xsheep2010/dyson-pusher:latest |     image: xsheep2010/dyson-ring:latest | ||||||
|     ports: |     ports: | ||||||
|       - "8003:8080" |       - "8003:8080" | ||||||
|     environment: |     environment: | ||||||
|       - ConnectionStrings__Etcd=http://etcd:2379 |       - ConnectionStrings__Etcd=http://etcd:2379 | ||||||
|       - Etcd__Insecure=true |       - Etcd__Insecure=true | ||||||
|       - Service__Name=DysonNetwork.Pusher |       - Service__Name=DysonNetwork.Ring | ||||||
|       - Service__Url=http://pusher:8080 |       - Service__Url=http://ring:8080 | ||||||
|     depends_on: |     depends_on: | ||||||
|       etcd: |       etcd: | ||||||
|         condition: service_healthy |         condition: service_healthy | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user