From f85db58767fe06cfa787440b84cb443e726d1489 Mon Sep 17 00:00:00 2001 From: Jasmine Ning Date: Wed, 13 May 2026 23:32:27 -0400 Subject: [PATCH 01/16] update atom to allow dot notation tyle of search --- .idea/workspace.xml | 94 +++++++++++++++++++++++ lib/payrix/request_options/search/atom.rb | 24 +++++- 2 files changed, 114 insertions(+), 4 deletions(-) create mode 100644 .idea/workspace.xml diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..c97bcda --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + { + "associatedIndex": 2 +} + + + + { + "keyToString": { + "ModuleVcsDetector.initialDetectionPerformed": "true", + "RunOnceActivity.ShowReadmeOnStart": "true", + "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true", + "RunOnceActivity.git.unshallow": "true", + "RunOnceActivity.ruby.rubocop.migration.global.runOnSaveToExternalFormatter": "true", + "RunOnceActivity.typescript.service.memoryLimit.init": "true", + "codeWithMe.voiceChat.enabledByDefault": "false", + "git-widget-placeholder": "main", + "last_opened_file_path": "/Users/jasminening/Desktop/work/payrix", + "nodejs_package_manager_path": "npm", + "ruby.structure.view.model.defaults.configured": "true", + "vue.rearranger.settings.migration": "true" + } +} + + + + + + + + + + + + + 1776848205007 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/payrix/request_options/search/atom.rb b/lib/payrix/request_options/search/atom.rb index 69ae95f..8226f59 100644 --- a/lib/payrix/request_options/search/atom.rb +++ b/lib/payrix/request_options/search/atom.rb @@ -22,12 +22,10 @@ def initialize(field, operator, value) def construct(prefix = '') raise ArgumentError, 'Prefix parameter must be a string' unless prefix.is_a?(String) - field = Payrix::Util.camel_case(@field.to_s) - if prefix == '' - "#{field}[#{@operator}]=#{@value}" + "#{format_field}[#{@operator}]=#{@value}" else - "#{prefix}[#{field}][#{@operator}]=#{@value}" + "#{prefix}#{format_field}[#{@operator}]=#{@value}" end end @@ -52,6 +50,24 @@ def validate_value raise ArgumentError, 'Value parameter must be a non-empty string' end + + def format_field + parts = + case @field + when Symbol + [@field.to_s] + when String + @field.split('.') + when Array + @field.map(&:to_s) + else + raise ArgumentError, "Invalid field type: #{@field.class}" + end + + parts + .map { |part| "[#{Payrix::Util.camel_case(part)}]" } + .join + end end end end From 15b431c8d2fc3ca44645af11ccb0f3eaa5651ce0 Mon Sep 17 00:00:00 2001 From: Jasmine Ning Date: Thu, 14 May 2026 00:52:23 -0400 Subject: [PATCH 02/16] delete idea file --- .idea/workspace.xml | 94 --------------------------------------------- 1 file changed, 94 deletions(-) delete mode 100644 .idea/workspace.xml diff --git a/.idea/workspace.xml b/.idea/workspace.xml deleted file mode 100644 index c97bcda..0000000 --- a/.idea/workspace.xml +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - - - - - { - "associatedIndex": 2 -} - - - - { - "keyToString": { - "ModuleVcsDetector.initialDetectionPerformed": "true", - "RunOnceActivity.ShowReadmeOnStart": "true", - "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true", - "RunOnceActivity.git.unshallow": "true", - "RunOnceActivity.ruby.rubocop.migration.global.runOnSaveToExternalFormatter": "true", - "RunOnceActivity.typescript.service.memoryLimit.init": "true", - "codeWithMe.voiceChat.enabledByDefault": "false", - "git-widget-placeholder": "main", - "last_opened_file_path": "/Users/jasminening/Desktop/work/payrix", - "nodejs_package_manager_path": "npm", - "ruby.structure.view.model.defaults.configured": "true", - "vue.rearranger.settings.migration": "true" - } -} - - - - - - - - - - - - - 1776848205007 - - - - - - - - - - - - - - - \ No newline at end of file From 7f737b2a08bd54fc35b9f32abd5d6ff06390c10e Mon Sep 17 00:00:00 2001 From: Jasmine Ning Date: Sat, 16 May 2026 00:42:18 -0400 Subject: [PATCH 03/16] increase timeout to 60 --- lib/payrix/http/request.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/payrix/http/request.rb b/lib/payrix/http/request.rb index 7c1d431..c4881f0 100644 --- a/lib/payrix/http/request.rb +++ b/lib/payrix/http/request.rb @@ -16,7 +16,7 @@ def send_http(method, base_url, endpoint, data = {}, headers = {}, timeout = 30) connection.response :follow_redirects, limit: 3 connection.headers = headers - connection.options.timeout = timeout + connection.options.timeout = 60 connection.options.open_timeout = timeout connection.request :json From e00c74c84e729ba4daadff33a5dfcf9bfb1c9286 Mon Sep 17 00:00:00 2001 From: Jasmine Ning Date: Sun, 17 May 2026 03:30:08 -0400 Subject: [PATCH 04/16] Stop tracking .idea --- lib/payrix/request_options/search/atom.rb | 38 +++++++++++------------ 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/lib/payrix/request_options/search/atom.rb b/lib/payrix/request_options/search/atom.rb index 8226f59..7ef928c 100644 --- a/lib/payrix/request_options/search/atom.rb +++ b/lib/payrix/request_options/search/atom.rb @@ -22,10 +22,14 @@ def initialize(field, operator, value) def construct(prefix = '') raise ArgumentError, 'Prefix parameter must be a string' unless prefix.is_a?(String) - if prefix == '' - "#{format_field}[#{@operator}]=#{@value}" + formatted_field = rendered_field(prefix) + + if prefix.empty? + "#{formatted_field}[#{@operator}]=#{@value}" + elsif formatted_field.start_with?('[') + "#{prefix}#{formatted_field}[#{@operator}]=#{@value}" else - "#{prefix}#{format_field}[#{@operator}]=#{@value}" + "#{prefix}[#{formatted_field}][#{@operator}]=#{@value}" end end @@ -51,22 +55,18 @@ def validate_value raise ArgumentError, 'Value parameter must be a non-empty string' end - def format_field - parts = - case @field - when Symbol - [@field.to_s] - when String - @field.split('.') - when Array - @field.map(&:to_s) - else - raise ArgumentError, "Invalid field type: #{@field.class}" - end - - parts - .map { |part| "[#{Payrix::Util.camel_case(part)}]" } - .join + def rendered_field(prefix) + return Payrix::Util.camel_case(@field.to_s) unless @field.is_a?(String) && @field.include?('.') + + dot_field(prefix.empty?) + end + + def dot_field(unprefixed) + parts = @field.split('.').map { |part| Payrix::Util.camel_case(part) } + + return parts.map { |part| "[#{part}]" }.join unless unprefixed + + [parts.first, *parts.drop(1).map { |part| "[#{part}]" }].join end end end From 5e4d80a2238ea40cfd78348f00714d6efc72f46b Mon Sep 17 00:00:00 2001 From: Jasmine Ning Date: Sun, 17 May 2026 22:51:51 -0400 Subject: [PATCH 05/16] add spec --- .idea/workspace.xml | 126 ++++++++++++++++++ lib/payrix/http/request.rb | 4 +- .../request_options/search/atom_spec.rb | 15 +++ 3 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 .idea/workspace.xml diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..c549264 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + { + "associatedIndex": 2 +} + + + + { + "keyToString": { + "ModuleVcsDetector.initialDetectionPerformed": "true", + "RunOnceActivity.ShowReadmeOnStart": "true", + "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true", + "RunOnceActivity.git.unshallow": "true", + "RunOnceActivity.ruby.rubocop.migration.global.runOnSaveToExternalFormatter": "true", + "RunOnceActivity.typescript.service.memoryLimit.init": "true", + "codeWithMe.voiceChat.enabledByDefault": "false", + "git-widget-placeholder": "PDE-3241/accept-dot-notation", + "last_opened_file_path": "/Users/jasminening/Desktop/work/payrix", + "nodejs_package_manager_path": "npm", + "ruby.structure.view.model.defaults.configured": "true", + "vue.rearranger.settings.migration": "true" + } +} + + + + + + + + + + + + + + 1776848205007 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/payrix/http/request.rb b/lib/payrix/http/request.rb index c4881f0..02e388a 100644 --- a/lib/payrix/http/request.rb +++ b/lib/payrix/http/request.rb @@ -11,12 +11,12 @@ module Http class Request # rubocop:disable Style/Documentation - Legacy file, which will be removed eventually include Singleton - def send_http(method, base_url, endpoint, data = {}, headers = {}, timeout = 30) + def send_http(method, base_url, endpoint, data = {}, headers = {}, timeout = 60) conn = Faraday.new(url: base_url) do |connection| connection.response :follow_redirects, limit: 3 connection.headers = headers - connection.options.timeout = 60 + connection.options.timeout = timeout connection.options.open_timeout = timeout connection.request :json diff --git a/spec/lib/payrix/request_options/search/atom_spec.rb b/spec/lib/payrix/request_options/search/atom_spec.rb index c9f4ac4..11d58e6 100644 --- a/spec/lib/payrix/request_options/search/atom_spec.rb +++ b/spec/lib/payrix/request_options/search/atom_spec.rb @@ -251,5 +251,20 @@ expect { atom.construct({}) }.to raise_error(ArgumentError) end end + + context 'when the field is a dotted string' do + it 'returns a valid nested search argument' do + atom = described_class.new('a.field', :operator, 'value') + + expect(atom.construct).to eq('a[field][operator]=value') + end + end + + context 'when the field is a dotted string and the prefix is a non empty string' do + it 'returns a valid nested search argument with a prefix' do + atom = described_class.new('a.field', :operator, 'value') + expect(atom.construct('prefix')).to eq('prefix[a][field][operator]=value') + end + end end end From 5ce0f1f9dab023a0c2eec051def346397321f6b5 Mon Sep 17 00:00:00 2001 From: Jasmine Ning Date: Sun, 17 May 2026 22:52:09 -0400 Subject: [PATCH 06/16] Stop tracking .idea --- .idea/workspace.xml | 126 -------------------------------------------- 1 file changed, 126 deletions(-) delete mode 100644 .idea/workspace.xml diff --git a/.idea/workspace.xml b/.idea/workspace.xml deleted file mode 100644 index c549264..0000000 --- a/.idea/workspace.xml +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - { - "associatedIndex": 2 -} - - - - { - "keyToString": { - "ModuleVcsDetector.initialDetectionPerformed": "true", - "RunOnceActivity.ShowReadmeOnStart": "true", - "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true", - "RunOnceActivity.git.unshallow": "true", - "RunOnceActivity.ruby.rubocop.migration.global.runOnSaveToExternalFormatter": "true", - "RunOnceActivity.typescript.service.memoryLimit.init": "true", - "codeWithMe.voiceChat.enabledByDefault": "false", - "git-widget-placeholder": "PDE-3241/accept-dot-notation", - "last_opened_file_path": "/Users/jasminening/Desktop/work/payrix", - "nodejs_package_manager_path": "npm", - "ruby.structure.view.model.defaults.configured": "true", - "vue.rearranger.settings.migration": "true" - } -} - - - - - - - - - - - - - - 1776848205007 - - - - - - - - - - - - - - - \ No newline at end of file From cf166450092d7dd8f1789a850840ba44da5ce987 Mon Sep 17 00:00:00 2001 From: Jasmine Ning Date: Sun, 17 May 2026 23:54:26 -0400 Subject: [PATCH 07/16] add validation for dot notation --- .idea/workspace.xml | 123 ++++++++++++++++++ lib/payrix/request_options/search/atom.rb | 11 +- .../request_options/search/atom_spec.rb | 12 ++ 3 files changed, 144 insertions(+), 2 deletions(-) create mode 100644 .idea/workspace.xml diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..ed8d0cf --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + { + "associatedIndex": 2 +} + + + + { + "keyToString": { + "ModuleVcsDetector.initialDetectionPerformed": "true", + "RunOnceActivity.ShowReadmeOnStart": "true", + "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true", + "RunOnceActivity.git.unshallow": "true", + "RunOnceActivity.ruby.rubocop.migration.global.runOnSaveToExternalFormatter": "true", + "RunOnceActivity.typescript.service.memoryLimit.init": "true", + "codeWithMe.voiceChat.enabledByDefault": "false", + "git-widget-placeholder": "PDE-3241/accept-dot-notation", + "last_opened_file_path": "/Users/jasminening/Desktop/work/payrix", + "nodejs_package_manager_path": "npm", + "ruby.structure.view.model.defaults.configured": "true", + "vue.rearranger.settings.migration": "true" + } +} + + + + + + + + + + + + + + 1776848205007 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lib/payrix/request_options/search/atom.rb b/lib/payrix/request_options/search/atom.rb index 7ef928c..145bbb1 100644 --- a/lib/payrix/request_options/search/atom.rb +++ b/lib/payrix/request_options/search/atom.rb @@ -37,9 +37,16 @@ def construct(prefix = '') def validate_field return if @field.is_a?(Symbol) - return if @field.is_a?(String) && @field != '' + raise ArgumentError, 'Field parameter must be a symbol or a non-empty string' unless valid_string_field? + raise ArgumentError, 'Field parameter must not contain empty dot notation segments' if empty_dot_segment? + end + + def valid_string_field? + @field.is_a?(String) && @field != '' + end - raise ArgumentError, 'Field parameter must be a symbol or a non-empty string' + def empty_dot_segment? + @field.include?('.') && @field.split('.').any?(&:empty?) end def validate_operator diff --git a/spec/lib/payrix/request_options/search/atom_spec.rb b/spec/lib/payrix/request_options/search/atom_spec.rb index 11d58e6..9082836 100644 --- a/spec/lib/payrix/request_options/search/atom_spec.rb +++ b/spec/lib/payrix/request_options/search/atom_spec.rb @@ -38,6 +38,18 @@ end end + context 'when the field is dot notation with empty segments at the binning' do + it 'raises ArgumentError' do + expect { described_class.new('.field', :operator, 'value') }.to raise_error(ArgumentError) + end + end + + context 'when the field is dot notation with empty segments at middle' do + it 'raises ArgumentError' do + expect { described_class.new('a..field', :operator, 'value') }.to raise_error(ArgumentError) + end + end + context 'when the operator is nil' do it 'raises ArgumentError' do expect { described_class.new(:field, nil, 'value') }.to raise_error(ArgumentError) From 22b4f1747dbbba4f579f70a2bdcde142045e869f Mon Sep 17 00:00:00 2001 From: Jasmine Ning Date: Sun, 17 May 2026 23:55:13 -0400 Subject: [PATCH 08/16] Stop tracking .idea --- .idea/workspace.xml | 123 -------------------------------------------- 1 file changed, 123 deletions(-) delete mode 100644 .idea/workspace.xml diff --git a/.idea/workspace.xml b/.idea/workspace.xml deleted file mode 100644 index ed8d0cf..0000000 --- a/.idea/workspace.xml +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - { - "associatedIndex": 2 -} - - - - { - "keyToString": { - "ModuleVcsDetector.initialDetectionPerformed": "true", - "RunOnceActivity.ShowReadmeOnStart": "true", - "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true", - "RunOnceActivity.git.unshallow": "true", - "RunOnceActivity.ruby.rubocop.migration.global.runOnSaveToExternalFormatter": "true", - "RunOnceActivity.typescript.service.memoryLimit.init": "true", - "codeWithMe.voiceChat.enabledByDefault": "false", - "git-widget-placeholder": "PDE-3241/accept-dot-notation", - "last_opened_file_path": "/Users/jasminening/Desktop/work/payrix", - "nodejs_package_manager_path": "npm", - "ruby.structure.view.model.defaults.configured": "true", - "vue.rearranger.settings.migration": "true" - } -} - - - - - - - - - - - - - - 1776848205007 - - - - - - - - - - - - - - - \ No newline at end of file From 5a148b1b6d25454a8e56a98821126f439623845b Mon Sep 17 00:00:00 2001 From: Jasmine Ning Date: Mon, 18 May 2026 00:04:16 -0400 Subject: [PATCH 09/16] fix typos --- .idea/workspace.xml | 125 ++++++++++++++++++ .../request_options/search/atom_spec.rb | 4 +- 2 files changed, 127 insertions(+), 2 deletions(-) create mode 100644 .idea/workspace.xml diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..f2358ee --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + { + "associatedIndex": 2 +} + + + + { + "keyToString": { + "ModuleVcsDetector.initialDetectionPerformed": "true", + "RunOnceActivity.ShowReadmeOnStart": "true", + "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true", + "RunOnceActivity.git.unshallow": "true", + "RunOnceActivity.ruby.rubocop.migration.global.runOnSaveToExternalFormatter": "true", + "RunOnceActivity.typescript.service.memoryLimit.init": "true", + "codeWithMe.voiceChat.enabledByDefault": "false", + "git-widget-placeholder": "PDE-3241/accept-dot-notation", + "last_opened_file_path": "/Users/jasminening/Desktop/work/payrix", + "nodejs_package_manager_path": "npm", + "ruby.structure.view.model.defaults.configured": "true", + "vue.rearranger.settings.migration": "true" + } +} + + + + + + + + + + + + + + 1776848205007 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spec/lib/payrix/request_options/search/atom_spec.rb b/spec/lib/payrix/request_options/search/atom_spec.rb index 9082836..e67835b 100644 --- a/spec/lib/payrix/request_options/search/atom_spec.rb +++ b/spec/lib/payrix/request_options/search/atom_spec.rb @@ -38,7 +38,7 @@ end end - context 'when the field is dot notation with empty segments at the binning' do + context 'when the field is dot notation with empty segments at the beginning' do it 'raises ArgumentError' do expect { described_class.new('.field', :operator, 'value') }.to raise_error(ArgumentError) end @@ -272,7 +272,7 @@ end end - context 'when the field is a dotted string and the prefix is a non empty string' do + context 'when the field is a dotted string and the prefix is a non-empty string' do it 'returns a valid nested search argument with a prefix' do atom = described_class.new('a.field', :operator, 'value') expect(atom.construct('prefix')).to eq('prefix[a][field][operator]=value') From a27bc703d9217162f5facba79a0790f426e5cabd Mon Sep 17 00:00:00 2001 From: Jasmine Ning Date: Mon, 18 May 2026 00:04:20 -0400 Subject: [PATCH 10/16] Stop tracking .idea --- .idea/workspace.xml | 125 -------------------------------------------- 1 file changed, 125 deletions(-) delete mode 100644 .idea/workspace.xml diff --git a/.idea/workspace.xml b/.idea/workspace.xml deleted file mode 100644 index f2358ee..0000000 --- a/.idea/workspace.xml +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - - - - - - - - - - - - - { - "associatedIndex": 2 -} - - - - { - "keyToString": { - "ModuleVcsDetector.initialDetectionPerformed": "true", - "RunOnceActivity.ShowReadmeOnStart": "true", - "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true", - "RunOnceActivity.git.unshallow": "true", - "RunOnceActivity.ruby.rubocop.migration.global.runOnSaveToExternalFormatter": "true", - "RunOnceActivity.typescript.service.memoryLimit.init": "true", - "codeWithMe.voiceChat.enabledByDefault": "false", - "git-widget-placeholder": "PDE-3241/accept-dot-notation", - "last_opened_file_path": "/Users/jasminening/Desktop/work/payrix", - "nodejs_package_manager_path": "npm", - "ruby.structure.view.model.defaults.configured": "true", - "vue.rearranger.settings.migration": "true" - } -} - - - - - - - - - - - - - - 1776848205007 - - - - - - - - - - - - - - - \ No newline at end of file From 73e1fcff07a14e67fe97fe8f680e752f5dbcb75e Mon Sep 17 00:00:00 2001 From: Jasmine Ning Date: Tue, 19 May 2026 00:44:50 -0400 Subject: [PATCH 11/16] Update changelog --- .idea/workspace.xml | 123 ++++++++++++++++++++++++++++++++++++++++++++ CHANGELOG.md | 6 +++ 2 files changed, 129 insertions(+) create mode 100644 .idea/workspace.xml diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..941d212 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + { + "associatedIndex": 2 +} + + + + { + "keyToString": { + "ModuleVcsDetector.initialDetectionPerformed": "true", + "RunOnceActivity.ShowReadmeOnStart": "true", + "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true", + "RunOnceActivity.git.unshallow": "true", + "RunOnceActivity.ruby.rubocop.migration.global.runOnSaveToExternalFormatter": "true", + "RunOnceActivity.typescript.service.memoryLimit.init": "true", + "codeWithMe.voiceChat.enabledByDefault": "false", + "git-widget-placeholder": "PDE-3241/accept-dot-notation", + "last_opened_file_path": "/Users/jasminening/Desktop/work/payrix", + "nodejs_package_manager_path": "npm", + "ruby.structure.view.model.defaults.configured": "true", + "vue.rearranger.settings.migration": "true" + } +} + + + + + + + + + + + + + + 1776848205007 + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 481a829..e5b298c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ ## Unreleased +### Added +- Added support for nested search fields using dot notation in Payrix search query builder (e.g. `merchant.entity.login.division`) + +### Changed +- Increased Payrix API timeout to 60 seconds to improve reliability for slower requests + ### Breaking Changes - Change API for setting request environment. From b8bb76b45d79cb6c5ded282d1cbf69c02a84e393 Mon Sep 17 00:00:00 2001 From: Jasmine Ning Date: Tue, 19 May 2026 00:45:42 -0400 Subject: [PATCH 12/16] Stop tracking .idea --- .idea/workspace.xml | 123 -------------------------------------------- 1 file changed, 123 deletions(-) delete mode 100644 .idea/workspace.xml diff --git a/.idea/workspace.xml b/.idea/workspace.xml deleted file mode 100644 index 941d212..0000000 --- a/.idea/workspace.xml +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - { - "associatedIndex": 2 -} - - - - { - "keyToString": { - "ModuleVcsDetector.initialDetectionPerformed": "true", - "RunOnceActivity.ShowReadmeOnStart": "true", - "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true", - "RunOnceActivity.git.unshallow": "true", - "RunOnceActivity.ruby.rubocop.migration.global.runOnSaveToExternalFormatter": "true", - "RunOnceActivity.typescript.service.memoryLimit.init": "true", - "codeWithMe.voiceChat.enabledByDefault": "false", - "git-widget-placeholder": "PDE-3241/accept-dot-notation", - "last_opened_file_path": "/Users/jasminening/Desktop/work/payrix", - "nodejs_package_manager_path": "npm", - "ruby.structure.view.model.defaults.configured": "true", - "vue.rearranger.settings.migration": "true" - } -} - - - - - - - - - - - - - - 1776848205007 - - - - - - - - - - - - - - - \ No newline at end of file From e45b8a7824c6acc61bf08865d2d21198f8bc5e39 Mon Sep 17 00:00:00 2001 From: Jasmine Ning Date: Tue, 19 May 2026 00:54:14 -0400 Subject: [PATCH 13/16] update readme --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index d1ddd73..4d76afe 100644 --- a/README.md +++ b/README.md @@ -99,6 +99,8 @@ Here is a list of all simple operators available. - `Payrix::Search.greater` - `Payrix::Search.less` +> Note: Field names can be provided as either symbols (`:status`) or dot-notation strings (`'merchant.entity.login.division'`) when querying nested attributes. + The interface of all operators follows `.operator(:field, value)`. Use compound operators to make combinations of simple and other compound operators. From 61e2cc84a4b1a37cc3e25bce2f6894345ece35f8 Mon Sep 17 00:00:00 2001 From: Jasmine Ning Date: Tue, 19 May 2026 17:21:38 -0400 Subject: [PATCH 14/16] change timeout back to 30s --- CHANGELOG.md | 3 --- lib/payrix/http/request.rb | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e5b298c..c949808 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,9 +3,6 @@ ### Added - Added support for nested search fields using dot notation in Payrix search query builder (e.g. `merchant.entity.login.division`) -### Changed -- Increased Payrix API timeout to 60 seconds to improve reliability for slower requests - ### Breaking Changes - Change API for setting request environment. diff --git a/lib/payrix/http/request.rb b/lib/payrix/http/request.rb index 02e388a..7c1d431 100644 --- a/lib/payrix/http/request.rb +++ b/lib/payrix/http/request.rb @@ -11,7 +11,7 @@ module Http class Request # rubocop:disable Style/Documentation - Legacy file, which will be removed eventually include Singleton - def send_http(method, base_url, endpoint, data = {}, headers = {}, timeout = 60) + def send_http(method, base_url, endpoint, data = {}, headers = {}, timeout = 30) conn = Faraday.new(url: base_url) do |connection| connection.response :follow_redirects, limit: 3 From 7b3ba67c342de3d5b4f7193c1dfb28f5bec70963 Mon Sep 17 00:00:00 2001 From: Jasmine Ning Date: Tue, 19 May 2026 18:14:26 -0400 Subject: [PATCH 15/16] change timeout back to 60s --- CHANGELOG.md | 3 +++ lib/payrix/http/request.rb | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c949808..e5b298c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,9 @@ ### Added - Added support for nested search fields using dot notation in Payrix search query builder (e.g. `merchant.entity.login.division`) +### Changed +- Increased Payrix API timeout to 60 seconds to improve reliability for slower requests + ### Breaking Changes - Change API for setting request environment. diff --git a/lib/payrix/http/request.rb b/lib/payrix/http/request.rb index 7c1d431..02e388a 100644 --- a/lib/payrix/http/request.rb +++ b/lib/payrix/http/request.rb @@ -11,7 +11,7 @@ module Http class Request # rubocop:disable Style/Documentation - Legacy file, which will be removed eventually include Singleton - def send_http(method, base_url, endpoint, data = {}, headers = {}, timeout = 30) + def send_http(method, base_url, endpoint, data = {}, headers = {}, timeout = 60) conn = Faraday.new(url: base_url) do |connection| connection.response :follow_redirects, limit: 3 From 74f7ac1f5bd449197ac7c07975189b7eaa933e21 Mon Sep 17 00:00:00 2001 From: Jasmine Ning Date: Tue, 19 May 2026 18:15:38 -0400 Subject: [PATCH 16/16] update the version number --- Gemfile.lock | 2 +- lib/payrix/version.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 99bbbfc..c94131a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - payrix (1.0.0) + payrix (1.1.0) faraday (~> 2.0.1) faraday-follow_redirects diff --git a/lib/payrix/version.rb b/lib/payrix/version.rb index ea7aed4..f436739 100644 --- a/lib/payrix/version.rb +++ b/lib/payrix/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Payrix - VERSION = '1.0.0' + VERSION = '1.1.0' end