tp2 0.17 → 0.19

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7f064819fba5d42c4376f3895ee0cce07745149e6b9ed06e864acb1ac3515d9e
4
- data.tar.gz: 84767b1d2cd87c6006ba7202f48c2bf1cdc9345ddf258c8fcd716bcf2023c264
3
+ metadata.gz: 45a706747a25d4c9c6e984e419880ecd05e400ae93f8f0d127ddc3e9329f4010
4
+ data.tar.gz: 80d603b11c232e294ba9eba60dffc523d155e4a0e17977b058c15982767b3f8e
5
5
  SHA512:
6
- metadata.gz: 72b97e276e4abb593566d761f44ac7bfa0a9af5d9ff5dcbece407412dd07eac84a9dfbe6d983c832010fb9a365be27053df471d2b9e76a2955b7332a33b06e69
7
- data.tar.gz: 6a13102f1f2008b32aa34fec7da9b2cda496e19f5445525f398b6c4f0a863b15bb68bf94b457e56f0b3c6ace41d3caca4722158ea69fc638d6a828f39e047bbd
6
+ metadata.gz: fa3971b6bdbbf359334fed4f8886cdd6db875d89b4088a9b2812dd91e61aafa8966d913d6d5cd8ebb728f6fc22f8faef16c72caa892779eed07bbaa9663e0fe0
7
+ data.tar.gz: 60f40a05932a9e2ed296b4710a712bc98c44887abf39bf60b437ffe39970f98ae0256e64191973a62d5cd228bda21e63598933c2cc84c8b04a2906e90acb8496
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ # 0.19 2025-10-02
2
+
3
+ - Update Qeweney
4
+
5
+ # 0.18 2025-09-14
6
+
7
+ - Add `Request#set_cookie` method
8
+
1
9
  # 0.17 2025-09-14
2
10
 
3
11
  - Add support for server extensions: `Date`, `Server` headers
@@ -142,6 +142,15 @@ module TP2
142
142
  @response_headers ? @response_headers.merge!(headers) : @response_headers = headers
143
143
  end
144
144
 
145
+ def set_cookie(*cookies)
146
+ existing_cookies = @response_headers && @response_headers['Set-Cookie']
147
+ if existing_cookies
148
+ @response_headers['Set-Cookie'] = existing_cookies + cookies
149
+ else
150
+ set_response_headers('Set-Cookie' => cookies)
151
+ end
152
+ end
153
+
145
154
  SEND_FLAGS = UM::MSG_NOSIGNAL | UM::MSG_WAITALL
146
155
 
147
156
  # Sends response including headers and body. Waits for the request to complete
@@ -15,4 +15,8 @@ class Qeweney::Request
15
15
  def set_response_headers(headers)
16
16
  adapter.set_response_headers(headers)
17
17
  end
18
+
19
+ def set_cookie(*)
20
+ adapter.set_cookie(*)
21
+ end
18
22
  end
data/lib/tp2/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module TP2
2
- VERSION = '0.17'
2
+ VERSION = '0.19'
3
3
  end
@@ -582,4 +582,48 @@ class ConnectionTest < Minitest::Test
582
582
  expected = "HTTP/1.1 200\r\nTransfer-Encoding: chunked\r\nSet-Cookie: foo=bar\r\nFoo: bar\r\nContent-Type: text/plain\r\n\r\n3\r\nfoo\r\n0\r\n\r\n"
583
583
  assert_equal expected, response
584
584
  end
585
+
586
+ def test_set_cookie_single
587
+ @hook = ->(req) {
588
+ req.set_cookie('foo=bar; HttpOnly')
589
+ req.respond('foo')
590
+ }
591
+
592
+ write_client_side("GET / HTTP/1.1\r\n\r\n")
593
+ @adapter.serve_request
594
+ response = read_client_side(65536)
595
+ expected = "HTTP/1.1 200\r\nTransfer-Encoding: chunked\r\nSet-Cookie: foo=bar; HttpOnly\r\n\r\n3\r\nfoo\r\n0\r\n\r\n"
596
+ assert_equal expected, response
597
+
598
+ end
599
+
600
+ def test_set_cookie_multi1
601
+ @hook = ->(req) {
602
+ req.set_cookie('foo=bar; HttpOnly', 'bar=baz')
603
+ req.respond('foo')
604
+ }
605
+
606
+ write_client_side("GET / HTTP/1.1\r\n\r\n")
607
+ @adapter.serve_request
608
+ response = read_client_side(65536)
609
+ expected = "HTTP/1.1 200\r\nTransfer-Encoding: chunked\r\nSet-Cookie: foo=bar; HttpOnly\r\nSet-Cookie: bar=baz\r\n\r\n3\r\nfoo\r\n0\r\n\r\n"
610
+ assert_equal expected, response
611
+
612
+ end
613
+
614
+ def test_set_cookie_multi2
615
+ @hook = ->(req) {
616
+ req.set_cookie('a=1', 'b=2')
617
+ req.set_cookie('c=3')
618
+ req.set_cookie('d=4', 'e=5')
619
+ req.respond('foo')
620
+ }
621
+
622
+ write_client_side("GET / HTTP/1.1\r\n\r\n")
623
+ @adapter.serve_request
624
+ response = read_client_side(65536)
625
+ expected = "HTTP/1.1 200\r\nTransfer-Encoding: chunked\r\nSet-Cookie: a=1\r\nSet-Cookie: b=2\r\nSet-Cookie: c=3\r\nSet-Cookie: d=4\r\nSet-Cookie: e=5\r\n\r\n3\r\nfoo\r\n0\r\n\r\n"
626
+ assert_equal expected, response
627
+
628
+ end
585
629
  end
data/tp2.gemspec CHANGED
@@ -21,6 +21,6 @@ Gem::Specification.new do |s|
21
21
  s.executables = ['tp2']
22
22
 
23
23
  s.add_dependency 'uringmachine', '~> 0.18'
24
- s.add_dependency 'qeweney', '~> 0.22'
24
+ s.add_dependency 'qeweney', '~> 0.23'
25
25
  s.add_dependency 'rack', '~> 3.1.15'
26
26
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tp2
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.17'
4
+ version: '0.19'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
@@ -29,14 +29,14 @@ dependencies:
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: '0.22'
32
+ version: '0.23'
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '0.22'
39
+ version: '0.23'
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: rack
42
42
  requirement: !ruby/object:Gem::Requirement