Making private opengraph methods in the app layer (#13759)
Этот коммит содержится в:
коммит произвёл
Miguel de la Cruz
родитель
11d15107b0
Коммит
a76643116f
@@ -23,15 +23,15 @@ func (a *App) GetOpenGraphMetadata(requestURL string) *opengraph.OpenGraph {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
defer res.Body.Close()
|
defer res.Body.Close()
|
||||||
return a.ParseOpenGraphMetadata(requestURL, res.Body, res.Header.Get("Content-Type"))
|
return a.parseOpenGraphMetadata(requestURL, res.Body, res.Header.Get("Content-Type"))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *App) ParseOpenGraphMetadata(requestURL string, body io.Reader, contentType string) *opengraph.OpenGraph {
|
func (a *App) parseOpenGraphMetadata(requestURL string, body io.Reader, contentType string) *opengraph.OpenGraph {
|
||||||
og := opengraph.NewOpenGraph()
|
og := opengraph.NewOpenGraph()
|
||||||
body = forceHTMLEncodingToUTF8(io.LimitReader(body, MaxOpenGraphResponseSize), contentType)
|
body = forceHTMLEncodingToUTF8(io.LimitReader(body, MaxOpenGraphResponseSize), contentType)
|
||||||
|
|
||||||
if err := og.ProcessHTML(body); err != nil {
|
if err := og.ProcessHTML(body); err != nil {
|
||||||
mlog.Warn("ParseOpenGraphMetadata processing failed", mlog.String("requestURL", requestURL), mlog.Err(err))
|
mlog.Warn("parseOpenGraphMetadata processing failed", mlog.String("requestURL", requestURL), mlog.Err(err))
|
||||||
}
|
}
|
||||||
|
|
||||||
makeOpenGraphURLsAbsolute(og, requestURL)
|
makeOpenGraphURLsAbsolute(og, requestURL)
|
||||||
@@ -40,7 +40,7 @@ func (a *App) ParseOpenGraphMetadata(requestURL string, body io.Reader, contentT
|
|||||||
|
|
||||||
// If image proxy enabled modify open graph data to feed though proxy
|
// If image proxy enabled modify open graph data to feed though proxy
|
||||||
if toProxyURL := a.ImageProxyAdder(); toProxyURL != nil {
|
if toProxyURL := a.ImageProxyAdder(); toProxyURL != nil {
|
||||||
og = OpenGraphDataWithProxyAddedToImageURLs(og, toProxyURL)
|
og = openGraphDataWithProxyAddedToImageURLs(og, toProxyURL)
|
||||||
}
|
}
|
||||||
|
|
||||||
// The URL should be the link the user provided in their message, not a redirected one.
|
// The URL should be the link the user provided in their message, not a redirected one.
|
||||||
@@ -103,7 +103,7 @@ func makeOpenGraphURLsAbsolute(og *opengraph.OpenGraph, requestURL string) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func OpenGraphDataWithProxyAddedToImageURLs(ogdata *opengraph.OpenGraph, toProxyURL func(string) string) *opengraph.OpenGraph {
|
func openGraphDataWithProxyAddedToImageURLs(ogdata *opengraph.OpenGraph, toProxyURL func(string) string) *opengraph.OpenGraph {
|
||||||
for _, image := range ogdata.Images {
|
for _, image := range ogdata.Images {
|
||||||
var url string
|
var url string
|
||||||
if image.SecureURL != "" {
|
if image.SecureURL != "" {
|
||||||
|
|||||||
@@ -512,7 +512,7 @@ func (a *App) parseLinkMetadata(requestURL string, body io.Reader, contentType s
|
|||||||
image, err := parseImages(io.LimitReader(body, MaxMetadataImageSize))
|
image, err := parseImages(io.LimitReader(body, MaxMetadataImageSize))
|
||||||
return nil, image, err
|
return nil, image, err
|
||||||
} else if strings.HasPrefix(contentType, "text/html") {
|
} else if strings.HasPrefix(contentType, "text/html") {
|
||||||
og := a.ParseOpenGraphMetadata(requestURL, body, contentType)
|
og := a.parseOpenGraphMetadata(requestURL, body, contentType)
|
||||||
|
|
||||||
// The OpenGraph library and Go HTML library don't error for malformed input, so check that at least
|
// The OpenGraph library and Go HTML library don't error for malformed input, so check that at least
|
||||||
// one of these required fields exists before returning the OpenGraph data
|
// one of these required fields exists before returning the OpenGraph data
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user