identikey 0.5.2 → 0.8.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
  SHA256:
3
- metadata.gz: 39bb043b3ece2e37fc84ec06bb4f83b88be7af8391fb2061bee01d64fc9f0464
4
- data.tar.gz: 94114e6c78ce9572c80b415be3a27bb39e17eb57e978fcb1a446da4a63fc1d00
3
+ metadata.gz: ffd988c720bdca730df04328a39439d122436887c02e794b65884559457cfbff
4
+ data.tar.gz: 325ae345fecbb3f4c31b5710d5cf6788cd88ac279319b127c8db64246e0e7919
5
5
  SHA512:
6
- metadata.gz: 43194c6c964d57d6565ccd01d5b714ad4f61ae9658d24c3798b240715b543e67378f1e44ade48c3d76af245072bb7704399b80763934a4a8141b444806288b76
7
- data.tar.gz: 3aa8e78fc6d9b07b1d308b28cfaa4da4ede847dd33af3311a2db2f699ed9521720ec5d88485286be66f2c71aaf4f6b0bc276fd92b32e7e4df976064fb9ca9a83
6
+ metadata.gz: ef2cc1d394a1fbec3d4205901447ded1f98d9c04aeb9a89bfaab69d5c5a11f0584b607b16cc84f19099aaafeb14bbfda6c3551c269f26b6213ad26aa8e8244d9
7
+ data.tar.gz: dd00773caf4a4a63804ac3059a098d193a793a107f4ad5050ecc46061f59285b39a2522658415eb70322280a9fc5803a6bea37e25d82b4ca61ae922d6ee53ada
data/.gitignore CHANGED
@@ -6,14 +6,18 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /spec/test.env
9
+ /spec/examples.txt
9
10
  /tmp/
10
11
  /log/
11
12
  /sdk
13
+ /dpx
12
14
 
13
15
  Gemfile.lock
14
16
 
15
17
  .byebug_history
16
18
 
19
+ .env
20
+
17
21
  # vim swap files
18
22
 
19
23
  .*.sw?
@@ -0,0 +1,23 @@
1
+ # Note: The cmd option is now required due to the increasing number of ways
2
+ # rspec may be run, below are examples of the most common uses.
3
+ # * bundler: 'bundle exec rspec'
4
+ # * bundler binstubs: 'bin/rspec'
5
+ # * spring: 'bin/rspec' (This will use spring if running and you have
6
+ # installed the spring binstubs per the docs)
7
+ # * zeus: 'zeus rspec' (requires the server to be started separately)
8
+ # * 'just' rspec: 'rspec'
9
+
10
+ guard :rspec, cmd: "bundle exec rspec" do
11
+ require "guard/rspec/dsl"
12
+ dsl = Guard::RSpec::Dsl.new(self)
13
+
14
+ # RSpec files
15
+ rspec = dsl.rspec
16
+ watch(rspec.spec_helper) { rspec.spec_dir }
17
+ watch(rspec.spec_support) { rspec.spec_dir }
18
+ watch(rspec.spec_files)
19
+
20
+ # Ruby files
21
+ ruby = dsl.ruby
22
+ dsl.watch_spec_files_for(ruby.lib_files)
23
+ end
data/README.md CHANGED
@@ -186,15 +186,21 @@ your application.
186
186
 
187
187
  ## Development
188
188
 
189
- After checking out the repo, run `bin/setup` to install dependencies. Then,
190
- run `rake` to run the tests. You can also run `bin/console` for an interactive
191
- prompt that will allow you to experiment.
189
+ After checking out the repo, run `bin/setup` to install dependencies.
192
190
 
193
- To run specs, please copy `spec/test.env.example` into `spec/test.env` and
191
+ Then, please copy `spec/test.env.example` into `spec/test.env` and
194
192
  populate it with your Identikey Authentication Server host, username, password
195
- and domain. You also need the Identikey SDK, that can be placed in `/sdk` and
193
+ and domain.
194
+
195
+ You also need the Identikey SDK, that can be placed in `sdk/` and
196
196
  its WSDL paths as well referenced in the `spec/test.env` file.
197
197
 
198
+ Then, run `rake` to run the tests.
199
+
200
+ You can also run `bin/console` for an interactive prompt that will allow you
201
+ to experiment. It requires the same environment variables required by the
202
+ specs.
203
+
198
204
  To install this gem onto your local machine, run `bundle exec rake install`.
199
205
 
200
206
  To release a new version, update the version number in `version.rb`, and then
data/Rakefile CHANGED
@@ -6,3 +6,9 @@ RSpec::Core::RakeTask.new(:spec) do |spec|
6
6
  end
7
7
 
8
8
  task :default => :spec
9
+
10
+ require 'code_counter/engine'
11
+ desc 'Print code statistics'
12
+ task :stats do
13
+ puts CodeCounter::Engine.new.to_s
14
+ end
@@ -3,8 +3,27 @@
3
3
  require 'bundler/setup'
4
4
  require 'identikey'
5
5
 
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
6
+ Identikey::Authentication.configure do
7
+ wsdl ENV.fetch('IK_WSDL_AUTH')
8
+ endpoint ENV.fetch('IK_HOST')
9
+ end
10
+
11
+ puts "Configured Auth WSDL #{ENV.fetch('IK_WSDL_AUTH')} against #{ENV.fetch('IK_HOST')}"
12
+
13
+ Identikey::Administration.configure do
14
+ wsdl ENV.fetch('IK_WSDL_ADMIN')
15
+ endpoint ENV.fetch('IK_HOST')
16
+ end
17
+
18
+ puts "Configured Admin WSDL #{ENV.fetch('IK_WSDL_ADMIN')} against #{ENV.fetch('IK_HOST')}"
19
+
20
+ $ik = Identikey::Administration::Session.new(
21
+ username: ENV.fetch('IK_USER'),
22
+ password: ENV.fetch('IK_PASS'),
23
+ domain: ENV.fetch('IK_DOMAIN')
24
+ )
25
+
26
+ puts "Opened admin session with #{ENV.fetch('IK_USER')}@#{ENV.fetch('IK_DOMAIN')} against #{ENV.fetch('IK_HOST')}. Find it in $ik variable"
8
27
 
9
28
  require "pry"
10
29
  Pry.start
@@ -0,0 +1,42 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'identikey'
5
+ require 'json'
6
+
7
+ if ARGV.size != 1
8
+ $stderr.puts "Usage: #{$0} <users.json>"
9
+ exit 1
10
+ end
11
+
12
+ Identikey::Administration.configure do
13
+ wsdl ENV.fetch('IK_WSDL_ADMIN')
14
+ endpoint ENV.fetch('IK_HOST')
15
+ end
16
+
17
+ puts "Configured Admin WSDL #{ENV.fetch('IK_WSDL_ADMIN')} against #{ENV.fetch('IK_HOST')}"
18
+
19
+ $ik = Identikey::Administration::Session.new(
20
+ username: ENV.fetch('IK_USER'),
21
+ password: ENV.fetch('IK_PASS'),
22
+ domain: ENV.fetch('IK_DOMAIN')
23
+ )
24
+
25
+ $ik.logon
26
+
27
+ puts "Opened admin session with #{ENV.fetch('IK_USER')}@#{ENV.fetch('IK_DOMAIN')} against #{ENV.fetch('IK_HOST')}"
28
+
29
+ at_exit { $ik.logoff }
30
+
31
+ users = Identikey::Administration::User.search(session: $ik, query: {})
32
+ users_slim = users.map do |u|
33
+ { username: u.username,
34
+ email: u.email,
35
+ digipass: u.digipass,
36
+ disabled: u.disabled,
37
+ locked: u.locked,
38
+ expires_at: u.expires_at
39
+ }
40
+ end
41
+
42
+ File.write ARGV[0], users_slim.to_json
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require 'identikey'
5
+ require 'json'
6
+
7
+ if ARGV.size != 1
8
+ $stderr.puts "Usage: #{$0} <users.json>"
9
+ exit 1
10
+ end
11
+
12
+ Identikey::Administration.configure do
13
+ wsdl ENV.fetch('IK_WSDL_ADMIN')
14
+ endpoint ENV.fetch('IK_HOST')
15
+ end
16
+
17
+ puts "Configured Admin WSDL #{ENV.fetch('IK_WSDL_ADMIN')} against #{ENV.fetch('IK_HOST')}"
18
+
19
+ $ik = Identikey::Administration::Session.new(
20
+ username: ENV.fetch('IK_USER'),
21
+ password: ENV.fetch('IK_PASS'),
22
+ domain: ENV.fetch('IK_DOMAIN')
23
+ )
24
+
25
+ $ik.logon
26
+
27
+ puts "Opened admin session with #{ENV.fetch('IK_USER')}@#{ENV.fetch('IK_DOMAIN')} against #{ENV.fetch('IK_HOST')}"
28
+
29
+ at_exit { $ik.logoff }
30
+
31
+ users = JSON.load File.read ARGV[0]
32
+
33
+ users.each do |import|
34
+
35
+ puts "Looking up #{import['username']}"
36
+ ik_user = begin
37
+ Identikey::Administration::User.find(session: $ik, username: import['username'], domain: ENV.fetch('IK_DOMAIN'))
38
+ rescue => e
39
+ puts "Cannot look up #{import['username']}: #{e.message}"
40
+ nil
41
+ end
42
+
43
+ unless ik_user
44
+ puts "User #{import['username']} not found, creating"
45
+
46
+ ik_user = Identikey::Administration::User.new($ik,
47
+ 'USERFLD_USERID' => import['username'],
48
+ 'USERFLD_EMAIL' => import['email'],
49
+ 'USERFLD_DOMAIN' => ENV.fetch('IK_DOMAIN'),
50
+ 'USERFLD_LOCAL_AUTH' => 'Default',
51
+ 'USERFLD_BACKEND_AUTH' => 'Default',
52
+ 'USERFLD_DISABLED' => import['disabled'],
53
+ 'USERFLD_LOCKED' => import['locked'],
54
+ 'USERFLD_EXPIRATION_TIME' => import['expires_at']
55
+ )
56
+
57
+ begin
58
+ ik_user.save!
59
+ puts "User #{import['username']} created"
60
+ rescue => e
61
+
62
+ puts "Cannot create #{import['username']}: #{e.message}"
63
+
64
+ next
65
+ end
66
+ end
67
+
68
+ missing_digipass = import['digipass'] - ik_user.digipass
69
+
70
+ missing_digipass.each do |digipass|
71
+ puts "Assigining digipass #{digipass} to #{import['username']}"
72
+
73
+ ik_token = begin
74
+ Identikey::Administration::Digipass.find(session: $ik, serial_no: digipass)
75
+ rescue => e
76
+ puts "Digipass #{digipass} was not found"
77
+ next
78
+ end
79
+
80
+ begin
81
+ ik_token.assign! import['username'], ENV.fetch('IK_DOMAIN')
82
+ rescue => e
83
+ puts "Digipass #{digipass} could not be assigned to #{import['username']}: #{e.message}"
84
+ end
85
+
86
+ puts "Assignment of digipass #{digipass} to #{import['username']} was successful"
87
+ end
88
+
89
+ end
@@ -25,11 +25,14 @@ Gem::Specification.new do |spec|
25
25
  spec.add_dependency "savon", "~> 2.0"
26
26
 
27
27
  spec.add_development_dependency "bundler", "~> 2.0"
28
- spec.add_development_dependency "rake", "~> 10.0"
28
+ spec.add_development_dependency "rake", ">= 12.3.3"
29
29
  spec.add_development_dependency "rspec", "~> 3.0"
30
30
  spec.add_development_dependency 'pry'
31
31
  spec.add_development_dependency 'hirb'
32
32
  spec.add_development_dependency 'byebug'
33
33
  spec.add_development_dependency 'simplecov'
34
34
  spec.add_development_dependency 'dotenv'
35
+ spec.add_development_dependency 'guard-rspec'
36
+ spec.add_development_dependency 'vacman_controller'
37
+ spec.add_development_dependency 'code_counter'
35
38
  end
@@ -145,6 +145,40 @@ module Identikey
145
145
  )
146
146
  end
147
147
 
148
+ def user_execute_RESET_PASSWORD(session_id:, username:, domain:)
149
+ user_execute(
150
+ session_id: session_id,
151
+ cmd: 'USERCMD_RESET_PASSWORD',
152
+ attributes: typed_attributes_list_from(
153
+ USERFLD_USERID: username,
154
+ USERFLD_DOMAIN: domain
155
+ )
156
+ )
157
+ end
158
+
159
+ def user_execute_SET_PASSWORD(session_id:, username:, domain:, password:)
160
+ user_execute(
161
+ session_id: session_id,
162
+ cmd: 'USERCMD_SET_PASSWORD',
163
+ attributes: typed_attributes_list_from(
164
+ USERFLD_USERID: username,
165
+ USERFLD_DOMAIN: domain,
166
+ USERFLD_NEW_PASSWORD: password,
167
+ USERFLD_CONFIRM_NEW_PASSWORD: password
168
+ )
169
+ )
170
+ end
171
+
172
+ def user_execute_UNLOCK(session_id:, username:, domain:)
173
+ user_execute(
174
+ session_id: session_id,
175
+ cmd: 'USERCMD_UNLOCK',
176
+ attributes: typed_attributes_list_from(
177
+ USERFLD_USERID: username,
178
+ USERFLD_DOMAIN: domain
179
+ )
180
+ )
181
+ end
148
182
 
149
183
  # Executes a userQuery command that searches users. By default, it doesn't
150
184
  # log anywhere. To enable logging to a specific destination, pass a logger
@@ -6,12 +6,21 @@ module Identikey
6
6
  attr_reader :session_id, :product, :version
7
7
  attr_reader :privileges, :location
8
8
 
9
- def initialize(username:, password:, domain: 'master')
9
+ def initialize(username:, password: nil, apikey: nil, domain: 'master')
10
+ if password.nil? && apikey.nil?
11
+ raise Identikey::UsageError, "Either a password or an API Key is required"
12
+ end
13
+
10
14
  @client = Identikey::Administration.new
11
15
 
12
16
  @username = username
13
17
  @password = password
14
18
  @domain = domain
19
+
20
+ if apikey
21
+ @service_user = true
22
+ @session_id = "Apikey #{username}:#{apikey}"
23
+ end
15
24
  end
16
25
 
17
26
  def endpoint
@@ -23,6 +32,8 @@ module Identikey
23
32
  end
24
33
 
25
34
  def logon
35
+ require_classic_user!
36
+
26
37
  stat, sess, error = @client.logon(username: @username, password: @password, domain: @domain)
27
38
 
28
39
  if stat != 'STAT_SUCCESS'
@@ -42,6 +53,7 @@ module Identikey
42
53
  end
43
54
 
44
55
  def logoff
56
+ require_classic_user!
45
57
  require_logged_on!
46
58
 
47
59
  stat, _, error = @client.logoff session_id: @session_id
@@ -60,6 +72,8 @@ module Identikey
60
72
  end
61
73
 
62
74
  def alive?(log: true)
75
+ require_classic_user!
76
+
63
77
  return false unless logged_on?
64
78
 
65
79
  stat, _ = @client.ping session_id: @session_id, log: log
@@ -108,7 +122,17 @@ module Identikey
108
122
  end
109
123
 
110
124
  def inspect
111
- "#<#{self.class.name} sid=#@session_id username=#@username domain=#@domain product=#@product>"
125
+ descr = if service_user?
126
+ "SERVICE USER"
127
+ else
128
+ "domain=#@domain product=#@product"
129
+ end
130
+
131
+ "#<#{self.class.name} sid=#@session_id username=#@username #{descr}>"
132
+ end
133
+
134
+ def service_user?
135
+ !!@service_user
112
136
  end
113
137
 
114
138
  alias sid session_id
@@ -123,6 +147,12 @@ module Identikey
123
147
  end
124
148
  end
125
149
 
150
+ def require_classic_user!
151
+ if service_user?
152
+ raise Identikey::UsageError, "This command is not supported with Service users"
153
+ end
154
+ end
155
+
126
156
  def parse_privileges(privileges)
127
157
  privileges.split(', ').inject({}) do |h, priv|
128
158
  privilege, status = priv.split(' ')
@@ -6,7 +6,7 @@ module Identikey
6
6
  new(session).find(username, domain)
7
7
  end
8
8
 
9
- def self.search(session:, query:, options: {})
9
+ def self.search(session:, query:, options: {}, log: false)
10
10
  [:has_digipass, :not_has_digipass].each do |funky_boolean|
11
11
  if query.key?(funky_boolean) && [true, false].include?(query[funky_boolean])
12
12
  query[funky_boolean] = query[funky_boolean] ? 'Assigned' : 'Unassigned'
@@ -29,10 +29,12 @@ module Identikey
29
29
 
30
30
  stat, users, error = session.execute(:user_query,
31
31
  attributes: Base.search_attributes_from(query, attribute_map: query_keys),
32
- query_options: Base.search_options_from(options))
32
+ query_options: Base.search_options_from(options),
33
+ log: log
34
+ )
33
35
 
34
36
  case stat
35
- when 'STAT_SUCCESS' then (users||[]).map {|user| new(session, user) }
37
+ when 'STAT_SUCCESS' then (users||[]).map {|user| new(session, user, persisted: true) }
36
38
  when 'STAT_NOT_FOUND' then []
37
39
  else
38
40
  raise Identikey::Error, "Search user failed: #{stat} - #{error}"
@@ -59,11 +61,17 @@ module Identikey
59
61
  attr_accessor :expired
60
62
  attr_accessor :last_auth_attempt_at
61
63
  attr_accessor :description
64
+ attr_accessor :passwd_last_set_at
65
+ attr_accessor :has_password
62
66
 
63
- def initialize(session, user = nil)
67
+ alias locked? locked
68
+ alias digipass? has_digipass
69
+ alias password? has_password
70
+
71
+ def initialize(session, user = nil, persisted: false)
64
72
  @session = session
65
73
 
66
- replace(user) if user
74
+ replace(user, persisted: persisted) if user
67
75
  end
68
76
 
69
77
  def find(username, domain)
@@ -102,26 +110,20 @@ module Identikey
102
110
  })
103
111
 
104
112
  if stat != 'STAT_SUCCESS'
105
- raise Identikey::OperationFailed, "Save user failed: #{stat} - #{error}"
113
+ raise Identikey::OperationFailed, "Save user #{self.username} failed: #{stat} - #{error}"
106
114
  end
107
115
 
108
116
  replace(user, persisted: true)
109
117
  end
110
118
 
111
119
  def destroy!
112
- unless self.persisted?
113
- raise Identikey::UsageError, "User #{self.username} is not persisted"
114
- end
115
-
116
- unless self.username && self.domain
117
- raise Identikey::UsageError, "User #{self} is missing username and/or domain"
118
- end
120
+ ensure_persisted!
119
121
 
120
122
  stat, _, error = @session.execute(
121
123
  :user_execute_DELETE, username: username, domain: domain)
122
124
 
123
125
  if stat != 'STAT_SUCCESS'
124
- raise Identikey::OperationFailed, "Delete user failed: #{stat} - #{error}"
126
+ raise Identikey::OperationFailed, "Delete user #{self.username} failed: #{stat} - #{error}"
125
127
  end
126
128
 
127
129
  @persisted = false
@@ -129,6 +131,51 @@ module Identikey
129
131
  self
130
132
  end
131
133
 
134
+ def clear_password!
135
+ ensure_persisted!
136
+
137
+ stat, _, error = @session.execute(
138
+ :user_execute_RESET_PASSWORD, username: username, domain: domain)
139
+
140
+ if stat != 'STAT_SUCCESS'
141
+ raise Identikey::OperationFailed, "Clear user #{self.username} password failed: #{stat} - #{error}"
142
+ end
143
+
144
+ self.has_password = false
145
+
146
+ true
147
+ end
148
+
149
+ def set_password!(password)
150
+ ensure_persisted!
151
+
152
+ stat, _, error = @session.execute(
153
+ :user_execute_SET_PASSWORD, username: username, domain: domain, password: password)
154
+
155
+ if stat != 'STAT_SUCCESS'
156
+ raise Identikey::OperationFailed, "Set user #{self.username} password failed: #{stat} - #{error}"
157
+ end
158
+
159
+ self.has_password = true
160
+
161
+ true
162
+ end
163
+
164
+ def unlock!
165
+ ensure_persisted!
166
+
167
+ stat, _, error = @session.execute(
168
+ :user_execute_UNLOCK, username: username, domain: domain)
169
+
170
+ if stat != 'STAT_SUCCESS'
171
+ raise Identikey::OperationFailed, "Unlock user #{self.username} failed: #{stat} - #{error}"
172
+ end
173
+
174
+ self.locked = false
175
+
176
+ true
177
+ end
178
+
132
179
  protected
133
180
  def replace(user, persisted: false)
134
181
  self.username = user['USERFLD_USERID']
@@ -151,11 +198,23 @@ module Identikey
151
198
  self.expired = user['USERFLD_EXPIRED']
152
199
  self.last_auth_attempt_at = user['USERFLD_LASTAUTHREQ_TIME']
153
200
  self.description = user['USERFLD_DESCRIPTION']
201
+ self.passwd_last_set_at = user['USERFLD_LAST_PASSWORD_SET_TIME']
202
+ self.has_password = !user['USERFLD_PASSWORD'].nil?
154
203
 
155
204
  @persisted = persisted
156
205
 
157
206
  self
158
207
  end
208
+
209
+ def ensure_persisted!
210
+ unless self.persisted?
211
+ raise Identikey::UsageError, "User #{self.username} is not persisted"
212
+ end
213
+
214
+ unless self.username && self.domain
215
+ raise Identikey::UsageError, "User #{self} is missing username and/or domain"
216
+ end
217
+ end
159
218
  end
160
219
 
161
220
  end
@@ -6,11 +6,13 @@ module Identikey
6
6
 
7
7
  operations :auth_user
8
8
 
9
- def auth_user(user, domain, otp)
9
+ def auth_user(user, domain, otp, client = nil)
10
+ client ||= 'Administration Program'
11
+
10
12
  resp = super(message: {
11
13
  credentialAttributeSet: {
12
14
  attributes: typed_attributes_list_from(
13
- CREDFLD_COMPONENT_TYPE: 'Administration Program',
15
+ CREDFLD_COMPONENT_TYPE: client,
14
16
  CREDFLD_USERID: user,
15
17
  CREDFLD_DOMAIN: domain,
16
18
  CREDFLD_PASSWORD_FORMAT: Unsigned(0),
@@ -22,13 +24,13 @@ module Identikey
22
24
  parse_response resp, :auth_user_response
23
25
  end
24
26
 
25
- def self.valid_otp?(user, domain, otp)
26
- status, result, _ = new.auth_user(user, domain, otp)
27
+ def self.valid_otp?(user, domain, otp, client = nil)
28
+ status, result, _ = new.auth_user(user, domain, otp, client)
27
29
  return otp_validated_ok?(status, result)
28
30
  end
29
31
 
30
- def self.validate!(user, domain, otp)
31
- status, result, error_stack = new.auth_user(user, domain, otp)
32
+ def self.validate!(user, domain, otp, client = nil)
33
+ status, result, error_stack = new.auth_user(user, domain, otp, client)
32
34
 
33
35
  if otp_validated_ok?(status, result)
34
36
  return true
@@ -264,8 +264,8 @@ module Identikey
264
264
  parse = /^(not_)?(.*)/i.match(full_name.to_s)
265
265
  name = parse[2]
266
266
 
267
- options = []
268
- options.push(negative: true) if !parse[1].nil?
267
+ options = {}
268
+ options[:negative] = true if !parse[1].nil?
269
269
 
270
270
  type, value = case value
271
271
 
@@ -275,8 +275,8 @@ module Identikey
275
275
  when Integer
276
276
  [ 'xsd:int', value.to_s ]
277
277
 
278
- when DateTime, Time
279
- [ 'xsd:datetime', value.utc.iso8601 ]
278
+ when Time
279
+ [ 'xsd:dateTime', value.utc.iso8601 ]
280
280
 
281
281
  when TrueClass, FalseClass
282
282
  [ 'xsd:boolean', value.to_s ]
@@ -285,7 +285,7 @@ module Identikey
285
285
  [ 'xsd:string', value.to_s ]
286
286
 
287
287
  when NilClass
288
- options.push(null: true)
288
+ options[:null] = true
289
289
  [ 'xsd:string', '' ]
290
290
 
291
291
  else
@@ -1,3 +1,3 @@
1
1
  module Identikey
2
- VERSION = "0.5.2"
2
+ VERSION = "0.8.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: identikey
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcello Barnaba
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-12-11 00:00:00.000000000 Z
11
+ date: 2020-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: savon
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: 12.3.3
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '10.0'
54
+ version: 12.3.3
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +136,48 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: guard-rspec
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: vacman_controller
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: code_counter
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
139
181
  description: This gem contains a SOAP client to consume Identikey API
140
182
  email:
141
183
  - vjt@openssl.it
@@ -146,10 +188,13 @@ files:
146
188
  - ".gitignore"
147
189
  - ".rspec"
148
190
  - Gemfile
191
+ - Guardfile
149
192
  - LICENSE.txt
150
193
  - README.md
151
194
  - Rakefile
152
195
  - bin/console
196
+ - bin/export
197
+ - bin/import
153
198
  - bin/setup
154
199
  - identikey.gemspec
155
200
  - lib/identikey.rb