Class: EDSApi::Connection
- Inherits:
-
Object
- Object
- EDSApi::Connection
- Defined in:
- lib/ebsco-discovery-service-api.rb
Overview
Connection object. Does what it says. ConnectionHandler is what is usually desired and wraps auto-reonnect features, etc.
Direct Known Subclasses
Instance Attribute Summary collapse
-
#auth_token ⇒ Object
Returns the value of attribute auth_token.
-
#debug_notes ⇒ Object
Returns the value of attribute debug_notes.
-
#guest ⇒ Object
Returns the value of attribute guest.
-
#password ⇒ Object
writeonly
Sets the attribute password.
-
#session_token ⇒ Object
Returns the value of attribute session_token.
-
#userid ⇒ Object
writeonly
Sets the attribute userid.
Instance Method Summary collapse
-
#create_session ⇒ Object
Create the session.
-
#end_session(session_token) ⇒ Object
End the session.
-
#info(format = :xml) ⇒ Object
Info method.
- #ip_authenticate(format = :xml) ⇒ Object
- #ip_init(profile, guest = 'y') ⇒ Object
-
#retrieve(dbid, an, highlightterms = "", format = :xml) ⇒ Object
Retrieve specific information.
-
#search(options, format = :xml) ⇒ Object
Run a search query, XML results are returned.
- #uid_authenticate(format = :xml) ⇒ Object
-
#uid_init(userid, password, profile, guest = 'y') ⇒ Object
Init the object with userid and pass.
Instance Attribute Details
#auth_token ⇒ Object
Returns the value of attribute auth_token.
16 17 18 |
# File 'lib/ebsco-discovery-service-api.rb', line 16 def auth_token @auth_token end |
#debug_notes ⇒ Object
Returns the value of attribute debug_notes.
16 17 18 |
# File 'lib/ebsco-discovery-service-api.rb', line 16 def debug_notes @debug_notes end |
#guest ⇒ Object
Returns the value of attribute guest.
16 17 18 |
# File 'lib/ebsco-discovery-service-api.rb', line 16 def guest @guest end |
#password=(value) ⇒ Object (writeonly)
Sets the attribute password
17 18 19 |
# File 'lib/ebsco-discovery-service-api.rb', line 17 def password=(value) @password = value end |
#session_token ⇒ Object
Returns the value of attribute session_token.
16 17 18 |
# File 'lib/ebsco-discovery-service-api.rb', line 16 def session_token @session_token end |
#userid=(value) ⇒ Object (writeonly)
Sets the attribute userid
17 18 19 |
# File 'lib/ebsco-discovery-service-api.rb', line 17 def userid=(value) @userid = value end |
Instance Method Details
#create_session ⇒ Object
Create the session
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/ebsco-discovery-service-api.rb', line 74 def create_session uri = URI "#{API_URL}edsapi/rest/createsession?profile=#{@profile}&guest=#{@guest}" req = Net::HTTP::Get.new(uri.request_uri) req['x-authenticationToken'] = @auth_token req['Accept'] = "application/json" @debug_notes << "<p>CREATE SESSION Call to " << uri.to_s << " with auth token: " << req['x-authenticationToken'].to_s << "</p>"; # Net::HTTP.start(uri.hostname, uri.port) { |http| # doc = JSON.parse(http.request(req).body) # return doc['SessionToken'] # } Net::HTTP.start(uri.hostname, uri.port) { |http| begin return http.request(req).body rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e abort "No response from server" end } end |
#end_session(session_token) ⇒ Object
End the session
93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/ebsco-discovery-service-api.rb', line 93 def end_session(session_token) uri = URI "#{API_URL}edsapi/rest/endsession?sessiontoken=#{CGI::escape(session_token)}" req = Net::HTTP::Get.new(uri.request_uri) req['x-authenticationToken'] = @auth_token Net::HTTP.start(uri.hostname, uri.port) { |http| begin http.request(req) rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e abort "No response from server" end } return true end |
#info(format = :xml) ⇒ Object
Info method
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 |
# File 'lib/ebsco-discovery-service-api.rb', line 145 def info(format = :xml) uri = URI "#{API_URL}edsapi/rest/Info" req = Net::HTTP::Get.new(uri.request_uri) req['x-authenticationToken'] = @auth_token req['x-sessionToken'] = @session_token req['Accept'] = 'application/json' #if format == :json @debug_notes << "<p>INFO Call to " << uri.to_s << " with auth token: " << req['x-authenticationToken'].to_s << " and session token: " << req['x-sessionToken'].to_s << "</p>"; Net::HTTP.start(uri.hostname, uri.port) { |http| begin return http.request(req).body rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e abort "No response from server" end } end |
#ip_authenticate(format = :xml) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/ebsco-discovery-service-api.rb', line 59 def ip_authenticate(format = :xml) uri = URI "#{API_URL_S}authservice/rest/ipauth" req = Net::Http:Post.new(uri.request_uri) req["Accept"] = "application/json" #if format == :json https = Net::HTTP.new(uri.hostname, uri.port) https.use_ssl = true https.verify_mode = OpenSSL::SSL::VERIFY_NONE begin doc = JSON.parse(https.request(req).body) rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e abort "No response from server" end @auth_token = doc['AuthToken'] end |
#ip_init(profile, guest = 'y') ⇒ Object
28 29 30 31 32 |
# File 'lib/ebsco-discovery-service-api.rb', line 28 def ip_init(profile, guest = 'y') @profile = profile @guest = guest return self end |
#retrieve(dbid, an, highlightterms = "", format = :xml) ⇒ Object
Retrieve specific information
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/ebsco-discovery-service-api.rb', line 125 def retrieve(dbid, an, highlightterms = "", format = :xml) uri = URI "#{API_URL}edsapi/rest/retrieve?dbid=#{dbid}&an=#{an}" if highlightterms != "" uri = URI "#{API_URL}edsapi/rest/retrieve?dbid=#{dbid}&an=#{an}&highlightterms=#{highlightterms}" end req = Net::HTTP::Get.new(uri.request_uri) req['x-authenticationToken'] = @auth_token req['x-sessionToken'] = @session_token req['Accept'] = 'application/json' #if format == :json @debug_notes << "<p>RETRIEVE Call to " << uri.to_s << " with auth token: " << req['x-authenticationToken'].to_s << " and session token: " << req['x-sessionToken'].to_s << "</p>"; Net::HTTP.start(uri.hostname, uri.port) { |http| begin return http.request(req).body rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e abort "No response from server" end } end |
#search(options, format = :xml) ⇒ Object
Run a search query, XML results are returned
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# File 'lib/ebsco-discovery-service-api.rb', line 107 def search(, format = :xml) uri = URI "#{API_URL}edsapi/rest/Search?#{}" #return uri.request_uri req = Net::HTTP::Get.new(uri.request_uri) req['x-authenticationToken'] = @auth_token req['x-sessionToken'] = @session_token req['Accept'] = 'application/json' #if format == :json @debug_notes << "<p>SEARCH Call to " << uri.to_s << " with auth token: " << req['x-authenticationToken'].to_s << " and session token: " << req['x-sessionToken'].to_s << "</p>"; Net::HTTP.start(uri.hostname, uri.port) { |http| begin return http.request(req).body rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e abort "No response from server" end } end |
#uid_authenticate(format = :xml) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/ebsco-discovery-service-api.rb', line 36 def uid_authenticate(format = :xml) # DO NOT SEND CALL IF YOU HAVE A VALID AUTH TOKEN xml = "<UIDAuthRequestMessage xmlns='http://www.ebscohost.com/services/public/AuthService/Response/2012/06/01'><UserId>#{@userid}</UserId><Password>#{@password}</Password></UIDAuthRequestMessage>" uri = URI "#{API_URL_S}authservice/rest/uidauth" req = Net::HTTP::Post.new(uri.request_uri) req["Content-Type"] = "application/xml" req["Accept"] = "application/json" #if format == :json req.body = xml @debug_notes << "<p>UID Authentication Call to " << uri.to_s << ": " << xml << "</p>"; https = Net::HTTP.new(uri.hostname, uri.port) https.use_ssl = true https.verify_mode = OpenSSL::SSL::VERIFY_NONE begin doc = JSON.parse(https.request(req).body) rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e about "No response from server" end if doc.has_key?('ErrorNumber') abort "Bad response from server - error code #{result['ErrorNumber']}" else @auth_token = doc['AuthToken'] end end |
#uid_init(userid, password, profile, guest = 'y') ⇒ Object
Init the object with userid and pass.
20 21 22 23 24 25 26 27 |
# File 'lib/ebsco-discovery-service-api.rb', line 20 def uid_init(userid, password, profile, guest = 'y') @debug_notes = "<p>Setting guest as " << guest.to_s << "</p>" @userid = userid @password = password @profile = profile @guest = guest return self end |