Saltar a contenido

cla/lwp - LWP User Agent

El user agent LWP es una alternativa poderosa y versátil al módulo cla/web, que es liviano y más simple.

lwp.agent(options)

Retorna un nuevo objeto web agent. El objeto web agent es análogo a un navegador o a un comando curl, en el sentido de que puede usarse para elaborar solicitudes web complejas.

En este ejemplo, invocamos un webservice REST GET que retorna contenido JSON.

var lwp = require('cla/lwp');
var ua = lwp.agent();
var res = ua.request('GET', 'http://example.com');
print(res.content());

Publicando contenido JSON a un endpoint:

var lwp = require('cla/lwp');
var ua = lwp.agent();
var json = JSON.stringify({
    foo: 1234,
    bar: 'hello'
});

var res = ua.request('GET', 'https://jsonplaceholder.typicode.com/todos/1', {
    content_type: 'application/json',
    content: json
});

print(res.content(), res.code());

var obj = JSON.parse(res.content());
print('UserID' + obj.userId);

Usando autenticación digest:

var lwp = require('cla/lwp');
var ua = lwp.agent();
ua.credentials('server:8080', 'MyRealm', 'myusername', 'mypassword');
var res = ua.request('GET', 'http://some.digest.example.com');

Adjuntando un archivo como POST en un formulario:

var lwp = require("cla/lwp");
var ua = lwp.agent();
var localFile = '/tmp/myfile.tar';

const res = ua.post( 'http://example.com/postfile',
    'Content-Type',
    'multipart/form-data',
    'Content',
    { file: [localFile] }
);

if( res.isSuccess() ) {
    print("Done!");
}

Descargar un archivo ahora también es posible, y se hace automáticamente por el módulo cla/lwp enviando la ruta completa al archivo usando la opción toFile en la solicitud:

var lwp = require("cla/lwp");
var ua = lwp.agent();

const res = ua.request('GET',
    'https://file-examples-com.github.io/uploads/2017/02/zip_10MB.zip',
    { toFile: '/tmp/localzip.zip' }
);

if( res.isSuccess() ) {
    print("Done!");
}

También puede establecer toPath para descargar archivos. En este caso, el nombre del archivo será extraído de la última parte de la URL y agregado a toPath:

var lwp = require("cla/lwp");
var ua = lwp.agent();

// writes the file /tmp/zip_10MB.zip
const res = ua.request('GET',
    'https://file-examples-com.github.io/uploads/2017/02/zip_10MB.zip',
    { toPath: '/tmp' }
);

if( res.isSuccess() ) {
    print("Done!");
}

Más información

Para una descripción completa de los métodos disponibles, esta biblioteca imita el LWP::UserAgent de Perl.

https://metacpan.org/pod/LWP::UserAgent