Codemaru 1.0.0.0
QR 코드, 모바일 랜딩 페이지, vCard 연락처 저장과 명함 디자인을 한 화면에서 제공하는 디지털 명함 서비스입니다.
로딩중...
검색중...
일치하는것 없음
CertificateSettingsWriter.cs
이 파일의 문서화 페이지로 가기
2using System.IO;
3using System.Text.Json;
4using System.Text.Json.Nodes;
5
7
17{
26 private readonly string _settingsPath;
27
37 {
38 _settingsPath = Path.Combine(AppContext.BaseDirectory, "appsettings.local.json");
39 }
40
73 public async Task SaveAsync(CertificateMonitorOptions options, CancellationToken cancellationToken)
74 {
75 ArgumentNullException.ThrowIfNull(options);
76
77 JsonObject root = await LoadRootAsync(cancellationToken).ConfigureAwait(false);
78 JsonArray patterns = [];
79 foreach (string pattern in options.CertificateFilePatterns)
80 {
81 patterns.Add(pattern);
82 }
83
84 root["CertificateMonitor"] = new JsonObject
85 {
86 ["CertificateDirectory"] = options.CertificateDirectory,
87 ["CertificateFilePatterns"] = patterns,
88 ["PfxPassword"] = options.PfxPassword,
89 ["WacsPath"] = options.WacsPath,
90 ["NginxPath"] = options.NginxPath,
91 ["NginxWorkingDirectory"] = options.NginxWorkingDirectory,
92 ["NginxReloadArguments"] = options.NginxReloadArguments,
93 ["WarningDays"] = options.WarningDays,
94 ["CriticalDays"] = options.CriticalDays,
95 ["MaxCommandOutputChars"] = options.MaxCommandOutputChars
96 };
97
98 JsonSerializerOptions serializerOptions = new() { WriteIndented = true };
99 string json = root.ToJsonString(serializerOptions);
100 await File.WriteAllTextAsync(_settingsPath, json, cancellationToken).ConfigureAwait(false);
101 }
102
127 private async Task<JsonObject> LoadRootAsync(CancellationToken cancellationToken)
128 {
129 if (!File.Exists(_settingsPath))
130 {
131 return [];
132 }
133
134 string json = await File.ReadAllTextAsync(_settingsPath, cancellationToken).ConfigureAwait(false);
135 if (string.IsNullOrWhiteSpace(json))
136 {
137 return [];
138 }
139
140 JsonNode? node = JsonNode.Parse(json);
141 return node as JsonObject ?? [];
142 }
143}
async Task SaveAsync(CertificateMonitorOptions options, CancellationToken cancellationToken)
async Task< JsonObject > LoadRootAsync(CancellationToken cancellationToken)