81 lines
3.3 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|