aspnetcore/test/WebSites/VersioningWebSite/VersionRangeValidator.cs

41 lines
1.2 KiB
C#

// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.AspNet.Http;
using Microsoft.AspNet.Mvc.ActionConstraints;
namespace VersioningWebSite
{
public class VersionRangeValidator : IActionConstraint
{
private readonly int? _minVersion;
private readonly int? _maxVersion;
public int Order { get; set; }
public VersionRangeValidator(int? minVersion, int? maxVersion)
{
_minVersion = minVersion;
_maxVersion = maxVersion;
}
public static string GetVersion(HttpRequest request)
{
return request.Query["version"];
}
public bool Accept(ActionConstraintContext context)
{
int version;
if (int.TryParse(GetVersion(context.RouteContext.HttpContext.Request), out version))
{
return (_minVersion == null || _minVersion <= version) &&
(_maxVersion == null || _maxVersion >= version);
}
else
{
return false;
}
}
}
}