using InnovEnergy.Lib.S3Utils.DataTypes; using static System.Environment; namespace InnovEnergy.Lib.S3Utils; public static class S3Cfg { internal static readonly String S3CfgFile = GetFolderPath(SpecialFolder.UserProfile) .TrimEnd('\\', '/') + "/.s3cfg"; internal static Dictionary FromFile(String cfgFilePath) { return File .ReadAllLines(cfgFilePath) .Where(l => l.Contains("=")) .Select(l => l.Split("=")) .ToDictionary(l => l[0].Trim(), l => l[1].Trim()); } public static S3Credentials? GetDefaultUserCredentials() => GetCredentialsFromFile(S3CfgFile); public static S3Credentials? GetCredentialsFromFile(String file) { // [default] // host_base = sos-ch-dk-2.exo.io // host_bucket = %(bucket)s.sos-ch-dk-2.exo.io // access_key = xxxxxxxxxxxxxxx // secret_key = xxxxxxxxxxxxxxx // use_https = True try { var cfg = FromFile(file); return new S3Credentials ( Key : cfg["access_key"], Secret: cfg["secret_key"] ); } catch { return null; } } public static S3Region? GetDefaultRegionAndCredentials() => GetRegionAndCredentialsFromFile(S3CfgFile); public static S3Region? GetRegionAndCredentialsFromFile(String file) { try { var cfg = FromFile(file); var credentials = new S3Credentials ( Key : cfg["access_key"], Secret: cfg["secret_key"] ); return new S3Region(cfg["host_base"], credentials); } catch { return null; } } }