diff options
author | Debanshu Kundu <debanshu.kundu@joshtechnologygroup.com> | 2017-01-20 23:11:13 +0530 |
---|---|---|
committer | enahum <nahumhbl@gmail.com> | 2017-01-20 14:41:13 -0300 |
commit | 3aaf71fdea914af1a7f2b2fb97bb6ae44132fcc4 (patch) | |
tree | b954407a03a6c0ed9836d8b14d910fc52c8dc1dc /vendor/github.com/dyatlov/go-opengraph/examples | |
parent | fefe4b70d9e69910a8e3acd6890497553b5eff2f (diff) | |
download | chat-3aaf71fdea914af1a7f2b2fb97bb6ae44132fcc4.tar.gz chat-3aaf71fdea914af1a7f2b2fb97bb6ae44132fcc4.tar.bz2 chat-3aaf71fdea914af1a7f2b2fb97bb6ae44132fcc4.zip |
#4257 Added functionality to create previews for post links using open graph data from those links. (#4890)
Diffstat (limited to 'vendor/github.com/dyatlov/go-opengraph/examples')
-rw-r--r-- | vendor/github.com/dyatlov/go-opengraph/examples/advanced.go | 58 | ||||
-rw-r--r-- | vendor/github.com/dyatlov/go-opengraph/examples/simple.go | 27 |
2 files changed, 85 insertions, 0 deletions
diff --git a/vendor/github.com/dyatlov/go-opengraph/examples/advanced.go b/vendor/github.com/dyatlov/go-opengraph/examples/advanced.go new file mode 100644 index 000000000..e24b821e7 --- /dev/null +++ b/vendor/github.com/dyatlov/go-opengraph/examples/advanced.go @@ -0,0 +1,58 @@ +package main + +import ( + "fmt" + "strings" + + "github.com/dyatlov/go-opengraph/opengraph" + "golang.org/x/net/html" +) + +func main() { + h := `<html><head><meta property="og:type" content="article" /> + <meta property="og:title" content="WordPress 4.3 "Billie"" /> + <meta property="og:url" content="https://wordpress.org/news/2015/08/billie/" /></head><body></body></html>` + + og := opengraph.NewOpenGraph() + + doc, err := html.Parse(strings.NewReader(h)) + if err != nil { + fmt.Println(err) + return + } + + var parseHead func(*html.Node) + parseHead = func(n *html.Node) { + for c := n.FirstChild; c != nil; c = c.NextSibling { + if c.Type == html.ElementNode && c.Data == "meta" { + m := make(map[string]string) + for _, a := range c.Attr { + m[a.Key] = a.Val + } + + og.ProcessMeta(m) + } + } + } + + var f func(*html.Node) + f = func(n *html.Node) { + for c := n.FirstChild; c != nil; c = c.NextSibling { + if c.Type == html.ElementNode { + if c.Data == "head" { + parseHead(c) + continue + } else if c.Data == "body" { // OpenGraph is only in head, so we don't need body + break + } + } + f(c) + } + } + f(doc) + + fmt.Printf("Type: %s\n", og.Type) + fmt.Printf("Title: %s\n", og.Title) + fmt.Printf("URL: %s\n", og.URL) + fmt.Printf("String/JSON Representation: %s\n", og) +} diff --git a/vendor/github.com/dyatlov/go-opengraph/examples/simple.go b/vendor/github.com/dyatlov/go-opengraph/examples/simple.go new file mode 100644 index 000000000..fa128cd43 --- /dev/null +++ b/vendor/github.com/dyatlov/go-opengraph/examples/simple.go @@ -0,0 +1,27 @@ +package main + +import ( + "fmt" + "strings" + + "github.com/dyatlov/go-opengraph/opengraph" +) + +func main() { + html := `<html><head><meta property="og:type" content="article" /> + <meta property="og:title" content="WordPress 4.3 "Billie"" /> + <meta property="og:url" content="https://wordpress.org/news/2015/08/billie/" /></head><body></body></html>` + + og := opengraph.NewOpenGraph() + err := og.ProcessHTML(strings.NewReader(html)) + + if err != nil { + fmt.Println(err) + return + } + + fmt.Printf("Type: %s\n", og.Type) + fmt.Printf("Title: %s\n", og.Title) + fmt.Printf("URL: %s\n", og.URL) + fmt.Printf("String/JSON Representation: %s\n", og) +} |