< Summary - Jellyfin

Information
Class: Jellyfin.Api.ModelBinders.LegacyDateTimeModelBinder
Assembly: Jellyfin.Api
File(s): /srv/git/jellyfin/Jellyfin.Api/ModelBinders/LegacyDateTimeModelBinder.cs
Line coverage
55%
Covered lines: 5
Uncovered lines: 4
Coverable lines: 9
Total lines: 48
Line coverage: 55.5%
Branch coverage
25%
Covered branches: 1
Total branches: 4
Branch coverage: 25%
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%11100%
BindModelAsync(...)25%6.99442.85%

File(s)

/srv/git/jellyfin/Jellyfin.Api/ModelBinders/LegacyDateTimeModelBinder.cs

#LineLine coverage
 1using System;
 2using System.Globalization;
 3using System.Threading.Tasks;
 4using Microsoft.AspNetCore.Mvc.ModelBinding;
 5using Microsoft.AspNetCore.Mvc.ModelBinding.Binders;
 6using Microsoft.Extensions.Logging;
 7
 8namespace Jellyfin.Api.ModelBinders;
 9
 10/// <summary>
 11/// DateTime model binder.
 12/// </summary>
 13public class LegacyDateTimeModelBinder : IModelBinder
 14{
 15    // Borrowed from the DateTimeModelBinderProvider
 16    private const DateTimeStyles SupportedStyles = DateTimeStyles.AdjustToUniversal | DateTimeStyles.AllowWhiteSpaces;
 17    private readonly DateTimeModelBinder _defaultModelBinder;
 18
 19    /// <summary>
 20    /// Initializes a new instance of the <see cref="LegacyDateTimeModelBinder"/> class.
 21    /// </summary>
 22    /// <param name="loggerFactory">Instance of the <see cref="ILoggerFactory"/> interface.</param>
 23    public LegacyDateTimeModelBinder(ILoggerFactory loggerFactory)
 24    {
 225        _defaultModelBinder = new DateTimeModelBinder(SupportedStyles, loggerFactory);
 226    }
 27
 28    /// <inheritdoc />
 29    public Task BindModelAsync(ModelBindingContext bindingContext)
 30    {
 231        var valueProviderResult = bindingContext.ValueProvider.GetValue(bindingContext.ModelName);
 232        if (valueProviderResult.Values.Count == 1)
 33        {
 034            var dateTimeString = valueProviderResult.FirstValue;
 35            // Mark Played Item.
 036            if (DateTime.TryParseExact(dateTimeString, "yyyyMMddHHmmss", CultureInfo.InvariantCulture, DateTimeStyles.As
 37            {
 038                bindingContext.Result = ModelBindingResult.Success(dateTime);
 39            }
 40            else
 41            {
 042                return _defaultModelBinder.BindModelAsync(bindingContext);
 43            }
 44        }
 45
 246        return Task.CompletedTask;
 47    }
 48}