ICU-669 Handle relative links better

Этот коммит содержится в:
Harrison Healey
2018-02-09 10:05:23 -05:00
родитель d3a0e561c2
Коммит e2b5f9217f
2 изменённых файлов: 19 добавлений и 12 удалений

Просмотреть файл

@@ -749,16 +749,16 @@ func (a *App) GetOpenGraphMetadata(requestURL string) *opengraph.OpenGraph {
l4g.Error("GetOpenGraphMetadata processing failed for url=%v with err=%v", requestURL, err.Error())
}
og = makeOpenGraphURLsAbsolute(og, requestURL)
makeOpenGraphURLsAbsolute(og, requestURL)
return og
}
func makeOpenGraphURLsAbsolute(og *opengraph.OpenGraph, requestURL string) *opengraph.OpenGraph {
func makeOpenGraphURLsAbsolute(og *opengraph.OpenGraph, requestURL string) {
parsedRequestURL, err := url.Parse(requestURL)
if err != nil {
l4g.Warn("makeOpenGraphURLsAbsolute failed to parse url=%v", requestURL)
return og
return
}
makeURLAbsolute := func(resultURL string) string {
@@ -776,10 +776,7 @@ func makeOpenGraphURLsAbsolute(og *opengraph.OpenGraph, requestURL string) *open
return resultURL
}
parsedResultURL.Scheme = parsedRequestURL.Scheme
parsedResultURL.Host = parsedRequestURL.Host
return parsedResultURL.String()
return parsedRequestURL.ResolveReference(parsedResultURL).String()
}
og.URL = makeURLAbsolute(og.URL)
@@ -798,8 +795,6 @@ func makeOpenGraphURLsAbsolute(og *opengraph.OpenGraph, requestURL string) *open
video.URL = makeURLAbsolute(video.URL)
video.SecureURL = makeURLAbsolute(video.SecureURL)
}
return og
}
func (a *App) DoPostAction(postId string, actionId string, userId string) *model.AppError {

Просмотреть файл

@@ -271,7 +271,7 @@ func TestMakeOpenGraphURLsAbsolute(t *testing.T) {
URL: "https://example.com/apps/mattermost",
ImageURL: "https://images.example.com/image.png",
},
"relative URLs": {
"URLs starting with /": {
HTML: `
<html>
<head>
@@ -283,7 +283,7 @@ func TestMakeOpenGraphURLsAbsolute(t *testing.T) {
URL: "http://example.com/apps/mattermost",
ImageURL: "http://example.com/image.png",
},
"relative URLs with HTTPS": {
"HTTPS URLs starting with /": {
HTML: `
<html>
<head>
@@ -306,6 +306,18 @@ func TestMakeOpenGraphURLsAbsolute(t *testing.T) {
URL: "http://example.com/apps/mattermost",
ImageURL: "",
},
"relative URLs": {
HTML: `
<html>
<head>
<meta property="og:url" content="index.html">
<meta property="og:image" content="../resources/image.png">
</head>
</html>`,
RequestURL: "http://example.com/content/index.html",
URL: "http://example.com/content/index.html",
ImageURL: "http://example.com/resources/image.png",
},
} {
t.Run(name, func(t *testing.T) {
og := opengraph.NewOpenGraph()
@@ -313,7 +325,7 @@ func TestMakeOpenGraphURLsAbsolute(t *testing.T) {
t.Fatal(err)
}
og = makeOpenGraphURLsAbsolute(og, tc.RequestURL)
makeOpenGraphURLsAbsolute(og, tc.RequestURL)
if og.URL != tc.URL {
t.Fatalf("incorrect url, expected %v, got %v", tc.URL, og.URL)