Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/08/2013, 18:13
vistaero
 
Fecha de Ingreso: noviembre-2009
Mensajes: 67
Antigüedad: 14 años, 6 meses
Puntos: 2
Descargar el archivo más reciente de un repositorio

Buenas, me estoy metiendo de lleno de un tema que desconozco por completo.

El programa es bajo VB.NET con Windows Forms, y aunque ya he hecho mis pinitos, con esto no sé por donde empezar.

http://repo.bukkit.org/content/groups/public/org/bukkit/craftbukkit/

Necesito que mi programa sepa buscar y descargar la versión más reciente de CraftBukkit de ese repositorio. Pero no mediante los metadatos, pues curiosamente me dice que la carpeta de la 1.6.2-R0.1-SNAPSHOT es más reciente que 1.6.2-R0.2-SNAPSHOT/

Por ejemplo, ahora mismo el archivo correspondiente a la versión más reciente que debería dar un programa que hiciera esto sería este: http://repo.bukkit.org/content/groups/public/org/bukkit/craftbukkit/1.6.2-R0.2-SNAPSHOT/craftbukkit-1.6.2-R0.2-20130818.053356-14.jar

Me han comentado que una cosa que podría usar es http://msdn.microsoft.com/es-es/library/system.net.http.httpclient.aspx, o también https://github.com/hhariri/EasyHttp

Este es el código que estoy utilizando por ahora, que aún solo funciona para descargar alguna versión en concreto.

Código vb:
Ver original
  1. ' 1. Listar los directorios de una dirección.
  2. ' 2. Obtener el directorio más reciente en función del que tenga números más altos en su nombre.
  3. ' 3. Listar los archivos con extensión ".jar" de ese directorio.
  4. ' 4. Obtener la dirección del archivo más reciente de la misma forma y asignársela a FileToDownload (Pongo ya una de forma temporal sólo para que funcione)
  5. Dim FileToDownload = "http://repo.bukkit.org/content/groups/public/org/bukkit/craftbukkit/1.6.2-R0.2-SNAPSHOT/craftbukkit-1.6.2-R0.2-20130818.053356-14.jar"
  6. ' 5. Asignarle el nombre del archivo más reciente a FileName (Pongo ya uno de forma temporal sólo para que funcione)
  7. Dim FileName = "craftbukkit-1.6.2-R0.2-20130818.053356-14.jar"
  8. My.Computer.Network.DownloadFile(FileToDownload, Application.StartupPath & "\versions\" & FileName)
  9. ' En lugar de esta última línea uso otro código más avanzado que no me congela la interfaz mientras realiza la descarga y además me permite realizar múltiples acciones ante eventos como fallo de la descarga, cancelado o cambio del progreso de la descarga, útil para poner una barra de progreso. Pero para el caso es irrelevante ya que ocuparía mucho espacio aquí, de todas formas para quien le interese: http://vbcity.com/forums/t/157974.aspx, la segunda respuesta.

Edito 1:

He descubierto un procedimiento más viable para lograr la dirección del archivo más reciente, lo dejo aquí anotado por si algún alma caritativa me ayuda con el código, pues aunque yo no paro de investigar, y con el tiempo lo acabaría logrando, un poco de ayudita no está mal.

1. Descargar este archivo y buscar las etiquetas <latest>1.6.2-R0.2-SNAPSHOT</latest>: http://repo.bukkit.org/content/groups/public/org/bukkit/craftbukkit/maven-metadata.xml

2. Añadirle a la dirección "http://repo.bukkit.org/content/groups/public/org/bukkit/craftbukkit/", el contenido de las etiquetas latest: http://repo.bukkit.org/content/groups/public/org/bukkit/craftbukkit/1.6.2-R0.2-SNAPSHOT/

3. Añadirle "maven-metadata.xml" y descargarlo: http://repo.bukkit.org/content/groups/public/org/bukkit/craftbukkit/1.6.2-R0.2-SNAPSHOT/maven-metadata.xml

4. Buscar en él:

<extension>jar</extension>
<value>1.6.2-R0.2-20130821.061651-17</value>

5. Añadirle a la dirección sin "maven-metadata.xml": "craftbukkit-" + el valor de las etiquetas value y ".jar". Queda así: http://repo.bukkit.org/content/groups/public/org/bukkit/craftbukkit/1.6.2-R0.2-SNAPSHOT/craftbukkit-1.6.2-R0.2-20130821.061651-17.jar

7. Descargar la URL con nombre de archivo: valor de las etiquetas value más ".jar".

Ya tenemos la versión más reciente.

Última edición por vistaero; 21/08/2013 a las 20:44