safrano 0.6.5 → 0.6.6
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/lib/odata/complex_type.rb +2 -2
- data/lib/odata/error.rb +17 -0
- data/lib/odata/function_import.rb +17 -0
- data/lib/safrano/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0108c5a48b2cbd994534ba6732f760dec8f8e8becac690d91b3f1960dd6f7836'
|
4
|
+
data.tar.gz: c9b8c3c8a7f7ac3d7db5a12133ba3fdcd4815df5b3dab1d35bfaf449518f8d2c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0068c08576a0d8df023d6990ad691ce73b1d3abd6f3a9cd095b7ae2f9358dc7d33d7ed5d0fdde2503a2829ebeb11ab126961a39d34d12370befbb5814904f7b1'
|
7
|
+
data.tar.gz: cbf6fbdd2d1f4a24ba58b14490dfcfc87e1ffc333ab52b0e334b06742679543a794359f16093f56cc78e7a754724ee3e24f70ec7b7277d3ce6d04af3d1f9ae5f
|
data/lib/odata/complex_type.rb
CHANGED
@@ -81,9 +81,9 @@ module Safrano
|
|
81
81
|
end
|
82
82
|
|
83
83
|
# needed for ComplexType result
|
84
|
-
def to_odata_json(
|
84
|
+
def to_odata_json(req)
|
85
85
|
t = self.class.klassmod.output_template
|
86
|
-
innerh =
|
86
|
+
innerh = req.service.get_entity_odata_h(entity: @value, template: t)
|
87
87
|
innerj = innerh.to_json
|
88
88
|
|
89
89
|
"#{DJ_OPEN}#{innerj}#{DJ_CLOSE}"
|
data/lib/odata/error.rb
CHANGED
@@ -48,6 +48,13 @@ module Safrano
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
+
# used in function import error handling. cf. func import / do_execute_func
|
52
|
+
def self.with_error(result)
|
53
|
+
if result.respond_to?(:error) && (err = result.error)
|
54
|
+
yield err
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
51
58
|
# base module for HTTP errors, when used as a Error Class
|
52
59
|
module ErrorClass
|
53
60
|
include ::Safrano::Contract::Invalid
|
@@ -94,10 +101,20 @@ module Safrano
|
|
94
101
|
# generic http 500 server err
|
95
102
|
class ServerError
|
96
103
|
extend ErrorClass
|
104
|
+
include ErrorInstance
|
97
105
|
HTTP_CODE = 500
|
98
106
|
@msg = 'Server error'
|
99
107
|
end
|
100
108
|
|
109
|
+
class ServiceOperationError
|
110
|
+
extend ErrorClass
|
111
|
+
include ErrorInstance
|
112
|
+
HTTP_CODE = 500
|
113
|
+
def initialize(msg:, sopname: nil)
|
114
|
+
@msg = "Error in service operation #{sopname}: #{msg}"
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
101
118
|
# for outputing Sequel exceptions that we could not prevent
|
102
119
|
class SequelExceptionError < ServerError
|
103
120
|
include ErrorInstance
|
@@ -18,6 +18,7 @@ module Safrano
|
|
18
18
|
def initialize(name)
|
19
19
|
@name = name
|
20
20
|
@http_method = 'GET'
|
21
|
+
@use_contract = false
|
21
22
|
end
|
22
23
|
|
23
24
|
def allowed_transitions
|
@@ -52,6 +53,10 @@ module Safrano
|
|
52
53
|
end
|
53
54
|
alias auto_query_params auto_query_parameters
|
54
55
|
|
56
|
+
def use_contract
|
57
|
+
@use_contract = true
|
58
|
+
end
|
59
|
+
|
55
60
|
def return(klassmod, &proc)
|
56
61
|
raise('Please provide a code block') unless block_given?
|
57
62
|
|
@@ -159,6 +164,18 @@ module Safrano
|
|
159
164
|
def do_execute_func(req)
|
160
165
|
with_transition_validated(req) do
|
161
166
|
result = @proc.call(**@funcparams)
|
167
|
+
|
168
|
+
# (application-)error handling
|
169
|
+
# the result is an Error object or class
|
170
|
+
|
171
|
+
# Note: Sequel::Error exceptions are already
|
172
|
+
# handled on rack app level (cf. the call methode )
|
173
|
+
Safrano::with_error(result) do |error|
|
174
|
+
@error = error
|
175
|
+
return [nil, :error, @error] # this is return from do_execute_func !
|
176
|
+
end
|
177
|
+
|
178
|
+
# non error case
|
162
179
|
[@returning.do_execute_func_result(result, req, @auto_query_params), :run]
|
163
180
|
end
|
164
181
|
end
|
data/lib/safrano/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: safrano
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- oz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|