xenon-http 0.0.4 → 0.0.5
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 +4 -4
- data/{xenon-http/lib → lib}/xenon/auth.rb +0 -0
- data/{xenon-http/lib → lib}/xenon/errors.rb +0 -0
- data/lib/xenon/etag.rb +85 -0
- data/{xenon-http/lib → lib}/xenon/headers.rb +7 -1
- data/{xenon-http/lib → lib}/xenon/headers/accept.rb +1 -1
- data/{xenon-http/lib → lib}/xenon/headers/accept_charset.rb +1 -1
- data/{xenon-http/lib → lib}/xenon/headers/accept_encoding.rb +1 -1
- data/{xenon-http/lib → lib}/xenon/headers/accept_language.rb +1 -1
- data/{xenon-http/lib → lib}/xenon/headers/authorization.rb +0 -0
- data/{xenon-http/lib → lib}/xenon/headers/cache_control.rb +0 -0
- data/lib/xenon/headers/content_length.rb +23 -0
- data/{xenon-http/lib → lib}/xenon/headers/content_type.rb +0 -0
- data/{xenon-http/lib → lib}/xenon/headers/if_match.rb +0 -0
- data/{xenon-http/lib → lib}/xenon/headers/if_modified_since.rb +0 -0
- data/{xenon-http/lib → lib}/xenon/headers/if_none_match.rb +0 -0
- data/{xenon-http/lib → lib}/xenon/headers/if_range.rb +0 -0
- data/{xenon-http/lib → lib}/xenon/headers/if_unmodified_since.rb +0 -0
- data/{xenon-http/lib → lib}/xenon/headers/user_agent.rb +0 -0
- data/{xenon-http/lib → lib}/xenon/headers/www_authenticate.rb +0 -0
- data/{xenon-http/lib → lib}/xenon/http.rb +0 -0
- data/{xenon-http/lib → lib}/xenon/http_version.rb +0 -0
- data/{xenon-http/lib → lib}/xenon/media_type.rb +4 -0
- data/{xenon-http/lib → lib}/xenon/parsers/basic_rules.rb +0 -0
- data/lib/xenon/parsers/etag.rb +9 -0
- data/{xenon-http/lib → lib}/xenon/parsers/header_rules.rb +0 -0
- data/{xenon-http/lib → lib}/xenon/parsers/media_type.rb +0 -0
- data/{xenon-http/lib → lib}/xenon/quoted_string.rb +4 -4
- data/{xenon-http/spec → spec}/spec_helper.rb +0 -0
- data/spec/xenon/etag_spec.rb +105 -0
- data/{xenon-http/spec → spec}/xenon/headers/accept_charset_spec.rb +0 -0
- data/{xenon-http/spec → spec}/xenon/headers/accept_encoding_spec.rb +0 -0
- data/{xenon-http/spec → spec}/xenon/headers/accept_language_spec.rb +0 -0
- data/{xenon-http/spec → spec}/xenon/headers/accept_spec.rb +0 -0
- data/{xenon-http/spec → spec}/xenon/headers/authorization_spec.rb +0 -0
- data/{xenon-http/spec → spec}/xenon/headers/cache_control_spec.rb +0 -0
- data/{xenon-http/spec → spec}/xenon/headers/if_match_spec.rb +0 -0
- data/{xenon-http/spec → spec}/xenon/headers/if_modified_since_spec.rb +0 -0
- data/{xenon-http/spec → spec}/xenon/headers/if_none_match_spec.rb +0 -0
- data/{xenon-http/spec → spec}/xenon/headers/if_range_spec.rb +1 -1
- data/{xenon-http/spec → spec}/xenon/headers/if_unmodified_since_spec.rb +0 -0
- data/{xenon-http/spec → spec}/xenon/headers/user_agent_spec.rb +0 -0
- data/{xenon-http/spec → spec}/xenon/headers/www_authenticate_spec.rb +0 -0
- data/{xenon-http/spec → spec}/xenon/media_type_spec.rb +1 -1
- data/{xenon-http/xenon-http.gemspec → xenon-http.gemspec} +2 -2
- metadata +50 -93
- data/.codeclimate.yml +0 -18
- data/.gitignore +0 -25
- data/.rspec +0 -3
- data/.travis.yml +0 -6
- data/Gemfile +0 -20
- data/Guardfile +0 -16
- data/LICENSE +0 -22
- data/README.md +0 -116
- data/Rakefile +0 -40
- data/VERSION +0 -1
- data/examples/hello_world/config.ru +0 -3
- data/examples/hello_world/hello_world.rb +0 -27
- data/xenon-http/lib/xenon/etag.rb +0 -48
- data/xenon-http/spec/xenon/etag_spec.rb +0 -19
- data/xenon-routing/lib/xenon/api.rb +0 -118
- data/xenon-routing/lib/xenon/marshallers.rb +0 -48
- data/xenon-routing/lib/xenon/request.rb +0 -40
- data/xenon-routing/lib/xenon/response.rb +0 -29
- data/xenon-routing/lib/xenon/routing.rb +0 -6
- data/xenon-routing/lib/xenon/routing/context.rb +0 -35
- data/xenon-routing/lib/xenon/routing/directives.rb +0 -14
- data/xenon-routing/lib/xenon/routing/header_directives.rb +0 -32
- data/xenon-routing/lib/xenon/routing/method_directives.rb +0 -26
- data/xenon-routing/lib/xenon/routing/param_directives.rb +0 -22
- data/xenon-routing/lib/xenon/routing/path_directives.rb +0 -37
- data/xenon-routing/lib/xenon/routing/route_directives.rb +0 -51
- data/xenon-routing/lib/xenon/routing/security_directives.rb +0 -34
- data/xenon-routing/lib/xenon/routing_version.rb +0 -3
- data/xenon-routing/spec/spec_helper.rb +0 -94
- data/xenon-routing/xenon-routing.gemspec +0 -25
- data/xenon.gemspec +0 -26
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8f749f567c0d040df9e40e2956abe02d628652ab
|
|
4
|
+
data.tar.gz: cf94e0a40a8480f6a05d9af9847f7e30073cc6aa
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ebb97d34011c1ed89471d45d4cca9f6911758092458c8207b0810e5f0947ce13dce825a9e3b5c472fae01445093b19d97edab3e0a7984afb586025de4596cf13
|
|
7
|
+
data.tar.gz: 2ddd75cc5b4a291df18a9406a28ed3da9847bd1131708d474c1af8bb6247d6fa1eb2f799653e906bb42d22b1b7ffa7451251d79e6783c063b4b7b090b9df4520
|
|
File without changes
|
|
File without changes
|
data/lib/xenon/etag.rb
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
require 'xenon/parsers/etag'
|
|
2
|
+
|
|
3
|
+
module Xenon
|
|
4
|
+
# An Etag, see {http://tools.ietf.org/html/rfc7232#section-2.3 RFC 7232 § 2.3}.
|
|
5
|
+
class ETag
|
|
6
|
+
attr_reader :tag
|
|
7
|
+
|
|
8
|
+
# Initializes a new ETag instance.
|
|
9
|
+
# @param tag [String] The opaque tag.
|
|
10
|
+
# @param weak [true, false] Whether the tag is weak.
|
|
11
|
+
def initialize(tag, weak: false)
|
|
12
|
+
@tag = tag
|
|
13
|
+
@weak = weak
|
|
14
|
+
freeze
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Prevents further modifications to the ETag.
|
|
18
|
+
# @return [ETag] This method returns self.
|
|
19
|
+
def freeze
|
|
20
|
+
@tag.freeze
|
|
21
|
+
super
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Parses an ETag string.
|
|
25
|
+
# @param s [String] The ETag string.
|
|
26
|
+
# @return [ETag] An `ETag` object.
|
|
27
|
+
def self.parse(s)
|
|
28
|
+
tree = Parsers::ETag.new.etag.parse(s)
|
|
29
|
+
Parsers::ETagHeaderTransform.new.apply(tree)
|
|
30
|
+
rescue Parslet::ParseFailed
|
|
31
|
+
raise Xenon::ParseError.new("Invalid ETag (#{s}).")
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
# Whether the ETag is weak.
|
|
35
|
+
# @return [true, false] `true` if the ETag is weak; otherwise `false`.
|
|
36
|
+
def weak?
|
|
37
|
+
@weak
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Whether the ETag is strong.
|
|
41
|
+
# @return [true, false] `true` if the ETag is strong; otherwise `false`.
|
|
42
|
+
def strong?
|
|
43
|
+
!weak?
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# The strong equality function, see {http://tools.ietf.org/html/rfc7232#section-2.3.2 RFC 7232 § 2.3.2}.
|
|
47
|
+
# @return [true, false] `true` if the ETags are both strong and have the same tag; otherwise `false`.
|
|
48
|
+
def strong_eq?(other)
|
|
49
|
+
strong? && other.strong? && @tag == other.tag
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# The weak equality function, see {http://tools.ietf.org/html/rfc7232#section-2.3.2 RFC 7232 § 2.3.2}.
|
|
53
|
+
# @return [true, false] `true` if the ETags have the same tag; otherwise `false`.
|
|
54
|
+
def weak_eq?(other)
|
|
55
|
+
@tag == other.tag
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# An equality function that checks the ETags have the same strength and tag.
|
|
59
|
+
# @return [true, false] `true` if the ETags have the same strength and tag; otherwise `false`.
|
|
60
|
+
def ==(other)
|
|
61
|
+
strong? == other.strong? && @tag == other.tag
|
|
62
|
+
end
|
|
63
|
+
alias_method :eql?, :==
|
|
64
|
+
|
|
65
|
+
# A case equality function that uses {strong_eq?} or {weak_eq?} depending on whether the receiving
|
|
66
|
+
# tag is strong or weak, respectively.
|
|
67
|
+
# @return [true, false] `true` if the other ETag matches; otherwise `false`.
|
|
68
|
+
def ===(other)
|
|
69
|
+
strong? ? strong_eq?(other) : weak_eq?(other)
|
|
70
|
+
end
|
|
71
|
+
alias_method :=~, :===
|
|
72
|
+
|
|
73
|
+
# Returns a hash code based on the ETag state.
|
|
74
|
+
# @return [Fixnum] The ETag hash.
|
|
75
|
+
def hash
|
|
76
|
+
to_s.hash
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Returns a string representation of the ETag.
|
|
80
|
+
# @return [String] The ETag string.
|
|
81
|
+
def to_s
|
|
82
|
+
strong? ? %("#{@tag}") : %(W/"#{@tag}")
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
@@ -41,7 +41,13 @@ module Xenon
|
|
|
41
41
|
self
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
def remove!(header)
|
|
45
|
+
header = header.name if header.respond_to?(:name)
|
|
46
|
+
@hash.delete(header)
|
|
47
|
+
self
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
%i(set add remove).each do |name|
|
|
45
51
|
define_method name do |header|
|
|
46
52
|
dup.send("#{name}!", header)
|
|
47
53
|
end
|
|
@@ -7,7 +7,7 @@ module Xenon
|
|
|
7
7
|
# http://tools.ietf.org/html/rfc7231#section-5.3.2
|
|
8
8
|
class Accept < ListHeader 'Accept'
|
|
9
9
|
def initialize(*media_ranges)
|
|
10
|
-
super(media_ranges.sort_by.with_index { |mr, i| [mr, -i] }.reverse
|
|
10
|
+
super(media_ranges.sort_by.with_index { |mr, i| [mr, -i] }.reverse)
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
alias_method :media_ranges, :values
|
|
@@ -27,7 +27,7 @@ module Xenon
|
|
|
27
27
|
# http://tools.ietf.org/html/rfc7231#section-5.3.3
|
|
28
28
|
class AcceptCharset < ListHeader 'Accept-Charset'
|
|
29
29
|
def initialize(*charset_ranges)
|
|
30
|
-
super(charset_ranges.sort_by.with_index { |mr, i| [mr, -i] }.reverse
|
|
30
|
+
super(charset_ranges.sort_by.with_index { |mr, i| [mr, -i] }.reverse)
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
alias_method :charset_ranges, :values
|
|
@@ -27,7 +27,7 @@ module Xenon
|
|
|
27
27
|
# http://tools.ietf.org/html/rfc7231#section-5.3.4
|
|
28
28
|
class AcceptEncoding < ListHeader 'Accept-Encoding'
|
|
29
29
|
def initialize(*coding_ranges)
|
|
30
|
-
super(coding_ranges.sort_by.with_index { |mr, i| [mr, -i] }.reverse
|
|
30
|
+
super(coding_ranges.sort_by.with_index { |mr, i| [mr, -i] }.reverse)
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
alias_method :coding_ranges, :values
|
|
@@ -27,7 +27,7 @@ module Xenon
|
|
|
27
27
|
# http://tools.ietf.org/html/rfc7231#section-5.3.5
|
|
28
28
|
class AcceptLanguage < ListHeader 'Accept-Language'
|
|
29
29
|
def initialize(*language_ranges)
|
|
30
|
-
super(language_ranges.sort_by.with_index { |mr, i| [mr, -i] }.reverse
|
|
30
|
+
super(language_ranges.sort_by.with_index { |mr, i| [mr, -i] }.reverse)
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
alias_method :language_ranges, :values
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'xenon/headers'
|
|
2
|
+
require 'xenon/media_type'
|
|
3
|
+
|
|
4
|
+
module Xenon
|
|
5
|
+
class Headers
|
|
6
|
+
# https://tools.ietf.org/html/rfc7230#section-3.3.2
|
|
7
|
+
class ContentLength < Header 'Content-Length'
|
|
8
|
+
attr_reader :content_length
|
|
9
|
+
|
|
10
|
+
def initialize(content_length)
|
|
11
|
+
@content_length = content_length
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def self.parse(s)
|
|
15
|
+
Integer(s)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def to_s
|
|
19
|
+
@content_length.to_s
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -56,6 +56,10 @@ module Xenon
|
|
|
56
56
|
end
|
|
57
57
|
end
|
|
58
58
|
|
|
59
|
+
def ==(other)
|
|
60
|
+
@type == other.type && @subtype == other.subtype && @params == other.params
|
|
61
|
+
end
|
|
62
|
+
|
|
59
63
|
# Creates a {MediaRange} using this media type with a quality factor.
|
|
60
64
|
#
|
|
61
65
|
# @param q [Numeric] A value between 1.0 (most desirable) and 0.0 (not acceptable).
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -7,13 +7,13 @@ module Xenon
|
|
|
7
7
|
end
|
|
8
8
|
|
|
9
9
|
def unquote
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
qs = start_with?('"') && end_with?('"') ? self[1..-2] : self
|
|
11
|
+
qs.gsub(/\\(.)/, '\1')
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
def uncomment
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
qs = start_with?('(') && end_with?(')') ? self[1..-2] : self
|
|
16
|
+
qs.gsub(/\\(.)/, '\1')
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
end
|
|
File without changes
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
require 'xenon/etag'
|
|
2
|
+
require 'xenon/errors'
|
|
3
|
+
|
|
4
|
+
describe Xenon::ETag do
|
|
5
|
+
let(:strong1) { described_class.new('1') }
|
|
6
|
+
let(:weak1) { described_class.new('1', weak: true) }
|
|
7
|
+
let(:weak2) { described_class.new('2', weak: true) }
|
|
8
|
+
|
|
9
|
+
describe '::parse' do
|
|
10
|
+
it 'should parse a strong etag' do
|
|
11
|
+
etag = described_class.parse('"xyzzy"')
|
|
12
|
+
expect(etag.tag).to eq 'xyzzy'
|
|
13
|
+
expect(etag).to be_strong
|
|
14
|
+
end
|
|
15
|
+
it 'should parse a weak etag' do
|
|
16
|
+
etag = described_class.parse('W/"xyzzy"')
|
|
17
|
+
expect(etag.tag).to eq 'xyzzy'
|
|
18
|
+
expect(etag).to be_weak
|
|
19
|
+
end
|
|
20
|
+
it 'should raise a ParseError when the string is not a valid etag' do
|
|
21
|
+
expect { described_class.parse('xyzzy') }.to raise_error Xenon::ParseError
|
|
22
|
+
expect { described_class.parse('W/xyzzy') }.to raise_error Xenon::ParseError
|
|
23
|
+
expect { described_class.parse('w/"xyzzy"') }.to raise_error Xenon::ParseError
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
describe '#initialize' do
|
|
28
|
+
it 'should freeze the instance' do
|
|
29
|
+
expect(strong1).to be_frozen
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe '#freeze' do
|
|
34
|
+
it 'should freeze the tag' do
|
|
35
|
+
expect { strong1.tag << 'x' }.to raise_error RuntimeError
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
describe '#strong_eq?' do
|
|
40
|
+
it 'should return false for the same weak tags' do
|
|
41
|
+
expect(weak1).to_not be_strong_eq weak1
|
|
42
|
+
end
|
|
43
|
+
it 'should return false for the different weak tags' do
|
|
44
|
+
expect(weak1).to_not be_strong_eq weak2
|
|
45
|
+
end
|
|
46
|
+
it 'should return false for tags that are same but one is weak and one is strong' do
|
|
47
|
+
expect(weak1).to_not be_strong_eq strong1
|
|
48
|
+
expect(strong1).to_not be_strong_eq weak1
|
|
49
|
+
end
|
|
50
|
+
it 'should return true for the same strong tags' do
|
|
51
|
+
expect(strong1).to be_strong_eq strong1
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
describe '#weak_eq?' do
|
|
56
|
+
it 'should return true for the same weak tags' do
|
|
57
|
+
expect(weak1).to be_weak_eq weak1
|
|
58
|
+
end
|
|
59
|
+
it 'should return false for the different weak tags' do
|
|
60
|
+
expect(weak1).to_not be_weak_eq weak2
|
|
61
|
+
end
|
|
62
|
+
it 'should return true for tags that are same but one is weak and one is strong' do
|
|
63
|
+
expect(weak1).to be_weak_eq strong1
|
|
64
|
+
expect(strong1).to be_weak_eq weak1
|
|
65
|
+
end
|
|
66
|
+
it 'should return true for the same strong tags' do
|
|
67
|
+
expect(strong1).to be_weak_eq strong1
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
describe '#==' do
|
|
72
|
+
it 'should return true for the same weak tags' do
|
|
73
|
+
expect(weak1).to be == weak1
|
|
74
|
+
end
|
|
75
|
+
it 'should return false for the different weak tags' do
|
|
76
|
+
expect(weak1).to_not be == weak2
|
|
77
|
+
end
|
|
78
|
+
it 'should return false for tags that are same but one is weak and one is strong' do
|
|
79
|
+
expect(weak1).to_not be == strong1
|
|
80
|
+
expect(strong1).to_not be == weak1
|
|
81
|
+
end
|
|
82
|
+
it 'should return true for the same strong tags' do
|
|
83
|
+
expect(strong1).to be == strong1
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
describe '#===' do
|
|
88
|
+
it 'should return true for the same weak tags' do
|
|
89
|
+
expect(weak1).to be === weak1
|
|
90
|
+
end
|
|
91
|
+
it 'should return false for the different weak tags' do
|
|
92
|
+
expect(weak1).to_not be === weak2
|
|
93
|
+
end
|
|
94
|
+
it 'should return true for the same tags when the receiver is weak and the other is strong' do
|
|
95
|
+
expect(weak1).to be === strong1
|
|
96
|
+
end
|
|
97
|
+
it 'should return false for the same tags when the receiver is strong and the other is weak' do
|
|
98
|
+
expect(strong1).to_not be === weak1
|
|
99
|
+
end
|
|
100
|
+
it 'should return true for the same strong tags' do
|
|
101
|
+
expect(strong1).to be === strong1
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
end
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -21,7 +21,7 @@ describe Xenon::Headers::IfRange do
|
|
|
21
21
|
it 'can parse a strong etag' do
|
|
22
22
|
header = Xenon::Headers::IfRange.parse('"xyzzy"')
|
|
23
23
|
expect(header.etag).to_not be_nil
|
|
24
|
-
expect(header.etag.
|
|
24
|
+
expect(header.etag.tag).to eq 'xyzzy'
|
|
25
25
|
expect(header.etag).to be_strong
|
|
26
26
|
end
|
|
27
27
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
|
|
|
8
8
|
spec.version = Xenon::HTTP_VERSION
|
|
9
9
|
spec.authors = ['Greg Beech']
|
|
10
10
|
spec.email = ['greg@gregbeech.com']
|
|
11
|
-
spec.summary = %q{
|
|
12
|
-
spec.description = %q{Provides a model for the HTTP protocol
|
|
11
|
+
spec.summary = %q{A model and parsers for the HTTP protocol.}
|
|
12
|
+
spec.description = %q{Provides a model for the HTTP protocol with high quality parsers.}
|
|
13
13
|
spec.homepage = 'https://github.com/gregbeech/xenon'
|
|
14
14
|
spec.license = 'MIT'
|
|
15
15
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: xenon-http
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Greg Beech
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2016-03-11 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -38,84 +38,57 @@ dependencies:
|
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '1.7'
|
|
41
|
-
description: Provides a model for the HTTP protocol
|
|
41
|
+
description: Provides a model for the HTTP protocol with high quality parsers.
|
|
42
42
|
email:
|
|
43
43
|
- greg@gregbeech.com
|
|
44
44
|
executables: []
|
|
45
45
|
extensions: []
|
|
46
46
|
extra_rdoc_files: []
|
|
47
47
|
files:
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
- xenon
|
|
79
|
-
- xenon
|
|
80
|
-
- xenon
|
|
81
|
-
-
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
- xenon
|
|
85
|
-
- xenon
|
|
86
|
-
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
- xenon-http
|
|
92
|
-
- xenon-http/spec/xenon/headers/cache_control_spec.rb
|
|
93
|
-
- xenon-http/spec/xenon/headers/if_match_spec.rb
|
|
94
|
-
- xenon-http/spec/xenon/headers/if_modified_since_spec.rb
|
|
95
|
-
- xenon-http/spec/xenon/headers/if_none_match_spec.rb
|
|
96
|
-
- xenon-http/spec/xenon/headers/if_range_spec.rb
|
|
97
|
-
- xenon-http/spec/xenon/headers/if_unmodified_since_spec.rb
|
|
98
|
-
- xenon-http/spec/xenon/headers/user_agent_spec.rb
|
|
99
|
-
- xenon-http/spec/xenon/headers/www_authenticate_spec.rb
|
|
100
|
-
- xenon-http/spec/xenon/media_type_spec.rb
|
|
101
|
-
- xenon-http/xenon-http.gemspec
|
|
102
|
-
- xenon-routing/lib/xenon/api.rb
|
|
103
|
-
- xenon-routing/lib/xenon/marshallers.rb
|
|
104
|
-
- xenon-routing/lib/xenon/request.rb
|
|
105
|
-
- xenon-routing/lib/xenon/response.rb
|
|
106
|
-
- xenon-routing/lib/xenon/routing.rb
|
|
107
|
-
- xenon-routing/lib/xenon/routing/context.rb
|
|
108
|
-
- xenon-routing/lib/xenon/routing/directives.rb
|
|
109
|
-
- xenon-routing/lib/xenon/routing/header_directives.rb
|
|
110
|
-
- xenon-routing/lib/xenon/routing/method_directives.rb
|
|
111
|
-
- xenon-routing/lib/xenon/routing/param_directives.rb
|
|
112
|
-
- xenon-routing/lib/xenon/routing/path_directives.rb
|
|
113
|
-
- xenon-routing/lib/xenon/routing/route_directives.rb
|
|
114
|
-
- xenon-routing/lib/xenon/routing/security_directives.rb
|
|
115
|
-
- xenon-routing/lib/xenon/routing_version.rb
|
|
116
|
-
- xenon-routing/spec/spec_helper.rb
|
|
117
|
-
- xenon-routing/xenon-routing.gemspec
|
|
118
|
-
- xenon.gemspec
|
|
48
|
+
- lib/xenon/auth.rb
|
|
49
|
+
- lib/xenon/errors.rb
|
|
50
|
+
- lib/xenon/etag.rb
|
|
51
|
+
- lib/xenon/headers.rb
|
|
52
|
+
- lib/xenon/headers/accept.rb
|
|
53
|
+
- lib/xenon/headers/accept_charset.rb
|
|
54
|
+
- lib/xenon/headers/accept_encoding.rb
|
|
55
|
+
- lib/xenon/headers/accept_language.rb
|
|
56
|
+
- lib/xenon/headers/authorization.rb
|
|
57
|
+
- lib/xenon/headers/cache_control.rb
|
|
58
|
+
- lib/xenon/headers/content_length.rb
|
|
59
|
+
- lib/xenon/headers/content_type.rb
|
|
60
|
+
- lib/xenon/headers/if_match.rb
|
|
61
|
+
- lib/xenon/headers/if_modified_since.rb
|
|
62
|
+
- lib/xenon/headers/if_none_match.rb
|
|
63
|
+
- lib/xenon/headers/if_range.rb
|
|
64
|
+
- lib/xenon/headers/if_unmodified_since.rb
|
|
65
|
+
- lib/xenon/headers/user_agent.rb
|
|
66
|
+
- lib/xenon/headers/www_authenticate.rb
|
|
67
|
+
- lib/xenon/http.rb
|
|
68
|
+
- lib/xenon/http_version.rb
|
|
69
|
+
- lib/xenon/media_type.rb
|
|
70
|
+
- lib/xenon/parsers/basic_rules.rb
|
|
71
|
+
- lib/xenon/parsers/etag.rb
|
|
72
|
+
- lib/xenon/parsers/header_rules.rb
|
|
73
|
+
- lib/xenon/parsers/media_type.rb
|
|
74
|
+
- lib/xenon/quoted_string.rb
|
|
75
|
+
- spec/spec_helper.rb
|
|
76
|
+
- spec/xenon/etag_spec.rb
|
|
77
|
+
- spec/xenon/headers/accept_charset_spec.rb
|
|
78
|
+
- spec/xenon/headers/accept_encoding_spec.rb
|
|
79
|
+
- spec/xenon/headers/accept_language_spec.rb
|
|
80
|
+
- spec/xenon/headers/accept_spec.rb
|
|
81
|
+
- spec/xenon/headers/authorization_spec.rb
|
|
82
|
+
- spec/xenon/headers/cache_control_spec.rb
|
|
83
|
+
- spec/xenon/headers/if_match_spec.rb
|
|
84
|
+
- spec/xenon/headers/if_modified_since_spec.rb
|
|
85
|
+
- spec/xenon/headers/if_none_match_spec.rb
|
|
86
|
+
- spec/xenon/headers/if_range_spec.rb
|
|
87
|
+
- spec/xenon/headers/if_unmodified_since_spec.rb
|
|
88
|
+
- spec/xenon/headers/user_agent_spec.rb
|
|
89
|
+
- spec/xenon/headers/www_authenticate_spec.rb
|
|
90
|
+
- spec/xenon/media_type_spec.rb
|
|
91
|
+
- xenon-http.gemspec
|
|
119
92
|
homepage: https://github.com/gregbeech/xenon
|
|
120
93
|
licenses:
|
|
121
94
|
- MIT
|
|
@@ -136,25 +109,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
136
109
|
version: '0'
|
|
137
110
|
requirements: []
|
|
138
111
|
rubyforge_project:
|
|
139
|
-
rubygems_version: 2.
|
|
112
|
+
rubygems_version: 2.5.1
|
|
140
113
|
signing_key:
|
|
141
114
|
specification_version: 4
|
|
142
|
-
summary:
|
|
143
|
-
test_files:
|
|
144
|
-
- xenon-http/spec/spec_helper.rb
|
|
145
|
-
- xenon-http/spec/xenon/etag_spec.rb
|
|
146
|
-
- xenon-http/spec/xenon/headers/accept_charset_spec.rb
|
|
147
|
-
- xenon-http/spec/xenon/headers/accept_encoding_spec.rb
|
|
148
|
-
- xenon-http/spec/xenon/headers/accept_language_spec.rb
|
|
149
|
-
- xenon-http/spec/xenon/headers/accept_spec.rb
|
|
150
|
-
- xenon-http/spec/xenon/headers/authorization_spec.rb
|
|
151
|
-
- xenon-http/spec/xenon/headers/cache_control_spec.rb
|
|
152
|
-
- xenon-http/spec/xenon/headers/if_match_spec.rb
|
|
153
|
-
- xenon-http/spec/xenon/headers/if_modified_since_spec.rb
|
|
154
|
-
- xenon-http/spec/xenon/headers/if_none_match_spec.rb
|
|
155
|
-
- xenon-http/spec/xenon/headers/if_range_spec.rb
|
|
156
|
-
- xenon-http/spec/xenon/headers/if_unmodified_since_spec.rb
|
|
157
|
-
- xenon-http/spec/xenon/headers/user_agent_spec.rb
|
|
158
|
-
- xenon-http/spec/xenon/headers/www_authenticate_spec.rb
|
|
159
|
-
- xenon-http/spec/xenon/media_type_spec.rb
|
|
115
|
+
summary: A model and parsers for the HTTP protocol.
|
|
116
|
+
test_files: []
|
|
160
117
|
has_rdoc:
|