eventq_base 1.9.3 → 1.10.0

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: 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