/
UrlDirExtensions.cs
43 lines (35 loc) · 1.34 KB
/
UrlDirExtensions.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using System;
using System.Linq;
namespace ModuleManager.Extensions
{
public static class UrlDirExtensions
{
public static UrlDir.UrlFile Find(this UrlDir urlDir, string url)
{
if (urlDir == null) throw new ArgumentNullException(nameof(urlDir));
if (url == null) throw new ArgumentNullException(nameof(url));
string[] splits = url.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
UrlDir currentDir = urlDir;
for (int i = 0; i < splits.Length - 1; i++)
{
currentDir = currentDir.children.FirstOrDefault(subDir => subDir.name == splits[i]);
if (currentDir == null) return null;
}
string fileName = splits[splits.Length - 1];
string fileExtension = null;
int idx = fileName.LastIndexOf('.');
if (idx > -1)
{
fileExtension = fileName.Substring(idx + 1);
fileName = fileName.Substring(0, idx);
}
foreach (UrlDir.UrlFile file in currentDir.files)
{
if (file.name != fileName) continue;
if (fileExtension != null && fileExtension != file.fileExtension) continue;
return file;
}
return null;
}
}
}