restful-snapshots 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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a1d369a3e3bbc7054b2685a4eb770328fd34d1c6
4
+ data.tar.gz: 48d459c9a751e23489b04a870e7444f8a5bee735
5
+ SHA512:
6
+ metadata.gz: 95bb4d1afe8e74aa0890e5d88c4ea346aa60fe6293348721735cdab0fa19243c4bbfeafa0a4b326cf6a6d2050f756fed06380778e4dba31c4c5bc55582fd0a69
7
+ data.tar.gz: 6fbf754141dcd05f91fc2602c2365f5587870c21b71280ab95c7a2b3d2ba8cee63d782288f3e31a200df982c858da3c0451e888370e93662f550acb2dd3c52eb
@@ -0,0 +1,45 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ # ######################################################################## #
5
+ #
6
+ # Main module/entry file for the Snapshots Microservice
7
+ #
8
+ # Copyright (c) 2020 Razor Risk Technologies Pty Limited. All rights reserved.
9
+ #
10
+ # ######################################################################## #
11
+
12
+
13
+ # ##########################################################################
14
+ # requires
15
+
16
+ require 'razor_risk/cassini/diagnostics/zeroth_include'
17
+
18
+ require 'razor_risk/cassini/applications/microservices/restful/snapshots'
19
+ require 'razor_risk/cassini/main'
20
+
21
+ # TODO: This needs to be added to cassini/main
22
+ require 'razor_risk/cassini/common/version'
23
+
24
+
25
+ # ##########################################################################
26
+ # includes
27
+
28
+ include ::RazorRisk::Cassini::Applications::Microservices::RESTful
29
+
30
+
31
+ # ##########################################################################
32
+ # constants
33
+
34
+ PROGRAM_VERSION = Snapshots::VERSION
35
+
36
+
37
+ # ##########################################################################
38
+ # main section
39
+
40
+ TheApp = Snapshots::SnapshotsApp
41
+
42
+
43
+ # ############################## end of file ############################# #
44
+
45
+
@@ -0,0 +1,132 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding: UTF-8
3
+
4
+ # ######################################################################## #
5
+ #
6
+ # Copyright (c) 2020 Razor Risk Technologies Pty Limited. All rights reserved.
7
+ #
8
+ # ######################################################################## #
9
+
10
+
11
+ # ##########################################################################
12
+ # requires
13
+
14
+ require 'razor_risk/cassini/applications/rest_framework/route_verb_dispatcher'
15
+ require 'razor_risk/cassini/applications/route_verb_adaptors/snapshots'
16
+ require 'razor_risk/cassini/applications/secured_microservice'
17
+
18
+ require 'razor_risk/cassini/mixin/razor_response_validator'
19
+
20
+ require 'pantheios'
21
+
22
+
23
+ # ##########################################################################
24
+ # modules
25
+
26
+ module RazorRisk
27
+ module Cassini
28
+ module Applications
29
+ module Microservices
30
+ module RESTful
31
+ module Snapshots
32
+
33
+
34
+ # ##########################################################################
35
+ # application
36
+
37
+ # Sinatra Application for the Snapshot Microservice.
38
+ class SnapshotsApp < SecuredMicroservice
39
+
40
+ # ##########################################################
41
+ # includes
42
+
43
+ include Cassini::Applications::RouteVerbAdaptors::Snapshots
44
+ include Cassini::Applications::RESTFramework::RouteVerbDispatch
45
+ include Cassini::Mixin::RazorResponseValidator
46
+
47
+ include ::Pantheios
48
+
49
+
50
+ # ##########################################################
51
+ # Constants
52
+
53
+ FULL_DESIGNATION = 'Snapshots'
54
+ SHORT_DESIGNATION = 'snapshots'
55
+ SERVICE_TYPE = :microservice
56
+ PROGRAM_FEATURES = {
57
+ has_web_server: true,
58
+ has_host_and_port: true,
59
+ has_razor_connectivity: true,
60
+ authentication: true,
61
+ copyright_year: 2020,
62
+ }
63
+ SUPPORTED_ROUTES = [
64
+ [ '/progress', :get, 'Get the details of all in progress snapshots' ],
65
+ [ '/progress/:id', :get, 'Get the details of a specific snapshot if it is in progress' ],
66
+ ]
67
+ HTTP_ACCEPTS = %w{
68
+ text/html
69
+ application/json
70
+ application/xml
71
+ text/xml
72
+ text/csv
73
+ text/plain
74
+ text/tab-separated-values
75
+ text/tsv
76
+ }
77
+
78
+
79
+ # ##########################################################
80
+ # methods
81
+
82
+ def self.on_init_service options
83
+
84
+ trace ParamNames[ :options ], options
85
+
86
+ raise ArgumentError.new('missing keyword: razor_requester') unless options.has_key? :razor_requester
87
+
88
+ request_options = options[:request_options]
89
+
90
+ set :razor_requester, options[:razor_requester]
91
+ set :request_options, request_options
92
+ end
93
+
94
+
95
+ # ##########################################################
96
+ # routes
97
+
98
+ get '/progress/:id/?' do
99
+
100
+ trace ParamNames[ :request, :params ], request, params
101
+
102
+ dispatch Progress::ItemGet
103
+ end
104
+
105
+ get '/progress/?' do
106
+
107
+ trace ParamNames[ :request, :params ], request, params
108
+
109
+ dispatch Progress::CollectionGet
110
+ end
111
+
112
+ # ##########################################################
113
+ # catch-all hook
114
+
115
+ define_catch_all_handlers
116
+
117
+ end # class App
118
+
119
+
120
+ # ##########################################################################
121
+ # modules
122
+
123
+ end # module Snapshots
124
+ end # module RESTful
125
+ end # module Microservices
126
+ end # module Applications
127
+ end # module Cassini
128
+ end # module RazorRisk
129
+
130
+ # ############################## end of file ############################# #
131
+
132
+
@@ -0,0 +1,47 @@
1
+ # encoding: UTF-8
2
+
3
+ # ######################################################################## #
4
+ #
5
+ # Version for RazorRisk.Cassini.Microservices.RESTful.Snapshots library
6
+ #
7
+ # Copyright (c) 2019 Razor Risk Technologies Pty Limited. All rights reserved.
8
+ #
9
+ # ######################################################################## #
10
+
11
+ module RazorRisk
12
+ module Cassini
13
+ module Applications
14
+ module Microservices
15
+ module RESTful
16
+
17
+ module Snapshots
18
+
19
+ # Current version of the RazorRisk.Cassini.Microservices.RESTful.Snapshots library
20
+ VERSION = '0.0.2'
21
+
22
+ private
23
+ VERSION_PARTS_ = VERSION.split(/[.]/).collect { |n| n.to_i }
24
+ public
25
+ # Major version of the RazorRisk.Cassini.Microservices.RESTful.Snapshots library
26
+ VERSION_MAJOR = VERSION_PARTS_[0]
27
+ # Minor version of the RazorRisk.Cassini.Microservices.RESTful.Snapshots library
28
+ VERSION_MINOR = VERSION_PARTS_[1]
29
+ # Patch version of the RazorRisk.Cassini.Microservices.RESTful.Snapshots library
30
+ VERSION_PATCH = VERSION_PARTS_[2]
31
+ # Commit version of the RazorRisk.Cassini.Microservices.RESTful.Snapshots library
32
+ VERSION_COMMIT = VERSION_PARTS_[3] || 0
33
+
34
+
35
+ # The description of the framework
36
+ DESCRIPTION = "Razor Risk's Cassini Web-framework's Snapshots RESTful microservice"
37
+ end # module Snapshots
38
+
39
+ end # module RESTful
40
+ end # module Microservices
41
+ end # module Applications
42
+ end # module Cassini
43
+ end # module RazorRisk
44
+
45
+ # ############################## end of file ############################# #
46
+
47
+
@@ -0,0 +1,19 @@
1
+ # encoding: utf-8
2
+
3
+ # ##########################################################################
4
+ #
5
+ # Copyright (c) 2020 Razor Risk Technologies Pty Limited. All rights reserved.
6
+ #
7
+ # ##########################################################################
8
+
9
+
10
+ # ##########################################################
11
+ # requires
12
+
13
+ require 'razor_risk/cassini/applications/microservices/restful/snapshots/app'
14
+ require 'razor_risk/cassini/applications/microservices/restful/snapshots/version'
15
+
16
+
17
+ # ############################## end of file ############################# #
18
+
19
+
@@ -0,0 +1,125 @@
1
+ # encoding: UTF-8
2
+
3
+ # ######################################################################## #
4
+ #
5
+ # Adaptor for Snapshots microservice's collection GET verb
6
+ #
7
+ # Copyright (c) 2020 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/mixin/razor_response_validator'
17
+ require 'razor_risk/cassini/util/conversion_util'
18
+
19
+ require 'razor_risk/razor/connectivity/razor_3/entity_connectors/snapshots_connector'
20
+ require 'razor_risk/core/diagnostics/logger'
21
+
22
+ # ##########################################################################
23
+ # module
24
+
25
+ module RazorRisk
26
+ module Cassini
27
+ module Applications
28
+ module RouteVerbAdaptors
29
+ module Snapshots
30
+ module Progress
31
+
32
+
33
+ # ##########################################################################
34
+ # classes
35
+
36
+ class CollectionGet < RESTFramework::VerbHandler
37
+
38
+ # ##########################################################
39
+ # includes
40
+
41
+ include Cassini::Mixin::RazorResponseValidator
42
+ include Cassini::Util::ConversionUtil
43
+
44
+ include Razor::Connectivity::Razor3::EntityConnectors
45
+ include ::RazorRisk::Core::Diagnostics::Logger
46
+
47
+ # ##########################################################
48
+ # Constants
49
+
50
+ public
51
+ HTTP_VERB = :get
52
+ HTTP_ACCEPTS = [
53
+ 'application/xml',
54
+ 'application/json',
55
+ 'text/xml',
56
+ ]
57
+ QUERY_PARAMETERS = []
58
+ ROUTE_VARIABLES = []
59
+
60
+
61
+ # ##########################################################
62
+ # methods
63
+
64
+ def initialize *args, **options
65
+
66
+ @connector_class = options[:connector_class] || SnapshotsConnector
67
+ super
68
+ end
69
+
70
+ def handle env, params, request, response
71
+
72
+ trace ParamNames[ :env, :params, :request, :response ], env, params, request, response
73
+
74
+ ec = @connector_class.new settings.razor_requester, credentials: get_required_credentials
75
+ qr = ec.get_progress indicate_result_by: :qualified_result
76
+ log :debug1, "qr(#{qr.class})='#{qr}'"
77
+
78
+ # Check the request succeeded
79
+ validate_qualified_razor_response qr
80
+ if qr.result.nil?
81
+ error HTTP_STATUS_NAMES::NOT_FOUND, 'No snapshots in progress'
82
+ elsif qr.failed?
83
+ log :warning, 'Failed to retrieve snapshot progress information for an unkown reason'
84
+ error HTTP_STATUS_NAMES::INTERNAL_SERVER_ERROR, 'Oops! Something went wrong'
85
+ end
86
+
87
+ unless qr.result.xpath('snapshotProgress').any?
88
+ error HTTP_STATUS_NAMES::NOT_FOUND, 'No snapshots in progress'
89
+ end
90
+
91
+ status HTTP_STATUS_NAMES::OK
92
+
93
+ if request.accept?('application/xml')
94
+ log :debug1, 'application/xml'
95
+ content_type 'application/xml'
96
+ qr.result.to_s
97
+ elsif request.accept?('text/xml')
98
+ log :debug1, 'text/xml'
99
+ content_type 'text/xml'
100
+ qr.result.to_s
101
+ elsif request.accept?('application/json')
102
+ log :debug1, 'application/json'
103
+ content_type 'application/json'
104
+ convert_XML_to_JSON qr.result, { scheme: :gdata }
105
+ else
106
+ log :violation, "unexpected failure to match given 'Accept' header '#{request.accept}'"
107
+ error HTTP_STATUS_NAMES::INTERNAL_SERVER_ERROR, 'Oops! Something went wrong'
108
+ end
109
+ end
110
+ end # class CollectionGet
111
+
112
+
113
+ # ##########################################################################
114
+ # module
115
+
116
+ end # module Progress
117
+ end # module Snapshots
118
+ end # module RouteVerbAdaptors
119
+ end # module Applications
120
+ end # module Cassini
121
+ end # module RazorRisk
122
+
123
+ # ############################## end of file ############################# #
124
+
125
+
@@ -0,0 +1,134 @@
1
+ # encoding: UTF-8
2
+
3
+ # ######################################################################## #
4
+ #
5
+ # Adaptor for Snapshots microservice's collection GET verb
6
+ #
7
+ # Copyright (c) 2020 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/mixin/razor_response_validator'
17
+ require 'razor_risk/cassini/util/conversion_util'
18
+
19
+ require 'razor_risk/razor/connectivity/razor_3/entity_connectors/snapshots_connector'
20
+ require 'razor_risk/core/diagnostics/logger'
21
+
22
+ require 'xqsr3/conversion/integer_parser'
23
+
24
+
25
+ # ##########################################################################
26
+ # module
27
+
28
+ module RazorRisk
29
+ module Cassini
30
+ module Applications
31
+ module RouteVerbAdaptors
32
+ module Snapshots
33
+ module Progress
34
+
35
+
36
+ # ##########################################################################
37
+ # classes
38
+
39
+ class ItemGet < RESTFramework::VerbHandler
40
+
41
+ # ##########################################################
42
+ # includes
43
+
44
+ include Cassini::Mixin::RazorResponseValidator
45
+ include Cassini::Util::ConversionUtil
46
+
47
+ include Razor::Connectivity::Razor3::EntityConnectors
48
+ include ::RazorRisk::Core::Diagnostics::Logger
49
+
50
+ # ##########################################################
51
+ # Constants
52
+
53
+ public
54
+ HTTP_VERB = :get
55
+ HTTP_ACCEPTS = [
56
+ 'application/xml',
57
+ 'application/json',
58
+ 'text/xml',
59
+ ]
60
+ QUERY_PARAMETERS = []
61
+ ROUTE_VARIABLES = [ 'id' ]
62
+
63
+
64
+ # ##########################################################
65
+ # methods
66
+
67
+ def initialize *args, **options
68
+
69
+ @connector_class = options[:connector_class] || SnapshotsConnector
70
+ super
71
+ end
72
+
73
+ def handle env, params, request, response
74
+
75
+ trace ParamNames[ :env, :params, :request, :response ], env, params, request, response
76
+
77
+ id = ::Xqsr3::Conversion::IntegerParser.to_integer(params['id'], nil: true)
78
+ error HTTP_STATUS_NAMES::UNPROCESSABLE_ENTITY, 'ID must be an integer' unless id
79
+
80
+ ec = @connector_class.new settings.razor_requester, credentials: get_required_credentials
81
+
82
+ qr = ec.get_progress indicate_result_by: :qualified_result
83
+ log :debug1, "qr(#{qr.class})='#{qr}'"
84
+
85
+ # Check the request succeeded
86
+ validate_qualified_razor_response qr
87
+ if qr.result.nil?
88
+ error HTTP_STATUS_NAMES::NOT_FOUND, "Snapshot #{id} is not in progress"
89
+ elsif qr.failed?
90
+ log :warning, "Failed to retrieve snapshot progress information for #{id} for an unkown reason"
91
+ error HTTP_STATUS_NAMES::INTERNAL_SERVER_ERROR, 'Oops! Something went wrong'
92
+ end
93
+
94
+ # Get the specified snapshot
95
+ unless snapshot = qr.result.at_xpath("snapshotProgress[@sysId='#{id}']")
96
+ error HTTP_STATUS_NAMES::NOT_FOUND, "Snapshot #{id} is not in progress"
97
+ end
98
+
99
+ # Set response
100
+ status HTTP_STATUS_NAMES::OK
101
+
102
+ if request.accept?('application/xml')
103
+ log :debug1, 'application/xml'
104
+ content_type 'application/xml'
105
+ snapshot.to_s
106
+ elsif request.accept?('text/xml')
107
+ log :debug1, 'text/xml'
108
+ content_type 'text/xml'
109
+ snapshot.to_s
110
+ elsif request.accept?('application/json')
111
+ log :debug1, 'application/json'
112
+ content_type 'application/json'
113
+ convert_XML_to_JSON snapshot, { scheme: :gdata }
114
+ else
115
+ log :violation, "unexpected failure to match given 'Accept' header '#{request.accept}'"
116
+ error HTTP_STATUS_NAMES::INTERNAL_SERVER_ERROR, 'Oops! Something went wrong'
117
+ end
118
+ end
119
+ end # class ItemGet
120
+
121
+
122
+ # ##########################################################################
123
+ # module
124
+
125
+ end # module Progress
126
+ end # module Snapshots
127
+ end # module RouteVerbAdaptors
128
+ end # module Applications
129
+ end # module Cassini
130
+ end # module RazorRisk
131
+
132
+ # ############################## end of file ############################# #
133
+
134
+
@@ -0,0 +1,19 @@
1
+ # encoding: utf-8
2
+
3
+ # ##########################################################################
4
+ #
5
+ # Copyright (c) 2020 Razor Risk Technologies Pty Limited. All rights reserved.
6
+ #
7
+ # ##########################################################################
8
+
9
+
10
+ # ##########################################################
11
+ # requires
12
+
13
+ require 'razor_risk/cassini/applications/route_verb_adaptors/snapshots/progress/collection_get'
14
+ require 'razor_risk/cassini/applications/route_verb_adaptors/snapshots/progress/item_get'
15
+
16
+
17
+ # ############################## end of file ############################# #
18
+
19
+
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+
3
+ # ##########################################################################
4
+ #
5
+ # Copyright (c) 2020 Razor Risk Technologies Pty Limited. All rights reserved.
6
+ #
7
+ # ##########################################################################
8
+
9
+
10
+ # ##########################################################
11
+ # requires
12
+
13
+ require 'razor_risk/cassini/applications/route_verb_adaptors/snapshots/progress'
14
+
15
+
16
+ # ############################## end of file ############################# #
17
+
18
+
metadata ADDED
@@ -0,0 +1,154 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: restful-snapshots
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Razor Risk
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-06-26 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.26.24
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '1.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 0.26.24
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '1.0'
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.10
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.10
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.23
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.23
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '1.0'
73
+ - !ruby/object:Gem::Dependency
74
+ name: nokogiri
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '1.6'
80
+ type: :runtime
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - "~>"
85
+ - !ruby/object:Gem::Version
86
+ version: '1.6'
87
+ - !ruby/object:Gem::Dependency
88
+ name: pantheios-ruby
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "~>"
92
+ - !ruby/object:Gem::Version
93
+ version: 0.20.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.20.2
101
+ - !ruby/object:Gem::Dependency
102
+ name: xqsr3
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - "~>"
106
+ - !ruby/object:Gem::Version
107
+ version: '0.30'
108
+ type: :runtime
109
+ prerelease: false
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - "~>"
113
+ - !ruby/object:Gem::Version
114
+ version: '0.30'
115
+ description: Razor Risk's Cassini Web-framework's Snapshots RESTful microservice
116
+ email: operations@razor-risk.com
117
+ executables:
118
+ - razorrisk-microservice-snapshots
119
+ extensions: []
120
+ extra_rdoc_files: []
121
+ files:
122
+ - bin/razorrisk-microservice-snapshots
123
+ - lib/razor_risk/cassini/applications/microservices/restful/snapshots.rb
124
+ - lib/razor_risk/cassini/applications/microservices/restful/snapshots/app.rb
125
+ - lib/razor_risk/cassini/applications/microservices/restful/snapshots/version.rb
126
+ - lib/razor_risk/cassini/applications/route_verb_adaptors/snapshots.rb
127
+ - lib/razor_risk/cassini/applications/route_verb_adaptors/snapshots/progress.rb
128
+ - lib/razor_risk/cassini/applications/route_verb_adaptors/snapshots/progress/collection_get.rb
129
+ - lib/razor_risk/cassini/applications/route_verb_adaptors/snapshots/progress/item_get.rb
130
+ homepage: https://razor-risk.com/
131
+ licenses:
132
+ - Nonstandard
133
+ metadata: {}
134
+ post_install_message:
135
+ rdoc_options: []
136
+ require_paths:
137
+ - lib
138
+ required_ruby_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - "~>"
141
+ - !ruby/object:Gem::Version
142
+ version: '2.0'
143
+ required_rubygems_version: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ requirements: []
149
+ rubyforge_project:
150
+ rubygems_version: 2.6.14
151
+ signing_key:
152
+ specification_version: 4
153
+ summary: Razor Risk Cassini Snapshot RESTful microservice
154
+ test_files: []