digidoc_client 0.1.1 → 0.2.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 +4 -4
- data/Guardfile +20 -0
- data/digidoc_client.gemspec +7 -2
- data/lib/digidoc/client.rb +59 -42
- data/lib/digidoc/version.rb +1 -1
- data/spec/lib/client_spec.rb +26 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +11 -0
- metadata +84 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 225a15c978fa06d9f84aa749118ee378ff81ee1f
|
4
|
+
data.tar.gz: 4ed207821b4f5df451f31b4d7b3d262601e358ad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c57c02ac4baefe83045e6577102ced2722a60830865eba8741ac3d485400b0014d946e4d9d3a288566b3cc5a2859e35faba35d95ea28ea5c9563b99a06d3fbd6
|
7
|
+
data.tar.gz: 8a5ade4410c890d33fa7115b01e9afb415f5b8ad66dba37990ffa9fcc1ad5d3d8d83112558d158707be4047e49e5ea6be93a14ac192e5691ea90120298e87f20
|
data/Guardfile
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
guard 'rspec' do
|
2
|
+
watch(%r{^spec/.+_spec\.rb$})
|
3
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
4
|
+
watch('spec/spec_helper.rb') { "spec" }
|
5
|
+
|
6
|
+
# Rails example
|
7
|
+
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
8
|
+
watch(%r{^app/(.*)(\.erb|\.haml)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
|
9
|
+
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
|
10
|
+
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
|
11
|
+
watch('config/routes.rb') { "spec/routing" }
|
12
|
+
watch('app/controllers/application_controller.rb') { "spec/controllers" }
|
13
|
+
|
14
|
+
# Capybara features specs
|
15
|
+
watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
|
16
|
+
|
17
|
+
# Turnip features and steps
|
18
|
+
watch(%r{^spec/acceptance/(.+)\.feature$})
|
19
|
+
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
|
20
|
+
end
|
data/digidoc_client.gemspec
CHANGED
@@ -18,9 +18,14 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
|
21
|
-
s.add_dependency 'httpclient', '>= 2.
|
22
|
-
s.add_dependency 'savon', '>=
|
21
|
+
s.add_dependency 'httpclient', '>= 2.3.4'
|
22
|
+
s.add_dependency 'savon', '>= 2.4.0'
|
23
23
|
s.add_dependency 'mime-types', '>= 1.16'
|
24
24
|
s.add_dependency 'crack', '>= 0.1.8'
|
25
25
|
s.add_dependency 'nokogiri', '>= 1.4.0'
|
26
|
+
s.add_development_dependency "rspec"
|
27
|
+
s.add_development_dependency "guard"
|
28
|
+
s.add_development_dependency "guard-rspec"
|
29
|
+
s.add_development_dependency "growl"
|
30
|
+
s.add_development_dependency "rb-fsevent"
|
26
31
|
end
|
data/lib/digidoc/client.rb
CHANGED
@@ -7,11 +7,24 @@ require 'mime/types'
|
|
7
7
|
require 'digest/sha1'
|
8
8
|
require 'nokogiri'
|
9
9
|
|
10
|
+
class NestedOpenStruct < OpenStruct
|
11
|
+
def initialize(hash = nil)
|
12
|
+
@table = {}
|
13
|
+
if hash
|
14
|
+
for k, v in hash
|
15
|
+
@table[k.to_sym] = v.instance_of?(Hash) ? NestedOpenStruct.new(v) : v
|
16
|
+
new_ostruct_member(k)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
10
22
|
module Digidoc
|
11
23
|
TargetNamespace = 'http://www.sk.ee/DigiDocService/DigiDocService_2_3.wsdl'
|
12
|
-
TestEndpointUrl = 'https://openxades.org:
|
24
|
+
TestEndpointUrl = 'https://openxades.org:9443/DigiDocService'
|
13
25
|
|
14
26
|
class Client
|
27
|
+
cattr_accessor :logger
|
15
28
|
attr_accessor :session_code, :endpoint_url, :respond_with_nested_struct, :embedded_datafiles
|
16
29
|
|
17
30
|
def initialize(endpoint_url = TestEndpointUrl)
|
@@ -41,11 +54,11 @@ module Digidoc
|
|
41
54
|
self.session_code = nil
|
42
55
|
|
43
56
|
# Make webservice call
|
44
|
-
response = savon_client.
|
45
|
-
|
57
|
+
response = savon_client.call('MobileAuthenticate') do |locals|
|
58
|
+
locals.message 'CountryCode' => country_code, 'PhoneNo' => phone, 'Language' => language, 'ServiceName' => service_name,
|
46
59
|
'MessageToDisplay' => message_to_display, 'SPChallenge' => sp_challenge, 'MessagingMode' => messaging_mode,
|
47
60
|
'AsyncConfiguration' => async_configuration, 'ReturnCertData' => return_cert_data,
|
48
|
-
'ReturnRevocationData' => return_revocation_data, 'IdCode' => personal_code
|
61
|
+
'ReturnRevocationData' => return_revocation_data, 'IdCode' => personal_code
|
49
62
|
end
|
50
63
|
|
51
64
|
if soap_fault?(response)
|
@@ -59,8 +72,8 @@ module Digidoc
|
|
59
72
|
|
60
73
|
# Authentication status
|
61
74
|
def authentication_status(session_code = self.session_code)
|
62
|
-
response = savon_client.
|
63
|
-
|
75
|
+
response = savon_client.call('GetMobileAuthenticateStatus') do |locals|
|
76
|
+
locals.message 'Sesscode' => session_code
|
64
77
|
end
|
65
78
|
|
66
79
|
result = soap_fault?(response) ? response.to_hash[:fault] : response.to_hash[:get_mobile_authenticate_status_response]
|
@@ -75,8 +88,8 @@ module Digidoc
|
|
75
88
|
signed_doc_file = options.delete(:signed_doc_file)
|
76
89
|
signed_doc_xml = signed_doc_file.read if signed_doc_file
|
77
90
|
|
78
|
-
response = savon_client.
|
79
|
-
|
91
|
+
response = savon_client.call('StartSession') do |locals|
|
92
|
+
locals.message 'bHoldSession' => true, 'SigDocXML' => signed_doc_xml
|
80
93
|
end
|
81
94
|
|
82
95
|
if soap_fault?(response)
|
@@ -95,8 +108,8 @@ module Digidoc
|
|
95
108
|
session_code = options.delete(:session_code) || self.session_code
|
96
109
|
version = options.delete(:version) || '1.3'
|
97
110
|
|
98
|
-
response = savon_client.
|
99
|
-
|
111
|
+
response = savon_client.call('CreateSignedDoc') do |locals|
|
112
|
+
locals.message 'Sesscode' => session_code, 'Format' => 'DIGIDOC-XML', 'Version' => version
|
100
113
|
end
|
101
114
|
|
102
115
|
result = soap_fault?(response) ? response.to_hash[:fault] : response.to_hash[:create_signed_doc_response]
|
@@ -116,10 +129,10 @@ module Digidoc
|
|
116
129
|
city = options.delete(:city)
|
117
130
|
postal_code = options.delete(:postal_code)
|
118
131
|
|
119
|
-
response = savon_client.
|
120
|
-
|
132
|
+
response = savon_client.call('PrepareSignature') do |locals|
|
133
|
+
locals.message 'Sesscode' => session_code, 'SignersCertificate' => signers_certificate,
|
121
134
|
'SignersTokenId' => signers_token_id, 'Role' => role, 'City' => city,
|
122
|
-
'State' => state_or_province, 'PostalCode' => postal_code, 'Country' => country_name, 'SigningProfile' => signing_profile
|
135
|
+
'State' => state_or_province, 'PostalCode' => postal_code, 'Country' => country_name, 'SigningProfile' => signing_profile
|
123
136
|
end
|
124
137
|
|
125
138
|
result = soap_fault?(response) ? response.to_hash[:fault] : response.to_hash[:prepare_signature_response]
|
@@ -133,8 +146,8 @@ module Digidoc
|
|
133
146
|
signature = options.delete(:signature)
|
134
147
|
signature_id = options.delete(:signature_id)
|
135
148
|
|
136
|
-
response = savon_client.
|
137
|
-
|
149
|
+
response = savon_client.call('FinalizeSignature') do |locals|
|
150
|
+
locals.message 'Sesscode' => session_code, 'SignatureValue' => signature, 'SignatureId' => signature_id
|
138
151
|
end
|
139
152
|
|
140
153
|
result = soap_fault?(response) ? response.to_hash[:fault] : response.to_hash[:finalize_signature_response]
|
@@ -147,8 +160,8 @@ module Digidoc
|
|
147
160
|
session_code = options.delete(:session_code) || self.session_code
|
148
161
|
signature_id = options.delete(:signature_id)
|
149
162
|
|
150
|
-
response = savon_client.
|
151
|
-
|
163
|
+
response = savon_client.call('GetNotary') do |locals|
|
164
|
+
locals.message 'Sesscode' => session_code, 'SignatureId' => signature_id
|
152
165
|
end
|
153
166
|
|
154
167
|
result = soap_fault?(response) ? response.to_hash[:fault] : response.to_hash[:get_notary_response]
|
@@ -177,13 +190,13 @@ module Digidoc
|
|
177
190
|
postal_code = options.delete(:postal_code)
|
178
191
|
phone = ensure_area_code(phone)
|
179
192
|
|
180
|
-
response = savon_client.
|
181
|
-
|
193
|
+
response = savon_client.call('MobileSign') do |locals|
|
194
|
+
locals.message 'Sesscode' => session_code, 'SignersCountry' => country_code, 'CountryName' => country_name,
|
182
195
|
'SignerPhoneNo' => phone, 'Language' => language, 'ServiceName' => service_name,
|
183
196
|
'AdditionalDataToBeDisplayed' => message_to_display, 'MessagingMode' => messaging_mode,
|
184
197
|
'AsyncConfiguration' => async_configuration, 'ReturnDocInfo' => return_doc_info,
|
185
198
|
'ReturnDocData' => return_doc_data, 'SignerIDCode' => personal_code, 'Role' => role, 'City' => city,
|
186
|
-
'StateOrProvince' => state_or_province, 'PostalCode' => postal_code
|
199
|
+
'StateOrProvince' => state_or_province, 'PostalCode' => postal_code
|
187
200
|
end
|
188
201
|
|
189
202
|
result = soap_fault?(response) ? response.to_hash[:fault] : response.to_hash[:mobile_sign_response]
|
@@ -198,8 +211,8 @@ module Digidoc
|
|
198
211
|
return_doc_info = options.key?(:return_doc_info) ? options.delete(:return_doc_info) : false
|
199
212
|
wait_signature = options.key?(:wait_signature) ? options.delete(:wait_signature) : false
|
200
213
|
|
201
|
-
response = savon_client.
|
202
|
-
|
214
|
+
response = savon_client.call('GetStatusInfo') do |locals|
|
215
|
+
locals.message 'Sesscode' => session_code, 'ReturnDocInfo' => return_doc_info, 'WaitSignature' => wait_signature
|
203
216
|
end
|
204
217
|
|
205
218
|
result = soap_fault?(response) ? response.to_hash[:fault] : response.to_hash[:get_status_info_response]
|
@@ -211,9 +224,10 @@ module Digidoc
|
|
211
224
|
options = args.last || {}
|
212
225
|
session_code = options.delete(:session_code) || self.session_code
|
213
226
|
|
214
|
-
response = savon_client.
|
215
|
-
|
227
|
+
response = savon_client.call('GetSignedDocInfo') do |locals|
|
228
|
+
locals.message 'Sesscode' => session_code
|
216
229
|
end
|
230
|
+
|
217
231
|
result = soap_fault?(response) ? response.to_hash[:fault] : response.to_hash[:get_signed_doc_info_response]
|
218
232
|
respond_with_hash_or_nested(result)
|
219
233
|
end
|
@@ -223,8 +237,8 @@ module Digidoc
|
|
223
237
|
options = args.last || {}
|
224
238
|
session_code = options.delete(:session_code) || self.session_code
|
225
239
|
|
226
|
-
response = savon_client.
|
227
|
-
|
240
|
+
response = savon_client.call('GetSignedDoc') do |locals|
|
241
|
+
locals.message 'Sesscode' => session_code
|
228
242
|
end
|
229
243
|
|
230
244
|
if soap_fault?(response)
|
@@ -250,8 +264,8 @@ module Digidoc
|
|
250
264
|
|
251
265
|
# Closes current session
|
252
266
|
def close_session(session_code = self.session_code)
|
253
|
-
response = savon_client.
|
254
|
-
|
267
|
+
response = savon_client.call('CloseSession') do |locals|
|
268
|
+
locals.message 'Sesscode' => session_code
|
255
269
|
end
|
256
270
|
self.session_code = nil
|
257
271
|
|
@@ -269,7 +283,7 @@ module Digidoc
|
|
269
283
|
use_hashcode = false #options.key?(:use_hashcode) || true
|
270
284
|
filename = filename.gsub('/', '-')
|
271
285
|
|
272
|
-
response = savon_client.
|
286
|
+
response = savon_client.call('AddDataFile') do |locals|
|
273
287
|
file_content = Base64.encode64(file.read)
|
274
288
|
# Upload file to webservice
|
275
289
|
if use_hashcode
|
@@ -278,8 +292,8 @@ module Digidoc
|
|
278
292
|
self.embedded_datafiles << datafile
|
279
293
|
hex_sha1 = Digest::SHA1.hexdigest(datafile)
|
280
294
|
digest_value = Base64.encode64(hex_sha1.lines.to_a.pack('H*'))
|
281
|
-
|
282
|
-
'Size' => file.size, 'DigestType' => 'sha1', 'DigestValue' => digest_value
|
295
|
+
locals.message 'Sesscode' => session_code, 'FileName' => filename, 'MimeType' => mime_type, 'ContentType' => 'HASHCODE',
|
296
|
+
'Size' => file.size, 'DigestType' => 'sha1', 'DigestValue' => digest_value
|
283
297
|
else
|
284
298
|
soap.body = {'Sesscode' => session_code, 'FileName' => filename, 'MimeType' => mime_type, 'ContentType' => 'EMBEDDED_BASE64',
|
285
299
|
'Size' => file.size, 'Content' => file_content}
|
@@ -301,12 +315,15 @@ module Digidoc
|
|
301
315
|
end
|
302
316
|
|
303
317
|
def savon_client
|
304
|
-
Savon
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
318
|
+
Savon.client(
|
319
|
+
raise_errors: false,
|
320
|
+
endpoint: self.endpoint_url,
|
321
|
+
namespace: TargetNamespace,
|
322
|
+
open_timeout: 10,
|
323
|
+
ssl_version: :TLSv1,
|
324
|
+
ssl_verify_mode: :none,
|
325
|
+
logger: Client.logger
|
326
|
+
)
|
310
327
|
end
|
311
328
|
|
312
329
|
def datafile(filename, mime_type, size, content, id)
|
@@ -328,11 +345,11 @@ module Digidoc
|
|
328
345
|
|
329
346
|
# Hex ID generator
|
330
347
|
def generate_unique_hex(codeLength)
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
348
|
+
validChars = ("A".."F").to_a + ("0".."9").to_a
|
349
|
+
length = validChars.size
|
350
|
+
hexCode = ''
|
351
|
+
1.upto(codeLength) { |i| hexCode << validChars[rand(length-1)] }
|
352
|
+
hexCode
|
336
353
|
end
|
337
354
|
|
338
355
|
# Generates unique challenge code (consumer token that gets scrumbled by gateway)
|
data/lib/digidoc/version.rb
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Digidoc::Client do
|
4
|
+
describe "#authenticate" do
|
5
|
+
before do
|
6
|
+
@client = Digidoc::Client.new
|
7
|
+
@response = @client.authenticate(phone: phone)
|
8
|
+
end
|
9
|
+
|
10
|
+
let(:phone) {}
|
11
|
+
|
12
|
+
context '303' do
|
13
|
+
let(:phone) { '+37200001' }
|
14
|
+
|
15
|
+
it "returns error" do
|
16
|
+
@response.faultstring.should == '303'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'close_session' do
|
21
|
+
it 'closes session' do
|
22
|
+
@client.close_session
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/spec/spec.opts
ADDED
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
Bundler.setup
|
3
|
+
|
4
|
+
require 'digidoc_client'
|
5
|
+
|
6
|
+
RSpec.configure do |config|
|
7
|
+
config.mock_with :rspec
|
8
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
9
|
+
config.filter_run :focus => true
|
10
|
+
config.run_all_when_everything_filtered = true
|
11
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: digidoc_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tarmo Talu
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httpclient
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
19
|
+
version: 2.3.4
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
26
|
+
version: 2.3.4
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: savon
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 2.4.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 2.4.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: mime-types
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +80,76 @@ dependencies:
|
|
80
80
|
- - '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 1.4.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: guard
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: guard-rspec
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: growl
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - '>='
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - '>='
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rb-fsevent
|
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'
|
83
153
|
description: An easy way to interact with Estonian DigiDoc services.
|
84
154
|
email:
|
85
155
|
- tarmo.talu@gmail.com
|
@@ -89,12 +159,16 @@ extra_rdoc_files: []
|
|
89
159
|
files:
|
90
160
|
- .gitignore
|
91
161
|
- Gemfile
|
162
|
+
- Guardfile
|
92
163
|
- README.markdown
|
93
164
|
- Rakefile
|
94
165
|
- digidoc_client.gemspec
|
95
166
|
- lib/digidoc/client.rb
|
96
167
|
- lib/digidoc/version.rb
|
97
168
|
- lib/digidoc_client.rb
|
169
|
+
- spec/lib/client_spec.rb
|
170
|
+
- spec/spec.opts
|
171
|
+
- spec/spec_helper.rb
|
98
172
|
homepage: http://github.com/tarmotalu/digidoc_client
|
99
173
|
licenses: []
|
100
174
|
metadata: {}
|
@@ -118,4 +192,7 @@ rubygems_version: 2.1.10
|
|
118
192
|
signing_key:
|
119
193
|
specification_version: 4
|
120
194
|
summary: Ruby library to interact with Estonian DigiDoc services.
|
121
|
-
test_files:
|
195
|
+
test_files:
|
196
|
+
- spec/lib/client_spec.rb
|
197
|
+
- spec/spec.opts
|
198
|
+
- spec/spec_helper.rb
|