diff --git a/lib/purple/client.rb b/lib/purple/client.rb index 5a3c16b..6599fc5 100644 --- a/lib/purple/client.rb +++ b/lib/purple/client.rb @@ -43,6 +43,14 @@ def callback(&block) end end + def callback_params(*args) + if args.empty? + @callback_params ||= [] + else + @callback_params = args + end + end + def path(name, method: :get, is_param: false) path = Path.new(name:, parent: @parent_path, method:, client: self, is_param:) diff --git a/lib/purple/path.rb b/lib/purple/path.rb index 7d2e613..3f4d750 100644 --- a/lib/purple/path.rb +++ b/lib/purple/path.rb @@ -81,7 +81,16 @@ def execute(params = {}, args = {}) {} end - client.callback&.call(url, params, headers, JSON.parse(response.body)) + if client.callback + callback_args = [url, params, headers, JSON.parse(response.body)] + callback_args.concat(client.callback_params) if client.respond_to?(:callback_params) + + if client.callback.lambda? && client.callback.arity >= 0 + callback_args = callback_args.first(client.callback.arity) + end + + client.callback.call(*callback_args) + end if block_given? yield(resp_structure.status, object)