2012-02-09 7 views
7

Dado este api documentation, ¿cómo usaría HTTPBuilder y Groovy para construir mi consulta? He intentado varias cosas pero no lo estoy haciendo bien.Utilizando la API REST de Artifactory para implementar el archivo jar

def http = new HTTPBuilder() 
http.request('http://artifactory:8888/libs-snapshot-local/my/jar/1.0/test-jar-1.0.jar', PUT, JSON) { req -> 

     body = [ 
      uri: "http://artifactory:8888/libs-snapshot-local/my/jar/1.0/test-jar-1.0.jar", 
      downloadUri: "http://artifactory:8888/libs-snapshot-local/my/jar/1.0/test-jar-1.0.jar", 
      repo: "libs-snapshot-local", 
      path: "c:\\pathtojarfile\\test.jar", 
      created: "2012-02-03T08:37:12.599-0800", 
      createdBy: "someuser", 
      size: "1024", 
      mimeType: "application/java-archive" 

     ] 

    response.success = { resp, json -> 


    } 

    } 

Esto parece que me lleva a la mitad, pero carga un archivo jar vacío. Parece que el cuerpo está completamente ignorado. Quitarlo produce el mismo resultado. Parece que no puedo encontrar una buena referencia sobre cómo se hace esto.

Respuesta

13

El JSON en la documentación mencionada es en realidad respuesta de Artifactory a la solicitud de despliegue.
Para el despliegue, Artifactroy requiere sólo una solicitud PUT sencilla, por ejemplo:

def restClient = new RESTClient('http://localhost:8080/artifactory/libs-release-local/') 
restClient.auth.basic 'username', 'password' 
restClient.encoder.'application/zip' = this.&encodeZipFile 
def encodeZipFile(Object data) throws UnsupportedEncodingException { 
    def entity = new FileEntity((File) data, 'application/zip'); 
    entity.setContentType('application/zip'); 
    return entity 
} 
def response = restClient.put(path: 'org/artifact/1.0/artifact-1.0.jar', 
     body: new File('/path/to/local/artifact.jar'), 
     requestContentType: 'application/zip' 
) 
+0

Esto funcionó! ¡Gracias! La documentación es un poco confusa. Algunos dicen "Salida de muestra" y algunos dicen "Uso de muestra". La aplicación de implementación tuvo "uso de muestra" ... que pensé que sería cómo llamar a la API. – stuff22

Cuestiones relacionadas