apralib 0.1.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -0
- data/lib/apralib/apra_service.rb +27 -19
- data/lib/apralib/notification.rb +4 -4
- data/lib/apralib/response.rb +5 -11
- data/lib/apralib/version.rb +1 -1
- data/lib/wsdl/ApurahanSyotto.wsdl +103 -0
- data/spec/lib/apra_service_spec.rb +7 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c622f4562613956c04bd339229bba76d93710f30e759857d5484a25a3e009124
|
4
|
+
data.tar.gz: dcfd5590999ac42db30d87ea0970cd5147f72d44a45d13ab0895f942bbda2f85
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20e87a804bb01d8c5823a3ed5f1c38c4b5e7a1f39a2e99fec1fbb1b8562f97a9ec6b1ea8b6d315410622fbb8e2c9fd84b0cf218a6926da2cd948ef55e881c038
|
7
|
+
data.tar.gz: ab964e22af2019bae50817f17462a686156a1b10c6e89a929fa1643cb34be6c4c0aa458f0b59d8711bd8d7c3b60318d5b4ac1f25b0aed85d2b8087e5e61d990c
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.7.2
|
data/lib/apralib/apra_service.rb
CHANGED
@@ -1,38 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'notification'
|
2
4
|
require_relative 'response'
|
3
5
|
require 'savon'
|
4
6
|
|
5
7
|
module ApraService
|
6
|
-
|
8
|
+
# The main entry point for the library
|
7
9
|
class Client
|
8
|
-
|
9
10
|
def initialize(username, password, proxy = nil)
|
11
|
+
wsdl_file = File.expand_path('../wsdl/ApurahanSyotto.wsdl', __dir__)
|
10
12
|
|
11
|
-
@client = Savon.client(wsdl:
|
13
|
+
@client = Savon.client(wsdl: wsdl_file,
|
12
14
|
wsse_auth: [username, password],
|
13
|
-
endpoint: 'https://
|
14
|
-
proxy: proxy
|
15
|
+
endpoint: 'https://palvelurajapinta.mela.fi/Apurahailmoitukset/ApurahanSyotto',
|
16
|
+
proxy: proxy,
|
17
|
+
follow_redirects: true)
|
18
|
+
end
|
19
|
+
|
20
|
+
def type_or_array_of_type(arg, type, message)
|
21
|
+
raise ArgumentError, 'object cannot be nil' unless arg
|
22
|
+
|
23
|
+
return if arg.is_a?(type) || (arg.is_a?(Array) && arg.all? { |i| i.is_a? type })
|
24
|
+
|
25
|
+
raise ArgumentError, message
|
15
26
|
end
|
16
27
|
|
17
28
|
def send_notifications(notifications)
|
18
|
-
|
19
|
-
|
20
|
-
|
29
|
+
|
30
|
+
type_or_array_of_type(notifications, Notification,
|
31
|
+
'notifications object must be either a Notification object' +
|
32
|
+
'or an array of Notification objects')
|
33
|
+
|
21
34
|
notifications = [notifications] unless notifications.is_a? Array
|
22
|
-
if notifications.count
|
23
|
-
message = {}
|
24
|
-
|
25
|
-
|
26
|
-
|
35
|
+
if notifications.count.positive?
|
36
|
+
message = { apurahailmoitustiedot: notifications.map(&:to_hash) }
|
37
|
+
response = @client.call(:lisaa_apurahat, message: message)
|
38
|
+
raise 'An error occurred while submitting the notification' unless response.success?
|
39
|
+
|
27
40
|
Response.from_hash(response.body)
|
28
41
|
else
|
29
42
|
Response.new
|
30
43
|
end
|
31
44
|
end
|
32
|
-
|
33
|
-
|
34
|
-
|
35
45
|
end
|
36
|
-
|
37
|
-
|
38
|
-
end
|
46
|
+
end
|
data/lib/apralib/notification.rb
CHANGED
@@ -7,8 +7,8 @@ module ApraService
|
|
7
7
|
:work_end_date, :reference, :work_duration_months, :work_duration_days,
|
8
8
|
:work_duration_years, :ignore_work_duration
|
9
9
|
|
10
|
-
NON_NILLABLE_KEYS = [
|
11
|
-
|
10
|
+
NON_NILLABLE_KEYS = %i[purpose expense_amount grant_date granted_to_group work_duration_months
|
11
|
+
work_duration_days work_duration_years grantee amount ignore_work_duration].freeze
|
12
12
|
|
13
13
|
|
14
14
|
def initialize
|
@@ -22,7 +22,7 @@ module ApraService
|
|
22
22
|
|
23
23
|
def to_hash
|
24
24
|
NON_NILLABLE_KEYS.each do |key|
|
25
|
-
raise
|
25
|
+
raise "Variable #{key} cannot be nil" if instance_variable_get("@#{key}").nil?
|
26
26
|
end
|
27
27
|
result = {}
|
28
28
|
result[:kayttotarkoitus] = purpose
|
@@ -33,7 +33,7 @@ module ApraService
|
|
33
33
|
result[:onko_myonnetty_tyoryhmalle] = granted_to_group
|
34
34
|
result[:rahamaara] = amount
|
35
35
|
result[:saajatiedot] = grantee.to_hash
|
36
|
-
result[:sisaltaako_kuluja] =
|
36
|
+
result[:sisaltaako_kuluja] = expense_amount.positive?
|
37
37
|
|
38
38
|
if ignore_work_duration
|
39
39
|
result[:tyon_kesto_kuukausia] = 0
|
data/lib/apralib/response.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
+
module ApraService
|
4
|
+
# The response received from the WebService
|
3
5
|
class Response
|
4
|
-
|
5
6
|
attr_accessor :failed_notifications
|
6
7
|
|
7
8
|
def initialize
|
8
9
|
@failed_notifications = []
|
9
10
|
end
|
10
11
|
|
11
|
-
|
12
12
|
def self.from_hash(hash)
|
13
13
|
puts hash.inspect
|
14
14
|
response = Response.new
|
@@ -16,15 +16,9 @@ module ApraService
|
|
16
16
|
failures = raw_response[:epaonnistuneet_ilmoitukset]
|
17
17
|
if failures
|
18
18
|
failures = [failures] unless failures.is_a? Array
|
19
|
-
response.failed_notifications = failures.map {|notification| NotificationResponse.from_hash(notification) }
|
19
|
+
response.failed_notifications = failures.map { |notification| NotificationResponse.from_hash(notification) }
|
20
20
|
end
|
21
21
|
response
|
22
22
|
end
|
23
|
-
|
24
|
-
|
25
23
|
end
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
end
|
24
|
+
end
|
data/lib/apralib/version.rb
CHANGED
@@ -0,0 +1,103 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<wsdl:definitions name="ApurahanSyotto"
|
3
|
+
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
|
4
|
+
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
|
5
|
+
xmlns:tns="http://palvelurajapinta.mela.fi/WebService/"
|
6
|
+
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
|
7
|
+
targetNamespace="http://palvelurajapinta.mela.fi/WebService/">
|
8
|
+
<wsdl:types>
|
9
|
+
<xs:schema xmlns:tns="http://palvelurajapinta.mela.fi/WebService/"
|
10
|
+
targetNamespace="http://palvelurajapinta.mela.fi/WebService/"
|
11
|
+
xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified"
|
12
|
+
attributeFormDefault="unqualified">
|
13
|
+
<xs:element type="tns:lisaaApurahat" name="lisaaApurahat" />
|
14
|
+
<xs:element type="tns:lisaaApurahatResponse" name="lisaaApurahatResponse" />
|
15
|
+
|
16
|
+
<xs:complexType name="lisaaApurahat">
|
17
|
+
<xs:sequence>
|
18
|
+
<xs:element type="tns:apurahailmoitustiedot" name="apurahailmoitustiedot" minOccurs="0" maxOccurs="unbounded" />
|
19
|
+
</xs:sequence>
|
20
|
+
</xs:complexType>
|
21
|
+
<xs:complexType name="apurahailmoitustiedot">
|
22
|
+
<xs:sequence>
|
23
|
+
<xs:element type="xs:string" name="kayttotarkoitus" />
|
24
|
+
<xs:element type="xs:string" name="kayttotarkoitustarkenne" minOccurs="0" />
|
25
|
+
<xs:element type="xs:decimal" name="kuluosuusrahamaara" minOccurs="0" />
|
26
|
+
<xs:element type="xs:string" name="kuluosuusteksti" minOccurs="0" />
|
27
|
+
<xs:element type="xs:dateTime" name="myontopaatoksenAntopvm" />
|
28
|
+
<xs:element type="xs:boolean" name="onkoMyonnettyTyoryhmalle" />
|
29
|
+
<xs:element type="xs:decimal" name="rahamaara" />
|
30
|
+
<xs:element type="tns:saajatiedot" name="saajatiedot" />
|
31
|
+
<xs:element type="xs:boolean" name="sisaltaakoKuluja" />
|
32
|
+
<xs:element type="xs:int" name="tyonKestoKuukausia" />
|
33
|
+
<xs:element type="xs:int" name="tyonKestoPaivia" />
|
34
|
+
<xs:element type="xs:int" name="tyonKestoVuosia" />
|
35
|
+
<xs:element type="xs:string" name="tyonkestoeikantaa" minOccurs="0" />
|
36
|
+
<xs:element type="xs:dateTime" name="tyoskentelynAlkamispvm" minOccurs="0" />
|
37
|
+
<xs:element type="xs:dateTime" name="tyoskentelynPaattymispvm" minOccurs="0" />
|
38
|
+
<xs:element type="xs:string" name="viite" minOccurs="0" />
|
39
|
+
</xs:sequence>
|
40
|
+
</xs:complexType>
|
41
|
+
<xs:complexType name="saajatiedot">
|
42
|
+
<xs:sequence>
|
43
|
+
<xs:element type="xs:string" name="apurahansaajanosoite" minOccurs="0" />
|
44
|
+
<xs:element type="xs:string" name="apurahansaajanpostinumero" minOccurs="0" />
|
45
|
+
<xs:element type="xs:string" name="etunimi1" />
|
46
|
+
<xs:element type="xs:string" name="etunimi2" minOccurs="0" />
|
47
|
+
<xs:element type="xs:string" name="etunimi3" minOccurs="0" />
|
48
|
+
<xs:element type="tns:HenkilotunnusTyyppi" name="henkilotunnus" />
|
49
|
+
<xs:element type="xs:string" name="sukunimi" />
|
50
|
+
</xs:sequence>
|
51
|
+
</xs:complexType>
|
52
|
+
<xs:complexType name="lisaaApurahatResponse">
|
53
|
+
<xs:sequence>
|
54
|
+
<xs:element type="tns:epaonnistunutIlmoitus" name="epaonnistuneetIlmoitukset" minOccurs="0" maxOccurs="unbounded" />
|
55
|
+
</xs:sequence>
|
56
|
+
</xs:complexType>
|
57
|
+
<xs:complexType name="epaonnistunutIlmoitus">
|
58
|
+
<xs:sequence>
|
59
|
+
<xs:element type="tns:apurahailmoitustiedot" name="ilmoitus" />
|
60
|
+
<xs:element type="xs:string" name="virhe" />
|
61
|
+
</xs:sequence>
|
62
|
+
</xs:complexType>
|
63
|
+
<xs:simpleType name="HenkilotunnusTyyppi">
|
64
|
+
<xs:restriction base="xs:string">
|
65
|
+
<xsd:pattern value="[0-3]\d[01]\d{3}[+\-A]\d{3}[0-9A-FHJ-NPR-Y]"/>
|
66
|
+
</xs:restriction>
|
67
|
+
</xs:simpleType>
|
68
|
+
</xs:schema>
|
69
|
+
</wsdl:types>
|
70
|
+
<wsdl:message name="lisaaApurahatResponse">
|
71
|
+
<wsdl:part name="parameters" element="tns:lisaaApurahatResponse">
|
72
|
+
</wsdl:part>
|
73
|
+
</wsdl:message>
|
74
|
+
<wsdl:message name="lisaaApurahat">
|
75
|
+
<wsdl:part name="parameters" element="tns:lisaaApurahat">
|
76
|
+
</wsdl:part>
|
77
|
+
</wsdl:message>
|
78
|
+
<wsdl:portType name="ApurahanSyotto">
|
79
|
+
<wsdl:operation name="lisaaApurahat">
|
80
|
+
<wsdl:input name="lisaaApurahat" message="tns:lisaaApurahat">
|
81
|
+
</wsdl:input>
|
82
|
+
<wsdl:output name="lisaaApurahatResponse" message="tns:lisaaApurahatResponse">
|
83
|
+
</wsdl:output>
|
84
|
+
</wsdl:operation>
|
85
|
+
</wsdl:portType>
|
86
|
+
<wsdl:binding type="tns:ApurahanSyotto" name="ApurahanSyottoSoapBinding">
|
87
|
+
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
|
88
|
+
<wsdl:operation name="lisaaApurahat">
|
89
|
+
<soap:operation style="document" soapAction="http://palvelurajapinta.mela.fi/WebService/lisaaApurahat" />
|
90
|
+
<wsdl:input name="lisaaApurahat">
|
91
|
+
<soap:body use="literal" />
|
92
|
+
</wsdl:input>
|
93
|
+
<wsdl:output name="lisaaApurahatResponse">
|
94
|
+
<soap:body use="literal" />
|
95
|
+
</wsdl:output>
|
96
|
+
</wsdl:operation>
|
97
|
+
</wsdl:binding>
|
98
|
+
<wsdl:service name="ApurahanSyotto">
|
99
|
+
<wsdl:port name="ApurahanSyottoImplPort" binding="tns:ApurahanSyottoSoapBinding">
|
100
|
+
<soap:address location="http://palvelurajapinta.mela.fi/Apurahailmoitukset/ApurahanSyotto"/>
|
101
|
+
</wsdl:port>
|
102
|
+
</wsdl:service>
|
103
|
+
</wsdl:definitions>
|
@@ -53,7 +53,11 @@ module ApraService
|
|
53
53
|
notification.work_start_date = Date.today
|
54
54
|
notification.work_end_date = Date.today >> 1
|
55
55
|
notification1 = Notification.new
|
56
|
-
|
56
|
+
grantee1 = Grantee.new
|
57
|
+
grantee1.first_names='Matti'
|
58
|
+
grantee1.last_name = 'Matelija'
|
59
|
+
grantee1.ssn = '111111-111C'
|
60
|
+
notification1.grantee = grantee1
|
57
61
|
notification1.granted_to_group = false
|
58
62
|
notification1.expense_amount = 0
|
59
63
|
notification1.amount = 10000
|
@@ -69,9 +73,11 @@ module ApraService
|
|
69
73
|
response = service.send_notifications([notification, notification1])
|
70
74
|
expect(response).not_to be_nil
|
71
75
|
failed_notifications = response.failed_notifications
|
76
|
+
puts(failed_notifications)
|
72
77
|
expect(failed_notifications).not_to be_nil
|
73
78
|
expect(failed_notifications).to be_a Array
|
74
79
|
expect(failed_notifications.count).to eq(1)
|
80
|
+
|
75
81
|
notification_response = failed_notifications[0]
|
76
82
|
expect(notification_response.error).not_to be_nil
|
77
83
|
expect(notification_response.notification.reference).to eq(notification.reference)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: apralib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marco Sandrini
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -89,6 +89,7 @@ extra_rdoc_files: []
|
|
89
89
|
files:
|
90
90
|
- ".gitignore"
|
91
91
|
- ".rubocop.yml"
|
92
|
+
- ".ruby-version"
|
92
93
|
- ".travis.yml"
|
93
94
|
- Gemfile
|
94
95
|
- LICENSE.txt
|
@@ -102,6 +103,7 @@ files:
|
|
102
103
|
- lib/apralib/notification_response.rb
|
103
104
|
- lib/apralib/response.rb
|
104
105
|
- lib/apralib/version.rb
|
106
|
+
- lib/wsdl/ApurahanSyotto.wsdl
|
105
107
|
- spec/lib/apra_service_spec.rb
|
106
108
|
- spec/lib/grantee_spec.rb
|
107
109
|
- spec/spec_helper.rb
|