new file: Files/flashplayer_32_sa.exe new file: favicon.ico new file: globe.gif new file: imgs/download.png new file: imgs/zuck.jpg new file: index.html new file: other.ico new file: script.js new file: site.webmanifest new file: sitemap.html new file: styles/backround.css new file: styles/border.css new file: styles/fonts/Titillium_Web/OFL.txt new file: styles/fonts/Titillium_Web/TitilliumWeb-Black.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Bold.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-BoldItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-ExtraLight.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-ExtraLightItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Italic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Light.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-LightItalic.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-Regular.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-SemiBold.ttf new file: styles/fonts/Titillium_Web/TitilliumWeb-SemiBoldItalic.ttf new file: styles/fonts/webfontkit-20221027-163353/generator_config.txt new file: styles/fonts/webfontkit-20221027-163353/specimen_files/grid_12-825-55-15.css new file: styles/fonts/webfontkit-20221027-163353/specimen_files/specimen_stylesheet.css new file: styles/fonts/webfontkit-20221027-163353/stylesheet.css new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-demo.html new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-webfont.woff new file: styles/fonts/webfontkit-20221027-163353/titilliumweb-extralight-webfont.woff2 new file: styles/fonts/webfontkit-20221027-165950/generator_config.txt new file: styles/fonts/webfontkit-20221027-165950/specimen_files/grid_12-825-55-15.css new file: styles/fonts/webfontkit-20221027-165950/specimen_files/specimen_stylesheet.css new file: styles/fonts/webfontkit-20221027-165950/stylesheet.css new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-demo.html new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-webfont.woff new file: styles/fonts/webfontkit-20221027-165950/titilliumweb-bold-webfont.woff2 new file: styles/style.css new file: tools/2048/.gitignore new file: tools/2048/.jshintrc new file: tools/2048/CONTRIBUTING.md new file: tools/2048/LICENSE.txt new file: tools/2048/README.md new file: tools/2048/Rakefile new file: tools/2048/favicon.ico new file: tools/2048/index.html new file: tools/2048/js/animframe_polyfill.js new file: tools/2048/js/application.js new file: tools/2048/js/bind_polyfill.js new file: tools/2048/js/classlist_polyfill.js new file: tools/2048/js/game_manager.js new file: tools/2048/js/grid.js new file: tools/2048/js/html_actuator.js new file: tools/2048/js/keyboard_input_manager.js new file: tools/2048/js/local_storage_manager.js new file: tools/2048/js/tile.js new file: tools/2048/meta/apple-touch-icon.png new file: tools/webretro/cores/neocd_libretro.js new file: tools/webretro/cores/neocd_libretro.wasm new file: tools/webretro/cores/nestopia_libretro.js new file: tools/webretro/cores/nestopia_libretro.wasm new file: tools/webretro/cores/o2em_libretro.js new file: tools/webretro/cores/o2em_libretro.wasm new file: tools/webretro/cores/opera_libretro.js new file: tools/webretro/cores/opera_libretro.wasm
131 lines
3.5 KiB
HTML
131 lines
3.5 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<!-- This file is necessary for the contents of the google drive upload window, as it fully contains google's modal window. -->
|
|
<head>
|
|
<title>Choose a File</title>
|
|
<style>
|
|
body {
|
|
background-color: #101010;
|
|
color: white;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.picker-dialog {
|
|
left: 0px !important;
|
|
top: 0px !important;
|
|
outline: none !important;
|
|
border: none !important;
|
|
box-shadow: none !important;
|
|
}
|
|
|
|
.picker-dialog, .picker-dialog-content {
|
|
width: 100% !important;
|
|
height: 100% !important;
|
|
}
|
|
|
|
.center {
|
|
position: absolute;
|
|
left: 50%;
|
|
top: 50%;
|
|
transform: translate(-50%, -50%);
|
|
margin: 0px;
|
|
}
|
|
|
|
#authorizebutton {
|
|
font-size: 36px;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<input type="button" id="authorizebutton" class="center" value="Authorize">
|
|
<script src="https://apis.google.com/js/api.js"></script>
|
|
<script src="https://accounts.google.com/gsi/client"></script>
|
|
<script src="tokens.js"></script>
|
|
<script>
|
|
var queries = Object.fromEntries(window.location.search.substring(1).split("&").map(i => i.split("=")).map(i => i.map(i => i && decodeURIComponent(i))));
|
|
|
|
var fileTypes = queries.exts ? queries.exts.split(",") : [];
|
|
|
|
var scope = ["https://www.googleapis.com/auth/drive.readonly"];
|
|
|
|
var pickerApiLoaded = false;
|
|
var oauthToken;
|
|
|
|
var authorizeButton = document.getElementById("authorizebutton");
|
|
authorizeButton.onclick = loadPicker;
|
|
|
|
function onPickerApiLoad() {
|
|
pickerApiLoaded = true;
|
|
tryCreatePicker();
|
|
}
|
|
|
|
function handleTokenResponse(tokenResponse) {
|
|
if (tokenResponse && tokenResponse.access_token) {
|
|
authorizeButton.style.display = "none";
|
|
oauthToken = tokenResponse.access_token;
|
|
tryCreatePicker();
|
|
}
|
|
}
|
|
|
|
function getAuth() {
|
|
google.accounts.oauth2.initTokenClient({"client_id": googleOauthClientId, "scope": scope.join(" "), callback: handleTokenResponse}).requestAccessToken();
|
|
}
|
|
|
|
function loadPicker() {
|
|
gapi.load("picker", {"callback": onPickerApiLoad});
|
|
getAuth();
|
|
}
|
|
|
|
function tryCreatePicker(config) {
|
|
if (pickerApiLoaded && oauthToken) {
|
|
var picker = new google.picker.PickerBuilder()
|
|
.setAppId(googleProjectId)
|
|
.setOAuthToken(oauthToken)
|
|
.setDeveloperKey(googleApiKey)
|
|
.addView(new google.picker.DocsView()
|
|
.setIncludeFolders(true)
|
|
.setQuery(fileTypes.join(" || "))
|
|
)
|
|
.enableFeature(google.picker.Feature.NAV_HIDDEN)
|
|
.hideTitleBar()
|
|
.setCallback(pickerCallback)
|
|
.build();
|
|
picker.setVisible(true);
|
|
}
|
|
}
|
|
|
|
var isDone;
|
|
|
|
function finish(message, name, data) {
|
|
window.opener.postMessage({webretro: {message: message, name: name, data: data}}, "*");
|
|
isDone = true;
|
|
window.close();
|
|
}
|
|
|
|
window.addEventListener("unload", function() {
|
|
if (!isDone) finish("cancelled");
|
|
}, false);
|
|
|
|
function pickerCallback(data) {
|
|
if (data.action == google.picker.Action.PICKED) {
|
|
document.body.innerHTML += "<h1 class='center'>Loading... Do not close this window.</h1>";
|
|
var file = data.docs[0];
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.open("GET", "https://www.googleapis.com/drive/v3/files/" + file.id + "?alt=media&source=downloadUrl", true);
|
|
xhr.setRequestHeader("Authorization", "Bearer " + oauthToken);
|
|
xhr.responseType = "arraybuffer";
|
|
xhr.onload = function() {
|
|
finish("success", file.name, this.response);
|
|
}
|
|
xhr.onerror = function() {
|
|
finish("error");
|
|
}
|
|
xhr.send();
|
|
} else if (data.action == google.picker.Action.CANCEL) {
|
|
finish("cancelled");
|
|
}
|
|
}
|
|
|
|
</script>
|
|
</body>
|
|
</html> |