jellyfin/Emby.Server.Implementations/Services/UrlExtensions.cs

38 lines
1.2 KiB
C#
Raw Normal View History

using System;
2016-11-11 19:55:12 +00:00
2017-02-13 20:54:28 +00:00
namespace Emby.Server.Implementations.Services
2016-11-11 19:55:12 +00:00
{
/// <summary>
/// Donated by Ivan Korneliuk from his post:
/// http://korneliuk.blogspot.com/2012/08/servicestack-reusing-dtos.html
2019-01-07 23:27:46 +00:00
///
2016-11-11 19:55:12 +00:00
/// Modified to only allow using routes matching the supplied HTTP Verb
/// </summary>
public static class UrlExtensions
{
2017-02-13 20:54:28 +00:00
public static string GetMethodName(this Type type)
2016-11-11 19:55:12 +00:00
{
var typeName = type.FullName != null // can be null, e.g. generic types
? LeftPart(type.FullName, "[[") // Generic Fullname
.Replace(type.Namespace + ".", string.Empty) // Trim Namespaces
.Replace("+", ".") // Convert nested into normal type
2016-11-11 19:55:12 +00:00
: type.Name;
return type.IsGenericParameter ? "'" + typeName : typeName;
}
2018-09-12 17:26:21 +00:00
private static string LeftPart(string strVal, string needle)
2016-11-11 19:55:12 +00:00
{
if (strVal == null)
{
return null;
}
2016-11-11 19:55:12 +00:00
var pos = strVal.IndexOf(needle, StringComparison.OrdinalIgnoreCase);
return pos == -1
? strVal
: strVal.Substring(0, pos);
}
}
}