alert_web_server 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a6d8b5f3ea6b65c7a3f39f372f304828aef6593a9f38853074cb14d967dfbda8
4
+ data.tar.gz: 7e6bdc3e8d00608525cd72584f883443a96c00b9facb6fe9f6f0ce5b3257921e
5
+ SHA512:
6
+ metadata.gz: 26928b9115973a6c61f634b5bc2d06515621cb18a3819f46073e615ea9f28cd576027d5372f0366c5a08a41d0f268c21b2229f2a6e962e6182d621c7bf99eac1
7
+ data.tar.gz: 229e864b8fd2d002bbc9e9a6ee552680b06bc52ed014f89ab647979036c1fb52df605878291352c6df59873df21958b2ba39079a40601923595d6990293e7346
@@ -0,0 +1,28 @@
1
+ require 'socket'
2
+ require File.join(File.dirname(__FILE__), "request_parser")
3
+ require File.join(File.dirname(__FILE__), "response")
4
+
5
+ class AlertWebServer
6
+ def run
7
+ server = TCPServer.new('localhost', 2001)
8
+
9
+ loop do
10
+ client = server.accept
11
+
12
+ Thread.new { handle_connection(client) }
13
+ end
14
+ end
15
+
16
+ private
17
+
18
+ def handle_connection(client)
19
+ puts "New client! #{client}"
20
+
21
+ request = client.readpartial(2048)
22
+ request = RequestParser.new(request).run
23
+ response = Response.new(request).run
24
+
25
+ client.write(response)
26
+ client.close
27
+ end
28
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ class RequestParser
4
+ def initialize(request)
5
+ @request = request
6
+ end
7
+
8
+ def run
9
+ request_parts = @request.split
10
+
11
+ {
12
+ method: request_parts[0],
13
+ path: request_parts[1],
14
+ headers: request_parts[2]
15
+ }
16
+ end
17
+ end
data/lib/response.rb ADDED
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Response
4
+ def initialize(request)
5
+ @request = request
6
+ end
7
+
8
+ def run
9
+ data = "<html>test</html>"
10
+
11
+ [
12
+ "HTTP/1.1 200\r\n",
13
+ "Content-Length: #{data.size}\r\n",
14
+ "\r\n",
15
+ "#{data}\r\n"
16
+ ].join
17
+ end
18
+ end
metadata ADDED
@@ -0,0 +1,42 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: alert_web_server
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Pawel Trela
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 2025-07-24 00:00:00.000000000 Z
11
+ dependencies: []
12
+ description: AWS hehe - Simple Ruby Web Server
13
+ email: paweltrelapro@gmail.com
14
+ executables: []
15
+ extensions: []
16
+ extra_rdoc_files: []
17
+ files:
18
+ - lib/alert_web_server.rb
19
+ - lib/request_parser.rb
20
+ - lib/response.rb
21
+ homepage: https://rubygems.org/gems/alert_web_server
22
+ licenses:
23
+ - MIT
24
+ metadata: {}
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubygems_version: 3.6.2
40
+ specification_version: 4
41
+ summary: Alert Web Server
42
+ test_files: []