import base64
import zlib
from galaxy import eggs
from galaxy.util.hash_util import hmac_new
from galaxy.util.json import json_fix

import pkg_resources

pkg_resources.require( "simplejson" )
import simplejson

encoding_sep = '__esep__'
encoding_sep2 = '__esepii__'

def tool_shed_decode( val ):
    mac, encoded_val = val.split( ':', 1 )
    assert mac == hmac_new( 'ToolShedAndGalaxyMustHaveThisSameKey', encoded_val )
    compressed_val = base64.urlsafe_b64decode( encoded_val.encode( 'utf8' ) )
    json_val = zlib.decompress( compressed_val )
    value = simplejson.loads( json_val )
    return json_fix( value )

def tool_shed_encode( val ):
    json_val = simplejson.dumps( val, separators=( ',', ':' ) )
    compressed_val = zlib.compress( json_val, 9 )
    encoded_val = base64.urlsafe_b64encode( compressed_val )
    mac = hmac_new( 'ToolShedAndGalaxyMustHaveThisSameKey', encoded_val )
    return "%s:%s" % ( mac, encoded_val )
