Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Side by Side Diff: doc/appengine/main.go

Issue 1415063002: Add /bug redirects to the home page AppEngine app (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Address review feedback Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Crashpad Authors. All rights reserved. 1 // Copyright 2015 The Crashpad Authors. All rights reserved.
2 // 2 //
3 // Licensed under the Apache License, Version 2.0 (the "License"); 3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License. 4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at 5 // You may obtain a copy of the License at
6 // 6 //
7 // http://www.apache.org/licenses/LICENSE-2.0 7 // http://www.apache.org/licenses/LICENSE-2.0
8 // 8 //
9 // Unless required by applicable law or agreed to in writing, software 9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS, 10 // distributed under the License is distributed on an "AS IS" BASIS,
(...skipping 13 matching lines...) Expand all
24 "net/url" 24 "net/url"
25 "path" 25 "path"
26 "strings" 26 "strings"
27 "time" 27 "time"
28 28
29 "google.golang.org/appengine" 29 "google.golang.org/appengine"
30 "google.golang.org/appengine/memcache" 30 "google.golang.org/appengine/memcache"
31 "google.golang.org/appengine/urlfetch" 31 "google.golang.org/appengine/urlfetch"
32 ) 32 )
33 33
34 const baseURL = "https://chromium.googlesource.com/crashpad/crashpad/+/doc/doc/g enerated/?format=TEXT"
35
36 func init() { 34 func init() {
37 http.HandleFunc("/", handler) 35 http.HandleFunc("/", handler)
38 } 36 }
39 37
40 func handler(w http.ResponseWriter, r *http.Request) { 38 func handler(w http.ResponseWriter, r *http.Request) {
39 const (
40 baseURL = "https://chromium.googlesource.com/crashpad/crashpa d/+/doc/doc/generated/?format=TEXT"
41 bugBaseURL = "https://bugs.chromium.org/p/crashpad/"
42 )
43
41 ctx := appengine.NewContext(r) 44 ctx := appengine.NewContext(r)
42 client := urlfetch.Client(ctx) 45 client := urlfetch.Client(ctx)
43 46
44 // Don’t show dotfiles. 47 // Don’t show dotfiles.
45 if strings.HasPrefix(path.Base(r.URL.Path), ".") { 48 if strings.HasPrefix(path.Base(r.URL.Path), ".") {
46 http.Error(w, http.StatusText(http.StatusNotFound), http.StatusN otFound) 49 http.Error(w, http.StatusText(http.StatusNotFound), http.StatusN otFound)
47 return 50 return
48 } 51 }
49 52
53 if r.URL.Path == "/bug" || r.URL.Path == "/bug/" {
54 http.Redirect(w, r, bugBaseURL, http.StatusFound)
55 return
56 } else if r.URL.Path == "/bug/new" {
57 http.Redirect(w, r, bugBaseURL+"issues/entry", http.StatusFound)
58 return
59 } else if strings.HasPrefix(r.URL.Path, "/bug/") {
60 http.Redirect(w, r, bugBaseURL+"issues/detail?id="+r.URL.Path[5: ], http.StatusFound)
61 return
62 }
63
50 u, err := url.Parse(baseURL) 64 u, err := url.Parse(baseURL)
51 if err != nil { 65 if err != nil {
52 http.Error(w, err.Error(), http.StatusInternalServerError) 66 http.Error(w, err.Error(), http.StatusInternalServerError)
53 return 67 return
54 } 68 }
55 69
56 u.Path = path.Join(u.Path, r.URL.Path) 70 u.Path = path.Join(u.Path, r.URL.Path)
57 urlStr := u.String() 71 urlStr := u.String()
58 72
59 item, err := memcache.Get(ctx, urlStr) 73 item, err := memcache.Get(ctx, urlStr)
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 ".png": "image/png", 127 ".png": "image/png",
114 ".ico": "image/x-icon", 128 ".ico": "image/x-icon",
115 } 129 }
116 for suffix, typ := range contentTypes { 130 for suffix, typ := range contentTypes {
117 if strings.HasSuffix(file, suffix) { 131 if strings.HasSuffix(file, suffix) {
118 return typ 132 return typ
119 } 133 }
120 } 134 }
121 return "text/plain; charset=UTF-8" 135 return "text/plain; charset=UTF-8"
122 } 136 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698