aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Common/Providers
diff options
context:
space:
mode:
authorDavid <daullmer@gmail.com>2021-03-18 11:25:58 +0100
committerDavid <daullmer@gmail.com>2021-03-18 11:25:58 +0100
commit840eeff2afb0faca7e65057276a1a3c7787102bf (patch)
treed624b4bf6adb64d84a20d2e7fd5f4378c654542f /MediaBrowser.Common/Providers
parent14cbd22fbe0a1989f70895edbd0a0f52d850d55e (diff)
Apply suggestions from code review
Diffstat (limited to 'MediaBrowser.Common/Providers')
-rw-r--r--MediaBrowser.Common/Providers/ProviderIdParsers.cs72
1 files changed, 41 insertions, 31 deletions
diff --git a/MediaBrowser.Common/Providers/ProviderIdParsers.cs b/MediaBrowser.Common/Providers/ProviderIdParsers.cs
index 56e0112dd..bfe61a3f8 100644
--- a/MediaBrowser.Common/Providers/ProviderIdParsers.cs
+++ b/MediaBrowser.Common/Providers/ProviderIdParsers.cs
@@ -10,6 +10,9 @@ namespace MediaBrowser.Common.Providers
/// </summary>
public static class ProviderIdParsers
{
+ private const int ImdbMinNumbers = 7;
+ private const int ImdbMaxNumbers = 8;
+
/// <summary>
/// Parses an IMDb id from a string.
/// </summary>
@@ -21,7 +24,8 @@ namespace MediaBrowser.Common.Providers
var span = text.AsSpan();
var tt = "tt".AsSpan();
- while (true)
+ // imdb id is at least 9 chars (tt + 7 numbers)
+ while (span.Length >= 2 + ImdbMinNumbers)
{
var ttPos = span.IndexOf(tt);
if (ttPos == -1)
@@ -31,27 +35,28 @@ namespace MediaBrowser.Common.Providers
}
span = span.Slice(ttPos + tt.Length);
-
- int i = 0;
- // IMDb id has a maximum of 8 digits
- int max = span.Length > 8 ? 8 : span.Length;
- for (; i < max; i++)
+ var i = 0;
+ for (; i < Math.Min(span.Length, ImdbMaxNumbers); i++)
{
var c = span[i];
-
- if (c < '0' || c > '9')
+ if (!IsDigit(c))
{
break;
}
}
- // IMDb id has a minimum of 7 digits
- if (i >= 7)
+ // skip if more than 8 digits
+ if (i <= ImdbMaxNumbers && i >= ImdbMinNumbers)
{
imdbId = string.Concat(tt, span.Slice(0, i));
return true;
}
+
+ span = span.Slice(i);
}
+
+ imdbId = default;
+ return false;
}
/// <summary>
@@ -86,34 +91,39 @@ namespace MediaBrowser.Common.Providers
var span = text.AsSpan();
var searchSpan = searchString.AsSpan();
- while (true)
+ var searchPos = span.IndexOf(searchSpan);
+ if (searchPos == -1)
{
- var searchPos = span.IndexOf(searchSpan);
- if (searchPos == -1)
- {
- providerId = default;
- return false;
- }
-
- span = span.Slice(searchPos + searchSpan.Length);
+ providerId = default;
+ return false;
+ }
- int i = 0;
- for (; i < span.Length; i++)
- {
- var c = span[i];
+ span = span.Slice(searchPos + searchSpan.Length);
- if (c < '0' || c > '9')
- {
- break;
- }
- }
+ int i = 0;
+ for (; i < span.Length; i++)
+ {
+ var c = span[i];
- if (i >= 1)
+ if (!IsDigit(c))
{
- providerId = span.Slice(0, i).ToString();
- return true;
+ break;
}
}
+
+ if (i >= 1)
+ {
+ providerId = span.Slice(0, i).ToString();
+ return true;
+ }
+
+ providerId = default;
+ return false;
+ }
+
+ private static bool IsDigit(char c)
+ {
+ return c >= '0' && c <= '9';
}
}
}