diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2022-04-04 15:19:50 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-04 15:19:50 +0530 |
commit | 995d1666ffe44c5f8694f9ef43390ca3ab64bb26 (patch) | |
tree | 2cd8eb89c6eb9f631e1eac01472183ea1483aaa8 /ext/websocket/lib.rs | |
parent | cc49b5e0d80f0c27e90af6ae520a0fec59e577c6 (diff) |
chore(ext/websocket): custom arity (#14202)
Diffstat (limited to 'ext/websocket/lib.rs')
-rw-r--r-- | ext/websocket/lib.rs | 46 |
1 files changed, 17 insertions, 29 deletions
diff --git a/ext/websocket/lib.rs b/ext/websocket/lib.rs index 95afd79bd..163ba46dd 100644 --- a/ext/websocket/lib.rs +++ b/ext/websocket/lib.rs @@ -214,15 +214,6 @@ where } } -#[derive(Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct CreateArgs { - url: String, - protocols: String, - cancel_handle: Option<ResourceId>, - headers: Option<Vec<(ByteString, ByteString)>>, -} - #[derive(Serialize)] #[serde(rename_all = "camelCase")] pub struct CreateResponse { @@ -234,7 +225,10 @@ pub struct CreateResponse { #[op] pub async fn op_ws_create<WP>( state: Rc<RefCell<OpState>>, - args: CreateArgs, + url: String, + protocols: String, + cancel_handle: Option<ResourceId>, + headers: Option<Vec<(ByteString, ByteString)>>, ) -> Result<CreateResponse, AnyError> where WP: WebSocketPermissions + 'static, @@ -242,13 +236,13 @@ where { let mut s = state.borrow_mut(); s.borrow_mut::<WP>() - .check_net_url(&url::Url::parse(&args.url)?) + .check_net_url(&url::Url::parse(&url)?) .expect( "Permission check should have been done in op_ws_check_permission", ); } - let cancel_resource = if let Some(cancel_rid) = args.cancel_handle { + let cancel_resource = if let Some(cancel_rid) = cancel_handle { let r = state .borrow_mut() .resource_table @@ -264,16 +258,16 @@ where .and_then(|it| it.0.clone()); let root_cert_store = state.borrow().borrow::<WsRootStore>().0.clone(); let user_agent = state.borrow().borrow::<WsUserAgent>().0.clone(); - let uri: Uri = args.url.parse()?; + let uri: Uri = url.parse()?; let mut request = Request::builder().method(Method::GET).uri(&uri); request = request.header("User-Agent", user_agent); - if !args.protocols.is_empty() { - request = request.header("Sec-WebSocket-Protocol", args.protocols); + if !protocols.is_empty() { + request = request.header("Sec-WebSocket-Protocol", protocols); } - if let Some(headers) = args.headers { + if let Some(headers) = headers { for (key, value) in headers { let name = HeaderName::from_bytes(&key) .map_err(|err| type_error(err.to_string()))?; @@ -339,7 +333,7 @@ where )) })?; - if let Some(cancel_rid) = args.cancel_handle { + if let Some(cancel_rid) = cancel_handle { state.borrow_mut().resource_table.close(cancel_rid).ok(); } @@ -401,23 +395,17 @@ pub async fn op_ws_send( Ok(()) } -#[derive(Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct CloseArgs { - rid: ResourceId, - code: Option<u16>, - reason: Option<String>, -} - #[op] pub async fn op_ws_close( state: Rc<RefCell<OpState>>, - args: CloseArgs, + rid: ResourceId, + code: Option<u16>, + reason: Option<String>, ) -> Result<(), AnyError> { - let rid = args.rid; - let msg = Message::Close(args.code.map(|c| CloseFrame { + let rid = rid; + let msg = Message::Close(code.map(|c| CloseFrame { code: CloseCode::from(c), - reason: match args.reason { + reason: match reason { Some(reason) => Cow::from(reason), None => Default::default(), }, |