From e788684bd96d793b2bb89e026311b077f399f826 Mon Sep 17 00:00:00 2001 From: choiminyeong Date: Mon, 21 Sep 2026 22:06:56 +0900 Subject: [PATCH] =?UTF-8?q?=EC=82=AC=EB=82=B4=20API=20=EA=B3=B5=EC=9A=A9?= =?UTF-8?q?=20=ED=98=B8=EC=B6=9C=20=EC=84=9C=EB=B9=84=EC=8A=A4(ApiService)?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80=20+=20=EB=AC=B8=EC=84=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5 --- dist/README.txt | 2 +- dist/UbisamBase.Core.dll | Bin 671232 -> 676864 bytes dist/UbisamBase.Launcher.exe | Bin 100352 -> 100352 bytes dist/UbisamBase.Shell.exe | Bin 86016 -> 86016 bytes dist/platform-version.json | 2 +- doc/history/changelog.md | 2 + doc/platform-guide.md | 51 +++++ src/UbisamBase.Core/Net/ApiService.cs | 229 +++++++++++++++++++++ src/UbisamBase.Core/UbisamBase.Core.csproj | 2 + 9 files changed, 286 insertions(+), 2 deletions(-) create mode 100644 src/UbisamBase.Core/Net/ApiService.cs diff --git a/dist/README.txt b/dist/README.txt index f6c31d3..f653698 100644 --- a/dist/README.txt +++ b/dist/README.txt @@ -1,5 +1,5 @@ UbisamBase 플랫폼 배포 폴더 (빌드할 때 자동 생성 - 직접 고치지 마세요) -갱신 시각 : 2026-09-21 22:04:42 +갱신 시각 : 2026-09-21 22:06:55 빌드 구성 : Release 원본 소스 : D:\업무\03_개발\Source\용접기\08_UbisamPlatform\ ---- diff --git a/dist/UbisamBase.Core.dll b/dist/UbisamBase.Core.dll index 735fad798cef79982a576ccf2345bccf88e36a5d..9efcf653030ced0a97aeab5f02c306cadf3ec11c 100644 GIT binary patch delta 86481 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 diff --git a/dist/UbisamBase.Launcher.exe b/dist/UbisamBase.Launcher.exe index 1cecfa84839a3ec58e72bb6b5d725f536d531287..3c935973de59659fda977cc6179110ff6a9782ca 100644 GIT binary patch delta 111 zcmZpez}7H$G34_R3y?N7E<2@oZ6m3O3n81wpE#u6?+&Vdvj1cOoMankRT|pWww< GU<&~2el;)v diff --git a/dist/UbisamBase.Shell.exe b/dist/UbisamBase.Shell.exe index 007a21708687b1a65a37547bff4843e0f7c1ca33..a4639b1a9a4527da1b0a652d045025e662559981 100644 GIT binary patch delta 111 zcmZozz}m2YbwUTrn=MjvHukLH5;&~+%y?ePIgbenf3+vutTWu~!To}jrF!1|6_ZT_ z0|c11h_Nr8zSe!Z@51Y8N=v>?o+4PM02LG$hYEsJ|2deDyh!-ayX#6@8k&uSwi^jC Hp0fo2zS}X@ delta 111 zcmZozz}m2YbwUTrmq^n`8++Dp3CO=$X?LP_n)9?B+96f!%^90LxL>fc+^opIHQ7Wk zKw$QP6g5MW2*=$E;@8fd^V)av6u~+LsGwpsR1l>4cEyVLYM0L!ls<9BG#d$RHxgnz GXA1zs2r-EO diff --git a/dist/platform-version.json b/dist/platform-version.json index 1772d2c..cc83585 100644 --- a/dist/platform-version.json +++ b/dist/platform-version.json @@ -1,4 +1,4 @@ { -"version": "2026-09-21 22:04:42", +"version": "2026-09-21 22:06:55", "configuration": "Release" } diff --git a/doc/history/changelog.md b/doc/history/changelog.md index f3da83d..f12ebb4 100644 --- a/doc/history/changelog.md +++ b/doc/history/changelog.md @@ -13,3 +13,5 @@ | 2026-09-21 | `ICloseGuard` 추가 — 저장 안 한 변경 확인을 셸이 단일 통로로 처리(하단 "종료"도 이 경로) (건의 4) | | 2026-09-21 | 플랫폼 스크롤바 색 조정(트랙=테마 판 색, 막대=accent) | | 2026-09-21 | 플랫폼 자동 업데이트 추가 — Launcher가 켤 때 깃 저장소의 `dist`와 비교해 새 버전이면 받아서 실행(UI Setting에서 사용/자동 여부 선택) | +| 2026-09-21 | 업데이트 안내창을 플랫폼 디자인으로 교체(Launcher 자체 XAML, 시스템 테마 따름) | +| 2026-09-21 | `ApiService` 추가 — 사내 API를 앱이 대신 호출(토큰은 설정 파일에만, 호출 간격 제한·타임아웃 포함) | diff --git a/doc/platform-guide.md b/doc/platform-guide.md index 4127d53..08a8e6d 100644 --- a/doc/platform-guide.md +++ b/doc/platform-guide.md @@ -686,3 +686,54 @@ Launcher(`PlatformUpdater.Settings`)가 같은 이름으로 읽고 쓴다. **이 - 업데이트는 **덮어쓰기**다. 쓰지 않게 된 옛 파일까지 정리하려면 `publish-platform.ps1`로 `bin`을 비우고 다시 채운 뒤 `dist`를 올리면 된다. +--- + +## 13. 사내 API 호출 — `UbisamBase.Core.Net.ApiService` + +토큰이 필요한 사내 API를 **앱이 대신 호출해** 응답 본문(JSON 문자열)만 돌려준다. 화면(WebView2 등)이 +직접 부르면 토큰이 그 문서에 섞여 들어가므로, 앱이 부르고 값만 넘기는 구조를 공용으로 둔 것이다. +브라우저에서 막히는 CORS도 이 경로로는 문제가 되지 않는다. + +```csharp +using UbisamBase.Core.Net; + +var json = await ApiService.Current.FetchAsync(url); // 실패하면 예외 +var (ok, body, error) = await ApiService.Current.TryFetchAsync(url); // 예외 대신 결과로 받기 +``` + +- 인증 헤더는 서비스 안에서 붙는다 — **부르는 쪽은 토큰을 몰라도 된다.** +- 같은 주소를 `MinIntervalMs`(기본 1초) 안에 다시 부르면 서버를 때리지 않고 직전 응답을 돌려준다. + 화면 갱신 주기가 짧아도 호출 제한에 걸리지 않게 하기 위한 것이다. +- 로그에는 주소의 `?` 앞부분만 남긴다(쿼리에 토큰이 섞인 경우 대비). 응답 본문도 남기지 않는다. + +### 13-1. 설정 — `D:\UbisamConfig\Settings\ApiSettings.json` + +```json +{ + "AuthMode": "BearerHeader", + "HeaderName": "X-Api-Key", + "Token": "...", + "MinIntervalMs": 1000, + "TimeoutSeconds": 10 +} +``` + +| AuthMode | 붙는 헤더 | +| --- | --- | +| `None` | 없음(사내망 IP 제한 등) | +| `BearerHeader` | `Authorization: Bearer {Token}` | +| `CustomHeader` | `{HeaderName}: {Token}` | +| `Cookie` | `Cookie: {Token}` | + +**토큰은 이 파일에만 있다.** 내보낸 HTML·`.ub` 같은 산출물에는 들어가지 않는다. + +### 13-2. 내보낸 파일에서는 인증 API를 못 부른다 + +앱 밖으로 내보낸 HTML은 혼자 도는 파일이라 이 서비스가 없다. 그래서: + +- **앱 안에서 볼 때** → `ApiService`로 최신 값 +- **내보낸 파일을 남에게 줄 때** → 인증이 필요한 API는 호출 불가, 내보낼 때 담긴 마지막 값이 보인다 + (인증이 없는 공개 API라면 내보낸 파일에서도 실시간으로 돈다) + +이는 제약이라기보다 의도된 동작이다 — 토큰이 파일에 들어가지 않기 때문이다. + diff --git a/src/UbisamBase.Core/Net/ApiService.cs b/src/UbisamBase.Core/Net/ApiService.cs new file mode 100644 index 0000000..f1fd3ab --- /dev/null +++ b/src/UbisamBase.Core/Net/ApiService.cs @@ -0,0 +1,229 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Net.Http; +using System.Text.Json; +using System.Threading.Tasks; +using UbisamBase.Core.Bootstrap; +using UbisamBase.Core.Logging; + +namespace UbisamBase.Core.Net; + +/// 인증을 어떻게 붙이는지. +public enum ApiAuthMode +{ + /// 인증 없음(사내망 IP 제한 등). 주소만으로 부른다. + None, + + /// Authorization: Bearer {토큰} + BearerHeader, + + /// {HeaderName}: {토큰} — 사내 API가 고유 헤더를 쓰는 경우. + CustomHeader, + + /// Cookie: {토큰} — 세션 쿠키를 그대로 넘기는 경우. + Cookie +} + +/// +/// 사내 API를 대신 호출해 응답 본문(JSON 문자열)만 돌려주는 공용 서비스. +/// +/// 왜 플랫폼에 있나 — 토큰이 필요한 API는 화면(WebView2 등)에서 직접 부르면 토큰이 그 +/// 문서에 섞여 들어간다. 앱이 대신 부르고 숫자만 넘기면 토큰은 앱 설정 파일에만 남는다. +/// 내보낸 HTML·.ub 같은 파일에는 절대 들어가지 않는다. 브라우저에서 막히는 CORS도 우회된다. +/// +/// 토큰은 D:\UbisamConfig\Settings\ApiSettings.json에만 저장되고, 로그에도 남기지 않는다. +/// +public sealed class ApiService +{ + private static readonly Logger Log = new("Api"); + private static readonly HttpClient Http = new(); + private static ApiService? current; + + private readonly Dictionary cache = new(StringComparer.OrdinalIgnoreCase); + + public static ApiService Current => current ??= new ApiService(); + + public ApiSettings Settings { get; private set; } = ApiSettings.Load(); + + /// 설정 파일을 다시 읽는다(설정 화면에서 토큰을 바꾼 뒤 등). + public void ReloadSettings() => Settings = ApiSettings.Load(); + + /// + /// 주소를 호출해 응답 본문을 그대로 돌려준다. 인증 헤더는 설정에 따라 이 안에서 붙으므로 + /// 부르는 쪽(모듈·편집기)은 토큰을 몰라도 된다. + /// + /// 같은 주소를 안에 다시 부르면 서버를 때리지 않고 + /// 직전 응답을 돌려준다 — 화면 갱신 주기가 짧아도 호출 제한에 걸리지 않게 하기 위한 것이다. + /// 실패하면 예외를 던진다(메시지는 사용자에게 보여줘도 되는 내용만 담는다). + /// + public async Task FetchAsync(string url) + { + if (string.IsNullOrWhiteSpace(url)) + { + throw new ArgumentException("주소가 비어 있습니다.", nameof(url)); + } + + if (TryGetCached(url, out var cached)) + { + return cached; + } + + using var request = new HttpRequestMessage(HttpMethod.Get, url); + ApplyAuth(request); + + try + { + using var cts = new System.Threading.CancellationTokenSource(TimeSpan.FromSeconds(Math.Max(1, Settings.TimeoutSeconds))); + using var response = await Http.SendAsync(request, cts.Token).ConfigureAwait(false); + var body = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + + if (!response.IsSuccessStatusCode) + { + // 본문에 토큰이 되비칠 수 있으므로 상태 코드만 남긴다. + Log.W($"API 호출 실패 ({(int)response.StatusCode}) : {Safe(url)}"); + throw new InvalidOperationException($"서버가 {(int)response.StatusCode} 응답을 돌려줬습니다."); + } + + lock (cache) + { + cache[url] = new CacheEntry(body, DateTime.UtcNow); + } + + return body; + } + catch (OperationCanceledException) + { + Log.W($"API 호출 시간 초과 : {Safe(url)}"); + throw new InvalidOperationException($"{Settings.TimeoutSeconds}초 안에 응답이 오지 않았습니다."); + } + catch (HttpRequestException ex) + { + Log.W($"API 호출 실패 : {Safe(url)} — {ex.Message}"); + throw new InvalidOperationException("서버에 연결하지 못했습니다."); + } + } + + /// 예외 대신 성공 여부로 받고 싶을 때. 실패하면 에 사유가 담긴다. + public async Task<(bool Ok, string Body, string Error)> TryFetchAsync(string url) + { + try + { + return (true, await FetchAsync(url).ConfigureAwait(false), string.Empty); + } + catch (Exception ex) + { + return (false, string.Empty, ex.Message); + } + } + + private bool TryGetCached(string url, out string body) + { + lock (cache) + { + if (cache.TryGetValue(url, out var entry) && + (DateTime.UtcNow - entry.At).TotalMilliseconds < Math.Max(0, Settings.MinIntervalMs)) + { + body = entry.Body; + return true; + } + } + + body = string.Empty; + return false; + } + + private void ApplyAuth(HttpRequestMessage request) + { + var token = Settings.Token; + if (string.IsNullOrEmpty(token)) + { + return; + } + + switch (Settings.AuthMode) + { + case ApiAuthMode.BearerHeader: + request.Headers.TryAddWithoutValidation("Authorization", "Bearer " + token); + break; + + case ApiAuthMode.CustomHeader: + var name = string.IsNullOrWhiteSpace(Settings.HeaderName) ? "X-Api-Key" : Settings.HeaderName; + request.Headers.TryAddWithoutValidation(name, token); + break; + + case ApiAuthMode.Cookie: + request.Headers.TryAddWithoutValidation("Cookie", token); + break; + } + } + + /// 로그에 남길 주소 — 쿼리에 토큰이 섞여 있을 수 있으므로 물음표 앞까지만 남긴다. + private static string Safe(string url) + { + var index = url.IndexOf('?'); + return index < 0 ? url : url.Substring(0, index) + "?..."; + } + + private readonly struct CacheEntry + { + public CacheEntry(string body, DateTime at) + { + Body = body; + At = at; + } + + public string Body { get; } + + public DateTime At { get; } + } +} + +/// ApiService 설정. 토큰이 들어 있으므로 앱 설정 폴더에만 저장한다. +public sealed class ApiSettings +{ + private static readonly JsonSerializerOptions JsonOptions = new() { WriteIndented = true }; + + public static string FilePath => Path.Combine(UbisamAppBuilder.ConfigRoot, "Settings", "ApiSettings.json"); + + public ApiAuthMode AuthMode { get; set; } = ApiAuthMode.None; + + /// AuthMode가 CustomHeader일 때 쓸 헤더 이름. + public string HeaderName { get; set; } = "X-Api-Key"; + + /// 토큰/키/쿠키 값. 이 파일 밖으로 나가지 않는다. + public string Token { get; set; } = string.Empty; + + /// 같은 주소를 이 시간 안에 다시 부르면 서버 대신 직전 응답을 쓴다(호출 제한 대비). + public int MinIntervalMs { get; set; } = 1000; + + public int TimeoutSeconds { get; set; } = 10; + + public static ApiSettings Load() + { + try + { + if (File.Exists(FilePath)) + { + return JsonSerializer.Deserialize(File.ReadAllText(FilePath), JsonOptions) ?? new ApiSettings(); + } + } + catch + { + // 손상된 파일은 무시하고 기본값(인증 없음)으로 간다. + } + + return new ApiSettings(); + } + + public void Save() + { + var dir = Path.GetDirectoryName(FilePath); + if (!string.IsNullOrEmpty(dir)) + { + Directory.CreateDirectory(dir); + } + + File.WriteAllText(FilePath, JsonSerializer.Serialize(this, JsonOptions)); + } +} diff --git a/src/UbisamBase.Core/UbisamBase.Core.csproj b/src/UbisamBase.Core/UbisamBase.Core.csproj index 1a4a6a5..79fcd19 100644 --- a/src/UbisamBase.Core/UbisamBase.Core.csproj +++ b/src/UbisamBase.Core/UbisamBase.Core.csproj @@ -12,6 +12,8 @@ + +