safrano 0.6.5 → 0.6.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|