Skip to content

$yenc

Librairie de méthodes yEnc

Exemple de script qui permet d'encoder un fichier et de remonter la valeur encodée dans la page web.

// encode.ewts

// Exemple de script pour l'encodage d'un fichier selon méthode yEncode
// et affichage de la valeur "encodée" dans un textarea à l'écran. Pour
// afficher la valeur encodée dans le navigateur, on doit procéder en 2
// étapes: on gènère un fichier sur le temp et on répond avec un message
// qui inclut un iframe et qui relance un appel REST à notre script pour
// télécharger la valeur encodée.
// On est obligé de procéder ainsi car le charset de la page web peut ne
// pas être adapté à l'affichage de la valeur encodée. On utilise donc
// un iframe pour charger le contenu dans un charset adapté.

if ($$.params != null) {
    // traitement de la request /ewt/rest/sample/encode?val=xxx
    if ($str.match($$.params.val, "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}")) {
        var file = $file.load($$.params.val, $app.getWorkDirectory()),
            txt =  $file.read($$.params.val, { charset: "iso-8859-1" });

        $response.setContentType("text/html; charset: utf-8");
        $response.addContent(
           `<!DOCTYPE html>
            <html>
                <head>
                    <meta charset="utf-8">
                </head>
                <body>
                    <textarea cols="120" rows="10">${txt}</textarea>
                </body>
            </html>`);

        // suppression du fichier
        $file.delete(file);
    }
    else {
        $response.setContentType("text/html; charset: utf-8");
        $response.addContent(
           `<!DOCTYPE html>
            <html>
                <head>
                    <meta charset="utf-8">
                </head>
                <body>
                    Erreur : vous n'êtes pas autorisé(e) à lire ce fichier
                </body>
            </html>`);
    }
}
else {
    // encodage
    var src = $file.load("c:/Temp/TestImage.png"),
        dst = $yenc.encode(src, { dest: $file.create() }),
        res = $file.path(dst, { relativeTo: $app.getWorkDirectory() });

    $msg.info(`<iframe src="/ewt/rest/sample/encode?val=${dst}" style="width:100%"></iframe>`,
              null, { disableOutputEscaping: "yes" });
}