turbo_tasks_fetch/
response.rs

1use anyhow::Result;
2use turbo_rcstr::RcStr;
3use turbo_tasks::{ResolvedVc, Vc};
4
5use crate::FetchError;
6
7#[turbo_tasks::value(transparent)]
8pub struct FetchResult(Result<ResolvedVc<HttpResponse>, ResolvedVc<FetchError>>);
9
10#[turbo_tasks::value(shared)]
11#[derive(Debug)]
12pub struct HttpResponse {
13    pub status: u16,
14    pub body: ResolvedVc<HttpResponseBody>,
15}
16
17#[turbo_tasks::value(shared)]
18#[derive(Debug)]
19pub struct HttpResponseBody(pub Vec<u8>);
20
21#[turbo_tasks::value_impl]
22impl HttpResponseBody {
23    #[turbo_tasks::function]
24    pub async fn to_string(self: Vc<Self>) -> Result<Vc<RcStr>> {
25        let this = &*self.await?;
26        Ok(Vc::cell(std::str::from_utf8(&this.0)?.into()))
27    }
28}