usps-imis-api 0.6.4 → 0.6.5
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/Gemfile.lock +1 -1
- data/lib/usps/imis/panel/base_panel.rb +45 -21
- data/lib/usps/imis/panel/education.rb +13 -20
- data/lib/usps/imis/panel/vsc.rb +12 -19
- data/lib/usps/imis/version.rb +1 -1
- data/spec/lib/usps/imis/panel/base_panel_spec.rb +6 -0
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2cb3b6691433ac4025d4754b093d3843620e13396cdd61995cce7b8b0c330da5
|
|
4
|
+
data.tar.gz: a46f9929ea1dd7eabf47eb6364768014807129cf495f84748e6cb8d2cb95aa72
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2cf22b22ca0e4c99e450e5805a58a841d462e86fd0b61f54c8ec62abb04d7cd875808f80fb078933490af9db7082b8bc6b88a4f3a1855e266c1aefbd76479516
|
|
7
|
+
data.tar.gz: b666bb26b1ffd36d48fd968c6eeb20a137d91abdf807013716b297c3a2ccb1a8166bf2b1968b4dd9a85dbf5a9114212d521f4235c050948c907b300227cc4444
|
data/Gemfile.lock
CHANGED
|
@@ -60,37 +60,61 @@ module Usps
|
|
|
60
60
|
raise Error::ApiError, "#{self.class.name} must implement #payload(data)"
|
|
61
61
|
end
|
|
62
62
|
|
|
63
|
-
# rubocop:disable Metrics/MethodLength
|
|
64
63
|
def payload_header(data)
|
|
65
|
-
identity_type =
|
|
66
|
-
'System.Collections.ObjectModel.Collection`1[[System.String, mscorlib]], mscorlib'
|
|
67
|
-
|
|
68
64
|
{
|
|
69
65
|
'$type' => 'Asi.Soa.Core.DataContracts.GenericEntityData, Asi.Contracts',
|
|
70
66
|
'EntityTypeName' => business_object,
|
|
71
67
|
'PrimaryParentEntityTypeName' => 'Party',
|
|
72
|
-
'Identity' =>
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
'
|
|
81
|
-
|
|
82
|
-
'
|
|
83
|
-
'
|
|
84
|
-
'$type' => identity_type,
|
|
85
|
-
'$values' => [api.imis_id]
|
|
86
|
-
}
|
|
68
|
+
'Identity' => identity(data[:ordinal]),
|
|
69
|
+
'PrimaryParentIdentity' => primary_parent_identity
|
|
70
|
+
}
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def identity(ordinal = nil)
|
|
74
|
+
{
|
|
75
|
+
'$type' => 'Asi.Soa.Core.DataContracts.IdentityData, Asi.Contracts',
|
|
76
|
+
'EntityTypeName' => business_object,
|
|
77
|
+
'IdentityElements' => {
|
|
78
|
+
'$type' => identity_type,
|
|
79
|
+
'$values' => [api.imis_id, ordinal&.to_s].compact
|
|
87
80
|
}
|
|
88
81
|
}
|
|
89
82
|
end
|
|
90
|
-
# rubocop:enable Metrics/MethodLength
|
|
91
83
|
|
|
92
|
-
def
|
|
84
|
+
def primary_parent_identity
|
|
93
85
|
{
|
|
86
|
+
'$type' => 'Asi.Soa.Core.DataContracts.IdentityData, Asi.Contracts',
|
|
87
|
+
'EntityTypeName' => 'Party',
|
|
88
|
+
'IdentityElements' => {
|
|
89
|
+
'$type' => identity_type,
|
|
90
|
+
'$values' => [api.imis_id]
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def identity_type
|
|
96
|
+
'System.Collections.ObjectModel.Collection`1[[System.String, mscorlib]], mscorlib'
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def properties(data, &)
|
|
100
|
+
@properties = []
|
|
101
|
+
|
|
102
|
+
instance_eval(&)
|
|
103
|
+
|
|
104
|
+
payload_header(data).merge(
|
|
105
|
+
'Properties' => {
|
|
106
|
+
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyDataCollection, Asi.Contracts',
|
|
107
|
+
'$values' => @properties
|
|
108
|
+
}
|
|
109
|
+
)
|
|
110
|
+
ensure
|
|
111
|
+
remove_instance_variable(:@properties)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def property(name, value)
|
|
115
|
+
raise Error::ApiError, 'Must be called within a `properties` block' unless defined?(@properties)
|
|
116
|
+
|
|
117
|
+
@properties << {
|
|
94
118
|
'$type' => 'Asi.Soa.Core.DataContracts.GenericPropertyData, Asi.Contracts',
|
|
95
119
|
'Name' => name,
|
|
96
120
|
'Value' => value
|
|
@@ -12,28 +12,21 @@ module Usps
|
|
|
12
12
|
'ABC_ASC_Educ'
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
# rubocop:disable Metrics/MethodLength
|
|
16
15
|
def payload(data)
|
|
17
|
-
|
|
18
|
-
'
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
property('ABC_Product_Code', data[:type_code]),
|
|
31
|
-
property('ABC_TYPE', data[:abc_type_code] || 'EDUC')
|
|
32
|
-
].compact
|
|
33
|
-
}
|
|
34
|
-
)
|
|
16
|
+
properties(data) do
|
|
17
|
+
property 'ID', api.imis_id
|
|
18
|
+
property 'Ordinal', { '$type' => 'System.Int32', '$value' => data[:ordinal] } if data[:ordinal]
|
|
19
|
+
property 'ABC_EDUC_THRU_DATE', data[:thru_date] || '0001-01-01T00:00:00'
|
|
20
|
+
property 'ABC_ECertificate', data[:certificate]
|
|
21
|
+
property 'ABC_Educ_Description', data[:description]
|
|
22
|
+
property 'ABC_Educ_Effective_Date', data[:effective_date]
|
|
23
|
+
property 'ABC_Educ_Source_System', data[:source]
|
|
24
|
+
property 'ABC_Educ_Transaction_Date', Time.now.strftime('%Y-%m-%dT%H:%I:%S')
|
|
25
|
+
property 'ABC_Other_Code', data[:code]
|
|
26
|
+
property 'ABC_Product_Code', data[:type_code]
|
|
27
|
+
property 'ABC_TYPE', data[:abc_type_code] || 'EDUC'
|
|
28
|
+
end
|
|
35
29
|
end
|
|
36
|
-
# rubocop:enable Metrics/MethodLength
|
|
37
30
|
end
|
|
38
31
|
end
|
|
39
32
|
end
|
data/lib/usps/imis/panel/vsc.rb
CHANGED
|
@@ -12,27 +12,20 @@ module Usps
|
|
|
12
12
|
'ABC_ASC_Vessel_Safety_Checks'
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
# rubocop:disable Metrics/MethodLength
|
|
16
15
|
def payload(data)
|
|
17
|
-
|
|
18
|
-
'
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
property('Thru_Date', "#{data[:year]}-12-31T00:00:00"),
|
|
30
|
-
property('Transaction_Date', Time.now.strftime('%Y-%m-%dT%H:%M:%S'))
|
|
31
|
-
].compact
|
|
32
|
-
}
|
|
33
|
-
)
|
|
16
|
+
properties(data) do
|
|
17
|
+
property 'ID', api.imis_id
|
|
18
|
+
property 'Ordinal', { '$type' => 'System.Int32', '$value' => data[:ordinal] } if data[:ordinal]
|
|
19
|
+
property 'Source_System', 'Manual ITCom Entry'
|
|
20
|
+
property 'ABC_ECertificate', data[:certificate]
|
|
21
|
+
property 'Activity_Type', 'VSC'
|
|
22
|
+
property 'Description', 'Vessel Safety Checks'
|
|
23
|
+
property 'Effective_Date', "#{data[:year]}-12-01T00:00:00"
|
|
24
|
+
property 'Quantity', { '$type' => 'System.Int32', '$value' => data[:count] }
|
|
25
|
+
property 'Thru_Date', "#{data[:year]}-12-31T00:00:00"
|
|
26
|
+
property 'Transaction_Date', Time.now.strftime('%Y-%m-%dT%H:%M:%S')
|
|
27
|
+
end
|
|
34
28
|
end
|
|
35
|
-
# rubocop:enable Metrics/MethodLength
|
|
36
29
|
end
|
|
37
30
|
end
|
|
38
31
|
end
|
data/lib/usps/imis/version.rb
CHANGED
|
@@ -29,4 +29,10 @@ describe Usps::Imis::Panel::BasePanel do
|
|
|
29
29
|
'Usps::Imis::Panel::InvalidPanelWithBusinessObject must implement #payload(data)'
|
|
30
30
|
)
|
|
31
31
|
end
|
|
32
|
+
|
|
33
|
+
it 'does not allow calling property outside of a properties block' do
|
|
34
|
+
expect { described_class.new.send(:property, 'name', 'value') }.to raise_error(
|
|
35
|
+
Usps::Imis::Error::ApiError, 'Must be called within a `properties` block'
|
|
36
|
+
)
|
|
37
|
+
end
|
|
32
38
|
end
|