hanikamu-service 0.1.3 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/hanikamu/service.rb +11 -5
  3. metadata +22 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b2fd98fb2f0ddba884d61ce4fdee4c5d4a227515d782b427d8157262496a1027
4
- data.tar.gz: d9ec6df7703b16a55d8364989796790c54959db9350f490d8f9a3679616c2c3a
3
+ metadata.gz: 9c13211a3a80193a4c8e3b509fe94f822c43a4b0cd262e4447fa517d55b543ca
4
+ data.tar.gz: e5936028b1f35b64d7642f1617c813abeaf1d21a42f4087fe8d4010cf19e3ac4
5
5
  SHA512:
6
- metadata.gz: 5dd2458e0e61b5da798728d619fc153e461beb39439fc756156d190e4ef5d5a485db30d34692e899fdba6af797501dd927fae5960c69a3fc15944460838c69a4
7
- data.tar.gz: 21042a51f72de8221a8be7c532eb5acc7dd14a099aed3b5a6e971cd9326f1052d8cf057692ef2218abd77470be4a2bfba5c9517a9c0abf30509e574b0c3df164
6
+ metadata.gz: 12b3a647f28a05b10b968d70be941d0103dba6eeac99cf7863220d808418d3f55b72391aebd443f344136a52ee08cfd57349bc5f91a0a3bf61196fbbb207e8a5
7
+ data.tar.gz: 63b0902042003a8adc7e4165217f93958373a00ba97b717d15b49c7379f4433117bfc31842657c0dcce5d81f58e127ef8d8a88a6928f1eb539d20919eb0c55bc
@@ -6,20 +6,25 @@ require "dry-monads"
6
6
  module Hanikamu
7
7
  # :nodoc
8
8
  class Service < Dry::Struct
9
+ extend Dry::Configurable
9
10
  extend Dry::Monads[:result]
10
11
  Error = Class.new(StandardError)
11
12
 
13
+ setting :whitelisted_errors, default: []
14
+
12
15
  class << self
13
- def call(options = {})
14
- Success(call!(options))
16
+ def call(options = {}, &block)
17
+ Success(call!(options, &block))
15
18
  rescue StandardError => e
16
19
  return Failure.new(e) if whitelisted_error?(e.class)
17
20
 
18
21
  raise e
19
22
  end
20
23
 
21
- def call!(options = {})
22
- options.empty? ? new.send(:call!) : new(options).send(:call!)
24
+ def call!(options = {}, &block)
25
+ instance = options.empty? ? new : new(options)
26
+
27
+ block ? instance.call!(&block) : instance.call!
23
28
  end
24
29
 
25
30
  private
@@ -27,7 +32,8 @@ module Hanikamu
27
32
  def whitelisted_error?(error_klass)
28
33
  error_klass == Hanikamu::Service::Error ||
29
34
  error_klass.superclass == Hanikamu::Service::Error ||
30
- error_klass == Dry::Struct::Error
35
+ error_klass == Dry::Struct::Error ||
36
+ config.whitelisted_errors.include?(error_klass)
31
37
  end
32
38
  end
33
39
 
metadata CHANGED
@@ -1,16 +1,30 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanikamu-service
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicolai Seerup
8
8
  - Alejandro Jimenez
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-09-21 00:00:00.000000000 Z
12
+ date: 2024-05-15 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: dry-configurable
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: 1.1.0
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: 1.1.0
14
28
  - !ruby/object:Gem::Dependency
15
29
  name: dry-monads
16
30
  requirement: !ruby/object:Gem::Requirement
@@ -39,8 +53,8 @@ dependencies:
39
53
  - - "~>"
40
54
  - !ruby/object:Gem::Version
41
55
  version: 1.6.0
42
- description:
43
- email:
56
+ description:
57
+ email:
44
58
  executables: []
45
59
  extensions: []
46
60
  extra_rdoc_files: []
@@ -53,7 +67,7 @@ licenses:
53
67
  - MIT
54
68
  metadata:
55
69
  rubygems_mfa_required: 'true'
56
- post_install_message:
70
+ post_install_message:
57
71
  rdoc_options: []
58
72
  require_paths:
59
73
  - lib
@@ -68,8 +82,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
82
  - !ruby/object:Gem::Version
69
83
  version: '0'
70
84
  requirements: []
71
- rubygems_version: 3.4.1
72
- signing_key:
85
+ rubygems_version: 3.5.3
86
+ signing_key:
73
87
  specification_version: 4
74
88
  summary: This is the base service for all pattern designs used in hanikamu design
75
89
  test_files: []