interface-dsl 0.1.5 → 0.1.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/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
|