xenon-http 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/{xenon-http/lib → lib}/xenon/auth.rb +0 -0
  3. data/{xenon-http/lib → lib}/xenon/errors.rb +0 -0
  4. data/lib/xenon/etag.rb +85 -0
  5. data/{xenon-http/lib → lib}/xenon/headers.rb +7 -1
  6. data/{xenon-http/lib → lib}/xenon/headers/accept.rb +1 -1
  7. data/{xenon-http/lib → lib}/xenon/headers/accept_charset.rb +1 -1
  8. data/{xenon-http/lib → lib}/xenon/headers/accept_encoding.rb +1 -1
  9. data/{xenon-http/lib → lib}/xenon/headers/accept_language.rb +1 -1
  10. data/{xenon-http/lib → lib}/xenon/headers/authorization.rb +0 -0
  11. data/{xenon-http/lib → lib}/xenon/headers/cache_control.rb +0 -0
  12. data/lib/xenon/headers/content_length.rb +23 -0
  13. data/{xenon-http/lib → lib}/xenon/headers/content_type.rb +0 -0
  14. data/{xenon-http/lib → lib}/xenon/headers/if_match.rb +0 -0
  15. data/{xenon-http/lib → lib}/xenon/headers/if_modified_since.rb +0 -0
  16. data/{xenon-http/lib → lib}/xenon/headers/if_none_match.rb +0 -0
  17. data/{xenon-http/lib → lib}/xenon/headers/if_range.rb +0 -0
  18. data/{xenon-http/lib → lib}/xenon/headers/if_unmodified_since.rb +0 -0
  19. data/{xenon-http/lib → lib}/xenon/headers/user_agent.rb +0 -0
  20. data/{xenon-http/lib → lib}/xenon/headers/www_authenticate.rb +0 -0
  21. data/{xenon-http/lib → lib}/xenon/http.rb +0 -0
  22. data/{xenon-http/lib → lib}/xenon/http_version.rb +0 -0
  23. data/{xenon-http/lib → lib}/xenon/media_type.rb +4 -0
  24. data/{xenon-http/lib → lib}/xenon/parsers/basic_rules.rb +0 -0
  25. data/lib/xenon/parsers/etag.rb +9 -0
  26. data/{xenon-http/lib → lib}/xenon/parsers/header_rules.rb +0 -0
  27. data/{xenon-http/lib → lib}/xenon/parsers/media_type.rb +0 -0
  28. data/{xenon-http/lib → lib}/xenon/quoted_string.rb +4 -4
  29. data/{xenon-http/spec → spec}/spec_helper.rb +0 -0
  30. data/spec/xenon/etag_spec.rb +105 -0
  31. data/{xenon-http/spec → spec}/xenon/headers/accept_charset_spec.rb +0 -0
  32. data/{xenon-http/spec → spec}/xenon/headers/accept_encoding_spec.rb +0 -0
  33. data/{xenon-http/spec → spec}/xenon/headers/accept_language_spec.rb +0 -0
  34. data/{xenon-http/spec → spec}/xenon/headers/accept_spec.rb +0 -0
  35. data/{xenon-http/spec → spec}/xenon/headers/authorization_spec.rb +0 -0
  36. data/{xenon-http/spec → spec}/xenon/headers/cache_control_spec.rb +0 -0
  37. data/{xenon-http/spec → spec}/xenon/headers/if_match_spec.rb +0 -0
  38. data/{xenon-http/spec → spec}/xenon/headers/if_modified_since_spec.rb +0 -0
  39. data/{xenon-http/spec → spec}/xenon/headers/if_none_match_spec.rb +0 -0
  40. data/{xenon-http/spec → spec}/xenon/headers/if_range_spec.rb +1 -1
  41. data/{xenon-http/spec → spec}/xenon/headers/if_unmodified_since_spec.rb +0 -0
  42. data/{xenon-http/spec → spec}/xenon/headers/user_agent_spec.rb +0 -0
  43. data/{xenon-http/spec → spec}/xenon/headers/www_authenticate_spec.rb +0 -0
  44. data/{xenon-http/spec → spec}/xenon/media_type_spec.rb +1 -1
  45. data/{xenon-http/xenon-http.gemspec → xenon-http.gemspec} +2 -2
  46. metadata +50 -93
  47. data/.codeclimate.yml +0 -18
  48. data/.gitignore +0 -25
  49. data/.rspec +0 -3
  50. data/.travis.yml +0 -6
  51. data/Gemfile +0 -20
  52. data/Guardfile +0 -16
  53. data/LICENSE +0 -22
  54. data/README.md +0 -116
  55. data/Rakefile +0 -40
  56. data/VERSION +0 -1
  57. data/examples/hello_world/config.ru +0 -3
  58. data/examples/hello_world/hello_world.rb +0 -27
  59. data/xenon-http/lib/xenon/etag.rb +0 -48
  60. data/xenon-http/spec/xenon/etag_spec.rb +0 -19
  61. data/xenon-routing/lib/xenon/api.rb +0 -118
  62. data/xenon-routing/lib/xenon/marshallers.rb +0 -48
  63. data/xenon-routing/lib/xenon/request.rb +0 -40
  64. data/xenon-routing/lib/xenon/response.rb +0 -29
  65. data/xenon-routing/lib/xenon/routing.rb +0 -6
  66. data/xenon-routing/lib/xenon/routing/context.rb +0 -35
  67. data/xenon-routing/lib/xenon/routing/directives.rb +0 -14
  68. data/xenon-routing/lib/xenon/routing/header_directives.rb +0 -32
  69. data/xenon-routing/lib/xenon/routing/method_directives.rb +0 -26
  70. data/xenon-routing/lib/xenon/routing/param_directives.rb +0 -22
  71. data/xenon-routing/lib/xenon/routing/path_directives.rb +0 -37
  72. data/xenon-routing/lib/xenon/routing/route_directives.rb +0 -51
  73. data/xenon-routing/lib/xenon/routing/security_directives.rb +0 -34
  74. data/xenon-routing/lib/xenon/routing_version.rb +0 -3
  75. data/xenon-routing/spec/spec_helper.rb +0 -94
  76. data/xenon-routing/xenon-routing.gemspec +0 -25
  77. data/xenon.gemspec +0 -26
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b0b08a0d571aa3a84a8d8e265ac6367faa2a77a2
4
- data.tar.gz: a4cb57cf66389dcc581c1af178afaf093ce4e4e7
3
+ metadata.gz: 8f749f567c0d040df9e40e2956abe02d628652ab
4
+ data.tar.gz: cf94e0a40a8480f6a05d9af9847f7e30073cc6aa
5
5
  SHA512:
6
- metadata.gz: b6051d24573e349c0cb707086a1317bd85fe70cab9a1c6b56f96f4f7492bdd3f9dce61d199a9425a4f72ea108c3f0c1bbef6d36f139cf1d869ddc096f65f80db
7
- data.tar.gz: 3978873c62fa30babe95b6ff9a75eb56bcdeec03f0bd083bed81244622647ebfeaa27f470e5bce57caf1a9a4b8505b7179f60712345223568cd14ea4ec511cd8
6
+ metadata.gz: ebb97d34011c1ed89471d45d4cca9f6911758092458c8207b0810e5f0947ce13dce825a9e3b5c472fae01445093b19d97edab3e0a7984afb586025de4596cf13
7
+ data.tar.gz: 2ddd75cc5b4a291df18a9406a28ed3da9847bd1131708d474c1af8bb6247d6fa1eb2f799653e906bb42d22b1b7ffa7451251d79e6783c063b4b7b090b9df4520
File without changes
File without changes
@@ -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
- %i(set add).each do |name|
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
@@ -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
@@ -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).
@@ -0,0 +1,9 @@
1
+ require 'xenon/parsers/header_rules'
2
+
3
+ module Xenon
4
+ module Parsers
5
+ class ETag < Parslet::Parser
6
+ include ETagHeaderRules
7
+ end
8
+ end
9
+ end
@@ -7,13 +7,13 @@ module Xenon
7
7
  end
8
8
 
9
9
  def unquote
10
- qs = start_with?('"') && end_with?('"') ? self[1..-2] : self
11
- qs.gsub(/\\(.)/, '\1')
10
+ qs = start_with?('"') && end_with?('"') ? self[1..-2] : self
11
+ qs.gsub(/\\(.)/, '\1')
12
12
  end
13
13
 
14
14
  def uncomment
15
- qs = start_with?('(') && end_with?(')') ? self[1..-2] : self
16
- qs.gsub(/\\(.)/, '\1')
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
@@ -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.opaque_tag).to eq 'xyzzy'
24
+ expect(header.etag.tag).to eq 'xyzzy'
25
25
  expect(header.etag).to be_strong
26
26
  end
27
27
 
@@ -94,7 +94,7 @@ describe Xenon::MediaType do
94
94
  expect(mt.to_s).to eq('text/plain; format=flowed; paged')
95
95
  end
96
96
  end
97
-
97
+
98
98
  end
99
99
 
100
100
  describe Xenon::MediaRange do
@@ -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{An HTTP framework for building RESTful APIs.}
12
- spec.description = %q{Provides a model for the HTTP protocol and a tree-based routing syntax.}
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
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: 2015-10-17 00:00:00.000000000 Z
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 and a tree-based routing syntax.
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
- - ".codeclimate.yml"
49
- - ".gitignore"
50
- - ".rspec"
51
- - ".travis.yml"
52
- - Gemfile
53
- - Guardfile
54
- - LICENSE
55
- - README.md
56
- - Rakefile
57
- - VERSION
58
- - examples/hello_world/config.ru
59
- - examples/hello_world/hello_world.rb
60
- - xenon-http/lib/xenon/auth.rb
61
- - xenon-http/lib/xenon/errors.rb
62
- - xenon-http/lib/xenon/etag.rb
63
- - xenon-http/lib/xenon/headers.rb
64
- - xenon-http/lib/xenon/headers/accept.rb
65
- - xenon-http/lib/xenon/headers/accept_charset.rb
66
- - xenon-http/lib/xenon/headers/accept_encoding.rb
67
- - xenon-http/lib/xenon/headers/accept_language.rb
68
- - xenon-http/lib/xenon/headers/authorization.rb
69
- - xenon-http/lib/xenon/headers/cache_control.rb
70
- - xenon-http/lib/xenon/headers/content_type.rb
71
- - xenon-http/lib/xenon/headers/if_match.rb
72
- - xenon-http/lib/xenon/headers/if_modified_since.rb
73
- - xenon-http/lib/xenon/headers/if_none_match.rb
74
- - xenon-http/lib/xenon/headers/if_range.rb
75
- - xenon-http/lib/xenon/headers/if_unmodified_since.rb
76
- - xenon-http/lib/xenon/headers/user_agent.rb
77
- - xenon-http/lib/xenon/headers/www_authenticate.rb
78
- - xenon-http/lib/xenon/http.rb
79
- - xenon-http/lib/xenon/http_version.rb
80
- - xenon-http/lib/xenon/media_type.rb
81
- - xenon-http/lib/xenon/parsers/basic_rules.rb
82
- - xenon-http/lib/xenon/parsers/header_rules.rb
83
- - xenon-http/lib/xenon/parsers/media_type.rb
84
- - xenon-http/lib/xenon/quoted_string.rb
85
- - xenon-http/spec/spec_helper.rb
86
- - xenon-http/spec/xenon/etag_spec.rb
87
- - xenon-http/spec/xenon/headers/accept_charset_spec.rb
88
- - xenon-http/spec/xenon/headers/accept_encoding_spec.rb
89
- - xenon-http/spec/xenon/headers/accept_language_spec.rb
90
- - xenon-http/spec/xenon/headers/accept_spec.rb
91
- - xenon-http/spec/xenon/headers/authorization_spec.rb
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.4.8
112
+ rubygems_version: 2.5.1
140
113
  signing_key:
141
114
  specification_version: 4
142
- summary: An HTTP framework for building RESTful APIs.
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: