require 'hpricot' require 'open-uri' class RemoteResources class URLNotFoundException < Exception end def self.hpricot_document(url) Hpricot(open_remote(url)) end # Loads YAML-encoded data from a remote URL def self.remote_yaml_document(document_url) YAML.load(open_remote(document_url)) end # returns a listing of the files/folders at this URL def self.repository_list(url) self.read_svn_repository(url).split("\n").collect { |entry| entry.strip.gsub(/\/$/, '') } end # Returns a hash of info about this repository URL def self.repository_info(url) YAML.parse(self.read_svn_repository_info(url)) end def self.read_svn_repository(url) result = `svn ls #{url}` raise URLNotFoundException if $?.exitstatus != 0 result end def self.read_svn_repository_info(url) result = `svn info #{url}` raise URLNotFoundException if $?.exitstatus != 0 result end private # this only exists for stubbing def self.open_remote(uri) open(uri) end end