Comunicación con Aspera Shares

En un proyecto en el que estoy trabajando me tenia que comunicar con un servidor IBM Aspera Shares  para subir y descargar archivos.

Para la interacción con el servidor solo tenia disponible el CLI por lo cual debí instalarla por consola

  • Install cli https://github.com/IBM/aspera-cli
  • apt install -y ruby ruby-dev rubygems ruby-json
  • gem install aspera-cli
  • gem update aspera-cli
  • ascli conf ascp install
  • https://github.com/IBM/aspera-cli#client instalar el aspera connect

Luego para subir y bajar archivo desde la consola utilice los siguientes comandos

/* Upload */
ascli shares repo upload --to-folder=<folder dentro de aspera> <archivo local a subir> --url=<aspera ulr> --username=<user> --password=<pass>

/* Download */
ascli shares repo download --to-folder=<carpeta local>  <artchivo en aspera> --url=<aspera ulr> --username=<user> --password=<pass>

Por otro lado analizando el debug generado por la consultas desde el cli encontré que se comunica con un WS dentro del server con el cual puedo acceder y listar el contenido de una ruta especifica de aspera.

function postFilesBrowse($aspera_path,$skip=0,$count=50){
return Http::withHeaders(
[‘Authorization’ => ‘Basic ‘ . base64_encode(env(‘ASPERA_USER’).‘:’.env(‘ASPERA_PASSWORD’)),
‘Accept’ => ‘application/json’,
‘Content-Type’ => ‘application/json’
])
->withBody(
json_encode([
«path»=>$aspera_path,
«skip»=>$skip,
«count» => $count,
]),
‘application/json’)
->post(env(‘ASPERA_HOST’) . ‘/node_api/files/browse’);
}