Skip to content

Commit e2078f4

Browse files
committed
Added HttpRequest
1 parent 0bdae67 commit e2078f4

File tree

6 files changed

+47
-4
lines changed

6 files changed

+47
-4
lines changed

my-http-server-signal-r-middleware/src/web_socket_callbacks.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use std::{sync::Arc, time::Duration};
33
use my_http_server_core::HttpFailResult;
44
use my_http_server_web_sockets::MyWebSocket;
55

6+
use my_http_server_web_sockets::MyWebSocketHttpRequest;
67
use my_json::json_reader::JsonFirstLineIterator;
78
use my_json::json_reader::JsonValueRef;
89
#[cfg(feature = "with-telemetry")]
@@ -28,6 +29,7 @@ impl<TCtx: Send + Sync + Default + 'static> my_http_server_web_sockets::MyWebSoc
2829
async fn connected(
2930
&self,
3031
my_web_socket: Arc<MyWebSocket>,
32+
_request: MyWebSocketHttpRequest,
3133
disconnect_timeout: Duration,
3234
) -> Result<(), HttpFailResult> {
3335
#[cfg(feature = "debug-ws")]

my-http-server-socket-io-middleware/src/web_socket_callbacks.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use std::{sync::Arc, time::Duration};
22

33
use hyper_tungstenite::tungstenite::Message;
44
use my_http_server_core::*;
5-
use my_http_server_web_sockets::MyWebSocket;
5+
use my_http_server_web_sockets::{MyWebSocket, MyWebSocketHttpRequest};
66

77
use socket_io_utils::{SocketIoContract, SocketIoMessage, SocketIoSettings};
88

@@ -130,6 +130,7 @@ impl my_http_server_web_sockets::MyWebSocketCallback for WebSocketCallbacks {
130130
async fn connected(
131131
&self,
132132
my_web_socket: Arc<MyWebSocket>,
133+
_request: MyWebSocketHttpRequest,
133134
_disconnect_timeout: Duration,
134135
) -> Result<(), HttpFailResult> {
135136
#[cfg(feature = "debug-ws")]

my-http-server-web-sockets/src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ mod my_web_socket_callback;
44
pub use helpers::handle_web_socket_upgrade;
55
pub use my_web_socket::*;
66
pub use my_web_socket_callback::*;
7+
mod my_web_socket_http_request;
78
mod my_websocket_middleware;
89
mod web_sockets_upgrade;
10+
pub use my_web_socket_http_request::*;
911
pub use my_websocket_middleware::*;
1012
pub type WsMessage = hyper_tungstenite::tungstenite::Message;

my-http-server-web-sockets/src/my_web_socket_callback.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use std::{sync::Arc, time::Duration};
22

33
use my_http_server_core::HttpFailResult;
44

5-
use crate::WsMessage;
5+
use crate::{MyWebSocketHttpRequest, WsMessage};
66

77
use super::MyWebSocket;
88

@@ -11,6 +11,7 @@ pub trait MyWebSocketCallback {
1111
async fn connected(
1212
&self,
1313
my_web_socket: Arc<MyWebSocket>,
14+
http_request: MyWebSocketHttpRequest,
1415
disconnect_timeout: Duration,
1516
) -> Result<(), HttpFailResult>;
1617
async fn disconnected(&self, my_web_socket: &MyWebSocket);
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
use hyper::{header::*, *};
2+
use hyper_tungstenite::tungstenite::http::Extensions;
3+
4+
pub struct MyWebSocketHttpRequest {
5+
uri: Uri,
6+
headers: HeaderMap<HeaderValue>,
7+
version: Version,
8+
extensions: Extensions,
9+
}
10+
11+
impl<'s> MyWebSocketHttpRequest {
12+
pub fn new(req: &Request<hyper::body::Incoming>) -> Self {
13+
Self {
14+
uri: req.uri().clone(),
15+
headers: req.headers().clone(),
16+
version: req.version(),
17+
extensions: req.extensions().clone(),
18+
}
19+
}
20+
21+
pub fn get_uri(&self) -> &Uri {
22+
&self.uri
23+
}
24+
25+
pub fn get_headers(&self) -> &HeaderMap<HeaderValue> {
26+
&self.headers
27+
}
28+
29+
pub fn get_http_version(&self) -> Version {
30+
self.version
31+
}
32+
33+
pub fn get_extensions(&self) -> &Extensions {
34+
&self.extensions
35+
}
36+
}

my-http-server-web-sockets/src/web_sockets_upgrade.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use hyper_tungstenite::tungstenite::Message;
99
use hyper_tungstenite::HyperWebsocketStream;
1010
use rust_extensions::Logger;
1111

12-
use crate::{MyWebSocket, MyWebSocketCallback};
12+
use crate::{MyWebSocket, MyWebSocketCallback, MyWebSocketHttpRequest};
1313

1414
type Error = Box<dyn std::error::Error + Send + Sync + 'static>;
1515

@@ -24,6 +24,7 @@ pub async fn upgrade<TMyWebSocketCallback: MyWebSocketCallback + Send + Sync + '
2424
disconnect_timeout: Duration,
2525
logs: Arc<dyn Logger + Send + Sync + 'static>,
2626
) -> Result<MyHttpResponse, Error> {
27+
let http_request = MyWebSocketHttpRequest::new(&req);
2728
let (response, websocket) = hyper_tungstenite::upgrade(req, None)?;
2829

2930
tokio::spawn(async move {
@@ -39,7 +40,7 @@ pub async fn upgrade<TMyWebSocketCallback: MyWebSocketCallback + Send + Sync + '
3940
let my_web_socket = Arc::new(my_web_socket);
4041

4142
callback
42-
.connected(my_web_socket.clone(), disconnect_timeout)
43+
.connected(my_web_socket.clone(), http_request, disconnect_timeout)
4344
.await
4445
.unwrap();
4546

0 commit comments

Comments
 (0)