httpDeliveryFetch function

DeliveryFetch httpDeliveryFetch({
  1. Client? client,
  2. Duration timeout = const Duration(seconds: 15),
})

package:http 기반 DeliveryFetch. 웹·모바일·데스크톱·서버 모두에서 동작한다.

client를 넘기면 그대로 쓴다(테스트 주입, 커스텀 인터셉터, 연결 재사용). 넘기지 않으면 내부에서 하나를 만들어 이 어댑터가 사는 동안 재사용한다.

Implementation

DeliveryFetch httpDeliveryFetch({
  http.Client? client,
  Duration timeout = const Duration(seconds: 15),
}) {
  final c = client ?? http.Client();
  return (String url, {String? ifNoneMatch}) async {
    final response = await c
        .get(
          Uri.parse(url),
          headers: {
            if (ifNoneMatch != null) 'if-none-match': ifNoneMatch,
          },
        )
        .timeout(timeout);
    // package:http는 응답 헤더 키를 소문자로 정규화한다.
    return DeliveryResponse(response.statusCode, response.body, etag: response.headers['etag']);
  };
}