eventq_base 1.9.3 → 1.10.0

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
  SHA1:
3
- metadata.gz: 3c27fe104b8bbbd41440ab16cbc9bc607ba287dc
4
- data.tar.gz: 4065c7f71de34e6c2b7bc03a71524e0ce22f43ed
3
+ metadata.gz: 5c1b3f6785269f9bfa925441e6b0df5ccc7a397e
4
+ data.tar.gz: f596b8f09b17d58ef4aa4174de42372af151f91f
5
5
  SHA512:
6
- metadata.gz: 3aeb240aef39cb29f09853e9f6d911187760bb93d3daa86c15111d8b2d43c7a5ccc5c0afce3fe98cbf38ead3829881b65d2f428673257ffd18059a6459d8ac35
7
- data.tar.gz: 39e67133a032d3ae16d89163d61341447776789e8c758869fddb1276588359bb505ae7283faf1d95e01a83059a3113569ce1e25b1f02eec6c2b5000858c4749b
6
+ metadata.gz: 836b0ac42d91d6f49e2bd6fe4876a331e994ee54b44382a0380d7ba93b9e687d6dc59e89928a70f2aab839c0eb6da40a073ecc9684cbac044fc8088ca697b7ef
7
+ data.tar.gz: 2db1a11ba4367132bd5b5fc1bc7d3fa613a97098129e7a29b895be5823b90a0d212a6eab56422494c170c4ef7f344a720c4bbca436238753722196fc2fe9dbbb
@@ -6,10 +6,23 @@ module EventQ
6
6
  end
7
7
 
8
8
  def self.serialization_provider
9
- if @serialization_provider == nil
10
- @serialization_provider = EventQ::SerializationProviders::OJ_PROVIDER
11
- end
12
- return @serialization_provider
9
+ @serialization_provider ||= EventQ::SerializationProviders::OJ_PROVIDER
10
+ end
11
+
12
+ def self.signature_provider=(value)
13
+ @signature_provider = value
14
+ end
15
+
16
+ def self.signature_provider
17
+ @signature_provider ||= EventQ::SignatureProviders::SHA256
18
+ end
19
+
20
+ def self.signature_secret=(value)
21
+ @signature_secret = value
22
+ end
23
+
24
+ def self.signature_secret
25
+ @signature_secret
13
26
  end
14
27
 
15
28
  end
@@ -6,6 +6,7 @@ module EventQ
6
6
  attr_accessor :max_retry_attempts
7
7
  attr_accessor :allow_retry_back_off
8
8
  attr_accessor :max_retry_delay
9
+ attr_accessor :require_signature
9
10
 
10
11
  def initialize
11
12
  @allow_retry = false
@@ -15,6 +16,8 @@ module EventQ
15
16
  @max_retry_attempts = 5
16
17
  #default retry back off settings
17
18
  @allow_retry_back_off = false
19
+ #default require signature to false
20
+ @require_signature = false
18
21
  end
19
22
  end
20
23
  end
@@ -7,6 +7,7 @@ module EventQ
7
7
  attr_accessor_type :type, type: String
8
8
  attr_accessor_type :content
9
9
  attr_accessor_type :created, type: Time
10
+ attr_accessor_type :signature, type: String
10
11
 
11
12
  def initialize
12
13
  @retry_attempts = 0
@@ -0,0 +1,27 @@
1
+ require 'openssl'
2
+ require 'base64'
3
+
4
+ module EventQ
5
+ module SignatureProviders
6
+ class Sha256SignatureProvider
7
+
8
+ def initialize
9
+ @serializer = EventQ::SerializationProviders::JsonSerializationProvider.new
10
+ end
11
+
12
+ #This method is called to create a signature for a message
13
+ def write(message:, secret:)
14
+ json = @serializer.serialize(message.content)
15
+ hash = OpenSSL::HMAC.digest('sha256', secret, json)
16
+ Base64.encode64(hash)
17
+ end
18
+
19
+ #This method is called to validate a message signature
20
+ def valid?(message:, secret:)
21
+ signature = write(message: message, secret: secret)
22
+ message.signature == signature
23
+ end
24
+
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,23 @@
1
+ require_relative 'signature_providers/sha256_signature_provider'
2
+
3
+ module EventQ
4
+ module SignatureProviders
5
+
6
+ SHA256 = 'sha256'.freeze
7
+
8
+ class Manager
9
+ def initialize
10
+ @providers = {}
11
+ @providers[SHA256] = EventQ::SignatureProviders::Sha256SignatureProvider
12
+ end
13
+
14
+ def get_provider(provider_type)
15
+ provider = @providers[provider_type]
16
+ if provider == nil
17
+ raise "Invalid provider type specified: #{provider_type}"
18
+ end
19
+ return provider.new
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,3 +1,3 @@
1
1
  module EventqBase
2
- VERSION = "1.9.3"
2
+ VERSION = "1.10.0"
3
3
  end
data/lib/eventq_base.rb CHANGED
@@ -19,4 +19,5 @@ require_relative 'eventq_base/configuration'
19
19
  require_relative 'eventq_base/serialization_providers'
20
20
  require_relative 'eventq_base/worker_id'
21
21
  require_relative 'eventq_base/nonce_manager'
22
+ require_relative 'eventq_base/signature_providers'
22
23
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eventq_base
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.3
4
+ version: 1.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - vaughanbrittonsage
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-10-24 00:00:00.000000000 Z
11
+ date: 2017-02-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: openssl
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
139
153
  description: This gem contains the base classes and contracts required by any eventq
140
154
  implementations.
141
155
  email:
@@ -161,6 +175,8 @@ files:
161
175
  - lib/eventq_base/serialization_providers.rb
162
176
  - lib/eventq_base/serialization_providers/json_serialization_provider.rb
163
177
  - lib/eventq_base/serialization_providers/oj_serialization_provider.rb
178
+ - lib/eventq_base/signature_providers.rb
179
+ - lib/eventq_base/signature_providers/sha256_signature_provider.rb
164
180
  - lib/eventq_base/subscription_manager_contract.rb
165
181
  - lib/eventq_base/version.rb
166
182
  - lib/eventq_base/worker_id.rb