def read(uri, header={})
request = WFO::ReqHTTP.get(uri)
header.each {|k, v| request[k] = v }
while true
response = do_request(request)
break if response.code == '200' &&
WFO::Auth.reqauth_checker.all? {|checker|
!checker.call(self, response)
}
request = nil
WFO::Auth.auth_handler.each {|h|
if request = h.call(self, response)
break
end
}
if request == nil
raise "no handler for #{response.code} #{response.message} in #{response.uri}"
end
end
result = response.body
OpenURI::Meta.init result
result.status = [response.code, response.message]
result.base_uri = response.uri
response.each {|name,value| result.meta_add_field name, value }
result
end