purple-client 0.1.3 → 0.1.5.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 +4 -4
- data/README.md +30 -0
- data/lib/purple/client.rb +13 -1
- data/lib/purple/path.rb +11 -3
- data/lib/purple/responses/body.rb +1 -1
- data/lib/purple/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 47b33775a1287ec08f54dba905a6703fb6c23b1866889040f901072d3c5bc83a
|
4
|
+
data.tar.gz: fc359384f673884c415e02bf2a79c19ebd867893efb734c3b2942ac246d174d4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f300ec289b4f949ba37d54f965afa02c38dec196d3179338b22fcdd62fd78da6557953df90d0bd3a32e350e5d336c451d23d7bb0ebc916c27c9dde062e497e90
|
7
|
+
data.tar.gz: c7c4244f119d79d337cb51f25ff1b59acb73318af24e41ae5e037aa62e1db542a0378136c260ab43566c09ff64c72a787c343e43ddfc7dd08a183a1d56643d65
|
data/README.md
CHANGED
@@ -100,6 +100,36 @@ end
|
|
100
100
|
PostsClient.user_posts(user_id: 7)
|
101
101
|
```
|
102
102
|
|
103
|
+
### Callbacks with additional arguments
|
104
|
+
|
105
|
+
```ruby
|
106
|
+
class EventsClient < Purple::Client
|
107
|
+
domain 'https://api.example.com'
|
108
|
+
|
109
|
+
additional_callback_arguments :resource
|
110
|
+
|
111
|
+
callback do |url, params, headers, response, resource|
|
112
|
+
StoreEvent.call(url:, params:, headers:, response:, resource:)
|
113
|
+
end
|
114
|
+
|
115
|
+
path :events do
|
116
|
+
response :ok do
|
117
|
+
body :default
|
118
|
+
end
|
119
|
+
root_method :events
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
resource = SomeModel.find(1)
|
124
|
+
EventsClient.events(resource:)
|
125
|
+
```
|
126
|
+
|
127
|
+
`additional_callback_arguments` lets you specify parameter names that will be
|
128
|
+
extracted from the call and passed to your callback. In the example above the
|
129
|
+
`resource` keyword argument is removed from the request parameters, but is
|
130
|
+
available inside the callback so you can associate the stored event with a
|
131
|
+
record of your choice.
|
132
|
+
|
103
133
|
## Development
|
104
134
|
|
105
135
|
After checking out the repo, run `bin/setup` to install dependencies. Then run
|
data/lib/purple/client.rb
CHANGED
@@ -69,9 +69,13 @@ module Purple
|
|
69
69
|
kw_args[current_path.name] = value
|
70
70
|
end
|
71
71
|
|
72
|
+
callback_arguments = additional_callback_arguments.map do |arg|
|
73
|
+
kw_args.delete(arg)
|
74
|
+
end
|
75
|
+
|
72
76
|
params = current_path.request.params.call(**kw_args) if current_path.request.params.is_a?(Proc)
|
73
77
|
|
74
|
-
current_path.execute(params, kw_args, &block)
|
78
|
+
current_path.execute(params, kw_args, *callback_arguments, &block)
|
75
79
|
end
|
76
80
|
end
|
77
81
|
|
@@ -112,6 +116,14 @@ module Purple
|
|
112
116
|
super
|
113
117
|
end
|
114
118
|
end
|
119
|
+
|
120
|
+
def additional_callback_arguments(*array)
|
121
|
+
if array.empty?
|
122
|
+
@additional_callback_arguments || []
|
123
|
+
else
|
124
|
+
@additional_callback_arguments = array
|
125
|
+
end
|
126
|
+
end
|
115
127
|
end
|
116
128
|
end
|
117
129
|
end
|
data/lib/purple/path.rb
CHANGED
@@ -32,13 +32,21 @@ module Purple
|
|
32
32
|
child.with(*args)
|
33
33
|
end
|
34
34
|
|
35
|
-
child.children.any?
|
35
|
+
if child.children.any?
|
36
|
+
child
|
37
|
+
else
|
38
|
+
callback_arguments = additional_callback_arguments.map do |arg|
|
39
|
+
kw_args.delete(arg)
|
40
|
+
end
|
41
|
+
|
42
|
+
child.execute(*args, *callback_arguments)
|
43
|
+
end
|
36
44
|
else
|
37
45
|
super
|
38
46
|
end
|
39
47
|
end
|
40
48
|
|
41
|
-
def execute(params = {}, args = {})
|
49
|
+
def execute(params = {}, args = {}, *callback_arguments)
|
42
50
|
headers = {
|
43
51
|
'Accept' => 'application/json',
|
44
52
|
'Content-Type' => 'application/json'
|
@@ -81,7 +89,7 @@ module Purple
|
|
81
89
|
{}
|
82
90
|
end
|
83
91
|
|
84
|
-
client.callback&.call(url, params, headers, JSON.parse(response.body))
|
92
|
+
client.callback&.call(url, params, headers, JSON.parse(response.body), *callback_arguments)
|
85
93
|
|
86
94
|
if block_given?
|
87
95
|
yield(resp_structure.status, object)
|
data/lib/purple/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: purple-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Kalashnikov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-07-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dry-initializer
|