Esta secci¨®n describe las adiciones de Áú»¢¶Ä²© al lenguaje JavaScript implementado con Duktape y las funciones globales de JavaScript compatibles.
El objeto Áú»¢¶Ä²© proporciona interacci¨®n con la funcionalidad interna de Áú»¢¶Ä²©.
²Ñ¨¦³Ù´Ç»å´Ç | ¶Ù±ð²õ³¦°ù¾±±è³¦¾±¨®²Ô |
---|---|
log(loglevel, mensaje) |
Escribe el <mensaje> en el registro de Áú»¢¶Ä²© usando el nivel de registro <loglevel> (consulte el par¨¢metro DebugLevel del archivo de configuraci¨®n). |
Ejemplo:
Puede utilizar los siguientes alias:
Alias | Alias de |
---|---|
console.log(objeto) | Áú»¢¶Ä²©.log(4, JSON.stringify(objeto)) |
console.warn(objeto) | Áú»¢¶Ä²©.log(3, JSON.stringify(objeto)) |
console.error(objeto) | Áú»¢¶Ä²©.log(2, JSON.stringify(objeto)) |
El tama?o total de todos los mensajes registrados est¨¢ limitado a 8 MB por cada ejecuci¨®n del script.
²Ñ¨¦³Ù´Ç»å´Ç | ¶Ù±ð²õ³¦°ù¾±±è³¦¾±¨®²Ô |
---|---|
sleep(delay) |
Retrasa la ejecuci¨®n de JavaScript en delay milisegundos. |
Ejemplo (retrasar la ejecuci¨®n 15 segundos):
Este objeto encapsula el identificador cURL que permite realizar solicitudes HTTP simples. Los errores se lanzan como excepciones.
La inicializaci¨®n de m¨²ltiples objetos HttpRequest
est¨¢ limitada a 10 por cada ejecuci¨®n del script.
²Ñ¨¦³Ù´Ç»å´Ç | ¶Ù±ð²õ³¦°ù¾±±è³¦¾±¨®²Ô |
---|---|
addHeader(value) |
Agrega el campo de encabezado HTTP. Este campo se utiliza para todas las solicitudes siguientes hasta que se borre con el m¨¦todo clearHeader() .La longitud total de los campos de encabezado que se pueden agregar a un ¨²nico objeto HttpRequest est¨¢ limitada a 128 Kbytes (caracteres especiales y nombres de encabezado incluidos). |
clearHeader() |
Borra el encabezado HTTP. Si no se establecen campos de encabezado, HttpRequest establecer¨¢ el tipo de contenido en aplicaci¨®n/json si los datos que se publican tienen formato JSON; texto/sin formato en caso contrario. |
connect(url) |
Env¨ªa la solicitud HTTP CONNECT a la URL y devuelve la respuesta. |
customRequest(m¨¦todo, url, datos) |
Permite especificar cualquier m¨¦todo HTTP en el primer par¨¢metro. Env¨ªa la solicitud del m¨¦todo a la URL con la carga ¨²til datos opcional y devuelve la respuesta. |
delete(url, datos) |
Env¨ªa la solicitud HTTP DELETE a la URL con la carga ¨²til datos opcional y devuelve la respuesta. |
getHeaders(<asArray>) |
Devuelve el objeto de los campos de encabezado HTTP recibidos. El par¨¢metro asArray puede establecerse en "true" (por ejemplo, getHeaders(true) ), "false" o no estar definido . Si se establece en "verdadero", los valores del campo de encabezado HTTP recibidos se devolver¨¢n como matrices; esto debe usarse para recuperar los valores de los campos de m¨²ltiples encabezados con el mismo nombre.Si no se establece o se establece en "falso", los valores de los campos del encabezado HTTP recibidos se devolver¨¢n como cadenas. |
get(url, datos) |
Env¨ªa una solicitud HTTP GET a la URL con la carga ¨²til datos opcional y devuelve la respuesta. |
head(url) |
Env¨ªa la solicitud HTTP HEAD a la URL y devuelve la respuesta. |
options(url) |
Env¨ªa la solicitud HTTP OPTIONS a la URL y devuelve la respuesta. |
patch(url, datos) |
Env¨ªa la solicitud HTTP PATCH a la URL con la carga ¨²til datos opcional y devuelve la respuesta. |
put(url, datos) |
Env¨ªa la solicitud HTTP PUT a la URL con la carga ¨²til datos opcional y devuelve la respuesta. |
post(url, datos) |
Env¨ªa la solicitud HTTP POST a la URL con la carga ¨²til datos opcional y devuelve la respuesta. |
getStatus() |
Devuelve el c¨®digo de estado de la ¨²ltima solicitud HTTP. |
setProxy(proxy) |
Establece el proxy HTTP al valor "proxy". Si este par¨¢metro est¨¢ vac¨ªo, no se utiliza ning¨²n proxy. |
setHttpAuth(m¨¢scara de bits, nombre de usuario, contrase?a) |
Establece los m¨¦todos de autenticaci¨®n HTTP habilitados (HTTPAUTH_BASIC, HTTPAUTH_DIGEST, HTTPAUTH_NEGOTIATE, HTTPAUTH_NTLM, HTTPAUTH_NONE) en el par¨¢metro 'bitmask'. HTTPAUTH El indicador _NONE permite deshabilitar la autenticaci¨®n HTTP. Ejemplos: request.setHttpAuth(HTTPAUTH_NTLM \| HTTPAUTH_BASIC, nombre de usuario, contrase?a) request.setHttpAuth(HTTPAUTH_NONE) |
trace(url, datos) |
Env¨ªa la solicitud HTTP TRACE a la URL con la carga ¨²til datos opcional y devuelve la respuesta. |
Ejemplo:
try {
Áú»¢¶Ä²©.log(4, 'valor del script de jira webhook='+valor);
var result = {
'tags': {
'endpoint': 'jira'
}
},
params = JSON.parse(value),
req = new HttpRequest(),
fields = {},
resp;
req.addHeader('Content-Type: application/json');
req.addHeader('Authorization: Basic '+params.authentication);
fields.summary = params.summary;
fields.description = ±è²¹°ù¨¢³¾±ð³Ù°ù´Ç²õ.description;
fields.project = {"key": params.project_key};
fields.issuetype = {"id": params.issue_id};
resp = req.post('https://jira.example.com/rest/api/2/issue/',
JSON.stringify({"fields": fields})
);
if ( (req.getStatus() != 201) {
throw 'C¨®digo de respuesta: '+req.getStatus();
}
resp = JSON.parse(resp);
result.tags.issue_id = resp.id;
result.tags.issue_key = resp.key;
} catch (error) {
Áú»¢¶Ä²©.log(4, 'fall¨® la creaci¨®n del problema de jira json: '+JSON.stringify({"fields": fields}));
Áú»¢¶Ä²©.log(4, 'Error al crear el problema de Jira: '+error);
result = {};
}
return JSON.stringify(result);
El objeto XML permite el procesamiento de datos XML en la m¨¦trica y el preprocesamiento del descubrimiento de bajo nivel y webhooks.
Para utilizar un objeto XML, el servidor/proxy debe estar compilado con soporte libxml2.
²Ñ¨¦³Ù´Ç»å´Ç | ¶Ù±ð²õ³¦°ù¾±±è³¦¾±¨®²Ô |
---|---|
XML.query(datos, ±ð³æ±è°ù±ð²õ¾±¨®²Ô) |
Recupera el contenido del nodo usando XPath. Devuelve nulo si no se encuentra el nodo. ±ð³æ±è°ù±ð²õ¾±¨®²Ô: una ±ð³æ±è°ù±ð²õ¾±¨®²Ô XPath; datos: datos XML como una cadena. |
XML.toJson(data) |
Convierte datos en formato XML a JSON. |
XML.fromJson(object) |
Convierte datos en formato JSON a XML. |
Ejemplo:
Entrada:
<menu>
<food type = "breakfast">
<name>Chocolate</name>
<price>$5.95</price>
<description></description>
<calories>650</calories>
</food>
</menu>
Salida:
{
"menu": {
"food": {
"@type": "breakfast",
"name": "Chocolate",
"price": "$5.95",
"description": null,
"calories": "650"
}
}
}
La conversi¨®n de XML a JSON se procesar¨¢ de acuerdo con las siguientes reglas (para conversiones de JSON a XML se aplican reglas invertidas):
1. Los atributos XML se convertir¨¢n en claves que tendr¨¢n sus nombres antepuestos por "@".
Ejemplo:
Entrada:
±Ê°ù´Ç»å³Ü³¦³¦¾±¨®²Ô:
2. Los elementos de cierre autom¨¢tico (<foo/>) se convertir¨¢n como si tuvieran valor nulo.
Ejemplo:
Entrada:
Salida:
3. Los atributos vac¨ªos (con valor "") se convertir¨¢n como si tuvieran un valor de cadena vac¨ªa.
Ejemplo:
Entrada:
Salida:
4. Varios nodos secundarios con el mismo nombre de elemento se convertir¨¢n en una ¨²nica clave que tiene una matriz de valores como valor.
Ejemplo:
Entrada:
Salida:
5. Si un elemento de texto no tiene atributos ni hijos, ser¨¢ convertido como una cadena.
Ejemplo:
Entrada:
Salida:
6. Si un elemento de texto no tiene hijos, pero tiene atributos: el contenido de texto se convertir¨¢ en un elemento con la clave '#text' y el contenido como valor; Los atributos se convertir¨¢n como se describe en la regla 1 de serializaci¨®n.
Ejemplo:
Entrada:
Salida:
Se han implementado funciones globales adicionales de JavaScript con Duktape:
try {
b64 = btoa("cadena utf8");
utf8 = atob(b64);
}
catch (error) {
return {'error.name': error.name, 'error.message': error.message}
}
md5(datos) - calcula el hash MD5 de los datos
sha256(datos) - calcula el hash SHA256 de los datos
hmac('<tipo de hash>',key,data) - devuelve el hash HMAC como una cadena con formato hexadecimal; Se admiten los tipos de hash MD5 y SHA256; Los ±è²¹°ù¨¢³¾±ð³Ù°ù´Ç²õ clave y de datos admiten datos binarios. Ejemplos:
hmac('md5',clave,datos)
hmac('sha256',clave,datos)
sign(hash,key,data) - devuelve la firma calculada (firma RSA con SHA-256) como una cadena, donde:
hash: solo se permite 'sha256'; de lo contrario, se genera un error;
clave - la clave privada. Debe corresponder al est¨¢ndar PKCS#1 o PKCS#8. La clave se puede proporcionar de diferentes formas:
La clave tambi¨¦n se puede cargar desde una macro de usuario/macro secreta/b¨®veda.
datos: los datos que se firmar¨¢n. Puede ser una cadena (tambi¨¦n se admiten datos binarios) o un b¨²fer (Uint8Array/ArrayBuffer).
Se utiliza OpenSSL o GnuTLS para calcular las firmas. Si Áú»¢¶Ä²© se cre¨® sin ninguna de estas bibliotecas de cifrado, se generar¨¢ un error ('falta la biblioteca OpenSSL o GnuTLS').
Esta funci¨®n es compatible desde Áú»¢¶Ä²© 6.4.1.