escher-keypool 0.0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 68dd8f30908e38416e18d4a8693e240b54b39374
4
+ data.tar.gz: 319f7db3bc7559e14c28db9fcc805f8eb827c223
5
+ SHA512:
6
+ metadata.gz: 3f0a33cb0fad7e82925f3181e3a73b047bf76595a3d6cb9a6bdc542a76c8c24060ef95d7b8e58b1f9ca4790ab403b831f596954587640c701111ba513bb8dd56
7
+ data.tar.gz: ae4252e9a25dbf2b325029f96e2a747d4995f6d475ca43fe703174eb424ab0908539a4612953dfa2ba83a9e40919e83ee5433418980f96669b28ce84e347d5a3
@@ -0,0 +1,46 @@
1
+ require "escher/version"
2
+ require 'json'
3
+
4
+ module Escher
5
+ class Keypool
6
+
7
+
8
+ def initialize
9
+ @keys = JSON.parse(ENV['KEY_POOL'])
10
+ end
11
+
12
+
13
+
14
+ def get_active_key(service_id)
15
+ key_id_env_key = service_id.upcase + '_KEYID'
16
+ key_id = ENV[key_id_env_key]
17
+
18
+ if not key_id
19
+ raise "the " + key_id_env_key + " environment variable is not found"
20
+ end
21
+
22
+ service_keys = @keys.select { |key| key['keyId'].start_with?(key_id) }
23
+ if service_keys.length == 0
24
+ raise "key not found for " + service_id
25
+ end
26
+
27
+ candidate_keys = service_keys.select { |key| key['acceptOnly'] == 0 }
28
+ if candidate_keys.length == 0
29
+ raise "active key not found for " + service_id
30
+ end
31
+ if candidate_keys.length > 1
32
+ raise "ambigous active key for " + service_id
33
+ end
34
+
35
+ { api_key_id: candidate_keys[0]['keyId'], api_secret: candidate_keys[0]['secret'] }
36
+ end
37
+
38
+
39
+
40
+ def get_key_db
41
+ Hash[@keys.collect { |key| [key['keyId'], key['secret']] }]
42
+ end
43
+
44
+
45
+ end
46
+ end
@@ -0,0 +1,5 @@
1
+ module Escher
2
+ class Keypool
3
+ VERSION = '0.0.1'
4
+ end
5
+ end
metadata ADDED
@@ -0,0 +1,46 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: escher-keypool
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Emarsys
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-03-17 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Manages keys using environment variables.
14
+ email:
15
+ - andras.barthazi@emarsys.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/escher-keypool.rb
21
+ - lib/escher/version.rb
22
+ homepage: https://github.com/emartech/escher-keypool-ruby
23
+ licenses:
24
+ - MIT
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubyforge_project:
42
+ rubygems_version: 2.2.2
43
+ signing_key:
44
+ specification_version: 4
45
+ summary: Keypool for Escher
46
+ test_files: []