Extensible_Portfolio_Site/ExtensiblePortfolioSite/Config.cs

81 lines
3.3 KiB
C#

using System.Text.Json;
namespace ExtensiblePortfolioSite
{
public static class Config
{
private static String ConfigFile = "eps_host_config.json";
public static void SetConfigFile(String File)
{
ConfigFile = File;
}
public static String Name { get; private set; } = "invalid";
public static String? Phone { get; private set; } = null;
public static String? Email { get; private set; } = null;
public static String[]? Description { get; private set; } = null;
public static Dictionary<string, string> Languages = new Dictionary<string, string>()
{
{ "C#", "https://seeklogo.com/images/C/c-sharp-c-logo-02F17714BA-seeklogo.com.png" },
{ "Kotlin", "https://upload.wikimedia.org/wikipedia/commons/7/74/Kotlin_Icon.png" },
{ "Lua", "https://upload.wikimedia.org/wikipedia/commons/c/cf/Lua-Logo.svg" },
{ "C/C++", "https://upload.wikimedia.org/wikipedia/commons/1/19/C_Logo.png" },
};
public static void LoadConfig()
{
JsonDocument Doc = JsonDocument.Parse(File.ReadAllText(ConfigFile), new JsonDocumentOptions
{
AllowTrailingCommas = true,
CommentHandling = JsonCommentHandling.Skip,
MaxDepth = 16,
});
foreach (JsonProperty property in Doc.RootElement.EnumerateObject())
{
switch (property.Value.ValueKind)
{
case JsonValueKind.String:
String value = property.Value.GetString()!;
switch (property.Name)
{
case "Name":
Config.Name = value;
break;
case "Phone":
Config.Phone = value;
break;
case "Email":
Config.Email = value;
break;
}
break;
case JsonValueKind.Array:
switch (property.Name)
{
case "Description":
Config.Description = new string[property.Value.GetArrayLength()];
var enumerator = property.Value.EnumerateArray();
for (int i = 0; i < property.Value.GetArrayLength(); i++)
{
if (!enumerator.MoveNext())
break;
if (enumerator.Current.ValueKind == JsonValueKind.String)
Config.Description[i] = enumerator.Current.GetString()!;
}
break;
}
break;
case JsonValueKind.Object:
break;
case JsonValueKind.Number:
break;
case JsonValueKind.True: //Why, why isn't it called boolean
break;
}
}
}
}
}