2014-06-26 8 views
5

Ho riscontrato un problema con l'attributo obbligatorio mancante per CUPS-Get-Devices. Fondamentalmente voglio ottenere l'elenco delle stampanti disponibili con IPP e CUPS utilizzando https://www.npmjs.org/package/ipp.Attributo IPP mancante su CUPS-Get-Devices che utilizza il modulo ipp node.js

Ho implementato CUPS-Get-Devices nel pacchetto in quanto non supportava l'attributo per il pacchetto ma ho funzionato. Il problema è che la risposta risponde con "status-message": "Gli attributi richiesti mancanti". e non mi sta dando la lista delle stampanti.

var uri = "http://localhost:631" 
var data = ipp.serialize({ 
    "operation": "CUPS-Get-Printers", 
    "operation-attributes-tag": { 
    "attributes-charset": 'utf-8', 
    "attributes-natural-language": 'en-us', 
    "limit": 10 
} 
}); 

ipp.request(uri, data, function(err, res){ 
    if(err){ 
    return console.log(err); 
    } 
    console.log(JSON.stringify(res,null,2)); 
}); 

La risposta è

{ 
    "version": "2.0", 
    "statusCode": "client-error-bad-request", 
    "id": 67392993, 
    "operation-attributes-tag": { 
    "attributes-charset": "utf-8", 
    "attributes-natural-language": "en-us", 
    "status-message": "Missing required attributes." 
    } 
} 

La documentazione non dice nulla su altri parametri richiesti http://www.cups.org/documentation.php/spec-ipp.html#CUPS_GET_PRINTERS

Qualcuno sa dov'è il problema? Grazie!

risposta

2

Questo codice funziona per me, con una libreria ipp non modificata e con CUPS 1.7.3. La mia ipotesi migliore è che hai fatto un refuso o qualcosa quando hai modificato la libreria.

var ipp = require('ipp'); 

// Add missing operation code 
ipp.operations['CUPS-Get-Printers'] = 0x4002; 

// The rest is identical to your code: 

var uri = "http://localhost:631"; 
var data = ipp.serialize({ 
    "operation": "CUPS-Get-Printers", 
    "operation-attributes-tag": { 
    "attributes-charset": 'utf-8', 
    "attributes-natural-language": 'en-us', 
    "limit": 10 
    } 
}); 

ipp.request(uri, data, function(err, res){ 
    if(err){ 
    return console.log(err); 
    } 
    console.log(JSON.stringify(res,null,2)); 
}); 
Problemi correlati