diff --git a/keyserver/src/socket/tunnelbroker.js b/keyserver/src/socket/tunnelbroker.js --- a/keyserver/src/socket/tunnelbroker.js +++ b/keyserver/src/socket/tunnelbroker.js @@ -2,12 +2,14 @@ import WebSocket from 'ws'; +import { type ConnectionInitializationMessage } from 'lib/types/tunnelbroker-messages.js'; + function createTunnelbrokerWebsocket() { try { const tunnelbrokerSocket = new WebSocket('ws://localhost:51001'); tunnelbrokerSocket.on('open', () => { // TODO: Replace keyserver details with actual details - const message = { + const message: ConnectionInitializationMessage = { type: 'sessionRequest', accessToken: 'foobar', deviceId: 'foo', diff --git a/lib/types/tunnelbroker-messages.js b/lib/types/tunnelbroker-messages.js new file mode 100644 --- /dev/null +++ b/lib/types/tunnelbroker-messages.js @@ -0,0 +1,9 @@ +// @flow + +export type TBConnectionInitializationMessage = { + +type: 'sessionRequest', + +deviceID: string, + +accessToken: string, + +notifyToken?: string, + +deviceType: 'mobile' | 'web' | 'keyserver', +}; diff --git a/services/tunnelbroker/src/websockets/mod.rs b/services/tunnelbroker/src/websockets/mod.rs --- a/services/tunnelbroker/src/websockets/mod.rs +++ b/services/tunnelbroker/src/websockets/mod.rs @@ -83,7 +83,7 @@ tx: &tokio::sync::mpsc::UnboundedSender, ) -> Result<(), serde_json::Error> { match serde_json::from_str::(message)? { - Messages::SessionRequest(session_info) => { + Messages::ConnectionInitializationMessage(session_info) => { ACTIVE_CONNECTIONS.insert(session_info.device_id, tx.clone()); } _ => { diff --git a/shared/tunnelbroker_messages/src/messages/mod.rs b/shared/tunnelbroker_messages/src/messages/mod.rs --- a/shared/tunnelbroker_messages/src/messages/mod.rs +++ b/shared/tunnelbroker_messages/src/messages/mod.rs @@ -11,5 +11,5 @@ #[serde(untagged)] pub enum Messages { RefreshKeysRequest(RefreshKeyRequest), - SessionRequest(SessionRequest), + ConnectionInitializationMessage(ConnectionInitializationMessage), } diff --git a/shared/tunnelbroker_messages/src/messages/session.rs b/shared/tunnelbroker_messages/src/messages/session.rs --- a/shared/tunnelbroker_messages/src/messages/session.rs +++ b/shared/tunnelbroker_messages/src/messages/session.rs @@ -3,7 +3,7 @@ use serde::{Deserialize, Serialize}; /// The workflow when estabilishing a tunnelbroker connection: -/// - Client sends SessionRequest +/// - Client sends ConnectionInitializationMessage /// - Tunnelbroker validates access_token with identity service /// - Tunnelbroker emits an AMQP message declaring that it has opened a new /// connection with a given device, so that the respective tunnelbroker @@ -31,7 +31,7 @@ /// service before continuing with the request. #[derive(Serialize, Deserialize)] #[serde(tag = "type", rename_all = "camelCase")] -pub struct SessionRequest { +pub struct ConnectionInitializationMessage { pub device_id: String, pub access_token: String, pub notify_token: Option, @@ -41,7 +41,7 @@ } #[derive(Serialize, Deserialize)] -pub struct SessionResponse { +pub struct ConnectionInitializationResponse { pub session_id: String, } @@ -59,7 +59,8 @@ }"#; let request = - serde_json::from_str::(example_payload).unwrap(); + serde_json::from_str::(example_payload) + .unwrap(); assert_eq!(request.device_id, "foo"); assert_eq!(request.access_token, "xkdeifjsld"); assert_eq!(request.device_os, None);