Validar URLs git/svn

Muy buenas,

En una aplicación (para gestión de extensiones de Spree) le pido al
usuario en un formulario la URL de su SCM, y tengo que comprobar que el
repositorio existe.
El problema es que el usuario puede ponerme la URL de la web del SCM
(github, gitorious, RubyForge…), cosa que es fácil de validar, o la
URL del repositorio en sí. Mi problema es que no sé cómo validar urls
que no sean HTTP, HTTPS. No me refiero a si la URL está bien formada o
no, eso con regexps es fácil, quiero comprobar si existe o no.

Comprobación OK

https://github.com/stffn/declarative_authorization/tree
http://ym4r.rubyforge.org/svn/

Cómo valido la existencia de estas URLs?

git://github.com/stffn/declarative_authorization.git
svn://rubyforge.org/var/svn/ym4r

En la documentación del módulo URI no he visto cómo hacerlo
http://www.ruby-doc.org/stdlib/libdoc/uri/rdoc/classes/URI.html

Se os ocurre algo?

Gracias por adelantado.
Un saludo!

2009/4/14 Juan José Vidal [email protected]

Muy buenas,

Comprobación OK

https://github.com/stffn/declarative_authorization/tree
http://ym4r.rubyforge.org/svn/

Una pregunta: ¿Como estás validando esas rutas?

Cómo valido la existencia de estas URLs?

git://github.com/stffn/declarative_authorization.git

y git+ssh://user:pass@server/repo
y ssh://user:pass@server/repo

Y que tal un u = URI.parse(‘git+ssh://user:pass@server/repo’)

self.errors.add(:repo,‘No se admite el protocolo que quieres’) and
return
false unless %w(http git+ssh git ssh svn).include u.schema
self.errors.add(:repo,‘Necesitas especificar usuario para acceder al
repo’)
and return false if %w(git+ssh ssh).include u.schema && u.user.empty?
self.errors.add(:repo, ‘Dame la contraseña, anda…’) and return false
if
!u.user.empty? && u.password.empty?

Bueno… más o menos el concepto.