# Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.

# App Engine configuration, see:
# https://developers.google.com/appengine/docs/python/config/appconfig

# The version number should be something like rSVN_REVISION.
version: remember to edit app.yaml before deploying
# This version name is used to create a new host, for example,
# http://r31824.try-dart-lang.appspot.com/, which can be tested before going
# live at http://try.dartlang.org/.  This is controlled from
# https://appengine.google.com/deployment?&app_id=s~try-dart-lang

application: try-dart-lang
runtime: python27
api_version: 1
threadsafe: yes

# Set "Cache-Control" and "Expires" HTTP headers to only cache for one second.
# We do this because we frequently push new changes and rely on AppCache for
# caching.  Once files are installed in AppCache, the site launches
# immediately.
#
# Problem: PageSpeed Insights doesn't realize that we use AppCache and keeps
# nagging about caching.
# Solution: Ignore its advice about "Leverage browser caching".
default_expiration: 1s

handlers:
- url: /packages/analyzer
  static_dir: packages/analyzer
  secure: always

- url: /packages/args
  static_dir: packages/args
  secure: always

- url: /packages/collection
  static_dir: packages/collection
  secure: always

- url: /packages/crypto
  static_dir: packages/crypto
  secure: always

- url: /packages/http
  static_dir: packages/http
  secure: always

- url: /packages/http_parser
  static_dir: packages/http_parser
  secure: always

- url: /packages/intl
  static_dir: packages/intl
  secure: always

- url: /packages/logging
  static_dir: packages/logging
  secure: always

- url: /packages/matcher
  static_dir: packages/matcher
  secure: always

- url: /packages/math
  static_dir: packages/math
  secure: always

- url: /packages/path
  static_dir: packages/path
  secure: always

- url: /packages/serialization
  static_dir: packages/serialization
  secure: always

- url: /packages/stack_trace
  static_dir: packages/stack_trace
  secure: always

- url: /packages/string_scanner
  static_dir: packages/string_scanner
  secure: always

- url: /packages/unittest
  static_dir: packages/unittest
  secure: always

- url: /packages/yaml
  static_dir: packages/yaml
  secure: always

- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico
  secure: always

- url: /
  static_files: index.html
  upload: index.html
  secure: always

# The nossl file below help work around bugs/features in interaction between
# AppEngine and AppCache. When a return user goes to http://try.dartlang.org/
# (no SSL), AppCache will serve index.html from cache, try to fetch the old
# manifest (nossl.appcache) and the files listed in the manifest. In additation
# the files listed in the manifest, it will also fetch index.html, as it is the
# master. However, we want index.html to be redirected to the SSL version, and
# AppCache sees this redirection as a network error. When an error occurs,
# AppCache will keep serving the old page. So we configure nossl.appcache to
# provide fallbacks for index.html and leap.dart.js. The fallback for
# leap.dart.js is nossl.js which will take care of redirecting to
# https://try.dartlang.org/ (with SSL) using JavaScript.  Unfortunately, Chrome
# seems to keep the old version of index.html cached indefinitely. The only way
# to avoid that appears to serve up a different index.html depending on if it
# is a secure connection or not. This would require a Python script, and
# something we may consider implementing in the future.
- url: /nossl.appcache
  static_files: nossl.appcache
  upload: nossl.appcache
  secure: optional

- url: /nossl.js
  static_files: nossl.js
  upload: nossl.js
  secure: optional

- url: /nossl.html
  static_files: nossl.html
  upload: nossl.html
  secure: optional

- url: /ssl.appcache
  static_files: ssl.appcache
  upload: ssl.appcache
  secure: always

- url: /(.*\.(html|js|png|css|dart|json))
  static_files: \1
  upload: (.*\.(html|js|png|css|dart|json))
  secure: always

- url: /css/fonts/fontawesome-webfont.woff
  static_files: fontawesome-webfont.woff
  upload: fontawesome-webfont.woff
  secure: always

libraries:
- name: webapp2
  version: "2.5.2"
