apill 4.0.0 → 4.0.1

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
  SHA1:
3
- metadata.gz: a868c1d22d4ed7815afb667e309f54dafcbf70c9
4
- data.tar.gz: 70eb9a1d4ea3c9b061febe6eeb6c1fd975abc43f
3
+ metadata.gz: 03e1a8c3d7621029eab5a87a4180786a121230f9
4
+ data.tar.gz: 434bd913e8c60b006c33f4144a22a5ac5917ae28
5
5
  SHA512:
6
- metadata.gz: 92c289f7396d2523847834b5f7a25074c71384387434d987b8eb65fc174d44df7487adde5004eac3521d1493d410bea739588b7fd0ba9e867ad0b897194d9c95
7
- data.tar.gz: d63a1ec7bbfa94244eba6c3f706c6fa71dee5260bd51c7c40cf8042f148ebf24787f73c4a2f2a47a8f45730c2a57772dd4c009d6d05f69e5d56981ce6a6cc9f6
6
+ metadata.gz: b9ac29a6cc63975df8d0b54b3b369fd54be33c675a81fad922221877c65812cf681d40346363c4b249341e3b91e78d8bc0b012c25e095a9be01a2d8a3340995a
7
+ data.tar.gz: 79b641b0689d7ae9e4c2ed79f17c370b212ac775ae09a701e5c6563901d291088b9f8be4ce63cd19dc7052d1f72d3730467b503ecda8e25bf6f433b24be095ff
@@ -5,7 +5,9 @@ module Matchers
5
5
  class AcceptHeader
6
6
  include Generic
7
7
 
8
- def matches?
8
+ def matches?(request)
9
+ super
10
+
9
11
  accept_header.valid?
10
12
  end
11
13
  end
@@ -5,14 +5,22 @@ module Generic
5
5
  :accept_header,
6
6
  :request
7
7
 
8
- def initialize(request:, **args)
8
+ def initialize(**args)
9
9
  args.each do |variable, value|
10
10
  __send__("#{variable}=", value)
11
11
  end
12
+ end
13
+
14
+ def matches?(request)
15
+ self.request = request
16
+ end
17
+
18
+ def application
19
+ request.application_name
20
+ end
12
21
 
13
- self.request = request
14
- self.application = request.application_name
15
- self.accept_header = request.accept_header
22
+ def accept_header
23
+ request.accept_header
16
24
  end
17
25
  end
18
26
  end
@@ -2,19 +2,21 @@ module Apill
2
2
  module Matchers
3
3
  class Subdomain
4
4
  def initialize(allowed_subdomains: Apill.configuration.allowed_subdomains,
5
- allowed_api_subdomains: Apill.configuration.allowed_api_subdomains,
6
- request:)
5
+ allowed_api_subdomains: Apill.configuration.allowed_api_subdomains)
7
6
 
8
7
  self.allowed_subdomains = Array(allowed_subdomains)
9
8
  self.allowed_api_subdomains = Array(allowed_api_subdomains)
10
- self.request = request
11
9
  end
12
10
 
13
- def matches?
11
+ def matches?(request)
12
+ self.request = request
13
+
14
14
  allowed_subdomains.include? request.subdomain
15
15
  end
16
16
 
17
- def matches_api_subdomain?
17
+ def matches_api_subdomain?(request)
18
+ self.request = request
19
+
18
20
  allowed_api_subdomains.include? request.subdomain
19
21
  end
20
22
 
@@ -9,7 +9,9 @@ class Version
9
9
  attr_accessor :version_constraint,
10
10
  :default_version
11
11
 
12
- def matches?
12
+ def matches?(request)
13
+ super
14
+
13
15
  requested_version == version_constraint
14
16
  end
15
17
 
@@ -19,13 +19,13 @@ class ApiRequest
19
19
  env['HTTP_X_APPLICATION_NAME'] = Apill.configuration.application_name
20
20
 
21
21
  request = Requests::Base.resolve(env)
22
- subdomain_matcher = Matchers::Subdomain.new(request: request)
23
- accept_header_matcher = Matchers::AcceptHeader.new(request: request)
22
+ subdomain_matcher = Matchers::Subdomain.new
23
+ accept_header_matcher = Matchers::AcceptHeader.new
24
24
  token = request.authorization_token
25
25
 
26
- return Responses::InvalidSubdomain.call(env) unless subdomain_matcher.matches?
27
- return Responses::InvalidApiRequest.call(env) unless !subdomain_matcher.matches_api_subdomain? ||
28
- accept_header_matcher.matches?
26
+ return Responses::InvalidSubdomain.call(env) unless subdomain_matcher.matches?(request)
27
+ return Responses::InvalidApiRequest.call(env) unless !subdomain_matcher.matches_api_subdomain?(request) ||
28
+ accept_header_matcher.matches?(request)
29
29
  return Responses::InvalidToken.call(env) unless token.valid?
30
30
 
31
31
  env['HTTP_X_JSON_WEB_TOKEN'] = token.to_h
data/lib/apill/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Apill
2
- VERSION = '4.0.0'.freeze
2
+ VERSION = '4.0.1'.freeze
3
3
  end
@@ -12,9 +12,9 @@ describe AcceptHeader do
12
12
  }
13
13
  request = Requests::Base.resolve(env)
14
14
 
15
- matcher = AcceptHeader.new(request: request)
15
+ matcher = AcceptHeader.new
16
16
 
17
- expect(matcher).to be_matches
17
+ expect(matcher.matches?(request)).to be_a TrueClass
18
18
  end
19
19
 
20
20
  it 'matches if the subdomain is API and the accept header is passed in as ' \
@@ -26,9 +26,9 @@ describe AcceptHeader do
26
26
  }
27
27
  request = Requests::Base.resolve(env)
28
28
 
29
- matcher = AcceptHeader.new(request: request)
29
+ matcher = AcceptHeader.new
30
30
 
31
- expect(matcher).to be_matches
31
+ expect(matcher.matches?(request)).to be_a TrueClass
32
32
  end
33
33
 
34
34
  it 'matches if the subdomain is API and the accept header is passed in as a ' \
@@ -41,9 +41,9 @@ describe AcceptHeader do
41
41
  }
42
42
  request = Requests::Base.resolve(env)
43
43
 
44
- matcher = AcceptHeader.new(request: request)
44
+ matcher = AcceptHeader.new
45
45
 
46
- expect(matcher).to be_matches
46
+ expect(matcher.matches?(request)).to be_a TrueClass
47
47
  end
48
48
 
49
49
  it 'matches the header accept header if the subdomain is API and the accept header ' \
@@ -56,8 +56,8 @@ describe AcceptHeader do
56
56
  }
57
57
  request = Requests::Base.resolve(env)
58
58
 
59
- matcher = AcceptHeader.new(request: request)
60
- matcher.matches?
59
+ matcher = AcceptHeader.new
60
+ matcher.matches?(request)
61
61
 
62
62
  expect(matcher.accept_header.version).to eql '1.0.0'
63
63
  end
@@ -72,8 +72,8 @@ describe AcceptHeader do
72
72
  }
73
73
  request = Requests::Base.resolve(env)
74
74
 
75
- matcher = AcceptHeader.new(request: request)
76
- matcher.matches?
75
+ matcher = AcceptHeader.new
76
+ matcher.matches?(request)
77
77
 
78
78
  expect(matcher.accept_header.version).to eql '2.0.0'
79
79
  end
@@ -88,8 +88,8 @@ describe AcceptHeader do
88
88
  }
89
89
  request = Requests::Base.resolve(env)
90
90
 
91
- matcher = AcceptHeader.new(request: request)
92
- matcher.matches?
91
+ matcher = AcceptHeader.new
92
+ matcher.matches?(request)
93
93
 
94
94
  expect(matcher.accept_header.raw_accept_header).to eql \
95
95
  'application/vndmatrix+zion;version=1.0.0'
@@ -103,9 +103,9 @@ describe AcceptHeader do
103
103
  }
104
104
  request = Requests::Base.resolve(env)
105
105
 
106
- matcher = AcceptHeader.new(request: request)
106
+ matcher = AcceptHeader.new
107
107
 
108
- expect(matcher).not_to be_matches
108
+ expect(matcher.matches?(request)).to be_a FalseClass
109
109
  end
110
110
  end
111
111
  end
@@ -14,67 +14,63 @@ describe Subdomain do
14
14
  it 'matches if the subdomain is API' do
15
15
  env = { 'HTTP_HOST' => 'api.example.com' }
16
16
  request = Requests::Base.resolve(env)
17
- matcher = Subdomain.new(request: request)
17
+ matcher = Subdomain.new
18
18
 
19
- expect(matcher.matches?).to be_a TrueClass
19
+ expect(matcher.matches?(request)).to be_a TrueClass
20
20
  end
21
21
 
22
22
  it 'matches if the first subdomain is API' do
23
23
  env = { 'HTTP_HOST' => 'api.matrix.example.com' }
24
24
  request = Requests::Base.resolve(env)
25
- matcher = Subdomain.new(request: request)
25
+ matcher = Subdomain.new
26
26
 
27
- expect(matcher.matches?).to be_a TrueClass
27
+ expect(matcher.matches?(request)).to be_a TrueClass
28
28
  end
29
29
 
30
30
  it 'does not match if the first subdomain is not API' do
31
31
  env = { 'HTTP_HOST' => 'matrix.example.com' }
32
32
  request = Requests::Base.resolve(env)
33
- matcher = Subdomain.new(request: request)
33
+ matcher = Subdomain.new
34
34
 
35
- expect(matcher.matches?).to be_a FalseClass
35
+ expect(matcher.matches?(request)).to be_a FalseClass
36
36
  end
37
37
 
38
38
  it 'allows the matched subdomain to be specified' do
39
39
  env = { 'HTTP_HOST' => 'matrix.example.com' }
40
40
  request = Requests::Base.resolve(env)
41
- matcher = Subdomain.new(allowed_subdomains: 'matrix',
42
- request: request)
41
+ matcher = Subdomain.new(allowed_subdomains: 'matrix')
43
42
 
44
- expect(matcher.matches?).to be_a TrueClass
43
+ expect(matcher.matches?(request)).to be_a TrueClass
45
44
  end
46
45
 
47
46
  it 'allows more than one subdomain to be matched' do
48
47
  env = { 'HTTP_HOST' => 'matrix.example.com' }
49
48
  request = Requests::Base.resolve(env)
50
- matcher = Subdomain.new(allowed_subdomains: %w{api matrix},
51
- request: request)
49
+ matcher = Subdomain.new(allowed_subdomains: %w{api matrix})
52
50
 
53
- expect(matcher.matches?).to be_a TrueClass
51
+ expect(matcher.matches?(request)).to be_a TrueClass
54
52
 
55
53
  env = { 'HTTP_HOST' => 'api.example.com' }
56
54
  request = Requests::Base.resolve(env)
57
- matcher = Subdomain.new(allowed_subdomains: %w{api matrix},
58
- request: request)
55
+ matcher = Subdomain.new(allowed_subdomains: %w{api matrix})
59
56
 
60
- expect(matcher.matches?).to be_a TrueClass
57
+ expect(matcher.matches?(request)).to be_a TrueClass
61
58
  end
62
59
 
63
60
  it 'can match only the api subdomain' do
64
61
  env = { 'HTTP_HOST' => 'matrix.example.com' }
65
62
  request = Requests::Base.resolve(env)
66
- matcher = Subdomain.new(allowed_api_subdomains: %w{matrix},
67
- request: request)
63
+ matcher = Subdomain.new(allowed_api_subdomains: %w{matrix})
68
64
 
69
- expect(matcher.matches_api_subdomain?).to be_a TrueClass
65
+ expect(matcher.matches_api_subdomain?(request)).to be_a TrueClass
70
66
  end
71
67
 
72
68
  it 'matches "api" as an api subdomain by default' do
73
69
  env = { 'HTTP_HOST' => 'api.example.com' }
74
70
  request = Requests::Base.resolve(env)
75
- matcher = Subdomain.new(request: request)
71
+ matcher = Subdomain.new
76
72
 
77
- expect(matcher.matches_api_subdomain?).to be_a TrueClass
73
+ expect(matcher.matches_api_subdomain?(request)).to be_a TrueClass
78
74
  end
79
75
  end
80
76
  end
@@ -15,10 +15,9 @@ describe Version do
15
15
  }
16
16
  request = Requests::Base.resolve(env)
17
17
 
18
- matcher = Version.new(request: request,
19
- version_constraint: '10.1')
18
+ matcher = Version.new(version_constraint: '10.1')
20
19
 
21
- expect(matcher).not_to be_matches
20
+ expect(matcher.matches?(request)).to be_a FalseClass
22
21
  end
23
22
 
24
23
  it 'does match if the subdomain is API and the requested version equals the ' \
@@ -30,10 +29,9 @@ describe Version do
30
29
  }
31
30
  request = Requests::Base.resolve(env)
32
31
 
33
- matcher = Version.new(request: request,
34
- version_constraint: '10.0')
32
+ matcher = Version.new(version_constraint: '10.0')
35
33
 
36
- expect(matcher).to be_matches
34
+ expect(matcher.matches?(request)).to be_a TrueClass
37
35
  end
38
36
  end
39
37
 
@@ -47,11 +45,10 @@ describe Version do
47
45
  }
48
46
  request = Requests::Base.resolve(env)
49
47
 
50
- matcher = Version.new(request: request,
51
- version_constraint: '10.1',
48
+ matcher = Version.new(version_constraint: '10.1',
52
49
  default_version: '10.0')
53
50
 
54
- expect(matcher).not_to be_matches
51
+ expect(matcher.matches?(request)).to be_a FalseClass
55
52
  end
56
53
 
57
54
  it 'does match if the subdomain is API and the requested version equals the ' \
@@ -63,11 +60,10 @@ describe Version do
63
60
  }
64
61
  request = Requests::Base.resolve(env)
65
62
 
66
- matcher = Version.new(request: request,
67
- version_constraint: '10.0',
63
+ matcher = Version.new(version_constraint: '10.0',
68
64
  default_version: '10.0')
69
65
 
70
- expect(matcher).to be_matches
66
+ expect(matcher.matches?(request)).to be_a TrueClass
71
67
  end
72
68
  end
73
69
 
@@ -80,10 +76,9 @@ describe Version do
80
76
  }
81
77
  request = Requests::Base.resolve(env)
82
78
 
83
- matcher = Version.new(request: request,
84
- version_constraint: '100.0')
79
+ matcher = Version.new(version_constraint: '100.0')
85
80
 
86
- expect(matcher).to be_matches
81
+ expect(matcher.matches?(request)).to be_a TrueClass
87
82
  end
88
83
  end
89
84
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apill
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - jfelchner