haku 1.1.0 → 1.3.0

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
  SHA256:
3
- metadata.gz: d706591454ee0f992403b400e7dc75e621bccb120978050d98f55f2aaceca5bd
4
- data.tar.gz: 18652ffbeff0a83d8a7344d7de7e7f4bb905d973a740fecc99a14a05d1258d46
3
+ metadata.gz: a4a4e86fc890d168831b4b5988501287334e47e4c5e74d5fe74e20b2eb4e6401
4
+ data.tar.gz: '090842d8de8748ab2ae966ca710a2d87c4779b5dc1d3b02c6cbda0a2345d533a'
5
5
  SHA512:
6
- metadata.gz: f4ad33422d9efcba85416ee72099e1c577b1172f6e4a40bea8c9d28cfd4edb8f3259eb5f04671a54ca67dcab0cc796bb407f39111d5ecb9fd30cc6d2d6bf235a
7
- data.tar.gz: ee0e64b2f70d88f833cedbf96b56af02a9ffaaa17e29df5d582ae6b71a6199935e6897b8bbc704f4d2c035215be45b9767e5814275da002aa8836e627f5c5db8
6
+ metadata.gz: c0daf950c8414065e1fd3e845baefc1f926b35275cf1da27c6f901fe7fad04e00f2228c780b7f3ce2b741c792d3a8e1da693b115d2c5fc244378172ec9943260
7
+ data.tar.gz: f60b323cabc9f226072bca8a7bc0f42806d96a1a4aa085c8f19197d852cc16cbf2f8e50f05453d8074dc494d980108c8269633b80812509e2db6ec3f56b4e633
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [1.3.0] - 2022-04-27
4
+ - Fix accessors creation
5
+ - **Breaking**: Remove Rails railtie. Use `include Haku::Controller` in controllers instead.
6
+
7
+ ## [1.2.1] - 2022-04-20
8
+ - Fix accessors creation when result is plain array
9
+
10
+ ## [1.2.0] - 2022-04-20
11
+ - Refactor how response is created on finish
12
+
3
13
  ## [1.1.0] - 2022-04-19
4
14
  - Allow to configure Haku using block
5
15
  - Add Eventable module to fire events
data/Gemfile.lock CHANGED
@@ -11,7 +11,7 @@ GIT
11
11
  PATH
12
12
  remote: .
13
13
  specs:
14
- haku (1.1.0)
14
+ haku (1.2.1)
15
15
  activesupport (>= 6.0, < 8.0)
16
16
 
17
17
  GEM
data/README.md CHANGED
@@ -47,6 +47,7 @@ end
47
47
  response = Users::Update.call(user: User.first, attributes: { name: "Javier" })
48
48
 
49
49
  response.success? # => true
50
+ response.result # => { resource: <User id="1" ...> }
50
51
  response.resource # => <User id="1" ...>
51
52
  ````
52
53
 
data/lib/haku/core.rb CHANGED
@@ -44,12 +44,17 @@ module Haku
44
44
  end
45
45
  end
46
46
 
47
+ Finish = Struct.new("Finish", :status, :payload)
48
+
47
49
  module Callable
48
50
  def call
49
- result = super
51
+ response = catch(:finish) { super }
52
+
53
+ status = response.is_a?(Finish) ? response.status : :success
54
+ payload = response.is_a?(Finish) ? response.payload : response
50
55
 
51
- Result.new(_haku_status, _haku_response.merge(result: result)).tap do
52
- _haku_run_callbacks
56
+ Result.new(status, payload).tap do
57
+ _haku_run_callbacks(status)
53
58
  end
54
59
  end
55
60
  end
@@ -57,9 +62,6 @@ module Haku
57
62
  def initialize(params={})
58
63
  @params = params
59
64
 
60
- @_haku_status = :success
61
- @_haku_response = {}
62
-
63
65
  self.class.haku_inputs.each do |name|
64
66
  define_singleton_method(name) { @params[name] } unless respond_to?(name)
65
67
  end
@@ -67,32 +69,16 @@ module Haku
67
69
 
68
70
  private
69
71
 
70
- def success!(response={})
71
- @_haku_status = :success
72
- @_haku_response = _haku_normalize_response(response)
73
- nil
74
- end
75
-
76
- def failure!(response={})
77
- @_haku_status = :failure
78
- @_haku_response = _haku_normalize_response(response)
79
- nil
80
- end
81
-
82
- def _haku_normalize_response(response)
83
- response.is_a?(Hash) ? response : { data: response }
84
- end
85
-
86
- def _haku_status
87
- @_haku_status
72
+ def success!(data=nil)
73
+ throw :finish, Finish.new(:success, data)
88
74
  end
89
75
 
90
- def _haku_response
91
- @_haku_response
76
+ def failure!(data=nil)
77
+ throw :finish, Finish.new(:failure, data)
92
78
  end
93
79
 
94
- def _haku_run_callbacks
95
- (self.class.send("haku_#{_haku_status}_callbacks") || []).each { |cb| send(cb) }
80
+ def _haku_run_callbacks(status)
81
+ (self.class.send("haku_#{status}_callbacks") || []).each { |cb| send(cb) }
96
82
  end
97
83
  end
98
84
  end
data/lib/haku/result.rb CHANGED
@@ -4,15 +4,21 @@ require "active_support/string_inquirer"
4
4
 
5
5
  module Haku
6
6
  class Result
7
- def initialize(status, response)
7
+ def initialize(status, payload)
8
8
  @status = ActiveSupport::StringInquirer.new(status.to_s)
9
- @response = response
9
+ @payload = payload
10
10
 
11
- @response.each_key do |key|
12
- define_singleton_method(key) { @response[key] }
11
+ return unless @payload.is_a?(Hash)
12
+
13
+ @payload.each_key do |key|
14
+ define_singleton_method(key) { @payload[key] }
13
15
  end
14
16
  end
15
17
 
18
+ def result
19
+ @payload
20
+ end
21
+
16
22
  def success?
17
23
  @status.success?
18
24
  end
data/lib/haku/version.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  module Haku
4
4
  module VERSION
5
5
  MAJOR = 1
6
- MINOR = 1
6
+ MINOR = 3
7
7
  TINY = 0
8
8
  PRE = nil
9
9
 
data/lib/haku.rb CHANGED
@@ -4,13 +4,10 @@ require "active_support/core_ext/module/attribute_accessors"
4
4
  require "active_support/core_ext/string/inflections"
5
5
  require_relative "haku/core"
6
6
  require_relative "haku/eventable"
7
- require_relative "haku/railtie" if defined?(Rails)
8
7
  require_relative "haku/resourceable"
9
8
  require_relative "haku/version"
10
9
 
11
10
  module Haku
12
- mattr_accessor :enable_in_action_controller_base, default: true
13
- mattr_accessor :enable_in_action_controller_api, default: true
14
11
  mattr_accessor :event_model, default: "Event"
15
12
  mattr_accessor :event_properties, default: %i[actor resource target context]
16
13
  mattr_accessor :event_property_for_name, default: :name
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: haku
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Javier Aranda
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-04-19 00:00:00.000000000 Z
11
+ date: 2022-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -59,7 +59,6 @@ files:
59
59
  - lib/haku/controller.rb
60
60
  - lib/haku/core.rb
61
61
  - lib/haku/eventable.rb
62
- - lib/haku/railtie.rb
63
62
  - lib/haku/resourceable.rb
64
63
  - lib/haku/result.rb
65
64
  - lib/haku/version.rb
@@ -68,8 +67,8 @@ licenses:
68
67
  - MIT
69
68
  metadata:
70
69
  homepage_uri: https://github.com/javierav/haku
71
- source_code_uri: https://github.com/javierav/haku/tree/v1.1.0
72
- changelog_uri: https://github.com/javierav/haku/blob/v1.1.0/CHANGELOG.md
70
+ source_code_uri: https://github.com/javierav/haku/tree/v1.3.0
71
+ changelog_uri: https://github.com/javierav/haku/blob/v1.3.0/CHANGELOG.md
73
72
  rubygems_mfa_required: 'true'
74
73
  post_install_message:
75
74
  rdoc_options:
data/lib/haku/railtie.rb DELETED
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rails/railtie"
4
- require_relative "controller"
5
-
6
- module Haku
7
- class Railtie < ::Rails::Railtie
8
- initializer "haku.action_controller_base" do
9
- if Haku.enable_in_action_controller_base
10
- ActiveSupport.on_load(:action_controller_base) do
11
- ActionController::Base.include Haku::Controller
12
- end
13
- end
14
-
15
- if Haku.enable_in_action_controller_api
16
- ActiveSupport.on_load(:action_controller_api) do
17
- ActionController::API.include Haku::Controller
18
- end
19
- end
20
- end
21
- end
22
- end