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 +4 -4
- data/CHANGELOG.md +6 -0
- data/Gemfile.lock +2 -2
- data/lib/pitchfork/http_response.rb +13 -6
- data/lib/pitchfork/http_server.rb +5 -16
- data/lib/pitchfork/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e837b05925916feb0b10fb28b2ddfbc8bb476aa77091217cbb012fd0c98f6c0
|
4
|
+
data.tar.gz: 5b89fafb322999c204408a642e39547a652b61968bd2eae4b1c87b77ae51baec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: df56d4c6bb70b5735e4859c1186b3e754210b84dfd457f804d6f93f2ac804205f351bd2ef557a09f05fa39896bb29180c6974ef9c74a062c8ddbb32506bc5c36
|
7
|
+
data.tar.gz: 93791c5474ec82f7470270f371df480ff7178ab903ee59799ddd975d0154841234895bce720c911b0fafba78016f36cc7fbac7210b7025417bff5fde898da0b8
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
pitchfork (0.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.
|
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
|
-
|
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
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
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)
|
data/lib/pitchfork/version.rb
CHANGED
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.
|
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:
|
11
|
+
date: 2023-01-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: raindrops
|