Browse Source

Implemented experimental ajax crawling support to get better social integration with open graph tags.

pull/39/head
Simon Eisenmann 11 years ago
parent
commit
763ddd7f44
  1. 10
      html/crawler.html
  2. 1
      html/head.html
  3. 2
      src/app/spreed-webrtc-server/context.go
  4. 24
      src/app/spreed-webrtc-server/main.go
  5. BIN
      static/img/opengraph-image.png

10
html/crawler.html

@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
<%define "crawlerPage"%><!doctype html>
<html>
<head>
<meta property="og:title" content="/<%.Room%>" />
<meta property="og:site_name" content="<%.Cfg.Title%>"/>
<meta property="og:image" content="<%.Scheme%>://<%.Host%><%.Cfg.B%>static/img/opengraph-image.png" />
<meta property="og:type" content="article" />
</head>
<body></body>
</html><%end%>

1
html/head.html

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
<%define "head"%><title><%.Cfg.Title%></title>
<meta name="fragment" content="!">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="mobile-web-app-capable" content="yes">

2
src/app/spreed-webrtc-server/context.go

@ -27,4 +27,6 @@ type Context struct { @@ -27,4 +27,6 @@ type Context struct {
Host string
Ssl bool
Languages []string
Room string `json:"-"`
Scheme string `json:"-"`
}

24
src/app/spreed-webrtc-server/main.go

@ -117,15 +117,20 @@ func makeImageHandler(hub *Hub, expires time.Duration) http.HandlerFunc { @@ -117,15 +117,20 @@ func makeImageHandler(hub *Hub, expires time.Duration) http.HandlerFunc {
func handleRoomView(room string, w http.ResponseWriter, r *http.Request) {
var err error
w.Header().Set("Content-Type", "text/html; charset=UTF-8")
w.Header().Set("Expires", "-1")
w.Header().Set("Cache-Control", "private, max-age=0")
scheme := "http"
// Detect if the request was made with SSL.
ssl := r.TLS != nil
proto, ok := r.Header["X-Forwarded-Proto"]
if ok {
ssl = proto[0] == "https"
scheme = "https"
}
// Get languages from request.
@ -134,11 +139,22 @@ func handleRoomView(room string, w http.ResponseWriter, r *http.Request) { @@ -134,11 +139,22 @@ func handleRoomView(room string, w http.ResponseWriter, r *http.Request) {
langs = append(langs, "en")
}
// Prepare context to deliver to Javascript.
context := &Context{Cfg: config, App: "main", Host: r.Host, Ssl: ssl, Languages: langs}
// Prepare context to deliver to HTML..
context := &Context{Cfg: config, App: "main", Host: r.Host, Scheme: scheme, Ssl: ssl, Languages: langs, Room: room}
// Get URL parameters.
r.ParseForm()
// Check if incoming request is a crawler which supports AJAX crawling.
// See https://developers.google.com/webmasters/ajax-crawling/docs/getting-started for details.
if _, ok := r.Form["_escaped_fragment_"]; ok {
// Render crawlerPage template..
err = templates.ExecuteTemplate(w, "crawlerPage", &context)
} else {
// Render mainPage template.
err = templates.ExecuteTemplate(w, "mainPage", &context)
}
// Render the template.
err := templates.ExecuteTemplate(w, "mainPage", &context)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}

BIN
static/img/opengraph-image.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Loading…
Cancel
Save