interface-dsl 0.1.8 → 0.1.9

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4e7ed6627815233c6e044821af68e4391e3c7032
4
- data.tar.gz: 85b439635689a02c98c9b99d93756a818ecb2a93
3
+ metadata.gz: de5d9a271375025375bb25f8d9992136bb797c4f
4
+ data.tar.gz: 24481de4903e288c8ffe6a3405753413003f8a37
5
5
  SHA512:
6
- metadata.gz: a74159e04f03515c80a30bdd28e489d4d265cbdd789663a75f48b975a6b21946896a7f8e893d0264586715cdcfc9e2ab0f98640a4aac863d42164d0a0a79b031
7
- data.tar.gz: dc97073e45255687bd2ac10b71c1ec6284ba3dd3f69d04e7a6d9c2d86cc9311c862f11ae4518a4e97c006c2cb82c7c46ae623234d5c54f8cb41f11a4117462d8
6
+ metadata.gz: d07882d510fa4363c736b483b0a1a3ccd8104b5ae3dd7d8d7fe856d28ac688f48f457658b1e3e1545a1238035aa08369548f21f260dd15a1d11045d4a1ca0bf8
7
+ data.tar.gz: b7c5c4cbdab4e4efa7e4ee57f492d0c0bf020e3dc21a8d0bf5751231fb18c99331a75f9bd365e92abc5004b15fb011d5e7915cf7a4a699c0c0ba3a6077564cf3
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
7
7
  spec.name = "interface-dsl"
8
8
  spec.version = Interface::Dsl::VERSION
9
9
  spec.authors = ["Oleksiy Kurnenkov"]
10
- spec.email = ["oleksiy.kurnenkov@onapp.com"]
10
+ spec.email = ["o.kurnenkov@gmail.com"]
11
11
  spec.licenses = ['MIT']
12
12
  spec.summary = %q{Interface description DSL}
13
13
  spec.description = %q{Make your Interfaces declarative!}
@@ -27,7 +27,6 @@ Gem::Specification.new do |spec|
27
27
  spec.add_runtime_dependency 'dry-configurable', '~> 0.3'
28
28
  spec.add_runtime_dependency 'factorymethods', '~> 1.0'
29
29
 
30
- spec.add_development_dependency 'factorymethods', '~> 1.0'
31
30
  spec.add_development_dependency "bundler", "~> 1.13"
32
31
  spec.add_development_dependency "rake", "~> 10.0"
33
32
  spec.add_development_dependency "rspec", "~> 3.0"
@@ -8,10 +8,6 @@ module Interface
8
8
  end
9
9
 
10
10
  def call(*args, &block)
11
- unless callable.respond_to?(:call)
12
- fail(Interface::Errors::AdaptationError.new("#{callable.class} is not callable!"))
13
- end
14
-
15
11
  _call(*args, &block)
16
12
  end
17
13
 
@@ -28,7 +24,13 @@ module Interface
28
24
  end
29
25
 
30
26
  def _handle_request(*args, &block)
31
- _wrap(callable.call(*args, &block))
27
+ if callable.respond_to?(:dispatch)
28
+ _wrap(callable.dispatch(*args, &block))
29
+ elsif callable.respond_to?(:call)
30
+ _wrap(callable.call(*args, &block))
31
+ else
32
+ fail(Interface::Errors::AdaptationError.new("#{callable.class} is not callable!"))
33
+ end
32
34
  rescue => e
33
35
  [:error, e]
34
36
  end
@@ -1,5 +1,5 @@
1
1
  module Interface
2
2
  module Dsl
3
- VERSION = "0.1.8"
3
+ VERSION = "0.1.9"
4
4
  end
5
5
  end
@@ -13,6 +13,19 @@ module Interface
13
13
  @description = text
14
14
  end
15
15
 
16
+ def struct(*fields)
17
+ @struct = fields
18
+ end
19
+
20
+ def proxy_factory(klass)
21
+ @proxy_factory = klass
22
+ end
23
+
24
+ def proxy(obj, options={})
25
+ return nil unless @proxy_factory
26
+ @proxy_factory.call(struct: @struct, contract: @contract, handler: @handler).new(obj, options)
27
+ end
28
+
16
29
  def call(*args, &block)
17
30
  if @handler.nil?
18
31
  fail(::Interface::Errors::HandlerMissingError.new("Handler is undefined"))
@@ -33,19 +46,13 @@ module Interface
33
46
  end
34
47
 
35
48
  def contract(&validation_schema)
36
- @contract = Dry::Validation.Schema(&validation_schema)
49
+ @contract = validation_schema
37
50
  end
38
51
 
39
52
  def returns(klass)
40
53
  @adapter = klass
41
54
  end
42
55
 
43
- # def returns(hash)
44
- # { success: [:ok, Object],
45
- # failure: [:error, String] }
46
- # end
47
-
48
- #TODO
49
56
  def before_call; end
50
57
  def after_call; end
51
58
  def wrap_call; end
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.8
4
+ version: 0.1.9
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-02-10 00:00:00.000000000 Z
11
+ date: 2017-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-validation
@@ -66,20 +66,6 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.0'
69
- - !ruby/object:Gem::Dependency
70
- name: factorymethods
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '1.0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '1.0'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: bundler
85
71
  requirement: !ruby/object:Gem::Requirement
@@ -124,7 +110,7 @@ dependencies:
124
110
  version: '3.0'
125
111
  description: Make your Interfaces declarative!
126
112
  email:
127
- - oleksiy.kurnenkov@onapp.com
113
+ - o.kurnenkov@gmail.com
128
114
  executables: []
129
115
  extensions: []
130
116
  extra_rdoc_files: []
@@ -169,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
155
  version: '0'
170
156
  requirements: []
171
157
  rubyforge_project:
172
- rubygems_version: 2.5.1
158
+ rubygems_version: 2.4.8
173
159
  signing_key:
174
160
  specification_version: 4
175
161
  summary: Interface description DSL