pitchfork 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4c060e231677f29e29d84ea24a0d3bad9f8a34b8474245530bc229b4c64abd89
4
- data.tar.gz: 3c0f01f68d4abacc0f6fc1898937f4f614291ea59e716c3e9423f1919dd70607
3
+ metadata.gz: 7e837b05925916feb0b10fb28b2ddfbc8bb476aa77091217cbb012fd0c98f6c0
4
+ data.tar.gz: 5b89fafb322999c204408a642e39547a652b61968bd2eae4b1c87b77ae51baec
5
5
  SHA512:
6
- metadata.gz: fca437b006db57240a9cacb91c365894741c340a351bc3770b3e131e2789712cac6e00c029596f45f2ee6fc2b68bd3464bd3af2450a889a4d105a816c5fdc2a5
7
- data.tar.gz: 49ac19bfe8caa4b62d513a65ba1103a9610ec8034170636420a6bb93edd99c48e07f0436771a2fa73c9f67181e0f69a28bb6f7bea37519631445ebe00e6470f2
6
+ metadata.gz: df56d4c6bb70b5735e4859c1186b3e754210b84dfd457f804d6f93f2ac804205f351bd2ef557a09f05fa39896bb29180c6974ef9c74a062c8ddbb32506bc5c36
7
+ data.tar.gz: 93791c5474ec82f7470270f371df480ff7178ab903ee59799ddd975d0154841234895bce720c911b0fafba78016f36cc7fbac7210b7025417bff5fde898da0b8
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Unreleased
2
2
 
3
+ # 0.1.2
4
+
5
+ - Improve Ruby 3.2 and Rack 3 compatibility.
6
+
7
+ # 0.1.1
8
+
3
9
  - Fix `extconf.rb` to move the extension in the right place on gem install. (#18)
4
10
 
5
11
  # 0.1.0
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pitchfork (0.1.1)
4
+ pitchfork (0.1.2)
5
5
  rack (>= 2.0)
6
6
  raindrops (~> 0.7)
7
7
 
@@ -12,7 +12,7 @@ GEM
12
12
  nio4r (2.5.8)
13
13
  puma (5.6.5)
14
14
  nio4r (~> 2.0)
15
- rack (3.0.0)
15
+ rack (3.0.4.1)
16
16
  raindrops (0.20.0)
17
17
  rake (13.0.6)
18
18
  rake-compiler (1.2.0)
@@ -20,6 +20,18 @@ module Pitchfork
20
20
  "#{code} #{STATUS_CODES[code]}\r\n\r\n"
21
21
  end
22
22
 
23
+ def append_header(buf, key, value)
24
+ case value
25
+ when Array # Rack 3
26
+ value.each { |v| buf << "#{key}: #{v}\r\n" }
27
+ when /\n/ # Rack 2
28
+ # avoiding blank, key-only cookies with /\n+/
29
+ value.split(/\n+/).each { |v| buf << "#{key}: #{v}\r\n" }
30
+ else
31
+ buf << "#{key}: #{value}\r\n"
32
+ end
33
+ end
34
+
23
35
  # writes the rack_response to socket as an HTTP response
24
36
  def http_response_write(socket, status, headers, body,
25
37
  req = Pitchfork::HttpParser.new)
@@ -41,12 +53,7 @@ module Pitchfork
41
53
  # key in Rack < 1.5
42
54
  hijack = value
43
55
  else
44
- if value =~ /\n/
45
- # avoiding blank, key-only cookies with /\n+/
46
- value.split(/\n+/).each { |v| buf << "#{key}: #{v}\r\n" }
47
- else
48
- buf << "#{key}: #{value}\r\n"
49
- end
56
+ append_header(buf, key, value)
50
57
  end
51
58
  end
52
59
  socket.write(buf << "\r\n".freeze)
@@ -572,22 +572,11 @@ module Pitchfork
572
572
  end
573
573
 
574
574
  def e103_response_write(client, headers)
575
- response = if @request.response_start_sent
576
- "103 Early Hints\r\n"
577
- else
578
- "HTTP/1.1 103 Early Hints\r\n"
579
- end
580
-
581
- headers.each_pair do |k, vs|
582
- next if !vs || vs.empty?
583
- values = vs.to_s.split("\n".freeze)
584
- values.each do |v|
585
- response << "#{k}: #{v}\r\n"
586
- end
587
- end
588
- response << "\r\n".freeze
589
- response << "HTTP/1.1 ".freeze if @request.response_start_sent
590
- client.write(response)
575
+ rss = @request.response_start_sent
576
+ buf = rss ? "103 Early Hints\r\n" : "HTTP/1.1 103 Early Hints\r\n"
577
+ headers.each { |key, value| append_header(buf, key, value) }
578
+ buf << (rss ? "\r\nHTTP/1.1 ".freeze : "\r\n".freeze)
579
+ client.write(buf)
591
580
  end
592
581
 
593
582
  def e100_response_write(client, env)
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pitchfork
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  module Const
6
6
  UNICORN_VERSION = '6.1.0'
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pitchfork
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean Boussier
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-11-05 00:00:00.000000000 Z
11
+ date: 2023-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: raindrops