blob: 79074938b3cb72d504d1584989c41d2f8aefe78b [file] [log] [blame]
# Copyright (c) 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from google.appengine.api import urlfetch
import webapp2
import cache
import cloudstorage
import config
import content_type
from urlparse import urlparse
class PreCacherFromUrl(webapp2.RequestHandler):
#
# For local testing, put the revision file and the zip archive
# into the local GS server from your browser (e.g. for revision 155046):
#
# http://localhost:8080/precache_url?url=http://commondatastorage.googleapis.com/chrome-devtools-frontend/revs/@155046
#
# Then pre-cache the archive (you need to look up MD5 from the meta-file from the 'revs' metafile):
#
# http://localhost:8080/precache_url?url=http://commondatastorage.googleapis.com/chrome-devtools-frontend/zips/e4eb112917d276dac7b43affa30422143f37fd26.zip
#
# Then this works: http://localhost:8080/serve_rev/@155046/devtools.html
#
def get(self):
if config.IS_DEV_APP_SERVER:
url = self.request.GET['url']
self.response.headers['Content-Type'] = 'text/plain'
self.response.write(precache_url(url))
else:
self.abort(403)
def precache_url(url):
result = urlfetch.fetch(url)
file_name = urlparse(url).path
if result.status_code == 200:
gcs_file = cloudstorage.open(file_name,
'w',
content_type=content_type.from_path(file_name))
gcs_file.write(result.content)
gcs_file.close()
return 'Saved %s as %s' % (url, file_name)
else:
return 'Error: %d for %s' % (result.status_code, url)