diff --git a/src/chrome/content/journal.js b/src/chrome/content/journal.js index e398fd9..348e707 100644 --- a/src/chrome/content/journal.js +++ b/src/chrome/content/journal.js @@ -1,4 +1,15 @@ -Journal = { +Journal = { + + isObject(obj) { + return obj !== null && typeof obj === 'object'; + }, + + decodeHTMLEntities(text) { + let textarea = document.createElement('textarea'); + textarea.innerHTML = text; + return textarea.textContent; + }, + generateAuthors (authors) { var newAuthorList = []; if (authors) { @@ -38,9 +49,9 @@ Journal = { return null; } - var url = 'http://dx.doi.org/' + doi; - const headers = new Headers({'Accept': 'application/vnd.citationstyles.csl+json'}); - var requestInfo = { method: 'GET', headers }; + var url = 'https://api.crossref.org/works/' + doi; + // const headers = new Headers({'Accept': 'application/vnd.citationstyles.csl+json'}); + var requestInfo = { method: 'GET' }; return Utilities.fetchWithTimeout(url, requestInfo, 3000) .then(response => { if (!response.ok) { @@ -59,15 +70,19 @@ Journal = { } }) .then(dataJson => { - var Title = Utilities.safeGetFromJson(dataJson, ["title"]); + dataJson = dataJson.message; + var Title = Utilities.safeGetFromJson(dataJson, ["title", 0]); var Authors = this.generateAuthors(Utilities.safeGetFromJson(dataJson, ["author"])); var Publication = Utilities.safeGetFromJson(dataJson, ["container-title"]); var Volume = Utilities.safeGetFromJson(dataJson, ["volume"]); var Issue = Utilities.safeGetFromJson(dataJson, ["issue"]); var Pages = Utilities.safeGetFromJson(dataJson, ["page"]); - var PublishDate = this.generateDate(Utilities.safeGetFromJson(dataJson, ["published", "date-parts"])); - var JournalAbbr = Utilities.safeGetFromJson(dataJson, ["container-title-short"]); + var PublishDate = this.generateDate(Utilities.safeGetFromJson(dataJson, ["published-print", "date-parts"])); + var JournalAbbr = Utilities.safeGetFromJson(dataJson, ["short-container-title"]); var Language = Utilities.safeGetFromJson(dataJson, ["language"]); + if (this.isObject(Title)) Title = Title[0]; Title = this.decodeHTMLEntities(Title); + if (this.isObject(Publication)) Publication = Publication[0]; Publication = this.decodeHTMLEntities(Publication); + if (this.isObject(JournalAbbr)) JournalAbbr = JournalAbbr[0]; JournalAbbr = this.decodeHTMLEntities(JournalAbbr); return { "Title": Title ? Title : "", "Authors": Authors ? Authors : "",