Files
XRLib/Assets/Scripts/UVC/Data/URLList.cs

154 lines
4.6 KiB
C#
Raw Normal View History

#nullable enable
2025-06-04 23:10:11 +09:00
using System;
using System.Collections.Generic;
namespace UVC.Data
{
/// <summary>
/// URL <20>ּҸ<D6BC> Ű-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD><EFBFBD>Դϴ<D4B4>.
/// </summary>
public static class URLList
{
/// <summary>
/// URL<52><4C> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD> Dictionary <20>÷<EFBFBD><C3B7><EFBFBD>
/// </summary>
private static Dictionary<string, string> urls = new Dictionary<string, string>();
2025-06-20 17:37:20 +09:00
public static IReadOnlyDictionary<string, string> Urls => urls;
2025-06-04 23:10:11 +09:00
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ű<><C5B0> URL<52><4C> <20>÷<EFBFBD><C3B7>ǿ<EFBFBD> <20>߰<EFBFBD><DFB0>մϴ<D5B4>. Ű<><C5B0> <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> URL<52><4C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD>մϴ<D5B4>.
/// </summary>
/// <param name="key">URL<52><4C> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ű</param>
/// <param name="url"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> URL <20><><EFBFBD>ڿ<EFBFBD></param>
/// <example>
/// <code>
/// URLList.Add("google", "https://www.google.com");
/// URLList.Add("naver", "https://www.naver.com");
///
/// // <20><><EFBFBD><EFBFBD> Ű<><C5B0> URL <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ
/// URLList.Add("google", "https://www.google.co.kr");
/// </code>
/// </example>
public static void Add(string key, string url)
{
if (!urls.ContainsKey(key))
{
urls.Add(key, url);
}
else
{
urls[key] = url; // Update existing URL
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ű<><C5B0> <20>ش<EFBFBD><D8B4>ϴ<EFBFBD> URL<52><4C> <20>÷<EFBFBD><C3B7>ǿ<EFBFBD><C7BF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
/// </summary>
/// <param name="key"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> URL<52><4C> Ű</param>
/// <example>
/// <code>
/// URLList.Add("temp", "https://www.temp.com");
///
/// // URL <20><><EFBFBD><EFBFBD>
/// URLList.Remove("temp");
///
/// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> Ű <20><><EFBFBD><EFBFBD> <20>õ<EFBFBD>(<28>ƹ<EFBFBD> <20>ϵ<EFBFBD> <20>߻<EFBFBD><DFBB><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
/// URLList.Remove("nonexistent");
/// </code>
/// </example>
public static void Remove(string key)
{
if (urls.ContainsKey(key))
{
urls.Remove(key);
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ű<><C5B0> <20>÷<EFBFBD><C3B7>ǿ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD> Ȯ<><C8AE><EFBFBD>մϴ<D5B4>.
/// </summary>
/// <param name="key">Ȯ<><C8AE><EFBFBD><EFBFBD> Ű</param>
/// <returns>Ű<><C5B0> <20><><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD> true, <20>׷<EFBFBD><D7B7><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> false</returns>
/// <example>
/// <code>
/// URLList.Add("github", "https://github.com");
///
/// // Ű <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> Ȯ<><C8AE>
/// if(URLList.ContainsKey("github"))
/// {
/// Console.WriteLine("GitHub URL<52><4C> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.");
/// }
///
/// if(!URLList.ContainsKey("gitlab"))
/// {
/// Console.WriteLine("GitLab URL<52><4C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.");
/// }
/// </code>
/// </example>
public static bool ContainsKey(string key)
{
return urls.ContainsKey(key);
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ű<><C5B0> <20>ش<EFBFBD><D8B4>ϴ<EFBFBD> URL<52><4C> <20><>ȯ<EFBFBD>մϴ<D5B4>.
/// </summary>
/// <param name="key"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> URL<52><4C> Ű</param>
/// <returns>Ű<><C5B0> <20>ش<EFBFBD><D8B4>ϴ<EFBFBD> URL <20>Ǵ<EFBFBD> Ű<><C5B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> null</returns>
/// <example>
/// <code>
/// URLList.Add("youtube", "https://www.youtube.com");
///
/// // URL <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// string youtubeUrl = URLList.Get("youtube");
/// if (youtubeUrl != null)
/// {
/// Console.WriteLine($"YouTube URL: {youtubeUrl}");
/// }
///
/// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> Ű<><C5B0> URL <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// string nullUrl = URLList.Get("nonexistent");
/// if (nullUrl == null)
/// {
/// Console.WriteLine("URL<52><4C> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʽ<EFBFBD><CABD>ϴ<EFBFBD>.");
/// }
/// </code>
/// </example>
public static string? Get(string key)
{
if (urls.TryGetValue(key, out string url))
{
return url;
}
return null; // or throw an exception if preferred
}
/// <summary>
/// URL<52><4C><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>κ<EFBFBD><CEBA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
/// </summary>
/// <param name="url"><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> URL</param>
/// <returns><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ǵ<EFBFBD> <20>Ľ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><> null</returns>
/// <example>
/// <code>
/// string domain = URLList.ExtractDomain("https://www.example.com/path/page.html");
/// Console.WriteLine(domain); // <20><><EFBFBD><EFBFBD>: www.example.com
/// </code>
/// </example>
public static string? ExtractDomain(string url)
{
if (string.IsNullOrEmpty(url))
return null;
try
{
Uri uri = new Uri(url);
return uri.Host;
}
catch (UriFormatException)
{
return null;
}
}
}
}