turbo_tasks_fetch/
response.rs1use 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}