Warning
This document is for an old release of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
Source code for galaxy.util.tool_shed.encoding_util
import binascii
import json
from galaxy.util import (
    smart_str,
    unicodify,
)
from galaxy.util.hash_util import hmac_new
encoding_sep = "__esep__"
encoding_sep2 = "__esepii__"
[docs]def tool_shed_decode(value):
    # Extract and verify hash
    value = unicodify(value)
    a, b = value.split(":")
    value = binascii.unhexlify(b)
    test = hmac_new(b"ToolShedAndGalaxyMustHaveThisSameKey", value)
    assert a == test
    # Restore from string
    values = None
    value = unicodify(value)
    try:
        values = json.loads(value)
    except Exception:
        pass
    if values is None:
        values = value
    return values
[docs]def tool_shed_encode(val):
    if isinstance(val, dict) or isinstance(val, list):
        value = json.dumps(val)
    else:
        value = val
    a = hmac_new(b"ToolShedAndGalaxyMustHaveThisSameKey", value)
    b = unicodify(binascii.hexlify(smart_str(value)))
    return f"{a}:{b}"