From 62ad69cda7fba9ba14aa67340b615c785019acfe Mon Sep 17 00:00:00 2001 From: David Corley Date: Sat, 11 Mar 2017 14:38:56 +0000 Subject: [PATCH 1/5] Allow Faraday init params to be passed to HTTP adaptor --- lib/neo4j/core/cypher_session/adaptors/http.rb | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/neo4j/core/cypher_session/adaptors/http.rb b/lib/neo4j/core/cypher_session/adaptors/http.rb index ae4db80b..773214b2 100644 --- a/lib/neo4j/core/cypher_session/adaptors/http.rb +++ b/lib/neo4j/core/cypher_session/adaptors/http.rb @@ -16,7 +16,7 @@ def initialize(url, options = {}) end def connect - @requestor = Requestor.new(@url, USER_AGENT_STRING, self.class.method(:instrument_request)) + @requestor = Requestor.new(@url, USER_AGENT_STRING, self.class.method(:instrument_request), @options[:faraday_opts] = {}) end ROW_REST = %w(row REST) @@ -101,13 +101,13 @@ class Requestor include Adaptors::HasUri default_url('http://neo4:neo4j@localhost:7474') validate_uri { |uri| uri.is_a?(URI::HTTP) } - - def initialize(url, user_agent_string, instrument_proc) + def initialize(url, user_agent_string, instrument_proc, params = {}) self.url = url @user = user @password = password @user_agent_string = user_agent_string - @faraday = wrap_connection_failed! { faraday_connection } + init_params = params[:initialize] && params.delete(:initialize) if params.key?(:initialize) + @faraday = wrap_connection_failed! { faraday_connection(init_params) } @instrument_proc = instrument_proc end @@ -144,12 +144,13 @@ def get(path, body = '', options = {}) private - def faraday_connection + def faraday_connection(params = {}) require 'faraday' require 'faraday_middleware/multi_json' - Faraday.new(url) do |c| + Faraday.new(url,params) do |c| c.request :basic_auth, user, password + c.request :basic_auth, params[:basic_auth][:username], params[:basic_auth][:password] if params[:basic_auth] c.request :multi_json c.response :multi_json, symbolize_keys: true, content_type: 'application/json' From 0b42d54ae49034a004a23ed1dcb226198f278d0f Mon Sep 17 00:00:00 2001 From: David Corley Date: Mon, 13 Mar 2017 12:04:06 +0000 Subject: [PATCH 2/5] Update http.rb --- lib/neo4j/core/cypher_session/adaptors/http.rb | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/neo4j/core/cypher_session/adaptors/http.rb b/lib/neo4j/core/cypher_session/adaptors/http.rb index 773214b2..cd9f35e2 100644 --- a/lib/neo4j/core/cypher_session/adaptors/http.rb +++ b/lib/neo4j/core/cypher_session/adaptors/http.rb @@ -16,7 +16,7 @@ def initialize(url, options = {}) end def connect - @requestor = Requestor.new(@url, USER_AGENT_STRING, self.class.method(:instrument_request), @options[:faraday_opts] = {}) + @requestor = Requestor.new(@url, USER_AGENT_STRING, self.class.method(:instrument_request), @options[:faraday_options] ||= {}) end ROW_REST = %w(row REST) @@ -101,13 +101,12 @@ class Requestor include Adaptors::HasUri default_url('http://neo4:neo4j@localhost:7474') validate_uri { |uri| uri.is_a?(URI::HTTP) } - def initialize(url, user_agent_string, instrument_proc, params = {}) + def initialize(url, user_agent_string, instrument_proc, faraday_options = {}) self.url = url @user = user @password = password @user_agent_string = user_agent_string - init_params = params[:initialize] && params.delete(:initialize) if params.key?(:initialize) - @faraday = wrap_connection_failed! { faraday_connection(init_params) } + @faraday = wrap_connection_failed! { faraday_connection(faraday_options.fetch(:initialize, {})) } @instrument_proc = instrument_proc end @@ -144,7 +143,7 @@ def get(path, body = '', options = {}) private - def faraday_connection(params = {}) + def faraday_connection(options = {}) require 'faraday' require 'faraday_middleware/multi_json' From 424843a6cd69872d90bd6309587533f27414b9a3 Mon Sep 17 00:00:00 2001 From: David Corley Date: Mon, 13 Mar 2017 13:37:56 +0000 Subject: [PATCH 3/5] Fix failing tests --- lib/neo4j/core/cypher_session/adaptors/http.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/neo4j/core/cypher_session/adaptors/http.rb b/lib/neo4j/core/cypher_session/adaptors/http.rb index cd9f35e2..231fb8b5 100644 --- a/lib/neo4j/core/cypher_session/adaptors/http.rb +++ b/lib/neo4j/core/cypher_session/adaptors/http.rb @@ -147,9 +147,9 @@ def faraday_connection(options = {}) require 'faraday' require 'faraday_middleware/multi_json' - Faraday.new(url,params) do |c| + Faraday.new(url,options) do |c| c.request :basic_auth, user, password - c.request :basic_auth, params[:basic_auth][:username], params[:basic_auth][:password] if params[:basic_auth] + c.request :basic_auth, options[:basic_auth][:username], options[:basic_auth][:password] if options[:basic_auth] c.request :multi_json c.response :multi_json, symbolize_keys: true, content_type: 'application/json' From 817261eaca136828ad5f7021b784635b4220986b Mon Sep 17 00:00:00 2001 From: David Corley Date: Mon, 13 Mar 2017 14:17:48 +0000 Subject: [PATCH 4/5] Fix failing rubocop issues --- lib/neo4j/core/cypher_session/adaptors/http.rb | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/neo4j/core/cypher_session/adaptors/http.rb b/lib/neo4j/core/cypher_session/adaptors/http.rb index 231fb8b5..f8887bd0 100644 --- a/lib/neo4j/core/cypher_session/adaptors/http.rb +++ b/lib/neo4j/core/cypher_session/adaptors/http.rb @@ -147,9 +147,12 @@ def faraday_connection(options = {}) require 'faraday' require 'faraday_middleware/multi_json' - Faraday.new(url,options) do |c| - c.request :basic_auth, user, password - c.request :basic_auth, options[:basic_auth][:username], options[:basic_auth][:password] if options[:basic_auth] + def faraday_connection(options = {}) + require 'faraday' + require 'faraday_middleware/multi_json' + + Faraday.new(url, options) do |c| + c.request :basic_auth, config_username(user, options), config_password(password, options) c.request :multi_json c.response :multi_json, symbolize_keys: true, content_type: 'application/json' @@ -162,6 +165,14 @@ def faraday_connection(options = {}) end end + def config_password(password, options) + options[:basic_auth] ? options[:basic_auth][:password] : password + end + + def config_username(user, options) + options[:basic_auth] ? options[:basic_auth][:username] : user + end + def request_body(body) return body if body.is_a?(String) From 2b8c741d8729235f15f7431aa7129de91a233ae1 Mon Sep 17 00:00:00 2001 From: David Corley Date: Mon, 13 Mar 2017 14:59:32 +0000 Subject: [PATCH 5/5] Fix silly C&P error --- lib/neo4j/core/cypher_session/adaptors/http.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/neo4j/core/cypher_session/adaptors/http.rb b/lib/neo4j/core/cypher_session/adaptors/http.rb index f8887bd0..20779d85 100644 --- a/lib/neo4j/core/cypher_session/adaptors/http.rb +++ b/lib/neo4j/core/cypher_session/adaptors/http.rb @@ -143,10 +143,6 @@ def get(path, body = '', options = {}) private - def faraday_connection(options = {}) - require 'faraday' - require 'faraday_middleware/multi_json' - def faraday_connection(options = {}) require 'faraday' require 'faraday_middleware/multi_json'