< Summary

Information
Class: Program
Assembly: cat_cafe
File(s): C:\Users\draia\Documents\Dev\N3_CSHARP\cat_cafe\cat_cafe\Program.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 70
Coverable lines: 70
Total lines: 90
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 4
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
<Main>$(...)0%440%

File(s)

C:\Users\draia\Documents\Dev\N3_CSHARP\cat_cafe\cat_cafe\Program.cs

#LineLine coverage
 1using cat_cafe.Repositories;
 2using cat_cafe.WeSo;
 3using Microsoft.EntityFrameworkCore;
 4using System.Net.WebSockets;
 5
 06var builder = WebApplication.CreateBuilder(args);
 7
 08List<WebSocket> _sockets = new();
 9
 10// Add services to the container.
 11
 012builder.Services.AddLogging(configure => configure.AddFile("log.txt"));
 013builder.Services.AddSingleton(x => _sockets);
 014builder.Services.AddSingleton<WebSocketHandler>();
 015builder.Services.AddControllers();
 016builder.Services.AddDbContext<CatCafeContext>(opt => opt.UseSqlite("Data Source=cat_cafe.db"));
 017builder.Services.AddEndpointsApiExplorer();
 018builder.Services.AddSwaggerGen();
 019builder.Services.AddAutoMapper(typeof(Program));
 020builder.Services.AddControllersWithViews();
 021builder.Services.AddApiVersioning(opt => { opt.ReportApiVersions = true; });
 022builder.Services.AddVersionedApiExplorer(
 023    opt =>
 024    {
 025        opt.GroupNameFormat = "'v'VVV";
 026        opt.SubstituteApiVersionInUrl = true;
 027    }
 028);
 29
 030var app = builder.Build();
 31
 032using (var serviceScope = app.Services.CreateScope())
 033{
 034    var context = serviceScope.ServiceProvider.GetRequiredService<CatCafeContext>();
 035    context.Database.EnsureCreated();
 036    if (context.Database.GetPendingMigrations().Any())
 037    {
 038        context.Database.Migrate();
 039    }
 040}
 41
 042app.UseHttpLogging();
 43
 44// Configure the HTTP request pipeline.
 045if (app.Environment.IsDevelopment())
 046{
 047    app.UseSwagger();
 048    app.UseSwaggerUI();
 049}
 50
 051app.UseHttpsRedirection();
 52
 053app.UseAuthorization();
 54
 055app.MapControllers();
 56
 057app.UseWebSockets();
 58
 059app.Use(async (context, next) =>
 060{
 061    if (context.Request.Path == "/ws")
 062    {
 063        if (context.WebSockets.IsWebSocketRequest)
 064        {
 065            WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync();
 066
 067            _sockets.Add(webSocket);
 068
 069            var buffer = new byte[1024 * 4];
 070            WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationTok
 071            while (!result.CloseStatus.HasValue)
 072            {
 073                await webSocket.SendAsync(new ArraySegment<byte>(buffer, 0, result.Count), result.MessageType, result.En
 074
 075                result = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
 076            }
 077            await webSocket.CloseAsync(result.CloseStatus.Value, result.CloseStatusDescription, CancellationToken.None);
 078        }
 079        else
 080        {
 081            context.Response.StatusCode = 400;
 082        }
 083    }
 084    else
 085    {
 086        await next();
 087    }
 088});
 89
 090app.Run();

Methods/Properties

<Main>$(System.String[])