def rewrite_deploy_code(options, args): logging.getLogger().setLevel(-1) if options.name is None: error_exit('--name Could not be None.') if not os.path.exists(options.name): error_exit('no such file') name = options.name code, config = find_ad_config(open(name, 'rb').read()) if code is None: error_exit('invalid file format, can not find var AD_CONFIG'); only_dump_links = (options.stage == 2) config, links = _generate_rcv_link(config, options.link_id, only_dump_links) json_object = lib.json_loads(config) ad_canvas_id = None if json_object: ad_canvas_id = json_object.get('id') config = json.dumps(json_object, indent = 2).replace('\\u0001', '\x01') # config = zip_ad_config(config) # inline_script_code if options.stage == 2: # <script type="text/javascript">var LINKS_foobar12 = [...];</script> # <script type="text/javascript" src="ad.js"></script> # -- ad.js -- # (function(){ # var AD_CONFIG = {rcv_url:LINKS_foobar12[0], name:"HELLO"}; # ... # ... # })(); links_name = 'LINKS_' + lib.md5_sign(str(links))[0:8] code = code.replace('%AD_CONFIG%', config).replace('/** LINKS */[]', links_name) inline_script_code = 'var %s = %s;' % (links_name, str(links).replace('\\x01', '\x01')) elif options.stage == 3: # <script type="text/javascript">var AD_CONFIG_foobar12 = {};</script> # <script type="text/javascript" src="ad.js"></script> # -- ad.js -- # (function(){ # var AD_CONFIG = AD_CONFIG_foobar12; # ... # ... # })(); ad_config_name = 'AD_CONFIG_' + lib.md5_sign(config)[0:8] code = code.replace('var AD_CONFIG = %AD_CONFIG%;', '').replace('/** AD_CONFIG */{}', ad_config_name) inline_script_code = 'var %s = %s;' % (ad_config_name, config) # external_script_src fp, fn = os.path.split(name) bcs_url = lib.upload_assets_raw(code, ".js") external_script_src = bcs_url if bcs_url else fn html_code = _get_final_html_code(ad_canvas_id, inline_script_code, external_script_src, options.async)
html_code = '\n'.join([ '<!doctype html><html><head><meta charset="utf-8" /></head>', '<body>\n', '<!--嵌入代码开始-->', '<div id="%(ad_canvas_id)s"></div>', '<script type="text/javascript">\n%(inline_script_code)s\n</script>', '<script type="text/javascript">', '(function(d){var f=d.getElementsByTagName("script")[0],j=d.createElement("script");' + 'j.async=true;j.src="%(external_script_src)s";f.parentNode.insertBefore(j,f);})(document);', '</script>', '<!--嵌入代码结束-->\n', '</body>', '</html>' ]); if ad_canvas_id is None: error_exit("ad_canvas_id should not be None") else: html_code = '\n'.join([ '<!doctype html><html><head><meta charset="utf-8" /></head>', '<body>\n', '<!--嵌入代码开始-->', '<script type="text/javascript">\n%(inline_script_code)s\n</script>', '<script charset="utf-8" type="text/javascript" src="%(external_script_src)s"></script>', '<!--嵌入代码结束-->\n', '</body>', '</html>' ]); app_config = { 'ad_canvas_id' : ad_canvas_id, 'inline_script_code' : inline_script_code,