mirror of
https://github.com/jstrieb/urlpages.git
synced 2024-12-22 13:52:15 +01:00
Upgrade to use versioned API with old fallback
This commit is contained in:
parent
e088eac8a0
commit
7848df1b1b
4 changed files with 70 additions and 10 deletions
57
api.js
Normal file
57
api.js
Normal file
|
@ -0,0 +1,57 @@
|
||||||
|
/**
|
||||||
|
* api.js
|
||||||
|
*
|
||||||
|
* API For encoding and decoding URL hash objects
|
||||||
|
*
|
||||||
|
* Created by Jacob Strieb
|
||||||
|
* July 2020
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Global Variables
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
const LATEST_API_VERSION = "0.0.1";
|
||||||
|
// const LATEST_API_VERSION = "0.2.0";
|
||||||
|
|
||||||
|
var apiVersions = {};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* API Version 0.2.0 (Latest)
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
apiVersions["0.2.0"] = {
|
||||||
|
|
||||||
|
VERSION: "0.2.0",
|
||||||
|
|
||||||
|
/* Return a link to view the page */
|
||||||
|
getViewLink: function(pageData) {
|
||||||
|
var urlData = {
|
||||||
|
version: this.VERSION,
|
||||||
|
};
|
||||||
|
|
||||||
|
const hashObject = b64.encode(JSON.stringify(urlData));
|
||||||
|
return `http://jstrieb.github.io/urlpages/#${hashObject}`;
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* API Version 0.0.1 (Original)
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
apiVersions["0.0.1"] = {
|
||||||
|
|
||||||
|
VERSION: "0.0.1",
|
||||||
|
|
||||||
|
/* Return a link to view the page */
|
||||||
|
getViewLink: function(pageData) {
|
||||||
|
return `http://jstrieb.github.io/urlpages/#${b64.encode(pageData)}`;
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
|
@ -3,6 +3,8 @@
|
||||||
* in the documentation
|
* in the documentation
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
api = apiVersions[LATEST_API_VERSION]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
|
@ -35,13 +37,6 @@ ${data["html"]}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Return a link to view the page */
|
|
||||||
function getViewLink(pageData) {
|
|
||||||
return `http://jstrieb.github.io/urlpages/#${b64.encode(pageData)}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* Button press functions
|
* Button press functions
|
||||||
***/
|
***/
|
||||||
|
@ -58,7 +53,7 @@ function setViewUrl() {
|
||||||
var html = encodeURIComponent(getHTML(data));
|
var html = encodeURIComponent(getHTML(data));
|
||||||
|
|
||||||
// Update the URL for the "Short Link" button
|
// Update the URL for the "Short Link" button
|
||||||
document.getElementById("url").value = getViewLink(html);
|
document.getElementById("url").value = api.getViewLink(html);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -129,7 +124,7 @@ function update() {
|
||||||
window.location.hash = "#" + b64.encode(JSON.stringify(data));
|
window.location.hash = "#" + b64.encode(JSON.stringify(data));
|
||||||
|
|
||||||
// Update the URL for the "Get Link" button
|
// Update the URL for the "Get Link" button
|
||||||
document.getElementById("getLinkLink").href = getViewLink(html);
|
document.getElementById("getLinkLink").href = api.getViewLink(html);
|
||||||
|
|
||||||
// Update the download link
|
// Update the download link
|
||||||
document.getElementById("downloadLink").href = `data:text/html,${html}`
|
document.getElementById("downloadLink").href = `data:text/html,${html}`
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
|
|
||||||
<!-- Scripts -->
|
<!-- Scripts -->
|
||||||
<script src="../b64.js" type="text/javascript"></script>
|
<script src="../b64.js" type="text/javascript"></script>
|
||||||
|
<script src="../api.js" type="text/javascript"></script>
|
||||||
<script src="editor.js" type="text/javascript"></script>
|
<script src="editor.js" type="text/javascript"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,14 @@ if (window.location.hash) {
|
||||||
// Try to get page data from the URL if possible
|
// Try to get page data from the URL if possible
|
||||||
var hash = window.location.hash.slice(1);
|
var hash = window.location.hash.slice(1);
|
||||||
var data = b64.decode(hash);
|
var data = b64.decode(hash);
|
||||||
document.write(decodeURIComponent(data));
|
|
||||||
|
try {
|
||||||
|
var urlDataObject = JSON.parse(data);
|
||||||
|
var api = apiVersions[urlDataObject.version];
|
||||||
|
document.write(api.decode(urlDataObject));
|
||||||
|
} catch (err) {
|
||||||
|
document.write(decodeURIComponent(data));
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Otherwise redirect to the editor
|
// Otherwise redirect to the editor
|
||||||
window.location.replace("./editor");
|
window.location.replace("./editor");
|
||||||
|
|
Loading…
Reference in a new issue