< Summary - Jellyfin

Information
Class: Jellyfin.Api.Controllers.MediaSegmentsController
Assembly: Jellyfin.Api
File(s): /srv/git/jellyfin/Jellyfin.Api/Controllers/MediaSegmentsController.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 4
Coverable lines: 4
Total lines: 61
Line coverage: 0%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%

File(s)

/srv/git/jellyfin/Jellyfin.Api/Controllers/MediaSegmentsController.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.ComponentModel.DataAnnotations;
 4using System.Linq;
 5using System.Threading.Tasks;
 6using Jellyfin.Api.Extensions;
 7using Jellyfin.Data.Enums;
 8using MediaBrowser.Controller;
 9using MediaBrowser.Controller.Entities;
 10using MediaBrowser.Controller.Library;
 11using MediaBrowser.Model.MediaSegments;
 12using MediaBrowser.Model.Querying;
 13using Microsoft.AspNetCore.Authorization;
 14using Microsoft.AspNetCore.Http;
 15using Microsoft.AspNetCore.Mvc;
 16
 17namespace Jellyfin.Api.Controllers;
 18
 19/// <summary>
 20/// Media Segments api.
 21/// </summary>
 22[Authorize]
 23public class MediaSegmentsController : BaseJellyfinApiController
 24{
 25    private readonly IMediaSegmentManager _mediaSegmentManager;
 26    private readonly ILibraryManager _libraryManager;
 27
 28    /// <summary>
 29    /// Initializes a new instance of the <see cref="MediaSegmentsController"/> class.
 30    /// </summary>
 31    /// <param name="mediaSegmentManager">MediaSegments Manager.</param>
 32    /// <param name="libraryManager">The Library manager.</param>
 033    public MediaSegmentsController(IMediaSegmentManager mediaSegmentManager, ILibraryManager libraryManager)
 34    {
 035        _mediaSegmentManager = mediaSegmentManager;
 036        _libraryManager = libraryManager;
 037    }
 38
 39    /// <summary>
 40    /// Gets all media segments based on an itemId.
 41    /// </summary>
 42    /// <param name="itemId">The ItemId.</param>
 43    /// <param name="includeSegmentTypes">Optional filter of requested segment types.</param>
 44    /// <returns>A list of media segment objects related to the requested itemId.</returns>
 45    [HttpGet("{itemId}")]
 46    [ProducesResponseType(StatusCodes.Status200OK)]
 47    [ProducesResponseType(StatusCodes.Status404NotFound)]
 48    public async Task<ActionResult<QueryResult<MediaSegmentDto>>> GetSegmentsAsync(
 49        [FromRoute, Required] Guid itemId,
 50        [FromQuery] IEnumerable<MediaSegmentType>? includeSegmentTypes = null)
 51    {
 52        var item = _libraryManager.GetItemById<BaseItem>(itemId, User.GetUserId());
 53        if (item is null)
 54        {
 55            return NotFound();
 56        }
 57
 58        var items = await _mediaSegmentManager.GetSegmentsAsync(item.Id, includeSegmentTypes).ConfigureAwait(false);
 59        return Ok(new QueryResult<MediaSegmentDto>(items.ToArray()));
 60    }
 61}