Firstborn/Library/PackageCache/com.unity.ads@4.4.2/Editor/Parser/SkAdNetworkUrlParser.cs

59 lines
2.2 KiB
C#
Raw Normal View History

2023-03-28 13:24:16 -04:00
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEngine;
namespace UnityEngine.Advertisements.Editor {
internal class SkAdNetworkUrlParser : ISkAdNetworkParser {
public string GetExtension() {
return SkAdNetworkFileExtension.NONE;
}
public HashSet<string> ParseSource(ISkAdNetworkSource source) {
var foundIds = new HashSet<string>();
try {
string[] lines;
using (var reader = new StreamReader(source.Open())) {
lines = reader.ReadToEnd().Split(Environment.NewLine.ToCharArray());
}
lines.Where(url => !string.IsNullOrEmpty(url))
.Where(url => Uri.IsWellFormedUriString(url, UriKind.Absolute))
.ToList().ForEach(url => {
ISkAdNetworkParser parser = null;
switch (GetExtensionFromPath(url)) {
case SkAdNetworkFileExtension.XML:
parser = SkAdNetworkParser.GetParser(SkAdNetworkFileExtension.XML);
break;
case SkAdNetworkFileExtension.JSON:
parser = SkAdNetworkParser.GetParser(SkAdNetworkFileExtension.JSON);
break;
}
if (parser == null) {
Debug.LogWarning($"[Unity SKAdNetwork Parser] Unsupported file extension, No parser available to parse SKAdNetwork file: {source.Path} ");
return;
}
foundIds.UnionWith(parser.ParseSource(new SkAdNetworkRemoteSource(url)));
});
}
catch (Exception) {
Debug.LogWarning($"[Unity SKAdNetwork Parser] Unable to parse SKAdNetwork file: {source.Path}");
}
return foundIds;
}
/// <summary>
/// Gets the extension for a filepath string
/// </summary>
private static string GetExtensionFromPath(string filepath) {
var extension = Path.GetExtension(filepath);
return string.IsNullOrEmpty(extension) ? "" : extension.Substring(1).ToLower();
}
}
}