feat: 添加Hdmi视频串流后端
This commit is contained in:
63
server/src/Controllers/HdmiVideoStreamController.cs
Normal file
63
server/src/Controllers/HdmiVideoStreamController.cs
Normal file
@@ -0,0 +1,63 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Cors;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using System.Security.Claims;
|
||||
using server.Services;
|
||||
using Database;
|
||||
|
||||
namespace server.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[Route("api/[controller]")]
|
||||
[EnableCors("Users")]
|
||||
public class HdmiVideoStreamController : ControllerBase
|
||||
{
|
||||
private readonly HttpHdmiVideoStreamService _videoStreamService;
|
||||
private readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
|
||||
|
||||
public HdmiVideoStreamController(HttpHdmiVideoStreamService videoStreamService)
|
||||
{
|
||||
_videoStreamService = videoStreamService;
|
||||
}
|
||||
|
||||
// 管理员获取所有板子的 endpoints
|
||||
[HttpGet("AllEndpoints")]
|
||||
[Authorize("Admin")]
|
||||
public ActionResult<List<HdmiVideoStreamEndpoint>> GetAllEndpoints()
|
||||
{
|
||||
var endpoints = _videoStreamService.GetAllVideoEndpoints();
|
||||
if (endpoints == null)
|
||||
return NotFound("No boards found.");
|
||||
return Ok(endpoints);
|
||||
}
|
||||
|
||||
// 用户获取自己板子的 endpoint
|
||||
[HttpGet("MyEndpoint")]
|
||||
[Authorize]
|
||||
public ActionResult<HdmiVideoStreamEndpoint> GetMyEndpoint()
|
||||
{
|
||||
var userName = User.FindFirstValue(ClaimTypes.Name);
|
||||
if (string.IsNullOrEmpty(userName))
|
||||
return Unauthorized("User name not found in claims.");
|
||||
|
||||
var db = new AppDataConnection();
|
||||
if (db == null)
|
||||
return NotFound("Database connection failed.");
|
||||
|
||||
var userRet = db.GetUserByName(userName);
|
||||
if (!userRet.IsSuccessful || !userRet.Value.HasValue)
|
||||
return NotFound("User not found.");
|
||||
|
||||
var user = userRet.Value.Value;
|
||||
var boardId = user.BoardID;
|
||||
if (boardId == Guid.Empty)
|
||||
return NotFound("No board bound to this user.");
|
||||
|
||||
var boardRet = db.GetBoardByID(boardId);
|
||||
if (!boardRet.IsSuccessful || !boardRet.Value.HasValue)
|
||||
return NotFound("Board not found.");
|
||||
|
||||
var endpoint = _videoStreamService.GetVideoEndpoint(boardId.ToString());
|
||||
return Ok(endpoint);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user