interface-dsl 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/interface/default_adapter.rb +19 -13
- data/lib/interface/dsl/version.rb +1 -1
- data/lib/interface/dsl.rb +12 -4
- data/lib/interface/errors.rb +1 -0
- data/lib/interface/port_entity.rb +16 -11
- data/lib/interface.rb +2 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b66e4dfaed7be7b755c120bd3cbf66dc7de8887
|
4
|
+
data.tar.gz: b26c5cb82f8e783cb8f3423261bd66b452da8716
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a14b2f8b4e9182d30ebf9d9c0fd226b0b4ab9da17b0d58bc3d7b4d8df6741aca6a7894d6ccd6fda801777fc35fcd46b26541e0c938e62d6e326362ae1b22c030
|
7
|
+
data.tar.gz: cc0809845b843ab66b1fed39cc0caa76354c22698ef7bbc67b9f6587ac230f2f7609ddd0a0d8dd4f1f19e4d919fb5e650cece73ef72c99cf223584314b61c647
|
@@ -1,10 +1,6 @@
|
|
1
1
|
module Interface
|
2
2
|
class DefaultAdapter
|
3
|
-
CallingError = Class.new(StandardError)
|
4
|
-
InterfaceError = Class.new(StandardError)
|
5
|
-
|
6
3
|
extend FactoryMethods
|
7
|
-
|
8
4
|
deffactory :call
|
9
5
|
|
10
6
|
def initialize(callable)
|
@@ -13,7 +9,7 @@ module Interface
|
|
13
9
|
|
14
10
|
def call(*args, &block)
|
15
11
|
unless callable.respond_to?(:call)
|
16
|
-
fail(
|
12
|
+
fail(Interface::Errors::AdaptationError.new("#{callable.class} is not callable!"))
|
17
13
|
end
|
18
14
|
|
19
15
|
_call(*args, &block)
|
@@ -24,14 +20,24 @@ module Interface
|
|
24
20
|
attr_reader :callable
|
25
21
|
|
26
22
|
def _call(*args, &block)
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
23
|
+
status, _result = _handle_request(*args, &block)
|
24
|
+
|
25
|
+
# Response.__ok__(_result)
|
26
|
+
# Response.__error__(_result)
|
27
|
+
Response.public_send("__#{status}__", _result)
|
28
|
+
end
|
29
|
+
|
30
|
+
def _handle_request(*args, &block)
|
31
|
+
_wrap(callable.call(*args, &block))
|
32
|
+
rescue => e
|
33
|
+
[:error, e]
|
34
|
+
end
|
35
|
+
|
36
|
+
def _wrap(result)
|
37
|
+
return [:ok, result] unless result.is_a?(Array)
|
38
|
+
|
39
|
+
status, _result = result
|
40
|
+
status == :ok ? [:ok, _result] : [:error, _result]
|
35
41
|
end
|
36
42
|
end
|
37
43
|
end
|
data/lib/interface/dsl.rb
CHANGED
@@ -10,6 +10,10 @@ module Interface
|
|
10
10
|
@settings ||= configuration_class
|
11
11
|
end
|
12
12
|
|
13
|
+
def returns(result_adapter)
|
14
|
+
@result_adapter = result_adapter
|
15
|
+
end
|
16
|
+
|
13
17
|
def interface(name, &block)
|
14
18
|
if interfaces.key?(name)
|
15
19
|
fail(::Interface::Errors::ImmutableInterfaceError.new("Interface can't be redefined or reopened! Use .extend_api method"))
|
@@ -20,10 +24,10 @@ module Interface
|
|
20
24
|
end)
|
21
25
|
end
|
22
26
|
|
23
|
-
def defpoint(
|
27
|
+
def defpoint(_name, &block)
|
24
28
|
check_top_level_enpoint_policy
|
25
29
|
|
26
|
-
points.merge!(
|
30
|
+
points.merge!(_name => define_entity(_name, &block))
|
27
31
|
end
|
28
32
|
|
29
33
|
def method_missing(meth, *args, &block)
|
@@ -61,6 +65,10 @@ module Interface
|
|
61
65
|
@points ||= Hashie::Mash.new
|
62
66
|
end
|
63
67
|
|
68
|
+
def _interface_adapter
|
69
|
+
@result_adapter || _settings.config.response_adapter
|
70
|
+
end
|
71
|
+
|
64
72
|
def _settings
|
65
73
|
@settings || ::Interface::DefaultSettings
|
66
74
|
end
|
@@ -93,8 +101,8 @@ module Interface
|
|
93
101
|
@print_doc ||= ->(i) { i.doc }
|
94
102
|
end
|
95
103
|
|
96
|
-
def define_entity(
|
97
|
-
::Interface::PortEntity.new(
|
104
|
+
def define_entity(_name, &block)
|
105
|
+
::Interface::PortEntity.new(_name, _interface_adapter).tap { |port| port.instance_eval(&block) }
|
98
106
|
end
|
99
107
|
end
|
100
108
|
end
|
data/lib/interface/errors.rb
CHANGED
@@ -1,8 +1,14 @@
|
|
1
1
|
module Interface
|
2
|
-
class PortEntity
|
2
|
+
class PortEntity
|
3
3
|
N_A = 'N/A'.freeze
|
4
4
|
LIM = ('-' * 48).freeze
|
5
5
|
|
6
|
+
attr_reader :name
|
7
|
+
|
8
|
+
def initialize(name, adapter)
|
9
|
+
@name, @adapter = name, adapter
|
10
|
+
end
|
11
|
+
|
6
12
|
def describe(text)
|
7
13
|
@description = text
|
8
14
|
end
|
@@ -19,16 +25,7 @@ module Interface
|
|
19
25
|
fail(::Interface::Errors::InvalidInputError.new(errors)) if errors.any?
|
20
26
|
end
|
21
27
|
|
22
|
-
|
23
|
-
caller = if !@adapter.nil?
|
24
|
-
@adapter.new(@handler)
|
25
|
-
elsif !default_adapter.nil?
|
26
|
-
default_adapter.new(@handler)
|
27
|
-
else
|
28
|
-
@handler
|
29
|
-
end
|
30
|
-
|
31
|
-
caller.call(*args, &block)
|
28
|
+
_callee.call(*args, &block)
|
32
29
|
end
|
33
30
|
|
34
31
|
def handler(klass)
|
@@ -66,5 +63,13 @@ Returns:
|
|
66
63
|
#{LIM}
|
67
64
|
DOC
|
68
65
|
end
|
66
|
+
|
67
|
+
private
|
68
|
+
|
69
|
+
def _callee
|
70
|
+
return @handler if @adapter.nil?
|
71
|
+
|
72
|
+
@adapter.new(@handler)
|
73
|
+
end
|
69
74
|
end
|
70
75
|
end
|
data/lib/interface.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: interface-dsl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oleksiy Kurnenkov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-validation
|