コード例 #1
0
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)
コード例 #2
0
    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,