i_hope_you_die 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (8) hide show
  1. data/Gemfile +10 -0
  2. data/Gemfile.lock +59 -0
  3. data/LICENSE.txt +165 -0
  4. data/README.md +4 -0
  5. data/Rakefile +49 -0
  6. data/VERSION +1 -0
  7. data/lib/i_hope_you_die.rb +191 -0
  8. metadata +137 -0
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'savon'
4
+
5
+ group :development do
6
+ gem "rspec"
7
+ gem "bundler"
8
+ gem "jeweler"
9
+ gem "simplecov"
10
+ end
@@ -0,0 +1,59 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ akami (1.2.0)
5
+ gyoku (>= 0.4.0)
6
+ nokogiri (>= 1.4.0)
7
+ builder (3.2.0)
8
+ diff-lcs (1.2.1)
9
+ git (1.2.5)
10
+ gyoku (1.0.0)
11
+ builder (>= 2.1.2)
12
+ httpi (2.0.2)
13
+ rack
14
+ jeweler (1.8.4)
15
+ bundler (~> 1.0)
16
+ git (>= 1.2.5)
17
+ rake
18
+ rdoc
19
+ json (1.7.7)
20
+ multi_json (1.7.0)
21
+ nokogiri (1.5.6)
22
+ nori (2.0.4)
23
+ rack (1.5.2)
24
+ rake (10.0.3)
25
+ rdoc (4.0.0)
26
+ json (~> 1.4)
27
+ rspec (2.13.0)
28
+ rspec-core (~> 2.13.0)
29
+ rspec-expectations (~> 2.13.0)
30
+ rspec-mocks (~> 2.13.0)
31
+ rspec-core (2.13.1)
32
+ rspec-expectations (2.13.0)
33
+ diff-lcs (>= 1.1.3, < 2.0)
34
+ rspec-mocks (2.13.0)
35
+ savon (2.1.0)
36
+ akami (~> 1.2.0)
37
+ builder (>= 2.1.2)
38
+ gyoku (~> 1.0.0)
39
+ httpi (~> 2.0.2)
40
+ nokogiri (>= 1.4.0)
41
+ nori (~> 2.0.3)
42
+ wasabi (~> 3.0.0)
43
+ simplecov (0.7.1)
44
+ multi_json (~> 1.0)
45
+ simplecov-html (~> 0.7.1)
46
+ simplecov-html (0.7.1)
47
+ wasabi (3.0.0)
48
+ httpi (~> 2.0)
49
+ nokogiri (>= 1.4.0)
50
+
51
+ PLATFORMS
52
+ ruby
53
+
54
+ DEPENDENCIES
55
+ bundler
56
+ jeweler
57
+ rspec
58
+ savon
59
+ simplecov
@@ -0,0 +1,165 @@
1
+ GNU LESSER GENERAL PUBLIC LICENSE
2
+ Version 3, 29 June 2007
3
+
4
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
5
+ Everyone is permitted to copy and distribute verbatim copies
6
+ of this license document, but changing it is not allowed.
7
+
8
+
9
+ This version of the GNU Lesser General Public License incorporates
10
+ the terms and conditions of version 3 of the GNU General Public
11
+ License, supplemented by the additional permissions listed below.
12
+
13
+ 0. Additional Definitions.
14
+
15
+ As used herein, "this License" refers to version 3 of the GNU Lesser
16
+ General Public License, and the "GNU GPL" refers to version 3 of the GNU
17
+ General Public License.
18
+
19
+ "The Library" refers to a covered work governed by this License,
20
+ other than an Application or a Combined Work as defined below.
21
+
22
+ An "Application" is any work that makes use of an interface provided
23
+ by the Library, but which is not otherwise based on the Library.
24
+ Defining a subclass of a class defined by the Library is deemed a mode
25
+ of using an interface provided by the Library.
26
+
27
+ A "Combined Work" is a work produced by combining or linking an
28
+ Application with the Library. The particular version of the Library
29
+ with which the Combined Work was made is also called the "Linked
30
+ Version".
31
+
32
+ The "Minimal Corresponding Source" for a Combined Work means the
33
+ Corresponding Source for the Combined Work, excluding any source code
34
+ for portions of the Combined Work that, considered in isolation, are
35
+ based on the Application, and not on the Linked Version.
36
+
37
+ The "Corresponding Application Code" for a Combined Work means the
38
+ object code and/or source code for the Application, including any data
39
+ and utility programs needed for reproducing the Combined Work from the
40
+ Application, but excluding the System Libraries of the Combined Work.
41
+
42
+ 1. Exception to Section 3 of the GNU GPL.
43
+
44
+ You may convey a covered work under sections 3 and 4 of this License
45
+ without being bound by section 3 of the GNU GPL.
46
+
47
+ 2. Conveying Modified Versions.
48
+
49
+ If you modify a copy of the Library, and, in your modifications, a
50
+ facility refers to a function or data to be supplied by an Application
51
+ that uses the facility (other than as an argument passed when the
52
+ facility is invoked), then you may convey a copy of the modified
53
+ version:
54
+
55
+ a) under this License, provided that you make a good faith effort to
56
+ ensure that, in the event an Application does not supply the
57
+ function or data, the facility still operates, and performs
58
+ whatever part of its purpose remains meaningful, or
59
+
60
+ b) under the GNU GPL, with none of the additional permissions of
61
+ this License applicable to that copy.
62
+
63
+ 3. Object Code Incorporating Material from Library Header Files.
64
+
65
+ The object code form of an Application may incorporate material from
66
+ a header file that is part of the Library. You may convey such object
67
+ code under terms of your choice, provided that, if the incorporated
68
+ material is not limited to numerical parameters, data structure
69
+ layouts and accessors, or small macros, inline functions and templates
70
+ (ten or fewer lines in length), you do both of the following:
71
+
72
+ a) Give prominent notice with each copy of the object code that the
73
+ Library is used in it and that the Library and its use are
74
+ covered by this License.
75
+
76
+ b) Accompany the object code with a copy of the GNU GPL and this license
77
+ document.
78
+
79
+ 4. Combined Works.
80
+
81
+ You may convey a Combined Work under terms of your choice that,
82
+ taken together, effectively do not restrict modification of the
83
+ portions of the Library contained in the Combined Work and reverse
84
+ engineering for debugging such modifications, if you also do each of
85
+ the following:
86
+
87
+ a) Give prominent notice with each copy of the Combined Work that
88
+ the Library is used in it and that the Library and its use are
89
+ covered by this License.
90
+
91
+ b) Accompany the Combined Work with a copy of the GNU GPL and this license
92
+ document.
93
+
94
+ c) For a Combined Work that displays copyright notices during
95
+ execution, include the copyright notice for the Library among
96
+ these notices, as well as a reference directing the user to the
97
+ copies of the GNU GPL and this license document.
98
+
99
+ d) Do one of the following:
100
+
101
+ 0) Convey the Minimal Corresponding Source under the terms of this
102
+ License, and the Corresponding Application Code in a form
103
+ suitable for, and under terms that permit, the user to
104
+ recombine or relink the Application with a modified version of
105
+ the Linked Version to produce a modified Combined Work, in the
106
+ manner specified by section 6 of the GNU GPL for conveying
107
+ Corresponding Source.
108
+
109
+ 1) Use a suitable shared library mechanism for linking with the
110
+ Library. A suitable mechanism is one that (a) uses at run time
111
+ a copy of the Library already present on the user's computer
112
+ system, and (b) will operate properly with a modified version
113
+ of the Library that is interface-compatible with the Linked
114
+ Version.
115
+
116
+ e) Provide Installation Information, but only if you would otherwise
117
+ be required to provide such information under section 6 of the
118
+ GNU GPL, and only to the extent that such information is
119
+ necessary to install and execute a modified version of the
120
+ Combined Work produced by recombining or relinking the
121
+ Application with a modified version of the Linked Version. (If
122
+ you use option 4d0, the Installation Information must accompany
123
+ the Minimal Corresponding Source and Corresponding Application
124
+ Code. If you use option 4d1, you must provide the Installation
125
+ Information in the manner specified by section 6 of the GNU GPL
126
+ for conveying Corresponding Source.)
127
+
128
+ 5. Combined Libraries.
129
+
130
+ You may place library facilities that are a work based on the
131
+ Library side by side in a single library together with other library
132
+ facilities that are not Applications and are not covered by this
133
+ License, and convey such a combined library under terms of your
134
+ choice, if you do both of the following:
135
+
136
+ a) Accompany the combined library with a copy of the same work based
137
+ on the Library, uncombined with any other library facilities,
138
+ conveyed under the terms of this License.
139
+
140
+ b) Give prominent notice with the combined library that part of it
141
+ is a work based on the Library, and explaining where to find the
142
+ accompanying uncombined form of the same work.
143
+
144
+ 6. Revised Versions of the GNU Lesser General Public License.
145
+
146
+ The Free Software Foundation may publish revised and/or new versions
147
+ of the GNU Lesser General Public License from time to time. Such new
148
+ versions will be similar in spirit to the present version, but may
149
+ differ in detail to address new problems or concerns.
150
+
151
+ Each version is given a distinguishing version number. If the
152
+ Library as you received it specifies that a certain numbered version
153
+ of the GNU Lesser General Public License "or any later version"
154
+ applies to it, you have the option of following the terms and
155
+ conditions either of that published version or of any later version
156
+ published by the Free Software Foundation. If the Library as you
157
+ received it does not specify a version number of the GNU Lesser
158
+ General Public License, you may choose any version of the GNU Lesser
159
+ General Public License ever published by the Free Software Foundation.
160
+
161
+ If the Library as you received it specifies that a proxy can decide
162
+ whether future versions of the GNU Lesser General Public License shall
163
+ apply, that proxy's public statement of acceptance of any version is
164
+ permanent authorization for you to choose that version for the
165
+ Library.
@@ -0,0 +1,4 @@
1
+ i_hope_you_die
2
+ --------------
3
+
4
+ Ugly as hell first ruby open source eWuś interface.
@@ -0,0 +1,49 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
12
+ require 'rake'
13
+
14
+ require 'jeweler'
15
+ Jeweler::Tasks.new do |gem|
16
+ # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
+ gem.name = "i_hope_you_die"
18
+ gem.homepage = "http://github.com/akwiatkowski/i_hope_you_die"
19
+ gem.license = "LGPLv3"
20
+ gem.summary = %Q{eWuś}
21
+ gem.description = %Q{Check if patient has paid for health care in Poland}
22
+ gem.email = "bobikx@poczta.fm"
23
+ gem.authors = ["Aleksander Kwiatkowski"]
24
+ # dependencies defined in Gemfile
25
+
26
+ gem.files = FileList[
27
+ "[A-Z]*", "{bin,generators,lib,test}/**/*"
28
+ ]
29
+ end
30
+ Jeweler::RubygemsDotOrgTasks.new
31
+
32
+ require 'rspec/core'
33
+ require 'rspec/core/rake_task'
34
+ RSpec::Core::RakeTask.new(:spec) do |spec|
35
+ spec.pattern = FileList['spec/**/*_spec.rb']
36
+ end
37
+
38
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
39
+ spec.pattern = 'spec/**/*_spec.rb'
40
+ spec.rcov = true
41
+ end
42
+
43
+ task :default => :spec
44
+
45
+ desc "Run RSpec with code coverage"
46
+ task :coverage do
47
+ `rake spec COVERAGE=true`
48
+ #`open coverage/index.html`
49
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.0
@@ -0,0 +1,191 @@
1
+ # encoding: utf-8
2
+
3
+ require "savon"
4
+
5
+ module Savon
6
+ class Builder
7
+ def self.forced_output=(forced_output)
8
+ @@forced_output = forced_output
9
+ end
10
+
11
+ def self.clear_forced_output
12
+ @@forced_output = nil
13
+ end
14
+
15
+ def to_s
16
+ if defined? @@forced_output and not @@forced_output.nil?
17
+ @@forced_output
18
+ else
19
+ super
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ class IHopeYouDie
26
+
27
+ WSDL_PROD_AUTH = "https://ewus.nfz.gov.pl/ws-broker-server-ewus/services/Auth?wsdl"
28
+ WSDL_PROD_BROK = "https://ewus.nfz.gov.pl/ws-broker-server-ewus/services/ServiceBroker?wsdl"
29
+ WSDL_TEST_AUTH = "https://ewus.nfz.gov.pl/ws-broker-server-ewus-auth-test/services/Auth?wsdl"
30
+ WSDL_TEST_BROK = "https://ewus.nfz.gov.pl/ws-broker-server-ewus-auth-test/services/ServiceBroker?wsdl"
31
+
32
+ def initialize
33
+ @prod = true
34
+ @domain = '15' # '01'
35
+ @login_type = ''
36
+ @ident_string = ''
37
+
38
+ @login = 'TEST1'
39
+ @password = 'qwerty!@#'
40
+ end
41
+
42
+ attr_accessor :prod, :domain, :login_type, :ident_string, :login, :password
43
+
44
+ def wsdl_auth
45
+ if @prod
46
+ WSDL_PROD_AUTH
47
+ else
48
+ WSDL_TEST_AUTH
49
+ end
50
+ end
51
+
52
+ def wsdl_brok
53
+ if @prod
54
+ WSDL_PROD_BROK
55
+ else
56
+ WSDL_TEST_BROK
57
+ end
58
+ end
59
+
60
+ def domain_string
61
+ @domain.to_s || '01'
62
+ end
63
+
64
+ def login_type
65
+ @login_type || 'SWD'
66
+ end
67
+
68
+ def ident_string
69
+ @ident_string || '123456789'
70
+ end
71
+
72
+ def login
73
+ @login || 'TEST'
74
+ end
75
+
76
+ def password
77
+ @password || 'qwerty!@#'
78
+ end
79
+
80
+ def login_xml
81
+ s = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:auth="http://xml.kamsoft.pl/ws/kaas/login_types"> <soapenv:Header/> <soapenv:Body> <auth:login> <auth:credentials>'
82
+ unless domain_string.to_s == ''
83
+ s += ' <auth:item> <auth:name>domain</auth:name> <auth:value><auth:stringValue>' + domain_string + '</auth:stringValue></auth:value> </auth:item>'
84
+ end
85
+ unless login_type.to_s == ''
86
+ s += ' <auth:item> <auth:name>type</auth:name> <auth:value><auth:stringValue>' + login_type + '</auth:stringValue></auth:value> </auth:item>'
87
+ end
88
+ unless ident_string.to_s == ''
89
+ s += ' <auth:item> <auth:name>idntSwd</auth:name> <auth:value><auth:stringValue>' + ident_string + '</auth:stringValue></auth:value> </auth:item>'
90
+ end
91
+ unless login.to_s == ''
92
+ s += ' <auth:item> <auth:name>login</auth:name> <auth:value><auth:stringValue>' + login + '</auth:stringValue></auth:value> </auth:item>'
93
+ end
94
+ s += ' </auth:credentials> <auth:password>' + password + '</auth:password> </auth:login> </soapenv:Body> </soapenv:Envelope>'
95
+ return s
96
+ end
97
+
98
+ def brok_date
99
+ '2008-09-12T09:37:36.406+01:00'
100
+ end
101
+
102
+ def session_id
103
+ @session_id
104
+ end
105
+
106
+ def session_token
107
+ @session_token
108
+ end
109
+
110
+ def cwu_xml(pesel)
111
+ '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:com="http://xml.kamsoft.pl/ws/common" xmlns:brok="http://xml.kamsoft.pl/ws/broker"> <soapenv:Header> <com:session id="' + session_id + '" xmlns:ns1="http://xml.kamsoft.pl/ws/common"/> <com:authToken id="' + session_token + '" xmlns:ns1="http://xml.kamsoft.pl/ws/common"/> </soapenv:Header> <soapenv:Body> <brok:executeService> <com:location> <com:namespace>nfz.gov.pl/ws/broker/cwu</com:namespace> <com:localname>checkCWU</com:localname> <com:version>2.0</com:version> </com:location> <brok:date>' + brok_date + '</brok:date> <brok:payload> <brok:textload> <ewus:status_cwu_pyt xmlns:ewus="https://ewus.nfz.gov.pl/ws/broker/ewus/status_cwu/v2"> <ewus:numer_pesel>' + pesel + '</ewus:numer_pesel> <ewus:system_swiad nazwa="eWUŚ" wersja="2012.07.1.0"/> </ewus:status_cwu_pyt> </brok:textload> </brok:payload> </brok:executeService> </soapenv:Body> </soapenv:Envelope>'
112
+ end
113
+
114
+ def auth!
115
+ client_login = Savon::Client.new(wsdl: wsdl_auth)
116
+ Savon::Builder.forced_output = login_xml
117
+ response = client_login.call(:login)
118
+ Savon::Builder.clear_forced_output
119
+
120
+ login_doc = response.doc
121
+
122
+ # get token and session id
123
+ h = Hash.new
124
+ login_doc.search('//soapenv:Envelope/soapenv:Header/*').each do |n|
125
+ h[n.name] = n.attributes['id'].to_s
126
+ end
127
+ @session_token = h['authToken']
128
+ @session_id = h['session']
129
+ end
130
+
131
+ def cwu_for_pesel(pesel)
132
+ #puts "PESEL #{pesel}"
133
+
134
+ xml = cwu_xml(pesel)
135
+
136
+ puts "\n\n\n\n#{xml}\n\n\n"
137
+
138
+ client = Savon::Client.new(wsdl: wsdl_brok)
139
+ Savon::Builder.forced_output = xml
140
+ response = client.call(:execute_service)
141
+ Savon::Builder.clear_forced_output
142
+
143
+ doc = response.doc
144
+ return parse_cwu_response(doc)
145
+ end
146
+
147
+ def parse_cwu_response(doc)
148
+ # fuck this shit.. regexp
149
+
150
+ h = Hash.new
151
+
152
+ keys = {
153
+ time: 'ns3:date',
154
+ cwu_status: 'ns2:status_cwu',
155
+ pesel: 'ns2:numer_pesel',
156
+ id_swiad: 'ns2:id_swiad',
157
+ id_ow: 'ns2:id_ow',
158
+ id_operatora: 'ns2:id_operatora',
159
+ time_valid_to: 'ns2:data_waznosci_potwierdzenia',
160
+ status_ubezp: 'ns2:status_ubezp',
161
+ name: 'ns2:imie',
162
+ surname: 'ns2:nazwisko'
163
+ }
164
+
165
+ s = doc.to_s
166
+ keys.keys.each do |k|
167
+ if s =~ /<#{keys[k]}>([^<]*)<\/#{keys[k]}>/
168
+ h[k] = $1.to_s
169
+ end
170
+ end
171
+
172
+ if s =~ /<ns2:status_cwu_odp([^>]+)>/
173
+ t = $1
174
+
175
+ if t =~ /id_operacji="([^"]+)"/
176
+ h[:operation_id] = $1
177
+ end
178
+
179
+ if t =~ /data_czas_operacji="([^"]+)"/
180
+ h[:operation_time] = $1
181
+ end
182
+ end
183
+
184
+ return h
185
+ end
186
+
187
+ def check_pesels(pesels)
188
+ pesels = [pesels] unless pesels.kind_of?(Array)
189
+ return pesels.collect { |pesel| cwu_for_pesel(pesel) }
190
+ end
191
+ end
metadata ADDED
@@ -0,0 +1,137 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: i_hope_you_die
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Aleksander Kwiatkowski
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: savon
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: bundler
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: jeweler
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: simplecov
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ description: Check if patient has paid for health care in Poland
95
+ email: bobikx@poczta.fm
96
+ executables: []
97
+ extensions: []
98
+ extra_rdoc_files:
99
+ - LICENSE.txt
100
+ - README.md
101
+ files:
102
+ - Gemfile
103
+ - Gemfile.lock
104
+ - LICENSE.txt
105
+ - README.md
106
+ - Rakefile
107
+ - VERSION
108
+ - lib/i_hope_you_die.rb
109
+ homepage: http://github.com/akwiatkowski/i_hope_you_die
110
+ licenses:
111
+ - LGPLv3
112
+ post_install_message:
113
+ rdoc_options: []
114
+ require_paths:
115
+ - lib
116
+ required_ruby_version: !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ segments:
123
+ - 0
124
+ hash: -3219606245949447311
125
+ required_rubygems_version: !ruby/object:Gem::Requirement
126
+ none: false
127
+ requirements:
128
+ - - ! '>='
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ requirements: []
132
+ rubyforge_project:
133
+ rubygems_version: 1.8.24
134
+ signing_key:
135
+ specification_version: 3
136
+ summary: eWuś
137
+ test_files: []