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 tool_shed.util.encoding_util
import binascii
import json
import logging
from galaxy.util import (
smart_str,
unicodify
)
from galaxy.util.hash_util import hmac_new
log = logging.getLogger(__name__)
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', smart_str(value))
b = unicodify(binascii.hexlify(smart_str(value)))
return "%s:%s" % (a, b)