summaryrefslogtreecommitdiff
path: root/vendor/bundle/ruby/3.4.0/gems/em-websocket-0.5.3/lib/em-websocket/handshake75.rb
diff options
context:
space:
mode:
authorBenjamin Sanders <ben@Benjamins-MacBook-Pro.local>2025-10-11 10:34:24 -0400
committerBenjamin Sanders <ben@Benjamins-MacBook-Pro.local>2025-10-11 10:34:24 -0400
commit5571dc766e2143e39762ff0b47c41d1c2e154f4c (patch)
treef4f124d314a7e76c04484515aa0fd1f2e271a601 /vendor/bundle/ruby/3.4.0/gems/em-websocket-0.5.3/lib/em-websocket/handshake75.rb
parent359f3309c97fc894b63e0a295c76ab298504d635 (diff)
Vendor bundled gems for deployment
Diffstat (limited to 'vendor/bundle/ruby/3.4.0/gems/em-websocket-0.5.3/lib/em-websocket/handshake75.rb')
-rw-r--r--vendor/bundle/ruby/3.4.0/gems/em-websocket-0.5.3/lib/em-websocket/handshake75.rb28
1 files changed, 28 insertions, 0 deletions
diff --git a/vendor/bundle/ruby/3.4.0/gems/em-websocket-0.5.3/lib/em-websocket/handshake75.rb b/vendor/bundle/ruby/3.4.0/gems/em-websocket-0.5.3/lib/em-websocket/handshake75.rb
new file mode 100644
index 0000000..65b744f
--- /dev/null
+++ b/vendor/bundle/ruby/3.4.0/gems/em-websocket-0.5.3/lib/em-websocket/handshake75.rb
@@ -0,0 +1,28 @@
+module EventMachine
+ module WebSocket
+ module Handshake75
+ def self.handshake(headers, path, secure)
+ scheme = (secure ? "wss" : "ws")
+ location = "#{scheme}://#{headers['host']}#{path}"
+
+ upgrade = "HTTP/1.1 101 Web Socket Protocol Handshake\r\n"
+ upgrade << "Upgrade: WebSocket\r\n"
+ upgrade << "Connection: Upgrade\r\n"
+ upgrade << "WebSocket-Origin: #{headers['origin']}\r\n"
+ upgrade << "WebSocket-Location: #{location}\r\n"
+ if protocol = headers['sec-websocket-protocol']
+ validate_protocol!(protocol)
+ upgrade << "Sec-WebSocket-Protocol: #{protocol}\r\n"
+ end
+ upgrade << "\r\n"
+
+ return upgrade
+ end
+
+ def self.validate_protocol!(protocol)
+ raise HandshakeError, "Invalid WebSocket-Protocol: empty" if protocol.empty?
+ # TODO: Validate characters
+ end
+ end
+ end
+end