2019-05-27 09:43:53 +00:00
|
|
|
// Package oembed add utils for supporting oEmbed fetching data,
|
2019-05-23 14:52:58 +00:00
|
|
|
package oembed
|
|
|
|
|
2019-05-24 09:29:36 +00:00
|
|
|
import "golang.org/x/xerrors"
|
2019-05-23 14:52:58 +00:00
|
|
|
|
2019-05-24 09:29:36 +00:00
|
|
|
// Extract try fetch oEmbed object for input url with params (if represent).
|
|
|
|
// Return OEmbed if success.
|
|
|
|
func Extract(url string, params *Params) (*OEmbed, error) {
|
2019-05-23 14:52:58 +00:00
|
|
|
if !isValidURL(url) {
|
2019-05-24 09:29:36 +00:00
|
|
|
return nil, Error{
|
|
|
|
Message: "invalid input url",
|
|
|
|
URL: url,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if provider := findProvider(url); provider != nil {
|
|
|
|
resp, err := fetchEmbed(url, provider, params)
|
|
|
|
if err != nil {
|
|
|
|
return nil, Error{
|
|
|
|
Message: err.Error(),
|
|
|
|
URL: url,
|
|
|
|
Details: xerrors.Caller(1),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return resp, nil
|
2019-05-23 14:52:58 +00:00
|
|
|
}
|
2019-05-24 09:29:36 +00:00
|
|
|
|
|
|
|
return nil, Error{
|
|
|
|
Message: "no provider found with given url",
|
|
|
|
URL: url,
|
2019-05-23 14:52:58 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-05-24 09:29:36 +00:00
|
|
|
// HasProvider checks what input url has oEmbed provider
|
2019-05-23 14:52:58 +00:00
|
|
|
func HasProvider(url string) bool {
|
|
|
|
return findProvider(url) != nil
|
|
|
|
}
|