interface-dsl 0.1.8 → 0.1.9

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