Skip to content
This repository has been archived by the owner on Jan 24, 2021. It is now read-only.

Expand URLs and remove UTMs #161

Closed
wants to merge 23 commits into from
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
"dompurify": "^1.0.4",
"element-ready": "^3.0.0",
"jquery": "^3.2.1",
"ky": "^0.6.0",
"lodash.debounce": "^4.0.8",
"lodash.groupby": "^4.6.0",
"lodash.pick": "^4.4.0",
Expand Down
40 changes: 38 additions & 2 deletions source/features/expand-urls.js
Original file line number Diff line number Diff line change
@@ -1,16 +1,52 @@
import ky from 'ky';

const refinedTwitterClass = 'refinedTwitterExpandedUrl';

async function getUnshortenUrl(shortURL) {
console.log("getUnshortenUrl " + shortURL);

const json = await ky.get('https://linkpeelr.appspot.com/api?action=peel_all&url=' + shortURL + '&where=twitter.com&version=2.0.3',
sindresorhus marked this conversation as resolved.
Show resolved Hide resolved
{mode:'no-cors'});

return manageAPIResponse(json, shortURL);
}

//@TODO
function parseAPIResponse(apiReponse) {
return ["TO", "DO"]
}

function isAPIReponseValid(apiCode) {
return apiCode === '301';
}

async function manageAPIResponse(apiReponse, shortURL) {
console.log("ky response always status 0", apiReponse);
console.log("shortURL", shortURL);
if(isAPIReponseValid(apiReponse.status)) {
const apiReponseParsed = parseAPIResponse(apiReponse);
const apiURL = apiReponseParsed[1];
const apiCode = apiReponseParsed[0];
const realURL= cleanAPIURL(apiURL);
realURL = replaceBackSlash(realURL);
return realURL;
} else {
return shortURL;
}
}

function removeUTMs(url) {
const parsedURL = new URL(url);
const urlWithOutUtms = parsedURL.href.replace(/[?&#]utm_.*/, '');
return urlWithOutUtms;
}

export default function () {
export default async function () {
const urls = $('a[data-expanded-url]:not(.' + refinedTwitterClass + ')');
for (const url of urls) {
const {expandedUrl: urlToExpand} = url.dataset;
const urlWithOutUtms = removeUTMs(urlToExpand);
const unshortenUrl = await getUnshortenUrl(urlToExpand)
const urlWithOutUtms = removeUTMs(unshortenUrl);
url.setAttribute('href', urlWithOutUtms);
$(url).addClass(refinedTwitterClass);
}
Expand Down