Class: Innards::Connection
- Inherits:
-
Object
- Object
- Innards::Connection
- Includes:
- Exceptions
- Defined in:
- lib/innards/connection.rb
Overview
Creates a connection to a RETS Server managing any required authentication
Constant Summary collapse
- VALID_RETS_VERSIONS =
[ "1.5", "1.7", "1.7.2", "1.8" ]
- VALID_AUTH_MODES =
[ "digest", "basic" ]
- DEFAULT_PARAMS =
{ :login_url => "", :user_agent => "innards/v#{Innards::Version::STRING}", :rets_version => "1.7.2", :auth_mode => "digest", }
- MASTER_PARAMS =
{ :request_count => 0, :cookies => [], :digest => {}, :login_uri => nil, :proxy_uri => nil }
- DEFAULT_SEARCH_OPTIONS =
{ :SearchType => "", :Class => "", :Query => "", :Format => "COMPACT-DECODED", :QueryType => "DMQL2", :StandardNames => "0", :Limit => "NONE" }
- DEFAULT_GETOBJECT_OPTIONS =
{ :Type => "", :Resource => "", :ID => "" }
Instance Attribute Summary collapse
-
#params ⇒ Object
readonly
Returns the value of attribute params.
Instance Method Summary collapse
- #get_metadata(options = {}) ⇒ Object
- #get_object(options = {}) ⇒ Object
-
#initialize(params = {}) ⇒ Connection
constructor
A new instance of Connection.
- #login! ⇒ Object
- #logout! ⇒ Object
- #search(options = {}) ⇒ Object
Constructor Details
#initialize(params = {}) ⇒ Connection
Returns a new instance of Connection.
59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/innards/connection.rb', line 59 def initialize(params = {}) @params = DEFAULT_PARAMS.merge(params).merge(MASTER_PARAMS) @digest_handler = DigestHandler.new @params @cookie_handler = CookieHandler.new @params raise InvalidUrlException.new unless has_valid_url? raise InvalidRetsVersionException.new unless has_valid_rets_version? raise InvalidAuthModeException.new unless has_valid_auth_mode? raise InvalidUserAgentException.new unless has_valid_user_agent? end |
Instance Attribute Details
#params ⇒ Object (readonly)
Returns the value of attribute params.
57 58 59 |
# File 'lib/innards/connection.rb', line 57 def params @params end |
Instance Method Details
#get_metadata(options = {}) ⇒ Object
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/innards/connection.rb', line 110 def = {} require_login! = { :Type => "METADATA-SYSTEM", :ID => "*", :Format => "COMPACT" }.merge() response = make_request_to(@params[:metadata][:GetMetadata], :query => ) response_io = StringIO.new(response.body) parser = Innards::Parsers::GetMetadataParser.new Ox.sax_parse(parser, response_io) if parser.valid_rets_response_received? parser. else false end end |
#get_object(options = {}) ⇒ Object
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
# File 'lib/innards/connection.rb', line 156 def get_object = {} require_login! = DEFAULT_GETOBJECT_OPTIONS.merge() response = make_request_to(@params[:metadata][:GetObject], :query => ) response_io = StringIO.new(response.body) reader = MultipartHandler.new response.headers["Content-Type"] if reader.is_multipart_response? reader.parse response.body else return response.body end end |
#login! ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/innards/connection.rb', line 73 def login! @params[:login_uri] = URI(@params[:login_url]) @params[:current_request] = @params[:login_uri].path response = make_request_to(@params[:current_request]) response_io = StringIO.new(response.body) parser = Innards::Parsers::LoginParser.new Ox.sax_parse(parser, response_io) if parser.valid_rets_response_received? params[:metadata] = parser. true else false end end |
#logout! ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/innards/connection.rb', line 93 def logout! require_login! response = make_request_to(@params[:metadata][:Logout]) response_io = StringIO.new(response.body) parser = Innards::Parsers::LogoutParser.new Ox.sax_parse(parser, response_io) if parser.valid_rets_response_received? params[:metadata] = parser. true else false end end |
#search(options = {}) ⇒ Object
133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
# File 'lib/innards/connection.rb', line 133 def search = {} require_login! = DEFAULT_SEARCH_OPTIONS.merge() raise InvalidSearchTypeException.new if [:SearchType].empty? raise InvalidClassException.new if [:Class].empty? raise InvalidQueryException.new if [:Query].empty? response = make_request_to(@params[:metadata][:Search], :query => ) response_io = StringIO.new(response.body) parser = Innards::Parsers::SearchParser.new Ox.sax_parse(parser, response_io) if parser.valid_rets_response_received? parser.results else false end end |