diff options
Diffstat (limited to 'cli/ops/fetch.rs')
-rw-r--r-- | cli/ops/fetch.rs | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/cli/ops/fetch.rs b/cli/ops/fetch.rs index aea7bc7fc..690cbc592 100644 --- a/cli/ops/fetch.rs +++ b/cli/ops/fetch.rs @@ -1,30 +1,25 @@ // Copyright 2018-2020 the Deno authors. All rights reserved. MIT license. -use super::dispatch_json::{Deserialize, Value}; + use super::io::{StreamResource, StreamResourceHolder}; use crate::http_util::{create_http_client, HttpBody}; use crate::state::State; use deno_core::BufVec; -use deno_core::CoreIsolate; use deno_core::ErrBox; -use deno_core::ResourceTable; +use deno_core::OpRegistry; use deno_core::ZeroCopyBuf; use http::header::HeaderName; use http::header::HeaderValue; use http::Method; use reqwest::Client; -use std::cell::RefCell; +use serde_derive::Deserialize; +use serde_json::Value; use std::convert::From; use std::path::PathBuf; use std::rc::Rc; -pub fn init(i: &mut CoreIsolate, s: &Rc<State>) { - let t = &CoreIsolate::state(i).borrow().resource_table.clone(); - - i.register_op("op_fetch", s.stateful_json_op_async(t, op_fetch)); - i.register_op( - "op_create_http_client", - s.stateful_json_op_sync(t, op_create_http_client), - ); +pub fn init(s: &Rc<State>) { + s.register_op_json_async("op_fetch", op_fetch); + s.register_op_json_sync("op_create_http_client", op_create_http_client); } #[derive(Deserialize)] @@ -38,16 +33,14 @@ struct FetchArgs { async fn op_fetch( state: Rc<State>, - resource_table: Rc<RefCell<ResourceTable>>, args: Value, data: BufVec, ) -> Result<Value, ErrBox> { let args: FetchArgs = serde_json::from_value(args)?; let url = args.url; - let resource_table2 = resource_table.clone(); let client = if let Some(rid) = args.client_rid { - let resource_table_ = resource_table.borrow(); + let resource_table_ = state.resource_table.borrow(); let r = resource_table_ .get::<HttpClientResource>(rid) .ok_or_else(ErrBox::bad_resource_id)?; @@ -100,8 +93,7 @@ async fn op_fetch( } let body = HttpBody::from(res); - let mut resource_table = resource_table2.borrow_mut(); - let rid = resource_table.add( + let rid = state.resource_table.borrow_mut().add( "httpBody", Box::new(StreamResourceHolder::new(StreamResource::HttpBody( Box::new(body), @@ -137,7 +129,6 @@ struct CreateHttpClientOptions { fn op_create_http_client( state: &State, - resource_table: &mut ResourceTable, args: Value, _zero_copy: &mut [ZeroCopyBuf], ) -> Result<Value, ErrBox> { @@ -149,7 +140,9 @@ fn op_create_http_client( let client = create_http_client(args.ca_file.as_deref()).unwrap(); - let rid = - resource_table.add("httpClient", Box::new(HttpClientResource::new(client))); + let rid = state + .resource_table + .borrow_mut() + .add("httpClient", Box::new(HttpClientResource::new(client))); Ok(json!(rid)) } |