< 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: 11
Coverable lines: 11
Total lines: 63
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 2
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Coverage history

Coverage history 0 25 50 75 100 1/23/2026 - 12:11:06 AM Line coverage: 0% (0/4) Total lines: 624/19/2026 - 12:14:27 AM Line coverage: 0% (0/11) Branch coverage: 0% (0/2) Total lines: 624/27/2026 - 12:15:04 AM Line coverage: 0% (0/11) Branch coverage: 0% (0/2) Total lines: 63 4/19/2026 - 12:14:27 AM Line coverage: 0% (0/11) Branch coverage: 0% (0/2) Total lines: 624/27/2026 - 12:15:04 AM Line coverage: 0% (0/11) Branch coverage: 0% (0/2) Total lines: 63

Coverage delta

Coverage delta 1 -1

Metrics

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

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.Database.Implementations.Enums;
 8using MediaBrowser.Controller.Entities;
 9using MediaBrowser.Controller.Library;
 10using MediaBrowser.Controller.MediaSegments;
 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]
 23[Tags("MediaSegment")]
 24public class MediaSegmentsController : BaseJellyfinApiController
 25{
 26    private readonly IMediaSegmentManager _mediaSegmentManager;
 27    private readonly ILibraryManager _libraryManager;
 28
 29    /// <summary>
 30    /// Initializes a new instance of the <see cref="MediaSegmentsController"/> class.
 31    /// </summary>
 32    /// <param name="mediaSegmentManager">MediaSegments Manager.</param>
 33    /// <param name="libraryManager">The Library manager.</param>
 034    public MediaSegmentsController(IMediaSegmentManager mediaSegmentManager, ILibraryManager libraryManager)
 35    {
 036        _mediaSegmentManager = mediaSegmentManager;
 037        _libraryManager = libraryManager;
 038    }
 39
 40    /// <summary>
 41    /// Gets all media segments based on an itemId.
 42    /// </summary>
 43    /// <param name="itemId">The ItemId.</param>
 44    /// <param name="includeSegmentTypes">Optional filter of requested segment types.</param>
 45    /// <returns>A list of media segment objects related to the requested itemId.</returns>
 46    [HttpGet("{itemId}")]
 47    [ProducesResponseType(StatusCodes.Status200OK)]
 48    [ProducesResponseType(StatusCodes.Status404NotFound)]
 49    public async Task<ActionResult<QueryResult<MediaSegmentDto>>> GetItemSegments(
 50        [FromRoute, Required] Guid itemId,
 51        [FromQuery] IEnumerable<MediaSegmentType>? includeSegmentTypes = null)
 52    {
 053        var item = _libraryManager.GetItemById<BaseItem>(itemId, User.GetUserId());
 054        if (item is null)
 55        {
 056            return NotFound();
 57        }
 58
 059        var libraryOptions = _libraryManager.GetLibraryOptions(item);
 060        var items = await _mediaSegmentManager.GetSegmentsAsync(item, includeSegmentTypes, libraryOptions).ConfigureAwai
 061        return Ok(new QueryResult<MediaSegmentDto>(items.ToArray()));
 062    }
 63}