restful-riskpointdata-domains 0.6.13

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,155 @@
1
+ # encoding: UTF-8
2
+
3
+ # ######################################################################## #
4
+ # File: razor_risk/cassini/applications/route_verb_adaptors/risk_point_data/domains/item_put.rb
5
+ #
6
+ # Purpose: Adaptor for RPD microservice's item PUT verb
7
+ #
8
+ # Author: Matthew Wilson
9
+ #
10
+ # Copyright (c) 2018, Razor Risk Technologies Pty Ltd
11
+ # All rights reserved.
12
+ #
13
+ # ######################################################################## #
14
+
15
+
16
+ # ##########################################################################
17
+ # requires
18
+
19
+ require 'razor_risk/cassini/applications/route_verb_adaptors/utilities/risk_point_data/domains'
20
+
21
+ require 'razor_risk/cassini/applications/rest_framework/verb_handler'
22
+
23
+ require 'razor_risk/razor/connectivity/razor_3/entity_connectors/risk_point_data/domains_connector'
24
+
25
+ require 'razor_risk/core/diagnostics/logger'
26
+
27
+ require 'pantheios'
28
+
29
+ # ##########################################################################
30
+ # module
31
+
32
+ module RazorRisk
33
+ module Cassini
34
+ module Applications
35
+ module RouteVerbAdaptors
36
+ module RiskPointData
37
+ module Domains
38
+
39
+ # ##########################################################################
40
+ # classes
41
+
42
+ class ItemPut < RESTFramework::VerbHandler
43
+
44
+ include ::RazorRisk::Cassini::Applications::RouteVerbAdaptors::Utilities::RiskPointData::Domains
45
+
46
+ include ::RazorRisk::Razor::Connectivity::Razor3::EntityConnectors::RiskPointData
47
+
48
+ include ::RazorRisk::Core::Diagnostics::Logger
49
+
50
+ include ::Pantheios
51
+
52
+ HTTP_VERB = :put
53
+
54
+ HTTP_CONTENT_TYPES = %w{ application/xml text/xml }
55
+
56
+ HTTP_ACCEPTS = %w{ application/xml application/json text/xml }
57
+
58
+ ROUTE_VARIABLES = %w{
59
+
60
+ domain
61
+ id
62
+ }
63
+
64
+ QUERY_PARAMETERS = []
65
+
66
+ def handle env, params, request, response
67
+
68
+ # trace
69
+
70
+ trace ParamNames[ :env, :params, :request, :response ], env, params, request, response
71
+
72
+ # parameters
73
+
74
+ dom = infer_domain(params)
75
+
76
+ id = infer_id(params)
77
+
78
+ # read request body (XML)
79
+ #
80
+ # NOTE: For this handler, the input is required to be XML, and it
81
+ # is required that the document has a single top-level node
82
+ # 'updateRiskPointDomainRecords'
83
+
84
+ request.body.rewind
85
+
86
+ body_text = request.body.read
87
+ rq_body = nil
88
+
89
+ case request.content_type
90
+ when 'application/xml', 'text/xml'
91
+
92
+ rq_body = ::Nokogiri.XML body_text
93
+ else
94
+
95
+ log :violation, "unexpected content-type '#{request.content_type}'"
96
+ end
97
+
98
+ case rq_body.children.count
99
+ when 0
100
+
101
+ halt *[ 400, {}, 'not a valid body' ]
102
+ when 1
103
+ else
104
+
105
+ halt *[ 400, {}, 'too many children' ]
106
+ end
107
+
108
+ # get credentials
109
+
110
+ cr = get_required_credentials
111
+
112
+ # get requester
113
+
114
+ rr = settings.razor_requester
115
+
116
+ # get connector
117
+
118
+ ec = DomainsConnector.new(rr, credentials: cr)
119
+
120
+ # issue request
121
+
122
+ qr = ec.update_record dom, id, rq_body, indicate_result_by: :qualified_result
123
+
124
+ unless qr.succeeded?
125
+
126
+ log :warning, "failed to update risk point data with domain '#{dom}' and id '#{id}'"
127
+
128
+ if r = qr.failure_qualifier.reasons.lookup?('RZ0011')
129
+
130
+ halt *[ 404, {}, "#{r.message}: #{r.details}" ]
131
+ else
132
+
133
+ halt *[ 422, {}, "failed to update risk point data with domain '#{dom}'" ]
134
+ =begin
135
+
136
+ halt *[ 500, {}, qr.failure_qualifier.reasons.join("\n") ]
137
+ =end
138
+ end
139
+ end
140
+ end
141
+ end # class ItemPut
142
+
143
+ # ##########################################################################
144
+ # module
145
+
146
+ end # module Domains
147
+ end # module RiskPointData
148
+ end # module RouteVerbAdaptors
149
+ end # module Applications
150
+ end # module Cassini
151
+ end # module RazorRisk
152
+
153
+ # ############################## end of file ############################# #
154
+
155
+
@@ -0,0 +1,9 @@
1
+
2
+ require 'razor_risk/cassini/applications/route_verb_adaptors/risk_point_data/domains/collection_get'
3
+ require 'razor_risk/cassini/applications/route_verb_adaptors/risk_point_data/domains/item_delete'
4
+ require 'razor_risk/cassini/applications/route_verb_adaptors/risk_point_data/domains/item_get'
5
+ require 'razor_risk/cassini/applications/route_verb_adaptors/risk_point_data/domains/item_post'
6
+ require 'razor_risk/cassini/applications/route_verb_adaptors/risk_point_data/domains/item_put'
7
+ require 'razor_risk/cassini/applications/route_verb_adaptors/risk_point_data/domains/hierarchy_item_get'
8
+ require 'razor_risk/cassini/applications/route_verb_adaptors/risk_point_data/domains/item_audit_get'
9
+ require 'razor_risk/cassini/applications/route_verb_adaptors/risk_point_data/domains/collection_riskpoint_get'
@@ -0,0 +1,95 @@
1
+ # encoding: UTF-8
2
+
3
+ # ######################################################################## #
4
+ # File: razor_risk/cassini/applications/route_verb_adaptors/utilities/risk_point_data/domains.rb
5
+ #
6
+ # Purpose: Utility functions for RiskPointData::Domains Adaptors
7
+ #
8
+ # Author: Matthew Wilson
9
+ #
10
+ # Copyright (c) 2018, Razor Risk Technologies Pty Ltd
11
+ # All rights reserved.
12
+ #
13
+ # ######################################################################## #
14
+
15
+
16
+ # ##########################################################################
17
+ # requires
18
+
19
+ require 'pantheios'
20
+
21
+ require 'base64'
22
+
23
+ require 'razor_risk/core/diagnostics/logger'
24
+
25
+ # ##########################################################################
26
+ # module
27
+
28
+ module RazorRisk
29
+ module Cassini
30
+ module Applications
31
+ module RouteVerbAdaptors
32
+ module Utilities
33
+
34
+ # ##########################################################################
35
+ # classes
36
+
37
+ module RiskPointData
38
+ module Domains
39
+
40
+ include ::Pantheios
41
+ include ::RazorRisk::Core::Diagnostics::Logger
42
+
43
+ def infer_route_element params, element_name
44
+
45
+ trace ParamNames[ :params, :element_name ], params, element_name
46
+
47
+ rtel = params[element_name]
48
+
49
+ return nil if rtel.nil?
50
+
51
+ rtel = rtel.to_s.strip
52
+
53
+ if /^===(.+)===$/ =~ rtel
54
+
55
+ rtel64 = $1
56
+
57
+ begin
58
+
59
+ rtel = Base64.strict_decode64(rtel64).chomp
60
+
61
+ rescue ::ArgumentError => x
62
+
63
+ log :warning, "failed to parse Base-64 in #{element_name} '#{rtel}'"
64
+ end
65
+ end
66
+
67
+ rtel
68
+ end
69
+
70
+ def infer_domain params
71
+
72
+ infer_route_element params, 'domain'
73
+ end
74
+
75
+ def infer_id params
76
+
77
+ infer_route_element params, 'id'
78
+ end
79
+
80
+ end # module Domains
81
+ end # module RiskPointData
82
+
83
+ # ##########################################################################
84
+ # module
85
+
86
+ end # module Utilities
87
+ end # module RouteVerbAdaptors
88
+ end # module Applications
89
+ end # module Cassini
90
+ end # module RazorRisk
91
+
92
+ # ############################## end of file ############################# #
93
+
94
+
95
+
metadata ADDED
@@ -0,0 +1,269 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: restful-riskpointdata-domains
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.6.13
5
+ platform: ruby
6
+ authors:
7
+ - Razor Risk
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-07-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: razorrisk-cassini-common
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.24'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.24.0.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '0.24'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.24.0.1
33
+ - !ruby/object:Gem::Dependency
34
+ name: razorrisk-razor-connectivity
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 0.14.9
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '1.0'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 0.14.9
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '1.0'
53
+ - !ruby/object:Gem::Dependency
54
+ name: razorrisk-razor-connectivity-entityconnectors
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 0.26.22
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '1.0'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 0.26.22
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '1.0'
73
+ - !ruby/object:Gem::Dependency
74
+ name: razorrisk-razor-connectivity-search
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 0.1.0
80
+ - - "<"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.0'
83
+ type: :runtime
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 0.1.0
90
+ - - "<"
91
+ - !ruby/object:Gem::Version
92
+ version: '1.0'
93
+ - !ruby/object:Gem::Dependency
94
+ name: razorrisk-core-diagnostics-extensions
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - "~>"
98
+ - !ruby/object:Gem::Version
99
+ version: '0.2'
100
+ type: :runtime
101
+ prerelease: false
102
+ version_requirements: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - "~>"
105
+ - !ruby/object:Gem::Version
106
+ version: '0.2'
107
+ - !ruby/object:Gem::Dependency
108
+ name: activesupport
109
+ requirement: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - "~>"
112
+ - !ruby/object:Gem::Version
113
+ version: '4.0'
114
+ type: :runtime
115
+ prerelease: false
116
+ version_requirements: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - "~>"
119
+ - !ruby/object:Gem::Version
120
+ version: '4.0'
121
+ - !ruby/object:Gem::Dependency
122
+ name: clasp-ruby
123
+ requirement: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - "~>"
126
+ - !ruby/object:Gem::Version
127
+ version: '0.14'
128
+ type: :runtime
129
+ prerelease: false
130
+ version_requirements: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - "~>"
133
+ - !ruby/object:Gem::Version
134
+ version: '0.14'
135
+ - !ruby/object:Gem::Dependency
136
+ name: json
137
+ requirement: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - "~>"
140
+ - !ruby/object:Gem::Version
141
+ version: '1.8'
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: 1.8.3
145
+ type: :runtime
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - "~>"
150
+ - !ruby/object:Gem::Version
151
+ version: '1.8'
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: 1.8.3
155
+ - !ruby/object:Gem::Dependency
156
+ name: libclimate-ruby
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - "~>"
160
+ - !ruby/object:Gem::Version
161
+ version: '0.10'
162
+ type: :runtime
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - "~>"
167
+ - !ruby/object:Gem::Version
168
+ version: '0.10'
169
+ - !ruby/object:Gem::Dependency
170
+ name: nokogiri
171
+ requirement: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - "~>"
174
+ - !ruby/object:Gem::Version
175
+ version: '1.6'
176
+ type: :runtime
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - "~>"
181
+ - !ruby/object:Gem::Version
182
+ version: '1.6'
183
+ - !ruby/object:Gem::Dependency
184
+ name: pantheios-ruby
185
+ requirement: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - "~>"
188
+ - !ruby/object:Gem::Version
189
+ version: 0.20.2
190
+ type: :runtime
191
+ prerelease: false
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - "~>"
195
+ - !ruby/object:Gem::Version
196
+ version: 0.20.2
197
+ - !ruby/object:Gem::Dependency
198
+ name: sinatra
199
+ requirement: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - "~>"
202
+ - !ruby/object:Gem::Version
203
+ version: 1.4.8
204
+ type: :runtime
205
+ prerelease: false
206
+ version_requirements: !ruby/object:Gem::Requirement
207
+ requirements:
208
+ - - "~>"
209
+ - !ruby/object:Gem::Version
210
+ version: 1.4.8
211
+ - !ruby/object:Gem::Dependency
212
+ name: xqsr3
213
+ requirement: !ruby/object:Gem::Requirement
214
+ requirements:
215
+ - - "~>"
216
+ - !ruby/object:Gem::Version
217
+ version: '0.30'
218
+ type: :runtime
219
+ prerelease: false
220
+ version_requirements: !ruby/object:Gem::Requirement
221
+ requirements:
222
+ - - "~>"
223
+ - !ruby/object:Gem::Version
224
+ version: '0.30'
225
+ description: Razor Risk's Cassini Web-framework's RiskPointData.Domains RESTful microservice
226
+ email: operations@razor-risk.com
227
+ executables:
228
+ - razorrisk-microservice-riskpointdata-domains
229
+ extensions: []
230
+ extra_rdoc_files: []
231
+ files:
232
+ - bin/razorrisk-microservice-riskpointdata-domains
233
+ - lib/razor_risk/cassini/applications/microservices/restful/risk_point_data/domains.rb
234
+ - lib/razor_risk/cassini/applications/microservices/restful/risk_point_data/domains/version.rb
235
+ - lib/razor_risk/cassini/applications/route_verb_adaptors/risk_point_data/domains.rb
236
+ - lib/razor_risk/cassini/applications/route_verb_adaptors/risk_point_data/domains/collection_get.rb
237
+ - lib/razor_risk/cassini/applications/route_verb_adaptors/risk_point_data/domains/collection_riskpoint_get.rb
238
+ - lib/razor_risk/cassini/applications/route_verb_adaptors/risk_point_data/domains/hierarchy_item_get.rb
239
+ - lib/razor_risk/cassini/applications/route_verb_adaptors/risk_point_data/domains/item_audit_get.rb
240
+ - lib/razor_risk/cassini/applications/route_verb_adaptors/risk_point_data/domains/item_delete.rb
241
+ - lib/razor_risk/cassini/applications/route_verb_adaptors/risk_point_data/domains/item_get.rb
242
+ - lib/razor_risk/cassini/applications/route_verb_adaptors/risk_point_data/domains/item_post.rb
243
+ - lib/razor_risk/cassini/applications/route_verb_adaptors/risk_point_data/domains/item_put.rb
244
+ - lib/razor_risk/cassini/applications/route_verb_adaptors/utilities/risk_point_data/domains.rb
245
+ homepage: https://razor-risk.com/
246
+ licenses:
247
+ - Nonstandard
248
+ metadata: {}
249
+ post_install_message:
250
+ rdoc_options: []
251
+ require_paths:
252
+ - lib
253
+ required_ruby_version: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - "~>"
256
+ - !ruby/object:Gem::Version
257
+ version: '2.0'
258
+ required_rubygems_version: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ version: '0'
263
+ requirements: []
264
+ rubyforge_project:
265
+ rubygems_version: 2.6.14
266
+ signing_key:
267
+ specification_version: 4
268
+ summary: Razor Risk Cassini RiskPointData.Domains RESTful microservice
269
+ test_files: []