Javascript / Base64 encoding



  • Afternoon folks. I have a patch with a few TCP actors that need to send http headers, and part of the header is auth:basic.

    I can grab the username and password via User Input actors / Text Input controls, and can concatenate it into username:password, but it then needs base64 encoding.
    I'm using trigger text actor which is firing fred:west in as input1 to the javascript actor.
    It's outputting -,+(0( for everything, so I'm assuming something is tripping it up - . How does one log to the javascript monitor?
    The Javascript is running thus:

    function main()

    {

    //  discuss at: http://phpjs.org/functions/base64_encode/

    // original by: Tyler Akins (http://rumkin.com)

    // improved by: Bayron Guevara

    // improved by: Thunder.m

    // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)

    // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)

    // improved by: Rafa∏ Kukawski (http://kukawski.pl)

    // bugfixed by: Pellentesque Malesuada

    //   example 1: base64_encode('Kevin van Zonneveld');

    //   returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA=='

    //   example 2: base64_encode('a');

    //   returns 2: 'YQ=='

    var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';

    var o1, o2, o3, h1, h2, h3, h4, bits, i = 0,

    ac = 0,

    enc = '',

    tmp_arr = [];

    var data = arguments[0];

    if (!data) {

    return data;

    }

    do { // pack three octets into four hexets

    o1 = data.charCodeAt(i++);

    o2 = data.charCodeAt(i++);

    o3 = data.charCodeAt(i++);

    bits = o1 << 16 | o2 << 8 | o3;

    h1 = bits >> 18 & 0x3f;

    h2 = bits >> 12 & 0x3f;

    h3 = bits >> 6 & 0x3f;

    h4 = bits & 0x3f;

    // use hexets to index into b64, and append result to encoded string

    tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);

    } while (i < data.length);

    enc = tmp_arr.join('');

    var r = data.length % 3;

    return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3);

    }



  • Nevermind... needed to plug the output to a text type actor to set the mutable type for the JS actor. Sorted!


  • Tech Staff

    glad you got it.


Log in to reply
 

Looks like your connection to TroikaTronix Community Forum was lost, please wait while we try to reconnect.