rynl10n_http library

RynL10n Flutter/Dart SDK — package:http 어댑터 진입점 (Flutter Web 포함).

코어(rynl10n.dart)는 HTTP·저장소를 주입받는 순수 Dart라 모든 타깃에서 쓰인다. 진입점은 둘 중 하나를 고르면 된다:

진입점 HTTP 백엔드 웹 추가 의존성
rynl10n_io.dart dart:io HttpClient ✗ 없음
rynl10n_http.dart package:http ✓ http

웹을 포함해 하나로 가고 싶으면 이 진입점을 쓴다 — package:http가 플랫폼마다 백엔드를 알아서 고른다(웹=BrowserClient/fetch, 그 외=dart:io).

import 'package:rynl10n/rynl10n.dart';
import 'package:rynl10n/rynl10n_http.dart';

final store = RemoteDeliveryStore(
  baseUrl: 'https://cdn.example.com',   // 배포 플레인(정적) — 관리 API 아님
  project: 'shop',
  fetch: httpDeliveryFetch(),
  cache: CallbackArtifactCache(         // 웹은 파일 시스템이 없다
    read: (k) => web.window.localStorage.getItem('rynl10n:shop:$k'),
    write: (k, v) => web.window.localStorage.setItem('rynl10n:shop:$k', v),
    clear: () {
      final s = web.window.localStorage;   // clear()는 오리진 전체를 지우니 이 프로젝트 키만
      for (var i = s.length - 1; i >= 0; i--) {
        final k = s.key(i);
        if (k != null && k.startsWith('rynl10n:shop:')) s.removeItem(k);
      }
    },
  ),
);
await store.update(client);

브라우저에서는 배포 플레인의 CORS 설정이 필요하다(특히 Access-Control-Expose-Headers: ETag) — 자세한 내용은 src/http_adapter.dart의 문서 주석 참조.

Functions

httpDeliveryFetch({Client? client, Duration timeout = const Duration(seconds: 15)}) → DeliveryFetch
package:http 기반 DeliveryFetch. 웹·모바일·데스크톱·서버 모두에서 동작한다.
httpPushConnect({Client? client}) → PushConnect
package:http 기반 PushConnect — 실시간 푸시 신호(SSE) 연결.
httpTelemetryPost({Client? client, Duration timeout = const Duration(seconds: 15)}) → TelemetryPost
package:http 기반 TelemetryPost — 익명 집계 업로드(9.3). 관리 플레인으로 가는 유일한 쓰기 경로이고, 실패해도 화면의 번역은 영향을 받지 않는다.