42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
/**
|
|
* Collects Twitter card (https://developer.twitter.com/en/docs/twitter-for-websites/)
|
|
* related data from a page.
|
|
*/
|
|
export const TwitterPageData = {
|
|
/**
|
|
* Collects the twitter data from the page.
|
|
*
|
|
* @param {Document} document
|
|
* The document to collect from
|
|
*
|
|
* @returns {PageData}
|
|
*/
|
|
collect(document) {
|
|
let pageData = {};
|
|
|
|
let twitterTags = document.querySelectorAll("meta[name^='twitter:'");
|
|
|
|
for (let tag of twitterTags) {
|
|
// Strip "twitter:" from the property name.
|
|
let propertyName = tag.getAttribute("name").substring(8);
|
|
|
|
switch (propertyName) {
|
|
case "site":
|
|
pageData.siteName = tag.getAttribute("content");
|
|
break;
|
|
case "description":
|
|
pageData.description = tag.getAttribute("content");
|
|
break;
|
|
case "image":
|
|
pageData.image = tag.getAttribute("content");
|
|
break;
|
|
}
|
|
}
|
|
|
|
return pageData;
|
|
},
|
|
};
|