Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/proxy support #20

Open
wants to merge 12 commits into
base: master
Choose a base branch
from
7 changes: 3 additions & 4 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
language: ruby
rvm:
- 1.9.3
- 2.0.0
- 2.1.0
- jruby-19mode # JRuby (1.9)
- 2.2.7
- 2.3.3
- 2.4.0
- rbx-2
install: "bundle install --retry=3"
5 changes: 3 additions & 2 deletions exlibris-primo.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,14 @@ Gem::Specification.new do |s|
s.add_dependency "require_all", "~> 1.3.1"
# Leverage ActiveSupport core extensions.
s.add_dependency "activesupport", ">= 3.2.14"
s.add_dependency "nokogiri", "~> 1.6.0"
s.add_dependency "nokogiri", "~> 1.6.8"
s.add_dependency "json", "~> 1.8.0"
s.add_dependency "savon", "~> 2.8.0"
s.add_dependency "savon", "~> 2.11.1"
s.add_dependency "iso-639", "~> 0.2.0"
s.add_development_dependency "rake", "~> 10.1"
s.add_development_dependency "vcr", "~> 2.9.0"
s.add_development_dependency "webmock", "~> 1.20.0"
s.add_development_dependency "pry", "~> 0.9.12.2"
s.add_development_dependency 'minitest', '~> 4.7.5'
s.add_development_dependency 'test-unit'
end
6 changes: 5 additions & 1 deletion lib/exlibris/primo/config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ module Primo
module Config
class << self
include WriteAttributes
attr_accessor :base_url, :institution, :institutions, :libraries, :availability_statuses, :sources,
attr_accessor :base_url, :proxy_url, :institution, :institutions, :libraries, :availability_statuses, :sources,
:facet_labels, :facet_top_level, :facet_collections, :facet_resource_types, :load_time

def load_yaml file
Expand All @@ -29,6 +29,10 @@ def base_url
@base_url ||= String.new config.base_url.to_s
end

def proxy_url
@proxy_url ||= config.proxy_url
end

def institution
@institution ||= String.new config.institution.to_s
end
Expand Down
5 changes: 3 additions & 2 deletions lib/exlibris/primo/holding.rb
Original file line number Diff line number Diff line change
Expand Up @@ -100,13 +100,14 @@ def to_source

# Return the attribute accessible instance variables as a hash.
def to_h
{ :availlibrary => availlibrary, :record_id => record_id, :original_id => original_id,
{
:availlibrary => availlibrary, :record_id => record_id, :original_id => original_id,
:title => title, :author => author, :display_type => display_type, :source_id => source_id,
:original_source_id => original_source_id, :source_record_id => source_record_id,
:ils_api_id => ils_api_id, :institution_code => institution_code, :library_code => library_code,
:availability_status_code => availability_status_code, :collection => collection,
:call_number => call_number, :coverage => coverage, :notes => notes, :subfields => subfields,
:source_id => source_id, :source_class => source_class, :source_data => source_data }
:source_class => source_class, :source_data => source_data }
end
end
end
Expand Down
2 changes: 1 addition & 1 deletion lib/exlibris/primo/version.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
module Exlibris
module Primo
VERSION = '1.1.9'
VERSION = '1.1.10'
end
end
13 changes: 12 additions & 1 deletion lib/exlibris/primo/web_service/client/base/savon_client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,20 @@ def client
# we don't want to make an extra HTTP call.
#
# @client ||= Savon.client(wsdl: wsdl)
@client ||= Savon.client(endpoint: endpoint, namespace: endpoint, log: false, log_level: :warn)
@client ||= Savon.client(client_options)
end
protected :client

def client_options
{
proxy: proxy_url,
endpoint: endpoint,
namespace: endpoint,
log: false,
log_level: :warn
}.delete_if { |k, v| v.blank? }
end
private :client_options
end
end
end
Expand Down
7 changes: 5 additions & 2 deletions test/config_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@ def test_config

def test_config_from_yaml
reset_primo_configuration
yaml_primo_configuration
yaml_primo_configuration(false)
assert_equal "yaml_url", Exlibris::Primo::Config.base_url
assert_equal "YAML_INSTITUTION", Exlibris::Primo::Config.institution
assert_equal "yaml_proxy_url", Exlibris::Primo::Config.proxy_url
assert_nil(Exlibris::Primo::Config.institutions)
assert_equal({ "LIB_CODE1" => "Library Decoded 1", "LIB_CODE2" => "Library Decoded 2",
"LIB_CODE3" => "Library Decoded 3" }, Exlibris::Primo::Config.libraries)
Expand All @@ -44,10 +45,12 @@ def test_config_from_yaml

def test_config_attributes
reset_primo_configuration
yaml_primo_configuration
yaml_primo_configuration(false)
search = Exlibris::Primo::Search.new
assert_equal "yaml_url", search.base_url
assert_equal "YAML_INSTITUTION", search.institution
assert_equal "yaml_proxy_url", search
.proxy_url
assert_equal({}, search.institutions)
assert_equal({ "LIB_CODE1" => "Library Decoded 1", "LIB_CODE2" => "Library Decoded 2",
"LIB_CODE3" => "Library Decoded 3" }, search.libraries)
Expand Down
1 change: 1 addition & 0 deletions test/support/config.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
base_url: "yaml_url"
institution: "YAML_INSTITUTION"
proxy_url: "yaml_proxy_url"
libraries:
"LIB_CODE1": "Library Decoded 1"
"LIB_CODE2": "Library Decoded 2"
Expand Down
4 changes: 3 additions & 1 deletion test/test_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -66,15 +66,17 @@ def assert_request(request, expected_root, *expected_args)
end
protected :assert_request

def yaml_primo_configuration
def yaml_primo_configuration(overide_proxy_url = true)
Exlibris::Primo.configure do |config|
config.load_yaml File.expand_path("../support/config.yml", __FILE__)
config.proxy_url = nil if overide_proxy_url
end
end

def reset_primo_configuration
Exlibris::Primo.configure do |config|
config.base_url = nil
config.proxy_url = nil
config.institution = nil
config.institutions = nil
config.libraries = nil
Expand Down