def fetch_uri(uri_string, limit = 10 )
raise ArgumentError, 'http redirect too deep' if limit == 0
uri = URI.parse(uri_string)
response = Net::HTTP.new(uri.host, uri.port).start { |http|
path_and_query = uri.path
if uri.query != nil then
path_and_query += '?' + uri.query
end
request = Net::HTTP::Get.new(path_and_query)
request['User-Agent'] = WikiBot::USER_AGENT
http.request(request)
}
case response
when Net::HTTPSuccess then response
when Net::HTTPRedirection then fetch_uri(response['location'], limit - 1)
else
@logger.log('HTTP要求に対してエラーの応答が返されました。')
@logger.log(' ' + uri_string)
@logger.log(' ' + response.code.to_s + ': ' + response.message)
response.error!
end
end