def get(options, parameters = [], referer = nil)
unless options.is_a? Hash
url = options
unless parameters.respond_to?(:each)
referer = parameters
parameters = []
end
else
raise ArgumentError.new("url must be specified") unless url = options[:url]
parameters = options[:params] || []
referer = options[:referer]
headers = options[:headers]
end
referer ||= current_page || Page.new(nil, {'content-type'=>'text/html'})
unless referer.is_a?(WWW::Mechanize::File)
referer = referer.is_a?(String) ?
Page.new(URI.parse(referer), {'content-type' => 'text/html'}) :
Page.new(referer, {'content-type' => 'text/html'})
end
abs_uri = to_absolute_uri(url, referer)
if parameters.length > 0
abs_uri.query ||= ''
abs_uri.query << '&' if abs_uri.query.length > 0
abs_uri.query << self.class.build_query_string(parameters)
end
request = fetch_request(abs_uri)
page = fetch_page(:uri => abs_uri, :request => request, :page => referer, :headers => headers)
add_to_history(page)
yield page if block_given?
page
end