diff --git a/dist-js/index.d.ts b/dist-js/index.d.ts index 93c1621..9bf00fc 100644 --- a/dist-js/index.d.ts +++ b/dist-js/index.d.ts @@ -4,6 +4,7 @@ export interface ConnectionConfig { maxMessageSize?: number; maxFrameSize?: number; acceptUnmaskedFrames?: boolean; + headers?: HeadersInit; } export interface MessageKind { type: T; diff --git a/dist-js/index.min.js b/dist-js/index.min.js index d01c6c3..fab5574 100644 --- a/dist-js/index.min.js +++ b/dist-js/index.min.js @@ -12,6 +12,9 @@ class WebSocket { const handler = (message) => { listeners.forEach((l) => l(message)); }; + if (config === null || config === void 0 ? void 0 : config.headers) { + config.headers = Array.from(new Headers(config.headers).entries()); + } return await d("plugin:websocket|connect", { url, callbackFunction: s(handler), diff --git a/dist-js/index.min.js.map b/dist-js/index.min.js.map index 38f1f4f..a9b93a9 100644 --- a/dist-js/index.min.js.map +++ b/dist-js/index.min.js.map @@ -1 +1 @@ -{"version":3,"file":"index.min.js","sources":["../../../node_modules/.pnpm/@tauri-apps+api@1.4.0/node_modules/@tauri-apps/api/chunk-FEIY7W7S.js","../../../node_modules/.pnpm/@tauri-apps+api@1.4.0/node_modules/@tauri-apps/api/chunk-5UWJICAP.js","../guest-js/index.ts"],"sourcesContent":["var d=Object.defineProperty;var e=(c,a)=>{for(var b in a)d(c,b,{get:a[b],enumerable:!0})};export{e as a};\n","import{a as c}from\"./chunk-FEIY7W7S.js\";var w={};c(w,{convertFileSrc:()=>u,invoke:()=>d,transformCallback:()=>s});function l(){return window.crypto.getRandomValues(new Uint32Array(1))[0]}function s(r,n=!1){let e=l(),t=`_${e}`;return Object.defineProperty(window,t,{value:o=>(n&&Reflect.deleteProperty(window,t),r?.(o)),writable:!1,configurable:!0}),e}async function d(r,n={}){return new Promise((e,t)=>{let o=s(i=>{e(i),Reflect.deleteProperty(window,`_${a}`)},!0),a=s(i=>{t(i),Reflect.deleteProperty(window,`_${o}`)},!0);window.__TAURI_IPC__({cmd:r,callback:o,error:a,...n})})}function u(r,n=\"asset\"){let e=encodeURIComponent(r);return navigator.userAgent.includes(\"Windows\")?`https://${n}.localhost/${e}`:`${n}://localhost/${e}`}export{s as a,d as b,u as c,w as d};\n",null],"names":["d","c","invoke","transformCallback"],"mappings":"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","x_google_ignoreList":[0,1]} \ No newline at end of file +{"version":3,"file":"index.min.js","sources":["../../../node_modules/.pnpm/@tauri-apps+api@1.4.0/node_modules/@tauri-apps/api/chunk-FEIY7W7S.js","../../../node_modules/.pnpm/@tauri-apps+api@1.4.0/node_modules/@tauri-apps/api/chunk-5UWJICAP.js","../guest-js/index.ts"],"sourcesContent":["var d=Object.defineProperty;var e=(c,a)=>{for(var b in a)d(c,b,{get:a[b],enumerable:!0})};export{e as a};\n","import{a as c}from\"./chunk-FEIY7W7S.js\";var w={};c(w,{convertFileSrc:()=>u,invoke:()=>d,transformCallback:()=>s});function l(){return window.crypto.getRandomValues(new Uint32Array(1))[0]}function s(r,n=!1){let e=l(),t=`_${e}`;return Object.defineProperty(window,t,{value:o=>(n&&Reflect.deleteProperty(window,t),r?.(o)),writable:!1,configurable:!0}),e}async function d(r,n={}){return new Promise((e,t)=>{let o=s(i=>{e(i),Reflect.deleteProperty(window,`_${a}`)},!0),a=s(i=>{t(i),Reflect.deleteProperty(window,`_${o}`)},!0);window.__TAURI_IPC__({cmd:r,callback:o,error:a,...n})})}function u(r,n=\"asset\"){let e=encodeURIComponent(r);return navigator.userAgent.includes(\"Windows\")?`https://${n}.localhost/${e}`:`${n}://localhost/${e}`}export{s as a,d as b,u as c,w as d};\n",null],"names":["d","c","invoke","transformCallback"],"mappings":"AAAA,IAAIA,GAAC,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAACA,GAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAC,CAAC;;ACAjD,IAAI,CAAC,CAAC,EAAE,CAACC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,OAAO,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;;AC4B3sB,MAAO,SAAS,CAAA;IAI5B,WAAY,CAAA,EAAU,EAAE,SAAwC,EAAA;AAC9D,QAAA,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC5B;AAED,IAAA,aAAa,OAAO,CAClB,GAAW,EACX,MAAyB,EAAA;QAEzB,MAAM,SAAS,GAAkC,EAAE,CAAC;AACpD,QAAA,MAAM,OAAO,GAAG,CAAC,OAAgB,KAAU;AACzC,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACvC,SAAC,CAAC;AAEF,QAAA,IAAI,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE;AACnB,YAAA,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACpE,SAAA;AAED,QAAA,OAAO,MAAMC,CAAM,CAAS,0BAA0B,EAAE;YACtD,GAAG;AACH,YAAA,gBAAgB,EAAEC,CAAiB,CAAC,OAAO,CAAC;YAC5C,MAAM;AACP,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;KAC/C;AAED,IAAA,WAAW,CAAC,EAA0B,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACzB;IAED,MAAM,IAAI,CAAC,OAAoC,EAAA;AAC7C,QAAA,IAAI,CAAU,CAAC;AACf,QAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC/B,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACrC,SAAA;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,MAAM,IAAI,OAAO,EAAE;YAC3D,CAAC,GAAG,OAAO,CAAC;AACb,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACjC,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACvC,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,IAAI,KAAK,CACb,sGAAsG,CACvG,CAAC;AACH,SAAA;AACD,QAAA,OAAO,MAAMD,CAAM,CAAC,uBAAuB,EAAE;YAC3C,EAAE,EAAE,IAAI,CAAC,EAAE;AACX,YAAA,OAAO,EAAE,CAAC;AACX,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC;AACrB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,MAAM,EAAE,wBAAwB;AACjC,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;AACF;;;;","x_google_ignoreList":[0,1]} \ No newline at end of file diff --git a/dist-js/index.mjs b/dist-js/index.mjs index 807fccf..b110cc2 100644 --- a/dist-js/index.mjs +++ b/dist-js/index.mjs @@ -10,6 +10,9 @@ class WebSocket { const handler = (message) => { listeners.forEach((l) => l(message)); }; + if (config === null || config === void 0 ? void 0 : config.headers) { + config.headers = Array.from(new Headers(config.headers).entries()); + } return await invoke("plugin:websocket|connect", { url, callbackFunction: transformCallback(handler), diff --git a/dist-js/index.mjs.map b/dist-js/index.mjs.map index d1729f6..8c4f481 100644 --- a/dist-js/index.mjs.map +++ b/dist-js/index.mjs.map @@ -1 +1 @@ -{"version":3,"file":"index.mjs","sources":["../guest-js/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;AA2Bc,MAAO,SAAS,CAAA;IAI5B,WAAY,CAAA,EAAU,EAAE,SAAwC,EAAA;AAC9D,QAAA,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC5B;AAED,IAAA,aAAa,OAAO,CAClB,GAAW,EACX,MAAyB,EAAA;QAEzB,MAAM,SAAS,GAAkC,EAAE,CAAC;AACpD,QAAA,MAAM,OAAO,GAAG,CAAC,OAAgB,KAAU;AACzC,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACvC,SAAC,CAAC;AAEF,QAAA,OAAO,MAAM,MAAM,CAAS,0BAA0B,EAAE;YACtD,GAAG;AACH,YAAA,gBAAgB,EAAE,iBAAiB,CAAC,OAAO,CAAC;YAC5C,MAAM;AACP,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;KAC/C;AAED,IAAA,WAAW,CAAC,EAA0B,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACzB;IAED,MAAM,IAAI,CAAC,OAAoC,EAAA;AAC7C,QAAA,IAAI,CAAU,CAAC;AACf,QAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC/B,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACrC,SAAA;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,MAAM,IAAI,OAAO,EAAE;YAC3D,CAAC,GAAG,OAAO,CAAC;AACb,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACjC,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACvC,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,IAAI,KAAK,CACb,sGAAsG,CACvG,CAAC;AACH,SAAA;AACD,QAAA,OAAO,MAAM,MAAM,CAAC,uBAAuB,EAAE;YAC3C,EAAE,EAAE,IAAI,CAAC,EAAE;AACX,YAAA,OAAO,EAAE,CAAC;AACX,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC;AACrB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,MAAM,EAAE,wBAAwB;AACjC,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;AACF;;;;"} \ No newline at end of file +{"version":3,"file":"index.mjs","sources":["../guest-js/index.ts"],"sourcesContent":[null],"names":[],"mappings":";;AA4Bc,MAAO,SAAS,CAAA;IAI5B,WAAY,CAAA,EAAU,EAAE,SAAwC,EAAA;AAC9D,QAAA,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;KAC5B;AAED,IAAA,aAAa,OAAO,CAClB,GAAW,EACX,MAAyB,EAAA;QAEzB,MAAM,SAAS,GAAkC,EAAE,CAAC;AACpD,QAAA,MAAM,OAAO,GAAG,CAAC,OAAgB,KAAU;AACzC,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACvC,SAAC,CAAC;AAEF,QAAA,IAAI,MAAM,KAAN,IAAA,IAAA,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE;AACnB,YAAA,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACpE,SAAA;AAED,QAAA,OAAO,MAAM,MAAM,CAAS,0BAA0B,EAAE;YACtD,GAAG;AACH,YAAA,gBAAgB,EAAE,iBAAiB,CAAC,OAAO,CAAC;YAC5C,MAAM;AACP,SAAA,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;KAC/C;AAED,IAAA,WAAW,CAAC,EAA0B,EAAA;AACpC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACzB;IAED,MAAM,IAAI,CAAC,OAAoC,EAAA;AAC7C,QAAA,IAAI,CAAU,CAAC;AACf,QAAA,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC/B,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACrC,SAAA;aAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,MAAM,IAAI,OAAO,EAAE;YAC3D,CAAC,GAAG,OAAO,CAAC;AACb,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACjC,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AACvC,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,IAAI,KAAK,CACb,sGAAsG,CACvG,CAAC;AACH,SAAA;AACD,QAAA,OAAO,MAAM,MAAM,CAAC,uBAAuB,EAAE;YAC3C,EAAE,EAAE,IAAI,CAAC,EAAE;AACX,YAAA,OAAO,EAAE,CAAC;AACX,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,MAAM,UAAU,GAAA;AACd,QAAA,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC;AACrB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,IAAI,EAAE;AACJ,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,MAAM,EAAE,wBAAwB;AACjC,aAAA;AACF,SAAA,CAAC,CAAC;KACJ;AACF;;;;"} \ No newline at end of file diff --git a/guest-js/index.ts b/guest-js/index.ts index 0f74809..4967b83 100644 --- a/guest-js/index.ts +++ b/guest-js/index.ts @@ -6,6 +6,7 @@ export interface ConnectionConfig { maxMessageSize?: number; maxFrameSize?: number; acceptUnmaskedFrames?: boolean; + headers?: HeadersInit; } export interface MessageKind { @@ -43,6 +44,10 @@ export default class WebSocket { listeners.forEach((l) => l(message)); }; + if (config?.headers) { + config.headers = Array.from(new Headers(config.headers).entries()); + } + return await invoke("plugin:websocket|connect", { url, callbackFunction: transformCallback(handler), diff --git a/src/lib.rs b/src/lib.rs index 3d3878b..ad692d6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -16,6 +16,9 @@ use tokio_tungstenite::{ }; use std::collections::HashMap; +use std::str::FromStr; +use tauri::http::header::{HeaderName, HeaderValue}; +use tokio_tungstenite::tungstenite::client::IntoClientRequest; type Id = u32; type WebSocket = WebSocketStream>; @@ -28,6 +31,10 @@ enum Error { Websocket(#[from] tokio_tungstenite::tungstenite::Error), #[error("connection not found for the given id: {0}")] ConnectionNotFound(Id), + #[error(transparent)] + InvalidHeaderValue(#[from] tokio_tungstenite::tungstenite::http::header::InvalidHeaderValue), + #[error(transparent)] + InvalidHeaderName(#[from] tokio_tungstenite::tungstenite::http::header::InvalidHeaderName), } impl Serialize for Error { @@ -51,6 +58,7 @@ pub struct ConnectionConfig { pub max_frame_size: Option, #[serde(default)] pub accept_unmasked_frames: bool, + pub headers: Option>, } impl From for WebSocketConfig { @@ -94,7 +102,17 @@ async fn connect( config: Option, ) -> Result { let id = rand::random(); - let (ws_stream, _) = connect_async_with_config(url, config.map(Into::into), false).await?; + let mut request = url.into_client_request()?; + + if let Some(headers) = config.as_ref().and_then(|c| c.headers.as_ref()) { + for (k, v) in headers { + let header_name = HeaderName::from_str(k.as_str())?; + let header_value = HeaderValue::from_str(v.as_str())?; + request.headers_mut().insert(header_name, header_value); + } + } + + let (ws_stream, _) = connect_async_with_config(request, config.map(Into::into), false).await?; tauri::async_runtime::spawn(async move { let (write, read) = ws_stream.split();