fuik 0.9.0 → 0.10.1

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
  SHA256:
3
- metadata.gz: 88d837d843a47b5e38b77f2ee01839045c2cce4920fcf83c8be7739273132c0d
4
- data.tar.gz: feb08cf1fa6f8a3328be3fed97af86997e1fac81ec79b78f71435e948289673a
3
+ metadata.gz: 75982b79f02eab5a1ee77bb7a05e00c9dac8a584f9d17b43b1a3ae9ce8b15f17
4
+ data.tar.gz: e446a0526a042e8a0789f4a5bb967ddcd55fd806d0ca79f1c53b1315ac51f455
5
5
  SHA512:
6
- metadata.gz: d64260c13efb33cdb8e10ebd8b6e862e067bcf4421f63ce8b228f91d345ea271602db298162f6898660f16e925635aeba429ced6462d08ec1b18e62a21eecc66
7
- data.tar.gz: c89181684f34de8dab62991240d15021901dd56c1686811ea1c89dafc49122d819cb1c47e7a366227622931a3d280d61f72b34f1e9e5f279ca82ae4e104440d1
6
+ metadata.gz: f96fdca885fd963d87cf474d82bb6cc96d4416085f59a80ed70b85d0f0725de1eaf2ad1008400aa0362ae121b5ca5b099b2e44ed25e66b560fa01f8b5649d657
7
+ data.tar.gz: 1b86640a5c749590eebab88a3002197a278784f1643e72cf0f8550cc4663933853b9eb4b1949a66d697cddf491e3812305ce92cb276ac3c3f8adc8d906e82270
data/README.md CHANGED
@@ -77,7 +77,7 @@ Each class is a thin wrapper around your business logic:
77
77
  module Stripe
78
78
  class CheckoutSessionCompleted < Base
79
79
  def process!
80
- User.find_by(id: payload.dig("client_reference_id")).tap do |user|
80
+ User.find_by(id: payload.client_reference_id).tap do |user|
81
81
  user.activate_subscription!
82
82
  user.send_welcome_email
83
83
 
@@ -90,6 +90,17 @@ module Stripe
90
90
  end
91
91
  ```
92
92
 
93
+ The `payload` method supports dot notation and standard hash methods:
94
+ ```ruby
95
+ # Dot notation
96
+ payload.client_reference_id
97
+ payload.customer.email
98
+
99
+ # Hash syntax (strings/symbols)
100
+ payload["client_reference_id"]
101
+ payload[:customer_id]
102
+ ```
103
+
93
104
  Implement `Base.verify!` to enable signature verification:
94
105
  ```ruby
95
106
  module Stripe
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Fuik
4
4
  module IconHelper
5
- def icon(provider)
5
+ def fuik_icon(provider)
6
6
  provider = provider.to_s.downcase
7
7
  path = "fuik/icons/#{provider}.jpg"
8
8
 
@@ -2,6 +2,8 @@
2
2
 
3
3
  module Fuik
4
4
  class Event
5
+ using DotAccess
6
+
5
7
  def initialize(webhook_event)
6
8
  @webhook_event = webhook_event
7
9
  end
@@ -11,7 +13,7 @@ module Fuik
11
13
  end
12
14
 
13
15
  def payload
14
- @webhook_event.payload
16
+ @webhook_event.payload.to_dot
15
17
  end
16
18
  end
17
19
  end
@@ -5,7 +5,7 @@
5
5
  <li>
6
6
  <%= link_to event_path(event) do %>
7
7
  <div class="name">
8
- <%= icon event.provider %>
8
+ <%= fuik_icon event.provider %>
9
9
 
10
10
  <span><%= event.provider %></span>
11
11
  </div>
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Fuik
4
+ module DotAccess
5
+ refine Hash do
6
+ def to_dot = AccessPayload.new(self)
7
+ end
8
+
9
+ class AccessPayload
10
+ def initialize(payload)
11
+ @payload = payload
12
+ end
13
+
14
+ def [](key)
15
+ value = @payload[key] || @payload[key.to_s] || @payload[key.to_sym]
16
+
17
+ value.is_a?(Hash) ? self.class.new(value) : value
18
+ end
19
+
20
+ def []=(key, value)
21
+ @payload[key] = value
22
+ end
23
+
24
+ def dig(*keys)
25
+ value = @payload.dig(*keys)
26
+
27
+ value.is_a?(Hash) ? self.class.new(value) : value
28
+ end
29
+
30
+ def key?(key)
31
+ @payload.key?(key) || @payload.key?(key.to_s) || @payload.key?(key.to_sym)
32
+ end
33
+
34
+ def method_missing(method_name, *arguments)
35
+ return super unless arguments.empty? && !block_given?
36
+
37
+ value = @payload[method_name] || @payload[method_name.to_s] || @payload[method_name.to_sym]
38
+ value.is_a?(Hash) ? self.class.new(value) : value
39
+ end
40
+
41
+ def respond_to_missing?(method_name, include_private = false)
42
+ key?(method_name) || super
43
+ end
44
+
45
+ def to_h = @payload
46
+ end
47
+ end
48
+ end
data/lib/fuik/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Fuik
2
- VERSION = "0.9.0"
2
+ VERSION = "0.10.1"
3
3
  end
data/lib/fuik.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "fuik/version"
2
+ require "fuik/dot_access"
2
3
  require "fuik/engine"
3
4
 
4
5
  module Fuik
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fuik
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rails Designer
@@ -83,6 +83,7 @@ files:
83
83
  - config/routes.rb
84
84
  - db/migrate/20250101000000_create_webhook_events.rb
85
85
  - lib/fuik.rb
86
+ - lib/fuik/dot_access.rb
86
87
  - lib/fuik/engine.rb
87
88
  - lib/fuik/version.rb
88
89
  - lib/generators/fuik/install/install_generator.rb