暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

SkAdNetworkUrlParser.cs 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using UnityEngine;
  6. namespace UnityEngine.Advertisements.Editor {
  7. internal class SkAdNetworkUrlParser : ISkAdNetworkParser {
  8. public string GetExtension() {
  9. return SkAdNetworkFileExtension.NONE;
  10. }
  11. public HashSet<string> ParseSource(ISkAdNetworkSource source) {
  12. var foundIds = new HashSet<string>();
  13. try {
  14. string[] lines;
  15. using (var reader = new StreamReader(source.Open())) {
  16. lines = reader.ReadToEnd().Split(Environment.NewLine.ToCharArray());
  17. }
  18. lines.Where(url => !string.IsNullOrEmpty(url))
  19. .Where(url => Uri.IsWellFormedUriString(url, UriKind.Absolute))
  20. .ToList().ForEach(url => {
  21. ISkAdNetworkParser parser = null;
  22. switch (GetExtensionFromPath(url)) {
  23. case SkAdNetworkFileExtension.XML:
  24. parser = SkAdNetworkParser.GetParser(SkAdNetworkFileExtension.XML);
  25. break;
  26. case SkAdNetworkFileExtension.JSON:
  27. parser = SkAdNetworkParser.GetParser(SkAdNetworkFileExtension.JSON);
  28. break;
  29. }
  30. if (parser == null) {
  31. Debug.LogWarning($"[Unity SKAdNetwork Parser] Unsupported file extension, No parser available to parse SKAdNetwork file: {source.Path} ");
  32. return;
  33. }
  34. foundIds.UnionWith(parser.ParseSource(new SkAdNetworkRemoteSource(url)));
  35. });
  36. }
  37. catch (Exception) {
  38. Debug.LogWarning($"[Unity SKAdNetwork Parser] Unable to parse SKAdNetwork file: {source.Path}");
  39. }
  40. return foundIds;
  41. }
  42. /// <summary>
  43. /// Gets the extension for a filepath string
  44. /// </summary>
  45. private static string GetExtensionFromPath(string filepath) {
  46. var extension = Path.GetExtension(filepath);
  47. return string.IsNullOrEmpty(extension) ? "" : extension.Substring(1).ToLower();
  48. }
  49. }
  50. }