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