restful-capabilities 0.0.2

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.
Files changed (20) hide show
  1. checksums.yaml +7 -0
  2. data/Rakefile +111 -0
  3. data/bin/razorrisk-microservice-capabilities +57 -0
  4. data/lib/razor_risk/cassini/applications/microservices/restful/capabilities/app.rb +306 -0
  5. data/lib/razor_risk/cassini/applications/microservices/restful/capabilities/version.rb +43 -0
  6. data/lib/razor_risk/cassini/applications/microservices/restful/capabilities.rb +17 -0
  7. data/lib/razor_risk/cassini/applications/route_verb_adaptors/capabilities/data_subject_get.rb +65 -0
  8. data/lib/razor_risk/cassini/applications/route_verb_adaptors/capabilities/data_subjects_get.rb +59 -0
  9. data/lib/razor_risk/cassini/applications/route_verb_adaptors/capabilities/get_handler_mixin.rb +159 -0
  10. data/lib/razor_risk/cassini/applications/route_verb_adaptors/capabilities/group_get.rb +65 -0
  11. data/lib/razor_risk/cassini/applications/route_verb_adaptors/capabilities/group_users_get.rb +65 -0
  12. data/lib/razor_risk/cassini/applications/route_verb_adaptors/capabilities/groups_get.rb +59 -0
  13. data/lib/razor_risk/cassini/applications/route_verb_adaptors/capabilities/subject_get.rb +65 -0
  14. data/lib/razor_risk/cassini/applications/route_verb_adaptors/capabilities/subjects_get.rb +59 -0
  15. data/lib/razor_risk/cassini/applications/route_verb_adaptors/capabilities/user_get.rb +65 -0
  16. data/lib/razor_risk/cassini/applications/route_verb_adaptors/capabilities/users_get.rb +59 -0
  17. data/lib/razor_risk/cassini/applications/route_verb_adaptors/capabilities.rb +24 -0
  18. data/test/unit/adapters/tc_get_handler_mixin.rb +342 -0
  19. data/test/unit/microservice/tc_app.rb +765 -0
  20. metadata +254 -0
@@ -0,0 +1,159 @@
1
+ # encoding: UTF-8
2
+
3
+ # ######################################################################## #
4
+ #
5
+ # Mixin for all Capabilities microservice's get route handlers.
6
+ #
7
+ # Copyright (c) 2019 Razor Risk Technologies Pty Limited. All rights reserved.
8
+ #
9
+ # ######################################################################## #
10
+
11
+
12
+ # ##########################################################################
13
+ # requires
14
+
15
+ require 'razor_risk/razor/connectivity/entity_connectors/exceptions'
16
+ require 'razor_risk/razor/connectivity/razor_3/entity_connectors/capabilities_connector'
17
+
18
+ require 'razor_risk/cassini/util/conversion_util'
19
+
20
+ require 'pantheios'
21
+
22
+
23
+ # ##########################################################################
24
+ # modules
25
+
26
+ module RazorRisk
27
+ module Cassini
28
+ module Applications
29
+ module RouteVerbAdaptors
30
+ module Capabilities
31
+
32
+
33
+ # ##########################################################################
34
+ # Get Handler Mixin
35
+
36
+ # This ia a mixin module that provides the implementation for handling a get
37
+ # capabilities request.
38
+ #
39
+ # @note Methods in this module should not be used directly, only as methods
40
+ # on handler classes.
41
+ module GetHandlerMixin
42
+
43
+ include ::RazorRisk::Cassini::Util::ConversionUtil
44
+
45
+ include ::RazorRisk::Razor::Connectivity::EntityConnectors::Exceptions
46
+ include ::RazorRisk::Razor::Connectivity::Razor3::EntityConnectors
47
+
48
+ include ::Pantheios
49
+
50
+ HTTP_VERB = :get
51
+ HTTP_ACCEPTS = %w{
52
+ application/xml
53
+ application/json
54
+ text/xml
55
+ }
56
+ QUERY_PARAMETERS = %w{
57
+ }
58
+ ErrorHeaders = {
59
+ 'Content-Type' => 'text/plain',
60
+ }
61
+
62
+ # Handles a GET capabilities request.
63
+ #
64
+ # @param env [::Hash] The Rack request environment (@see
65
+ # Rack::Request#env).
66
+ # @param params [::Hash] Validated query parameters (@see
67
+ # ValidateQueryParametersMixin#validate_query_parameters)
68
+ # @param request [::Sinatra::Request] The request to be handled.
69
+ # @param response [::Sinatra::Response] The response object that will be
70
+ # returned.
71
+ #
72
+ # @yield [ec] Gives the entity connector to be used to perform the Razor
73
+ # Request.
74
+ # @yieldparam [CapabilitiesConnector] The entity connector.
75
+ # @yieldreturn [RazorRisk::Core::QualifiedResult] The qulified result of
76
+ # the request.
77
+ def handle env, params, request, response, &block
78
+
79
+ trace ParamNames[ :env, :params, :request, :response ], env, params, request, response
80
+
81
+ request_options = settings.request_options
82
+
83
+ cr = get_required_credentials
84
+ rr = settings.razor_requester
85
+ ec = CapabilitiesConnector.new(
86
+ rr,
87
+ credentials: cr,
88
+ **request_options
89
+ )
90
+
91
+ # Send reqest
92
+ begin
93
+ qr = yield(ec)
94
+ rescue ::ArgumentError, ::NameError, ::NoMethodError, ::TypeError => x
95
+ log :failure, "exception (#{x.class}): #{x}"
96
+ raise
97
+ rescue UnexpectedServerResponseException => x
98
+ log :failure, "exception (#{x.class}): #{x}"
99
+ halt 500, ErrorHeaders, "Server Error"
100
+ end
101
+
102
+ log :debug1, "qr(#{qr.class})='#{qr}'"
103
+
104
+ r = qr.result
105
+
106
+ # check result
107
+ unless qr.succeeded?
108
+
109
+ if qr.failure_qualifier.reasons.lookup?('RZ0011')
110
+ r = qr.failure_qualifier.reasons.lookup?('RZ0011')
111
+ reasons = qr.failure_qualifier.reasons.join("\n")
112
+ log :debug1, "failed to retrieve capabilities; #{reasons}"
113
+ halt 404, ErrorHeaders, "#{r.message}: #{r.details}"
114
+ elsif !qr.failure_qualifier.reasons.empty?
115
+ reasons = qr.failure_qualifier.reasons.join("\n")
116
+ log :warning, "Failed to retrieve capabilities; #{reasons}"
117
+ halt 500, ErrorHeaders, 'Server Error'
118
+ elsif r.nil?
119
+ log :debug1, 'failed to retrieve capabilities'
120
+ halt 404, ErrorHeaders, "Capabilities not found"
121
+ else
122
+ log :warning, "Failed to retrieve capabilities for an unknown reason #{r}"
123
+ halt 500, ErrorHeaders, 'Server Error'
124
+ end
125
+ end
126
+
127
+ # return result
128
+ status 200
129
+ if request.accept?('text/xml')
130
+ log :debug1, 'text/xml'
131
+ content_type 'text/xml'
132
+ r.to_s
133
+ elsif request.accept?('application/xml')
134
+ log :debug1, 'application/xml'
135
+ content_type 'application/xml'
136
+ r.to_s
137
+ elsif request.accept?('application/json')
138
+ log :debug1, 'application/json'
139
+ content_type 'application/json'
140
+ convert_XML_to_JSON r, { scheme: :gdata }
141
+ else
142
+ log :violation, "unexpected failure to match given 'Accept' header '#{request.accept}'"
143
+ halt 500, ErrorHeaders, 'No supported Accept types'
144
+ end
145
+ end
146
+ end # class GetHandlerMixin
147
+
148
+ # ##########################################################################
149
+ # modules
150
+
151
+ end # module Portfolios
152
+ end # module RouteVerbAdaptors
153
+ end # module Applications
154
+ end # module Cassini
155
+ end # module RazorRisk
156
+
157
+ # ############################## end of file ############################# #
158
+
159
+
@@ -0,0 +1,65 @@
1
+ # encoding: UTF-8
2
+
3
+ # ######################################################################## #
4
+ #
5
+ # Adaptor for Capabilities microservice's GET group.
6
+ #
7
+ # Copyright (c) 2019 Razor Risk Technologies Pty Limited. All rights reserved.
8
+ #
9
+ # ######################################################################## #
10
+
11
+
12
+ # ##########################################################################
13
+ # requires
14
+
15
+ require 'razor_risk/cassini/applications/rest_framework/verb_handler'
16
+ require 'razor_risk/cassini/applications/route_verb_adaptors/capabilities/get_handler_mixin'
17
+
18
+ require 'pantheios'
19
+
20
+ # ##########################################################################
21
+ # module
22
+
23
+ module RazorRisk
24
+ module Cassini
25
+ module Applications
26
+ module RouteVerbAdaptors
27
+ module Capabilities
28
+
29
+
30
+ # ##########################################################################
31
+ # GroupGet
32
+
33
+ class GroupGet < RESTFramework::VerbHandler
34
+
35
+ include GetHandlerMixin
36
+
37
+ ROUTE_VARIABLES = %w{
38
+ id
39
+ }
40
+
41
+ def handle env, params, request, response
42
+
43
+ trace ParamNames[ :env, :params, :request, :response ], env, params, request, response
44
+
45
+ id = params['id']
46
+
47
+ super do |ec|
48
+ ec.get_group id, indicate_result_by: :qualified_result
49
+ end
50
+ end
51
+ end # class GroupGet
52
+
53
+
54
+ # ##########################################################################
55
+ # module
56
+
57
+ end # module Capabilities
58
+ end # module RouteVerbAdaptors
59
+ end # module Applications
60
+ end # module Cassini
61
+ end # module RazorRisk
62
+
63
+ # ############################## end of file ############################# #
64
+
65
+
@@ -0,0 +1,65 @@
1
+ # encoding: UTF-8
2
+
3
+ # ######################################################################## #
4
+ #
5
+ # Adaptor for Capabilities microservice's GET groups.
6
+ #
7
+ # Copyright (c) 2019 Razor Risk Technologies Pty Limited. All rights reserved.
8
+ #
9
+ # ######################################################################## #
10
+
11
+
12
+ # ##########################################################################
13
+ # requires
14
+
15
+ require 'razor_risk/cassini/applications/rest_framework/verb_handler'
16
+ require 'razor_risk/cassini/applications/route_verb_adaptors/capabilities/get_handler_mixin'
17
+
18
+ require 'pantheios'
19
+
20
+ # ##########################################################################
21
+ # module
22
+
23
+ module RazorRisk
24
+ module Cassini
25
+ module Applications
26
+ module RouteVerbAdaptors
27
+ module Capabilities
28
+
29
+
30
+ # ##########################################################################
31
+ # GroupsGet
32
+
33
+ class GroupUsersGet < RESTFramework::VerbHandler
34
+
35
+ include GetHandlerMixin
36
+
37
+ ROUTE_VARIABLES = %w{
38
+ group_id
39
+ }
40
+
41
+ def handle env, params, request, response
42
+
43
+ trace ParamNames[ :env, :params, :request, :response ], env, params, request, response
44
+
45
+ group_id = params['group_id']
46
+
47
+ super do |ec|
48
+ ec.get_group_users group_id, indicate_result_by: :qualified_result
49
+ end
50
+ end
51
+ end # class GroupsGet
52
+
53
+
54
+ # ##########################################################################
55
+ # module
56
+
57
+ end # module Capabilities
58
+ end # module RouteVerbAdaptors
59
+ end # module Applications
60
+ end # module Cassini
61
+ end # module RazorRisk
62
+
63
+ # ############################## end of file ############################# #
64
+
65
+
@@ -0,0 +1,59 @@
1
+ # encoding: UTF-8
2
+
3
+ # ######################################################################## #
4
+ #
5
+ # Adaptor for Capabilities microservice's GET groups.
6
+ #
7
+ # Copyright (c) 2019 Razor Risk Technologies Pty Limited. All rights reserved.
8
+ #
9
+ # ######################################################################## #
10
+
11
+
12
+ # ##########################################################################
13
+ # requires
14
+
15
+ require 'razor_risk/cassini/applications/rest_framework/verb_handler'
16
+ require 'razor_risk/cassini/applications/route_verb_adaptors/capabilities/get_handler_mixin'
17
+
18
+ require 'pantheios'
19
+
20
+ # ##########################################################################
21
+ # module
22
+
23
+ module RazorRisk
24
+ module Cassini
25
+ module Applications
26
+ module RouteVerbAdaptors
27
+ module Capabilities
28
+
29
+
30
+ # ##########################################################################
31
+ # GroupsGet
32
+
33
+ class GroupsGet < RESTFramework::VerbHandler
34
+
35
+ include GetHandlerMixin
36
+
37
+ def handle env, params, request, response
38
+
39
+ trace ParamNames[ :env, :params, :request, :response ], env, params, request, response
40
+
41
+ super do |ec|
42
+ ec.get_groups indicate_result_by: :qualified_result
43
+ end
44
+ end
45
+ end # class GroupsGet
46
+
47
+
48
+ # ##########################################################################
49
+ # module
50
+
51
+ end # module Capabilities
52
+ end # module RouteVerbAdaptors
53
+ end # module Applications
54
+ end # module Cassini
55
+ end # module RazorRisk
56
+
57
+ # ############################## end of file ############################# #
58
+
59
+
@@ -0,0 +1,65 @@
1
+ # encoding: UTF-8
2
+
3
+ # ######################################################################## #
4
+ #
5
+ # Adaptor for Capabilities microservice's GET group.
6
+ #
7
+ # Copyright (c) 2019 Razor Risk Technologies Pty Limited. All rights reserved.
8
+ #
9
+ # ######################################################################## #
10
+
11
+
12
+ # ##########################################################################
13
+ # requires
14
+
15
+ require 'razor_risk/cassini/applications/rest_framework/verb_handler'
16
+ require 'razor_risk/cassini/applications/route_verb_adaptors/capabilities/get_handler_mixin'
17
+
18
+ require 'pantheios'
19
+
20
+ # ##########################################################################
21
+ # module
22
+
23
+ module RazorRisk
24
+ module Cassini
25
+ module Applications
26
+ module RouteVerbAdaptors
27
+ module Capabilities
28
+
29
+
30
+ # ##########################################################################
31
+ # SubjectGet
32
+
33
+ class SubjectGet < RESTFramework::VerbHandler
34
+
35
+ include GetHandlerMixin
36
+
37
+ ROUTE_VARIABLES = %w{
38
+ id
39
+ }
40
+
41
+ def handle env, params, request, response
42
+
43
+ trace ParamNames[ :env, :params, :request, :response ], env, params, request, response
44
+
45
+ id = params['id']
46
+
47
+ super do |ec|
48
+ ec.get_subject id, indicate_result_by: :qualified_result
49
+ end
50
+ end
51
+ end # class SubjectGet
52
+
53
+
54
+ # ##########################################################################
55
+ # module
56
+
57
+ end # module Capabilities
58
+ end # module RouteVerbAdaptors
59
+ end # module Applications
60
+ end # module Cassini
61
+ end # module RazorRisk
62
+
63
+ # ############################## end of file ############################# #
64
+
65
+
@@ -0,0 +1,59 @@
1
+ # encoding: UTF-8
2
+
3
+ # ######################################################################## #
4
+ #
5
+ # Adaptor for Capabilities microservice's GET users.
6
+ #
7
+ # Copyright (c) 2019 Razor Risk Technologies Pty Limited. All rights reserved.
8
+ #
9
+ # ######################################################################## #
10
+
11
+
12
+ # ##########################################################################
13
+ # requires
14
+
15
+ require 'razor_risk/cassini/applications/rest_framework/verb_handler'
16
+ require 'razor_risk/cassini/applications/route_verb_adaptors/capabilities/get_handler_mixin'
17
+
18
+ require 'pantheios'
19
+
20
+ # ##########################################################################
21
+ # module
22
+
23
+ module RazorRisk
24
+ module Cassini
25
+ module Applications
26
+ module RouteVerbAdaptors
27
+ module Capabilities
28
+
29
+
30
+ # ##########################################################################
31
+ # SubjectsGet
32
+
33
+ class SubjectsGet < RESTFramework::VerbHandler
34
+
35
+ include GetHandlerMixin
36
+
37
+ def handle env, params, request, response
38
+
39
+ trace ParamNames[ :env, :params, :request, :response ], env, params, request, response
40
+
41
+ super do |ec|
42
+ ec.get_subjects indicate_result_by: :qualified_result
43
+ end
44
+ end
45
+ end # class SubjectsGet
46
+
47
+
48
+ # ##########################################################################
49
+ # module
50
+
51
+ end # module Capabilities
52
+ end # module RouteVerbAdaptors
53
+ end # module Applications
54
+ end # module Cassini
55
+ end # module RazorRisk
56
+
57
+ # ############################## end of file ############################# #
58
+
59
+
@@ -0,0 +1,65 @@
1
+ # encoding: UTF-8
2
+
3
+ # ######################################################################## #
4
+ #
5
+ # Adaptor for Capabilities microservice's GET group.
6
+ #
7
+ # Copyright (c) 2019 Razor Risk Technologies Pty Limited. All rights reserved.
8
+ #
9
+ # ######################################################################## #
10
+
11
+
12
+ # ##########################################################################
13
+ # requires
14
+
15
+ require 'razor_risk/cassini/applications/rest_framework/verb_handler'
16
+ require 'razor_risk/cassini/applications/route_verb_adaptors/capabilities/get_handler_mixin'
17
+
18
+ require 'pantheios'
19
+
20
+ # ##########################################################################
21
+ # module
22
+
23
+ module RazorRisk
24
+ module Cassini
25
+ module Applications
26
+ module RouteVerbAdaptors
27
+ module Capabilities
28
+
29
+
30
+ # ##########################################################################
31
+ # UserGet
32
+
33
+ class UserGet < RESTFramework::VerbHandler
34
+
35
+ include GetHandlerMixin
36
+
37
+ ROUTE_VARIABLES = %w{
38
+ id
39
+ }
40
+
41
+ def handle env, params, request, response
42
+
43
+ trace ParamNames[ :env, :params, :request, :response ], env, params, request, response
44
+
45
+ id = params['id']
46
+
47
+ super do |ec|
48
+ ec.get_user id, indicate_result_by: :qualified_result
49
+ end
50
+ end
51
+ end # class UserGet
52
+
53
+
54
+ # ##########################################################################
55
+ # module
56
+
57
+ end # module Capabilities
58
+ end # module RouteVerbAdaptors
59
+ end # module Applications
60
+ end # module Cassini
61
+ end # module RazorRisk
62
+
63
+ # ############################## end of file ############################# #
64
+
65
+
@@ -0,0 +1,59 @@
1
+ # encoding: UTF-8
2
+
3
+ # ######################################################################## #
4
+ #
5
+ # Adaptor for Capabilities microservice's GET users.
6
+ #
7
+ # Copyright (c) 2019 Razor Risk Technologies Pty Limited. All rights reserved.
8
+ #
9
+ # ######################################################################## #
10
+
11
+
12
+ # ##########################################################################
13
+ # requires
14
+
15
+ require 'razor_risk/cassini/applications/rest_framework/verb_handler'
16
+ require 'razor_risk/cassini/applications/route_verb_adaptors/capabilities/get_handler_mixin'
17
+
18
+ require 'pantheios'
19
+
20
+ # ##########################################################################
21
+ # module
22
+
23
+ module RazorRisk
24
+ module Cassini
25
+ module Applications
26
+ module RouteVerbAdaptors
27
+ module Capabilities
28
+
29
+
30
+ # ##########################################################################
31
+ # UsersGet
32
+
33
+ class UsersGet < RESTFramework::VerbHandler
34
+
35
+ include GetHandlerMixin
36
+
37
+ def handle env, params, request, response
38
+
39
+ trace ParamNames[ :env, :params, :request, :response ], env, params, request, response
40
+
41
+ super do |ec|
42
+ ec.get_users indicate_result_by: :qualified_result
43
+ end
44
+ end
45
+ end # class UsersGet
46
+
47
+
48
+ # ##########################################################################
49
+ # module
50
+
51
+ end # module Capabilities
52
+ end # module RouteVerbAdaptors
53
+ end # module Applications
54
+ end # module Cassini
55
+ end # module RazorRisk
56
+
57
+ # ############################## end of file ############################# #
58
+
59
+
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+
3
+ # ##########################################################################
4
+ #
5
+ # Copyright (c) 2019 Razor Risk Technologies Pty Limited. All rights reserved.
6
+ #
7
+ # ##########################################################################
8
+
9
+ # ##########################################################
10
+ # requires
11
+
12
+ require 'razor_risk/cassini/applications/route_verb_adaptors/capabilities/group_get'
13
+ require 'razor_risk/cassini/applications/route_verb_adaptors/capabilities/groups_get'
14
+ require 'razor_risk/cassini/applications/route_verb_adaptors/capabilities/user_get'
15
+ require 'razor_risk/cassini/applications/route_verb_adaptors/capabilities/users_get'
16
+ require 'razor_risk/cassini/applications/route_verb_adaptors/capabilities/group_users_get'
17
+ require 'razor_risk/cassini/applications/route_verb_adaptors/capabilities/subjects_get'
18
+ require 'razor_risk/cassini/applications/route_verb_adaptors/capabilities/subject_get'
19
+ require 'razor_risk/cassini/applications/route_verb_adaptors/capabilities/data_subjects_get'
20
+ require 'razor_risk/cassini/applications/route_verb_adaptors/capabilities/data_subject_get'
21
+
22
+ # ############################## end of file ############################# #
23
+
24
+