vestauth 0.1.5 → 0.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4adaade47868727da4068efec7be37b063f35cc03d88a69b0040914d3fc3fcd8
4
- data.tar.gz: f06766ad5096f661a3bdd83a3c57891cef0b878074f930cf6c73718d191169a4
3
+ metadata.gz: 7a13eb3c7366c8661b9f7a85a05e39718855bb88efc7606a59e73adef4240f80
4
+ data.tar.gz: ef32e1e6d8db8389a4f4165444fd203d66f26c1199d90ea329b9c6f11833d5b2
5
5
  SHA512:
6
- metadata.gz: 1c336a59ad0b473c0102ab14dda393a409c237321aba7c115263b5fda93380b77703a781089eb15113a145a37b317317b5c19ec225b31fc53b9444fff5009b41
7
- data.tar.gz: 513fa7e387433a52a0c1dbfaf5b44502fffca2e918a88cab64f48ebb1ef9e53825f6b92476ed1ae9766df83c8adc04740fb24df32a32187fde4cdb8c25a66819
6
+ metadata.gz: e882b8fe1926cbf159cf9ad5e825092f9bca072d5948464a77ba29339ce035a5240ce5ada83555c9b0dba8ab3640802777e22af2946d0607af3156de27f0068b
7
+ data.tar.gz: 518f74beacb73331e632f91e17a74d0319448bafd1f9abe006f847525e21b35fc834589f78f6e6f9b5644110d987b738fc763c02eefb248c90d4c82582183c4b
data/.rubocop.yml CHANGED
@@ -11,3 +11,10 @@ Style/StringLiterals:
11
11
 
12
12
  Style/StringLiteralsInInterpolation:
13
13
  EnforcedStyle: double_quotes
14
+
15
+ Metrics/MethodLength:
16
+ Max: 20
17
+
18
+ Metrics/BlockLength:
19
+ Exclude:
20
+ - "spec/**/*.rb"
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+ require "open3"
5
+ require "shellwords"
6
+
7
+ module Vestauth
8
+ class Binary
9
+ def initialize(executable: "vestauth")
10
+ @executable = executable
11
+ end
12
+
13
+ def provider_verify(http_method:, uri:, signature:, signature_input:, signature_agent:)
14
+ command = [
15
+ @executable,
16
+ "provider",
17
+ "verify",
18
+ http_method,
19
+ uri,
20
+ "--signature",
21
+ signature,
22
+ "--signature-input",
23
+ signature_input,
24
+ "--signature-agent",
25
+ signature_agent
26
+ ]
27
+
28
+ run_json_command(command)
29
+ end
30
+
31
+ private
32
+
33
+ def run_json_command(command_args)
34
+ command = command_args.map { |arg| Shellwords.escape(arg.to_s) }.join(" ")
35
+ stdout, stderr, status = Open3.capture3(command)
36
+
37
+ raise Vestauth::Error, (stderr.to_s.strip.empty? ? stdout : stderr) unless status.success?
38
+
39
+ JSON.parse(stdout)
40
+ end
41
+ end
42
+ end
@@ -4,8 +4,39 @@ module Vestauth
4
4
  module Provider
5
5
  module_function
6
6
 
7
- def verify(_method, _url, _headers = {})
8
- raise Vestauth::Error, "implement"
7
+ def verify(http_method:, uri:, headers:)
8
+ signature = signature_header(headers)
9
+ signature_input = signature_input_header(headers)
10
+ signature_agent = signature_agent_header(headers)
11
+
12
+ attrs = {
13
+ http_method: http_method,
14
+ uri: uri,
15
+ signature: signature,
16
+ signature_input: signature_input,
17
+ signature_agent: signature_agent
18
+ }
19
+ vestauth_binary.provider_verify(**attrs)
20
+ end
21
+
22
+ def vestauth_binary
23
+ Vestauth::Binary.new
24
+ end
25
+ private_class_method :vestauth_binary
26
+
27
+ def signature_header(headers)
28
+ headers["Signature"] || headers["signature"]
29
+ end
30
+ private_class_method :signature_header
31
+
32
+ def signature_input_header(headers)
33
+ headers["Signature-Input"] || headers["signature-input"]
34
+ end
35
+ private_class_method :signature_input_header
36
+
37
+ def signature_agent_header(headers)
38
+ headers["Signature-Agent"] || headers["signature-agent"]
9
39
  end
40
+ private_class_method :signature_agent_header
10
41
  end
11
42
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Vestauth
4
- VERSION = "0.1.5"
4
+ VERSION = "0.2.1"
5
5
  end
data/lib/vestauth.rb CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  require_relative "vestauth/version"
4
4
  require_relative "vestauth/agent"
5
+ require_relative "vestauth/binary"
5
6
  require_relative "vestauth/provider"
6
7
 
7
8
  module Vestauth
@@ -14,4 +15,8 @@ module Vestauth
14
15
  def self.agent
15
16
  Agent
16
17
  end
18
+
19
+ def self.binary
20
+ Binary
21
+ end
17
22
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vestauth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - motdotla
@@ -24,6 +24,7 @@ files:
24
24
  - Rakefile
25
25
  - lib/vestauth.rb
26
26
  - lib/vestauth/agent.rb
27
+ - lib/vestauth/binary.rb
27
28
  - lib/vestauth/provider.rb
28
29
  - lib/vestauth/version.rb
29
30
  homepage: https://vestauth.com