mirror of
https://github.com/bitwarden/server.git
synced 2025-04-21 13:05:11 -05:00
cleanup html node refs
This commit is contained in:
parent
18b7bcb9e3
commit
145e4c69d4
@ -5,13 +5,12 @@ namespace Bit.Icons.Models
|
|||||||
{
|
{
|
||||||
public class IconResult
|
public class IconResult
|
||||||
{
|
{
|
||||||
public IconResult(string href, HtmlNode node)
|
public IconResult(string href, string sizes)
|
||||||
{
|
{
|
||||||
Path = href;
|
Path = href;
|
||||||
var sizesAttr = node.Attributes["sizes"];
|
if(!string.IsNullOrWhiteSpace(sizes))
|
||||||
if(!string.IsNullOrWhiteSpace(sizesAttr?.Value))
|
|
||||||
{
|
{
|
||||||
var sizeParts = sizesAttr.Value.Split('x');
|
var sizeParts = sizes.Split('x');
|
||||||
if(sizeParts.Length == 2 && int.TryParse(sizeParts[0].Trim(), out var width) &&
|
if(sizeParts.Length == 2 && int.TryParse(sizeParts[0].Trim(), out var width) &&
|
||||||
int.TryParse(sizeParts[1].Trim(), out var height))
|
int.TryParse(sizeParts[1].Trim(), out var height))
|
||||||
{
|
{
|
||||||
|
@ -61,23 +61,29 @@ namespace Bit.Icons.Services
|
|||||||
uri = response.RequestMessage.RequestUri;
|
uri = response.RequestMessage.RequestUri;
|
||||||
var doc = new HtmlDocument();
|
var doc = new HtmlDocument();
|
||||||
|
|
||||||
try
|
using(var htmlStream = await response.Content.ReadAsStreamAsync())
|
||||||
{
|
{
|
||||||
var html = await response.Content.ReadAsStringAsync();
|
if(htmlStream == null)
|
||||||
if(html == null)
|
|
||||||
{
|
{
|
||||||
|
doc = null;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
doc.LoadHtml(html);
|
|
||||||
if(doc.DocumentNode == null)
|
try
|
||||||
{
|
{
|
||||||
|
doc.Load(htmlStream);
|
||||||
|
if(doc.DocumentNode == null)
|
||||||
|
{
|
||||||
|
doc = null;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
doc = null;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
var baseUrl = "/";
|
var baseUrl = "/";
|
||||||
var baseUrlNode = doc.DocumentNode.SelectSingleNode(@"//head/base[@href]");
|
var baseUrlNode = doc.DocumentNode.SelectSingleNode(@"//head/base[@href]");
|
||||||
@ -88,10 +94,14 @@ namespace Bit.Icons.Services
|
|||||||
{
|
{
|
||||||
baseUrl = hrefAttr.Value;
|
baseUrl = hrefAttr.Value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
baseUrlNode = null;
|
||||||
|
hrefAttr = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var icons = new List<IconResult>();
|
var icons = new List<IconResult>();
|
||||||
var links = doc.DocumentNode.SelectNodes(@"//head/link[@href]");
|
var links = doc.DocumentNode.SelectNodes(@"//head/link[@href]");
|
||||||
|
doc = null;
|
||||||
if(links != null)
|
if(links != null)
|
||||||
{
|
{
|
||||||
foreach(var link in links.Take(40))
|
foreach(var link in links.Take(40))
|
||||||
@ -103,9 +113,10 @@ namespace Bit.Icons.Services
|
|||||||
}
|
}
|
||||||
|
|
||||||
var relAttr = link.Attributes["rel"];
|
var relAttr = link.Attributes["rel"];
|
||||||
|
var sizesAttr = link.Attributes["sizes"];
|
||||||
if(relAttr != null && _iconRels.Contains(relAttr.Value.ToLower()))
|
if(relAttr != null && _iconRels.Contains(relAttr.Value.ToLower()))
|
||||||
{
|
{
|
||||||
icons.Add(new IconResult(hrefAttr.Value, link));
|
icons.Add(new IconResult(hrefAttr.Value, sizesAttr?.Value));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -114,12 +125,18 @@ namespace Bit.Icons.Services
|
|||||||
var extension = Path.GetExtension(hrefAttr.Value);
|
var extension = Path.GetExtension(hrefAttr.Value);
|
||||||
if(_iconExtensions.Contains(extension.ToLower()))
|
if(_iconExtensions.Contains(extension.ToLower()))
|
||||||
{
|
{
|
||||||
icons.Add(new IconResult(hrefAttr.Value, link));
|
icons.Add(new IconResult(hrefAttr.Value, sizesAttr?.Value));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(ArgumentException) { }
|
catch(ArgumentException) { }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sizesAttr = null;
|
||||||
|
relAttr = null;
|
||||||
|
hrefAttr = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
links = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
var iconResultTasks = new List<Task>();
|
var iconResultTasks = new List<Task>();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user