mirror of https://gitlab.com/curben/blog
fix(openGraph): URL api error handling
This commit is contained in:
parent
1d5966e191
commit
07ab8c08d7
|
@ -4,9 +4,9 @@
|
||||||
/*
|
/*
|
||||||
* Modified from the hexo version,
|
* Modified from the hexo version,
|
||||||
* https://github.com/hexojs/hexo/blob/master/lib/plugins/helper/open_graph.js
|
* https://github.com/hexojs/hexo/blob/master/lib/plugins/helper/open_graph.js
|
||||||
* for compatibility with cloudinary.js
|
* to include https://github.com/hexojs/hexo/pull/3674
|
||||||
* the <meta name="og:image"> now use
|
* and use WHATWG URL API
|
||||||
* <a> where href value links to an image
|
* https://nodejs.org/api/url.html#url_the_whatwg_url_api
|
||||||
*/
|
*/
|
||||||
|
|
||||||
'use strict'
|
'use strict'
|
||||||
|
@ -67,18 +67,14 @@ function openGraphHelper (options = {}) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!images.length && content && content.includes('<img')) {
|
if (!images.length && content && content.includes('<img')) {
|
||||||
images = images.slice()
|
images = images.slice();
|
||||||
|
|
||||||
// https://github.com/hexojs/hexo/pull/3680
|
|
||||||
let img
|
let img
|
||||||
const imgPattern = /<a [^>]*href=['"]([^'"]+)([^>]*>)/gi
|
const imgPattern = /<img [^>]*src=['"]([^'"]+)([^>]*>)/gi
|
||||||
while ((img = imgPattern.exec(content)) !== null) {
|
while ((img = imgPattern.exec(content)) !== null) {
|
||||||
const imgExt = ['*.jpg', '*.png', '*.webp']
|
|
||||||
if (micromatch.isMatch(img[1], imgExt, { basename: true })) {
|
|
||||||
images.push(img[1])
|
images.push(img[1])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (description) {
|
if (description) {
|
||||||
result += meta('description', description, false)
|
result += meta('description', description, false)
|
||||||
|
@ -107,10 +103,11 @@ function openGraphHelper (options = {}) {
|
||||||
}
|
}
|
||||||
|
|
||||||
images = images.map(path => {
|
images = images.map(path => {
|
||||||
if (!new URL(path).host) {
|
// parse relative url to full url
|
||||||
// resolve `path`'s absolute path relative to current page's url
|
try {
|
||||||
// `path` can be both absolute (starts with `/`) or relative.
|
new URL(path)
|
||||||
return new URL(path, url || config.url)
|
} catch {
|
||||||
|
return new URL(path, config.url).href
|
||||||
}
|
}
|
||||||
|
|
||||||
return path
|
return path
|
||||||
|
|
Loading…
Reference in New Issue