From 9b6b37cfdd9ad9c98c9cace7d3376138eb12fdda Mon Sep 17 00:00:00 2001 From: Jeffrey Harrison <64204515+LeeluPradhan@users.noreply.github.com> Date: Sun, 26 Apr 2020 11:15:00 +0530 Subject: [PATCH] Add files via upload --- Search/index.js | 797 +++++++++++++++++++++++++ Search/themes/material/app.js | 1034 +++++++++++++++++++++++++++++++++ css/classic-button.css | 24 + css/mail-box-style.css | 52 ++ img/logo.png | Bin 0 -> 15351 bytes img/td-maker.png | Bin 0 -> 159076 bytes maker.js | 434 ++++++++++++++ 7 files changed, 2341 insertions(+) create mode 100644 Search/index.js create mode 100644 Search/themes/material/app.js create mode 100644 css/classic-button.css create mode 100644 css/mail-box-style.css create mode 100644 img/logo.png create mode 100644 img/td-maker.png create mode 100644 maker.js diff --git a/Search/index.js b/Search/index.js new file mode 100644 index 0000000..bbb324d --- /dev/null +++ b/Search/index.js @@ -0,0 +1,797 @@ +var authConfig = { + "siteName": "G-Index", // WebSite Name + "version": "1.0", // VersionControl, do not modify manually + // Only material! + "theme": "material", // material classic + //add themes color, darkmode + "main_color": "", // red | pink | purple | deep-purple | indigo | blue | light-blue | cyan | teal | green | light-green | lime yellow | amber orange | deep-orange | brown | greyblue-grey + "accent_color": "", // red | pink | purple | deep-purple | indigo | blue | light-blue | cyan | teal | green | light-green | lime | yellow | amber | orange | deep-orange + "dark_theme": "", // True for dark theme + // client_id & client_secret + "client_id": "", + "client_secret": "", + "refresh_token": "", // Refresh token + + /** + * Set up multiple Drives to display; add multiples by format + * id can be team disk id, subfolder id, or "root" (representing the root directory of individual disk) + * name - The displayed name + * pass is the corresponding password, which can be set separately, or an empty string if no password is required + * [Note] For the disk whose id is set to the subfolder id, the search function will not be supported (it does not affect other disks) + */ + "roots": [ + { + id: "root", + name: "Sample1", + pass: "" + }, + { + id: "drive_id", + name: "Sample2", + pass: "index" + }, + { + id: "folder_id", + name: "Sample3", + pass: "index2" + } + ], + /** + * The number displayed on each page of the file list page. [Recommended setting value is between 100 and 1000]; +    * If the setting is greater than 1000, it will cause an error when requesting drive api; +    * If the set value is too small, the incremental loading (page loading) of the scroll bar of the file list page will be invalid +    * Another effect of this value is that if the number of files in the directory is greater than this setting (that is, multiple pages need to be displayed), the results of the first listing directory will be cached. + */ + "files_list_page_size": 500, + /** + * The number displayed on each page of the search results page. [Recommended setting value is between 50 and 1000]; +    * If the setting is greater than 1000, it will cause an error when requesting drive api; +    * If the set value is too small, it will cause the incremental loading (page loading) of the scroll bar of the search results page to fail; +    * The size of this value affects the response speed of the search operation + */ + "search_result_list_page_size": 50, + // Confirm that cors can be opened + "enable_cors_file_down": false + // user_drive_real_root_id +}; + + +/** + * global functions + */ +const FUNCS = { + /** + * Transform into relatively safe search keywords for Google search morphology + */ + formatSearchKeyword: function (keyword) { + let nothing = ""; + let space = " "; + if (!keyword) return nothing; + return keyword.replace(/(!=)|['"=<>/\\:]/g, nothing) + .replace(/[,,|(){}]/g, space) + .trim() + } + +}; + +/** + * global consts + * @type {{folder_mime_type: string, default_file_fields: string, gd_root_type: {share_drive: number, user_drive: number, sub_folder: number}}} + */ +const CONSTS = new (class { + default_file_fields = 'parents,id,name,mimeType,modifiedTime,createdTime,fileExtension,size'; + gd_root_type = { + user_drive: 0, + share_drive: 1, + sub_folder: 2 + }; + folder_mime_type = 'application/vnd.google-apps.folder'; +})(); + + +// gd instances +var gds = []; + +function html(current_drive_order = 0, model = {}) { + return ` + + + + + + ${authConfig.siteName} + + + + + + + + +`; +}; + +addEventListener('fetch', event => { + event.respondWith(handleRequest(event.request)); +}); + +/** + * Fetch and log a request + * @param {Request} request + */ +async function handleRequest(request) { + if (gds.length === 0) { + for (let i = 0; i < authConfig.roots.length; i++) { + const gd = new googleDrive(authConfig, i); + await gd.init(); + gds.push(gd) + } + // This operation is parallel to improve efficiency + let tasks = []; + gds.forEach(gd => { + tasks.push(gd.initRootType()); + }); + for (let task of tasks) { + await task; + } + } + + // Extract drive order from path + // and get the corresponding gd instance according to the drive order + let gd; + let url = new URL(request.url); + let path = url.pathname; + + /** + * Redirect to start page + * @returns {Response} + */ + function redirectToIndexPage() { + return new Response('', {status: 301, headers: {'Location': `${url.origin}/0:/`}}); + } + + if (path == '/') return redirectToIndexPage(); + if (path.toLowerCase() == '/favicon.ico') { + // You can find one later favicon + return new Response('', {status: 404}) + } + + // Special command format + const command_reg = /^\/(?\d+):(?[a-zA-Z0-9]+)$/g; + const match = command_reg.exec(path); + if (match) { + const num = match.groups.num; + const order = Number(num); + if (order >= 0 && order < gds.length) { + gd = gds[order]; + } else { + return redirectToIndexPage() + } + const command = match.groups.command; + // Search + if (command === 'search') { + if (request.method === 'POST') { + // search results + return handleSearch(request, gd); + } else { + const params = url.searchParams; + // Search Page + return new Response(html(gd.order, { + q: params.get("q") || '', + is_search_page: true, + root_type: gd.root_type + }), + { + status: 200, + headers: {'Content-Type': 'text/html; charset=utf-8'} + }); + } + } else if (command === 'id2path' && request.method === 'POST') { + return handleId2Path(request, gd) + } + } + + // Desired path format + const common_reg = /^\/\d+:\/.*$/g; + try { + if (!path.match(common_reg)) { + return redirectToIndexPage(); + } + let split = path.split("/"); + let order = Number(split[1].slice(0, -1)); + if (order >= 0 && order < gds.length) { + gd = gds[order]; + } else { + return redirectToIndexPage() + } + } catch (e) { + return redirectToIndexPage() + } + + path = path.replace(gd.url_path_prefix, '') || '/'; + if (request.method == 'POST') { + return apiRequest(request, gd); + } + + let action = url.searchParams.get('a'); + + if (path.substr(-1) == '/' || action != null) { + return new Response(html(gd.order, {root_type: gd.root_type}), { + status: 200, + headers: {'Content-Type': 'text/html; charset=utf-8'} + }); + } else { + if (path.split('/').pop().toLowerCase() == ".password") { + return new Response("", {status: 404}); + } + let file = await gd.file(path); + let range = request.headers.get('Range'); + const inline_down = 'true' === url.searchParams.get('inline'); + return gd.down(file.id, range, inline_down); + } +} + + +async function apiRequest(request, gd) { + let url = new URL(request.url); + let path = url.pathname; + path = path.replace(gd.url_path_prefix, '') || '/'; + + let option = {status: 200, headers: {'Access-Control-Allow-Origin': '*'}} + + if (path.substr(-1) == '/') { + let deferred_pass = gd.password(path); + let form = await request.formData(); + // This can increase the speed of the first listing. The disadvantage is that if the password verification fails, the overhead of listing directories will still be incurred + let deferred_list_result = gd.list(path, form.get('page_token'), Number(form.get('page_index'))); + + // check password + let password = await deferred_pass; + // console.log("dir password", password); + if (password != undefined && password != null && password != "") { + if (password.replace("\n", "") != form.get('password')) { + let html = `{"error": {"code": 401,"message": "password error."}}`; + return new Response(html, option); + } + } + + let list_result = await deferred_list_result; + return new Response(JSON.stringify(list_result), option); + } else { + let file = await gd.file(path); + let range = request.headers.get('Range'); + return new Response(JSON.stringify(file)); + } +} + +// Deal With search +async function handleSearch(request, gd) { + const option = {status: 200, headers: {'Access-Control-Allow-Origin': '*'}}; + let form = await request.formData(); + let search_result = await + gd.search(form.get('q') || '', form.get('page_token'), Number(form.get('page_index'))); + return new Response(JSON.stringify(search_result), option); +} + +/** + * Deal With id2path + * @param request Id parameter required + * @param gd + * @returns {Promise} [Note] If the item represented by the id received from the front desk is not under the target gd disk, then the response will be returned to the front desk with an empty string "" + */ +async function handleId2Path(request, gd) { + const option = {status: 200, headers: {'Access-Control-Allow-Origin': '*'}}; + let form = await request.formData(); + let path = await gd.findPathById(form.get('id')); + return new Response(path || '', option); +} + +class googleDrive { + constructor(authConfig, order) { + // Each disk corresponds to an order, corresponding to a gd instance + this.order = order; + this.root = authConfig.roots[order]; + this.url_path_prefix = `/${order}:`; + this.authConfig = authConfig; + // TODO: The invalid refresh strategy of these caches can be formulated later + // path id + this.paths = []; + // path file + this.files = []; + // path pass + this.passwords = []; + // id <-> path + this.id_path_cache = {}; + this.id_path_cache[this.root['id']] = '/'; + this.paths["/"] = this.root['id']; + if (this.root['pass'] != "") { + this.passwords['/'] = this.root['pass']; + } + // this.init(); + } + + /** + * Initial authorization; then obtain user_drive_real_root_id + * @returns {Promise} + */ + async init() { + await this.accessToken(); + /*await (async () => { + // Get only 1 time + if (authConfig.user_drive_real_root_id) return; + const root_obj = await (gds[0] || this).findItemById('root'); + if (root_obj && root_obj.id) { + authConfig.user_drive_real_root_id = root_obj.id + } + })();*/ + // Wait for user_drive_real_root_id and only get it once + if (authConfig.user_drive_real_root_id) return; + const root_obj = await (gds[0] || this).findItemById('root'); + if (root_obj && root_obj.id) { + authConfig.user_drive_real_root_id = root_obj.id + } + } + + /** + * Get the root directory type, set to root_type + * @returns {Promise} + */ + async initRootType() { + const root_id = this.root['id']; + const types = CONSTS.gd_root_type; + if (root_id === 'root' || root_id === authConfig.user_drive_real_root_id) { + this.root_type = types.user_drive; + } else { + const obj = await this.getShareDriveObjById(root_id); + this.root_type = obj ? types.share_drive : types.sub_folder; + } + } + + async down(id, range = '', inline = false) { + let url = `https://www.googleapis.com/drive/v3/files/${id}?alt=media`; + let requestOption = await this.requestOption(); + requestOption.headers['Range'] = range; + let res = await fetch(url, requestOption); + const {headers} = res = new Response(res.body, res) + this.authConfig.enable_cors_file_down && headers.append('Access-Control-Allow-Origin', '*'); + inline === true && headers.set('Content-Disposition', 'inline'); + return res; + } + + async file(path) { + if (typeof this.files[path] == 'undefined') { + this.files[path] = await this._file(path); + } + return this.files[path]; + } + + async _file(path) { + let arr = path.split('/'); + let name = arr.pop(); + name = decodeURIComponent(name).replace(/\'/g, "\\'"); + let dir = arr.join('/') + '/'; + // console.log(name, dir); + let parent = await this.findPathId(dir); + // console.log(parent); + let url = 'https://www.googleapis.com/drive/v3/files'; + let params = {'includeItemsFromAllDrives': true, 'supportsAllDrives': true}; + params.q = `'${parent}' in parents and name = '${name}' and trashed = false`; + params.fields = "files(id, name, mimeType, size ,createdTime, modifiedTime, iconLink, thumbnailLink)"; + url += '?' + this.enQuery(params); + let requestOption = await this.requestOption(); + let response = await fetch(url, requestOption); + let obj = await response.json(); + // console.log(obj); + return obj.files[0]; + } + + // Cache through reqeust cache + async list(path, page_token = null, page_index = 0) { + if (this.path_children_cache == undefined) { + // { :[ {nextPageToken:'',data:{}}, {nextPageToken:'',data:{}} ...], ...} + this.path_children_cache = {}; + } + + if (this.path_children_cache[path] + && this.path_children_cache[path][page_index] + && this.path_children_cache[path][page_index].data + ) { + let child_obj = this.path_children_cache[path][page_index]; + return { + nextPageToken: child_obj.nextPageToken || null, + curPageIndex: page_index, + data: child_obj.data + }; + } + + let id = await this.findPathId(path); + let result = await this._ls(id, page_token, page_index); + let data = result.data; + // Cache multiple pages + if (result.nextPageToken && data.files) { + if (!Array.isArray(this.path_children_cache[path])) { + this.path_children_cache[path] = [] + } + this.path_children_cache[path][Number(result.curPageIndex)] = { + nextPageToken: result.nextPageToken, + data: data + }; + } + + return result + } + + + async _ls(parent, page_token = null, page_index = 0) { + // console.log("_ls", parent); + + if (parent == undefined) { + return null; + } + let obj; + let params = {'includeItemsFromAllDrives': true, 'supportsAllDrives': true}; + params.q = `'${parent}' in parents and trashed = false AND name !='.password'`; + params.orderBy = 'folder,name,modifiedTime desc'; + params.fields = "nextPageToken, files(id, name, mimeType, size , modifiedTime)"; + params.pageSize = this.authConfig.files_list_page_size; + + if (page_token) { + params.pageToken = page_token; + } + let url = 'https://www.googleapis.com/drive/v3/files'; + url += '?' + this.enQuery(params); + let requestOption = await this.requestOption(); + let response = await fetch(url, requestOption); + obj = await response.json(); + + return { + nextPageToken: obj.nextPageToken || null, + curPageIndex: page_index, + data: obj + }; + + /*do { + if (pageToken) { + params.pageToken = pageToken; + } + let url = 'https://www.googleapis.com/drive/v3/files'; + url += '?' + this.enQuery(params); + let requestOption = await this.requestOption(); + let response = await fetch(url, requestOption); + obj = await response.json(); + files.push(...obj.files); + pageToken = obj.nextPageToken; + } while (pageToken);*/ + + } + + async password(path) { + if (this.passwords[path] !== undefined) { + return this.passwords[path]; + } + + // console.log("load", path, ".password", this.passwords[path]); + + let file = await this.file(path + '.password'); + if (file == undefined) { + this.passwords[path] = null; + } else { + let url = `https://www.googleapis.com/drive/v3/files/${file.id}?alt=media`; + let requestOption = await this.requestOption(); + let response = await this.fetch200(url, requestOption); + this.passwords[path] = await response.text(); + } + + return this.passwords[path]; + } + + + /** + * Get share drive information by id + * @param any_id + * @returns {Promise} Any abnormal situation returns null + */ + async getShareDriveObjById(any_id) { + if (!any_id) return null; + if ('string' !== typeof any_id) return null; + + let url = `https://www.googleapis.com/drive/v3/drives/${any_id}`; + let requestOption = await this.requestOption(); + let res = await fetch(url, requestOption); + let obj = await res.json(); + if (obj && obj.id) return obj; + + return null + } + + + /** + * search for + * @returns {Promise<{data: null, nextPageToken: null, curPageIndex: number}>} + */ + async search(origin_keyword, page_token = null, page_index = 0) { + const types = CONSTS.gd_root_type; + const is_user_drive = this.root_type === types.user_drive; + const is_share_drive = this.root_type === types.share_drive; + + const empty_result = { + nextPageToken: null, + curPageIndex: page_index, + data: null + }; + + if (!is_user_drive && !is_share_drive) { + return empty_result; + } + let keyword = FUNCS.formatSearchKeyword(origin_keyword); + if (!keyword) { + // The keyword is empty, return + return empty_result; + } + let words = keyword.split(/\s+/); + let name_search_str = `name contains '${words.join("' AND name contains '")}'`; + + // corpora is a personal drive for user and a team drive for drive. With driveId + let params = {}; + if (is_user_drive) { + params.corpora = 'user' + } + if (is_share_drive) { + params.corpora = 'drive'; + params.driveId = this.root.id; + // This parameter will only be effective until June 1, 2020. Afterwards shared drive items will be included in the results. + params.includeItemsFromAllDrives = true; + params.supportsAllDrives = true; + } + if (page_token) { + params.pageToken = page_token; + } + params.q = `trashed = false AND name !='.password' AND (${name_search_str})`; + params.fields = "nextPageToken, files(id, name, mimeType, size , modifiedTime)"; + params.pageSize = this.authConfig.search_result_list_page_size; + // params.orderBy = 'folder,name,modifiedTime desc'; + + let url = 'https://www.googleapis.com/drive/v3/files'; + url += '?' + this.enQuery(params); + // console.log(params) + let requestOption = await this.requestOption(); + let response = await fetch(url, requestOption); + let res_obj = await response.json(); + + return { + nextPageToken: res_obj.nextPageToken || null, + curPageIndex: page_index, + data: res_obj + }; + } + + + /** + * Get the file object of the superior folder of this file or folder layer by layer. Note: It will be very slow! ! ! + * Up to find the root directory (root id) of the current gd object + * Only consider a single upward chain. + * [Note] If the item represented by this id is not under the target gd disk, then this function will return null + * + * @param child_id + * @param contain_myself + * @returns {Promise<[]>} + */ + async findParentFilesRecursion(child_id, contain_myself = true) { + const gd = this; + const gd_root_id = gd.root.id; + const user_drive_real_root_id = authConfig.user_drive_real_root_id; + const is_user_drive = gd.root_type === CONSTS.gd_root_type.user_drive; + + // End point query id from bottom to top + const target_top_id = is_user_drive ? user_drive_real_root_id : gd_root_id; + const fields = CONSTS.default_file_fields; + + // [{},{},...] + const parent_files = []; + let meet_top = false; + + async function addItsFirstParent(file_obj) { + if (!file_obj) return; + if (!file_obj.parents) return; + if (file_obj.parents.length < 1) return; + + // ['','',...] + let p_ids = file_obj.parents; + if (p_ids && p_ids.length > 0) { + // its first parent + const first_p_id = p_ids[0]; + if (first_p_id === target_top_id) { + meet_top = true; + return; + } + const p_file_obj = await gd.findItemById(first_p_id); + if (p_file_obj && p_file_obj.id) { + parent_files.push(p_file_obj); + await addItsFirstParent(p_file_obj); + } + } + } + + const child_obj = await gd.findItemById(child_id); + if (contain_myself) { + parent_files.push(child_obj); + } + await addItsFirstParent(child_obj); + + return meet_top ? parent_files : null + } + + /** + * Get the path relative to the root directory of this disk + * @param child_id + * @returns {Promise} [Note] If the item represented by this id is not in the target gd disk, then this method will return an empty string "" + */ + async findPathById(child_id) { + if (this.id_path_cache[child_id]) { + return this.id_path_cache[child_id]; + } + + const p_files = await this.findParentFilesRecursion(child_id); + if (!p_files || p_files.length < 1) return ''; + + let cache = []; + // Cache the path and id of each level found + p_files.forEach((value, idx) => { + const is_folder = idx === 0 ? (p_files[idx].mimeType === CONSTS.folder_mime_type) : true; + let path = '/' + p_files.slice(idx).map(it => it.name).reverse().join('/'); + if (is_folder) path += '/'; + cache.push({id: p_files[idx].id, path: path}) + }); + + cache.forEach((obj) => { + this.id_path_cache[obj.id] = obj.path; + this.paths[obj.path] = obj.id + }); + + /*const is_folder = p_files[0].mimeType === CONSTS.folder_mime_type; + let path = '/' + p_files.map(it => it.name).reverse().join('/'); + if (is_folder) path += '/';*/ + + return cache[0].path; + } + + + // Get file item based on id + async findItemById(id) { + const is_user_drive = this.root_type === CONSTS.gd_root_type.user_drive; + let url = `https://www.googleapis.com/drive/v3/files/${id}?fields=${CONSTS.default_file_fields}${is_user_drive ? '' : '&supportsAllDrives=true'}`; + let requestOption = await this.requestOption(); + let res = await fetch(url, requestOption); + return await res.json() + } + + async findPathId(path) { + let c_path = '/'; + let c_id = this.paths[c_path]; + + let arr = path.trim('/').split('/'); + for (let name of arr) { + c_path += name + '/'; + + if (typeof this.paths[c_path] == 'undefined') { + let id = await this._findDirId(c_id, name); + this.paths[c_path] = id; + } + + c_id = this.paths[c_path]; + if (c_id == undefined || c_id == null) { + break; + } + } + // console.log(this.paths); + return this.paths[path]; + } + + async _findDirId(parent, name) { + name = decodeURIComponent(name).replace(/\'/g, "\\'"); + + // console.log("_findDirId", parent, name); + + if (parent == undefined) { + return null; + } + + let url = 'https://www.googleapis.com/drive/v3/files'; + let params = {'includeItemsFromAllDrives': true, 'supportsAllDrives': true}; + params.q = `'${parent}' in parents and mimeType = 'application/vnd.google-apps.folder' and name = '${name}' and trashed = false`; + params.fields = "nextPageToken, files(id, name, mimeType)"; + url += '?' + this.enQuery(params); + let requestOption = await this.requestOption(); + let response = await fetch(url, requestOption); + let obj = await response.json(); + if (obj.files[0] == undefined) { + return null; + } + return obj.files[0].id; + } + + async accessToken() { + console.log("accessToken"); + if (this.authConfig.expires == undefined || this.authConfig.expires < Date.now()) { + const obj = await this.fetchAccessToken(); + if (obj.access_token != undefined) { + this.authConfig.accessToken = obj.access_token; + this.authConfig.expires = Date.now() + 3500 * 1000; + } + } + return this.authConfig.accessToken; + } + + async fetchAccessToken() { + console.log("fetchAccessToken"); + const url = "https://www.googleapis.com/oauth2/v4/token"; + const headers = { + 'Content-Type': 'application/x-www-form-urlencoded' + }; + const post_data = { + 'client_id': this.authConfig.client_id, + 'client_secret': this.authConfig.client_secret, + 'refresh_token': this.authConfig.refresh_token, + 'grant_type': 'refresh_token' + } + + let requestOption = { + 'method': 'POST', + 'headers': headers, + 'body': this.enQuery(post_data) + }; + + const response = await fetch(url, requestOption); + return await response.json(); + } + + async fetch200(url, requestOption) { + let response; + for (let i = 0; i < 3; i++) { + response = await fetch(url, requestOption); + console.log(response.status); + if (response.status != 403) { + break; + } + await this.sleep(800 * (i + 1)); + } + return response; + } + + async requestOption(headers = {}, method = 'GET') { + const accessToken = await this.accessToken(); + headers['authorization'] = 'Bearer ' + accessToken; + return {'method': method, 'headers': headers}; + } + + enQuery(data) { + const ret = []; + for (let d in data) { + ret.push(encodeURIComponent(d) + '=' + encodeURIComponent(data[d])); + } + return ret.join('&'); + } + + sleep(ms) { + return new Promise(function (resolve, reject) { + let i = 0; + setTimeout(function () { + console.log('sleep' + ms); + i++; + if (i >= 2) reject(new Error('i>=2')); + else resolve(i); + }, ms); + }) + } +} + +String.prototype.trim = function (char) { + if (char) { + return this.replace(new RegExp('^\\' + char + '+|\\' + char + '+$', 'g'), ''); + } + return this.replace(/^\s+|\s+$/g, ''); +}; diff --git a/Search/themes/material/app.js b/Search/themes/material/app.js new file mode 100644 index 0000000..9c17e42 --- /dev/null +++ b/Search/themes/material/app.js @@ -0,0 +1,1034 @@ +// Load the necessary static in the head +document.write(''); +// markdown Standby +document.write(''); +document.write(''); + +if(dark){document.write('');} + +// Initialize the page and load the necessary resources +function init(){ + document.siteName = $('title').html(); + $('body').addClass("mdui-theme-primary-"+main_color+" mdui-theme-accent-"+accent_color); + var html = ""; + html += ` +
` + if(dark){ + html += ` + `; + }else{ + html += ` + `; + } +html += ` +
+
+
`; + $('body').html(html); +} + +const Os = { + isWindows: navigator.platform.toUpperCase().indexOf('WIN') > -1, // .includes + isMac: navigator.platform.toUpperCase().indexOf('MAC') > -1, + isMacLike: /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform), + isIos: /(iPhone|iPod|iPad)/i.test(navigator.platform), + isMobile: /Android|webOS|iPhone|iPad|iPod|iOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) +}; + +function getDocumentHeight() { + var D = document; + return Math.max( + D.body.scrollHeight, D.documentElement.scrollHeight, + D.body.offsetHeight, D.documentElement.offsetHeight, + D.body.clientHeight, D.documentElement.clientHeight + ); +} + +function render(path) { + if (path.indexOf("?") > 0) { + path = path.substr(0, path.indexOf("?")); + } + title(path); + nav(path); + // .../0: This + var reg = /\/\d+:$/g; + if (window.MODEL.is_search_page) { + // Used to store the state of some scroll events + window.scroll_status = { + // Whether the scroll event is already bound + event_bound: false, + // "Scroll to the bottom, loading more data" event lock + loading_lock: false + }; + render_search_result_list() + } else if (path.match(reg) || path.substr(-1) == '/') { + // Used to store the state of some scroll events + window.scroll_status = { + // Whether the scroll event is already bound + event_bound: false, + // "Scroll to the bottom, loading more data" event lock + loading_lock: false + }; + list(path); + } else { + file(path); + } +} + + +// Rendering title +function title(path) { + path = decodeURI(path); + var cur = window.current_drive_order || 0; + var drive_name = window.drive_names[cur]; + path = path.replace(`/${cur}:`, ''); + // $('title').html(document.siteName + ' - ' + path); + var model = window.MODEL; + if (model.is_search_page) + $('title').html(`${document.siteName} - ${drive_name} - 搜索 ${model.q} 的结果`); + else + $('title').html(`${document.siteName} - ${drive_name} - ${path}`); +} + +// Render the navigation bar +function nav(path) { + var model = window.MODEL; + var html = ""; + var cur = window.current_drive_order || 0; + html += `${document.siteName}`; + var names = window.drive_names; + /*html += ``; + html += `
    `; + names.forEach((name, idx) => { + html += `
  • ${name}
  • `; + }); + html += `
`;*/ + + // change into select + html += ``; + + if (!model.is_search_page) { + var arr = path.trim('/').split('/'); + var p = '/'; + if (arr.length > 1) { + arr.shift(); + for (i in arr) { + var n = arr[i]; + n = decodeURI(n); + p += n + '/'; + if (n == '') { + break; + } + html += `chevron_right${n}`; + } + } + } + var search_text = model.is_search_page ? (model.q || '') : ''; + const isMobile = Os.isMobile; + var search_bar = `
+ `; + + // Personal or team + if (model.root_type < 2) { + // Show search box + html += search_bar; + } + + $('#nav').html(html); + mdui.mutation(); + mdui.updateTextFields(); +} + +/** + * Initiate POST request for listing + * @param path Path + * @param params Form params + * @param resultCallback Success Result Callback + * @param authErrorCallback Pass Error Callback + */ +function requestListPath(path, params, resultCallback, authErrorCallback) { + var p = { + password: params['password'] || null, + page_token: params['page_token'] || null, + page_index: params['page_index'] || 0 + }; + $.post(path, p, function (data, status) { + var res = jQuery.parseJSON(data); + if (res && res.error && res.error.code == '401') { + // Password verification failed + if (authErrorCallback) authErrorCallback(path) + } else if (res && res.data) { + if (resultCallback) resultCallback(res, path, p) + } + }) +} + +/** + * Search POST request + * @param params Form params + * @param resultCallback Success callback + */ +function requestSearch(params, resultCallback) { + var p = { + q: params['q'] || null, + page_token: params['page_token'] || null, + page_index: params['page_index'] || 0 + }; + $.post(`/${window.current_drive_order}:search`, p, function (data, status) { + var res = jQuery.parseJSON(data); + if (res && res.data) { + if (resultCallback) resultCallback(res, p) + } + }) +} + + +// Render file list +function list(path) { + var content = ` + +
+
    +
  • +
    + File + expand_more +
    +
    + Time + expand_more +
    +
    + Size + expand_more +
    +
  • +
+
+
+
    +
+
Total Item
+
+ + `; + $('#content').html(content); + + var password = localStorage.getItem('password' + path); + $('#list').html(`
`); + $('#readme_md').hide().html(''); + $('#head_md').hide().html(''); + + /** + * Callback after successful data return from column directory request + * @param res Returned result (object) + * @param path Requested path + * @param prevReqParams Parameters used in the request + */ + function successResultCallback(res, path, prevReqParams) { + + // Temporarily store nextPageToken and currentPageIndex in the list element + $('#list') + .data('nextPageToken', res['nextPageToken']) + .data('curPageIndex', res['curPageIndex']); + + // Remove loading spinner + $('#spinner').remove(); + + if (res['nextPageToken'] === null) { + // If it is the last page, unbind the scroll event, reset scroll_status, and append data + $(window).off('scroll'); + window.scroll_status.event_bound = false; + window.scroll_status.loading_lock = false; + append_files_to_list(path, res['data']['files']); + } else { + // If it is not the last page, append data and bind the scroll event (if not already bound), update scroll_status + append_files_to_list(path, res['data']['files']); + if (window.scroll_status.event_bound !== true) { + // Bind event, if not yet bound + $(window).on('scroll', function () { + var scrollTop = $(this).scrollTop(); + var scrollHeight = getDocumentHeight(); + var windowHeight = $(this).height(); + // Roll to the bottom + if (scrollTop + windowHeight > scrollHeight - (Os.isMobile ? 130 : 80)) { + /* + When the event of scrolling to the bottom is triggered, if it is already loading at this time, the event is ignored; + Otherwise, go to loading and occupy the loading lock, indicating that loading is in progress + */ + if (window.scroll_status.loading_lock === true) { + return; + } + window.scroll_status.loading_lock = true; + + // Show one loading spinner + $(`
`) + .insertBefore('#readme_md'); + mdui.updateSpinners(); + // mdui.mutation(); + + let $list = $('#list'); + requestListPath(path, { + password: prevReqParams['password'], + page_token: $list.data('nextPageToken'), + // Request next page + page_index: $list.data('curPageIndex') + 1 + }, + successResultCallback, + // The password is the same as before. Will not appear authError + null + ) + } + }); + window.scroll_status.event_bound = true + } + } + + // After loading successfully and rendering new data successfully, release the loading lock so that you can continue to process the "scroll to bottom" event + if (window.scroll_status.loading_lock === true) { + window.scroll_status.loading_lock = false + } + } + + // Start requesting data from page 1 + requestListPath(path, {password: password}, + successResultCallback, + function (path) { + $('#spinner').remove(); + var pass = prompt("Access Denied, please enter the password", ""); + localStorage.setItem('password' + path, pass); + if (pass != null && pass != "") { + list(path); + } else { + history.go(-1); + } + }); +} + +/** + * Append the data of the new page requested to the list + * @param path path + * @param files Requested results + */ +function append_files_to_list(path, files) { + var $list = $('#list'); + // Is it the last page of data? + var is_lastpage_loaded = null === $list.data('nextPageToken'); + var is_firstpage = '0' == $list.data('curPageIndex'); + + html = ""; + let targetFiles = []; + for (i in files) { + var item = files[i]; + var p = path + item.name + '/'; + if (item['size'] == undefined) { + item['size'] = ""; + } + + item['modifiedTime'] = utc2beijing(item['modifiedTime']); + item['size'] = formatFileSize(item['size']); + if (item['mimeType'] == 'application/vnd.google-apps.folder') { + html += `
  • +
    + folder_open + ${item.name} +
    +
    ${item['modifiedTime']}
    +
    ${item['size']}
    +
    +
  • `; + } else { + var p = path + item.name; + const filepath = path + item.name; + var c = "file"; + // README is displayed after the last page is loaded, otherwise it will affect the scroll event + if (is_lastpage_loaded && item.name == "README.md") { + get_file(p, item, function (data) { + markdown("#readme_md", data); + }); + } + if (item.name == "HEAD.md") { + get_file(p, item, function (data) { + markdown("#head_md", data); + }); + } + var ext = p.split('.').pop().toLowerCase(); + if ("|html|php|css|go|java|js|json|txt|sh|md|mp4|webm|avi|bmp|jpg|jpeg|png|gif|m4a|mp3|flac|wav|ogg|mpg|mpeg|mkv|rm|rmvb|mov|wmv|asf|ts|flv|pdf|".indexOf(`|${ext}|`) >= 0) { + targetFiles.push(filepath); + p += "?a=view"; + c += " view"; + } + html += `
  • +
    + insert_drive_file + ${item.name} +
    +
    ${item['modifiedTime']}
    +
    ${item['size']}
    +
    +
  • `; + } + } + + /*let targetObj = {}; + targetFiles.forEach((myFilepath, myIndex) => { + if (!targetObj[myFilepath]) { + targetObj[myFilepath] = { + filepath: myFilepath, + prev: myIndex === 0 ? null : targetFiles[myIndex - 1], + next: myIndex === targetFiles.length - 1 ? null : targetFiles[myIndex + 1], + } + } + }) + // console.log(targetObj) + if (Object.keys(targetObj).length) { + localStorage.setItem(path, JSON.stringify(targetObj)); + // console.log(path) + }*/ + + if (targetFiles.length > 0) { + let old = localStorage.getItem(path); + let new_children = targetFiles; + // Reset on page 1; otherwise append + if (!is_firstpage && old) { + let old_children; + try { + old_children = JSON.parse(old); + if (!Array.isArray(old_children)) { + old_children = [] + } + } catch (e) { + old_children = []; + } + new_children = old_children.concat(targetFiles) + } + + localStorage.setItem(path, JSON.stringify(new_children)) + } + + // When it is page 1, remove the horizontal loading bar + $list.html(($list.data('curPageIndex') == '0' ? '' : $list.html()) + html); + // When it is the last page, count and display the total number of items + if (is_lastpage_loaded) { + $('#count').removeClass('mdui-hidden').find('.number').text($list.find('li.mdui-list-item').length); + } +} + +/** + * Render the search result list. There is a lot of repetitive code, but there are different logics in it. + */ +function render_search_result_list() { + var content = ` + +
    +
      +
    • +
      + File + expand_more +
      +
      + Time + expand_more +
      +
      + Size + expand_more +
      +
    • +
    +
    +
    +
      +
    +
    Total Item
    +
    + + `; + $('#content').html(content); + + $('#list').html(`
    `); + $('#readme_md').hide().html(''); + $('#head_md').hide().html(''); + + /** + * The callback after the search request successfully returns data + * @param res Results returned(object) + * @param path Requested path + * @param prevReqParams Parameters used in the request + */ + function searchSuccessCallback(res, prevReqParams) { + + // Temporarily store nextPageToken and currentPageIndex in the list element + $('#list') + .data('nextPageToken', res['nextPageToken']) + .data('curPageIndex', res['curPageIndex']); + + // Removeloading spinner + $('#spinner').remove(); + + if (res['nextPageToken'] === null) { + // If it is the last page, unbind the scroll event, reset scroll_status, and append data + $(window).off('scroll'); + window.scroll_status.event_bound = false; + window.scroll_status.loading_lock = false; + append_search_result_to_list(res['data']['files']); + } else { + // If it is not the last page, append data and bind the scroll event (if not already bound), update scroll_status + append_search_result_to_list(res['data']['files']); + if (window.scroll_status.event_bound !== true) { + // Bind event, if not yet bound + $(window).on('scroll', function () { + var scrollTop = $(this).scrollTop(); + var scrollHeight = getDocumentHeight(); + var windowHeight = $(this).height(); + // Roll to the bottom + if (scrollTop + windowHeight > scrollHeight - (Os.isMobile ? 130 : 80)) { + /* + When the event of scrolling to the bottom is triggered, if it is already loading at this time, the event is ignored; + Otherwise, go to loading and occupy the loading lock, indicating that loading is in progress + */ + if (window.scroll_status.loading_lock === true) { + return; + } + window.scroll_status.loading_lock = true; + + // Show one loading spinner + $(`
    `) + .insertBefore('#readme_md'); + mdui.updateSpinners(); + // mdui.mutation(); + + let $list = $('#list'); + requestSearch({ + q: window.MODEL.q, + page_token: $list.data('nextPageToken'), + // Request next page + page_index: $list.data('curPageIndex') + 1 + }, + searchSuccessCallback + ) + } + }); + window.scroll_status.event_bound = true + } + } + + // After loading successfully and rendering new data successfully, release the loading lock so that you can continue to process the "scroll to bottom" event + if (window.scroll_status.loading_lock === true) { + window.scroll_status.loading_lock = false + } + } + + // Start requesting data from page 1 + requestSearch({q: window.MODEL.q}, searchSuccessCallback); +} + +/** + * Append a new page of search results + * @param files + */ +function append_search_result_to_list(files) { + var $list = $('#list'); + // Is it the last page of data? + var is_lastpage_loaded = null === $list.data('nextPageToken'); + // var is_firstpage = '0' == $list.data('curPageIndex'); + + html = ""; + + for (i in files) { + var item = files[i]; + if (item['size'] == undefined) { + item['size'] = ""; + } + + item['modifiedTime'] = utc2beijing(item['modifiedTime']); + item['size'] = formatFileSize(item['size']); + if (item['mimeType'] == 'application/vnd.google-apps.folder') { + html += `
  • +
    + folder_open + ${item.name} +
    +
    ${item['modifiedTime']}
    +
    ${item['size']}
    +
    +
  • `; + } else { + var c = "file"; + var ext = item.name.split('.').pop().toLowerCase(); + if ("|html|php|css|go|java|js|json|txt|sh|md|mp4|webm|avi|bmp|jpg|jpeg|png|gif|m4a|mp3|flac|wav|ogg|mpg|mpeg|mkv|rm|rmvb|mov|wmv|asf|ts|flv|".indexOf(`|${ext}|`) >= 0) { + c += " view"; + } + html += `
  • +
    + insert_drive_file + ${item.name} +
    +
    ${item['modifiedTime']}
    +
    ${item['size']}
    +
    +
  • `; + } + } + + // When it is page 1, remove the horizontal loading bar + $list.html(($list.data('curPageIndex') == '0' ? '' : $list.html()) + html); + // When it is the last page, count and display the total number of items + if (is_lastpage_loaded) { + $('#count').removeClass('mdui-hidden').find('.number').text($list.find('li.mdui-list-item').length); + } +} + +/** + * Search result item click event + * @param a_ele Clicked element + */ +function onSearchResultItemClick(a_ele) { + var me = $(a_ele); + var can_preview = me.hasClass('view'); + var cur = window.current_drive_order; + var dialog = mdui.dialog({ + title: '', + content: '
    Getting target path...
    ', + // content: '
    ', + history: false, + modal: true, + closeOnEsc: true + }); + mdui.updateSpinners(); + + // Request to get the path + $.post(`/${cur}:id2path`, {id: a_ele.id}, function (data) { + if (data) { + dialog.close(); + var href = `/${cur}:${data}${can_preview ? '?a=view' : ''}`; + dialog = mdui.dialog({ + title: 'Target path', + content: `${data}`, + history: false, + modal: true, + closeOnEsc: true, + buttons: [ + { + text: 'Open', onClick: function () { + window.location.href = href + } + }, { + text: 'Open in new tab', onClick: function () { + window.open(href) + } + } + , {text: 'Cancel'} + ] + }); + return; + } + dialog.close(); + dialog = mdui.dialog({ + title: 'Failed to get the target path', + content: 'o(╯□╰)o It may be because this item does not exist in the disk! It may also be because the file [Shared with me] has not been added to Personal Drive!', + history: false, + modal: true, + closeOnEsc: true, + buttons: [ + {text: 'WTF ???'} + ] + }); + }) +} + +function get_file(path, file, callback) { + var key = "file_path_" + path + file['modifiedTime']; + var data = localStorage.getItem(key); + if (data != undefined) { + return callback(data); + } else { + $.get(path, function (d) { + localStorage.setItem(key, d); + callback(d); + }); + } +} + + +// File display? A = view +function file(path) { + var name = path.split('/').pop(); + var ext = name.split('.').pop().toLowerCase().replace(`?a=view`, "").toLowerCase(); + if ("|html|php|css|go|java|js|json|txt|sh|md|".indexOf(`|${ext}|`) >= 0) { + return file_code(path); + } + + if ("|mp4|webm|avi|".indexOf(`|${ext}|`) >= 0) { + return file_video(path); + } + + if ("|mpg|mpeg|mkv|rm|rmvb|mov|wmv|asf|ts|flv|".indexOf(`|${ext}|`) >= 0) { + return file_video(path); + } + + if ("|mp3|flac|wav|ogg|m4a|".indexOf(`|${ext}|`) >= 0) { + return file_audio(path); + } + + if ("|bmp|jpg|jpeg|png|gif|".indexOf(`|${ext}|`) >= 0) { + return file_image(path); + } + + if ('pdf' === ext) return file_pdf(path); +} + +// Document display |html|php|css|go|java|js|json|txt|sh|md| +function file_code(path) { + var type = { + "html": "html", + "php": "php", + "css": "css", + "go": "golang", + "java": "java", + "js": "javascript", + "json": "json", + "txt": "Text", + "sh": "sh", + "md": "Markdown", + }; + var name = path.split('/').pop(); + var ext = name.split('.').pop().toLowerCase(); + var href = window.location.origin + path; + var content = ` +
    +
    
    +
    +
    + + +
    +file_download + + + `; + $('#content').html(content); + + $.get(path, function (data) { + $('#editor').html($('
    ').text(data).html()); + var code_type = "Text"; + if (type[ext] != undefined) { + code_type = type[ext]; + } + var editor = ace.edit("editor"); + editor.setTheme("ace/theme/ambiance"); + editor.setFontSize(18); + editor.session.setMode("ace/mode/" + code_type); + + //Autocompletion + editor.setOptions({ + enableBasicAutocompletion: true, + enableSnippets: true, + enableLiveAutocompletion: true, + maxLines: Infinity + }); + }); +} +function copyToClipboard(str) { + const $temp = $(""); + $("body").append($temp); + $temp.val(str).select(); + document.execCommand("copy"); + $temp.remove(); +} +// Document display video |mp4|webm|avi| +function file_video(path) { + const url = window.location.origin + path; + let player_items = [ + { + text: 'MXPlayer(Free)', + href: `intent:${url}#Intent;package=com.mxtech.videoplayer.ad;S.title=${path};end`, + }, + { + text: 'MXPlayer(Pro)', + href: `intent:${url}#Intent;package=com.mxtech.videoplayer.pro;S.title=${path};end`, + }, + { + text: 'nPlayer', + href: `nplayer-${url}`, + }, + { + text: 'VLC', + href: `vlc://${url}`, + }, + { + text: 'PotPlayer', + href: `potplayer://${url}` + } + ] + .map(it => `
  • ${it.text}
  • `) + .join(''); + player_items += `
  • +
  • Copy Link
  • `; + const playBtn = ` + + +
      ${player_items}
    `; + + const content = ` + +
    +
    + +
    ${playBtn} + +
    + + +
    +
    + + +
    +
    +file_download + `; + $('#content').html(content); + $('#copy-link').on('click', () => { + copyToClipboard(url); + mdui.snackbar('Copied To Clipboard!'); + }); +} + +// File display Audio |mp3|flac|m4a|wav|ogg| +function file_audio(path) { + var url = window.location.origin + path; + var content = ` +
    +
    + +
    + +
    + + +
    +
    + + +
    +
    +file_download + `; + $('#content').html(content); +} + +// Document display pdf pdf +function file_pdf(path) { + const url = window.location.origin + path; + const inline_url = `${url}?inline=true` + const file_name = decodeURI(path.slice(path.lastIndexOf('/') + 1, path.length)) + var content = ` + + file_download + `; + $('#content').removeClass('mdui-container').addClass('mdui-container-fluid').css({padding: 0}).html(content); +} + +// picture display +function file_image(path) { + var url = window.location.origin + path; + // console.log(window.location.pathname) + const currentPathname = window.location.pathname + const lastIndex = currentPathname.lastIndexOf('/'); + const fatherPathname = currentPathname.slice(0, lastIndex + 1); + // console.log(fatherPathname) + let target_children = localStorage.getItem(fatherPathname); + // console.log(`fatherPathname: ${fatherPathname}`); + // console.log(target_children) + let targetText = ''; + if (target_children) { + try { + target_children = JSON.parse(target_children); + if (!Array.isArray(target_children)) { + target_children = [] + } + } catch (e) { + console.error(e); + target_children = []; + } + if (target_children.length > 0 && target_children.includes(path)) { + let len = target_children.length; + let cur = target_children.indexOf(path); + // console.log(`len = ${len}`) + // console.log(`cur = ${cur}`) + let prev_child = (cur - 1 > -1) ? target_children[cur - 1] : null; + let next_child = (cur + 1 < len) ? target_children[cur + 1] : null; + targetText = ` +
    +
    +
    + ${prev_child ? `` : ``} +
    +
    + ${next_child ? `` : ``} +
    +
    +
    + `; + } + //
    + // ${targetObj[path].prev ? `Prev` : `Prev`} + // ${targetObj[path].next ? `Next` : `Prev`} + //
    + } + var content = ` +
    +
    +
    + ${targetText} + +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +file_download + `; + //my code + $('#content').html(content); + $('#leftBtn, #rightBtn').click((e) => { + let target = $(e.target); + if (['I', 'SPAN'].includes(e.target.nodeName)) { + target = $(e.target).parent(); + } + const filepath = target.attr('data-filepath'); + const direction = target.attr('data-direction'); + //console.log (`$ {direction} turn page $ {filepath}`); + file(filepath) + }); +} + + +//Time conversion +function utc2beijing(utc_datetime) { + // Convert to normal time format year-month-day hour: minute: second + var T_pos = utc_datetime.indexOf('T'); + var Z_pos = utc_datetime.indexOf('Z'); + var year_month_day = utc_datetime.substr(0, T_pos); + var hour_minute_second = utc_datetime.substr(T_pos + 1, Z_pos - T_pos - 1); + var new_datetime = year_month_day + " " + hour_minute_second; // 2017-03-31 08:02:06 + + // Processing becomes timestamp + timestamp = new Date(Date.parse(new_datetime)); + timestamp = timestamp.getTime(); + timestamp = timestamp / 1000; + + // 8 hours more, Beijing time is eight more time zones than UTC time + var unixtimestamp = timestamp + 8 * 60 * 60; + + // Timestamp to time + var unixtimestamp = new Date(unixtimestamp * 1000); + var year = 1900 + unixtimestamp.getYear(); + var month = "0" + (unixtimestamp.getMonth() + 1); + var date = "0" + unixtimestamp.getDate(); + var hour = "0" + unixtimestamp.getHours(); + var minute = "0" + unixtimestamp.getMinutes(); + var second = "0" + unixtimestamp.getSeconds(); + return year + "-" + month.substring(month.length - 2, month.length) + "-" + date.substring(date.length - 2, date.length) + + " " + hour.substring(hour.length - 2, hour.length) + ":" + + minute.substring(minute.length - 2, minute.length) + ":" + + second.substring(second.length - 2, second.length); +} + +// bytes Adaptive conversion to KB, MB, GB +function formatFileSize(bytes) { + if (bytes >= 1000000000) { + bytes = (bytes / 1000000000).toFixed(2) + ' GB'; + } else if (bytes >= 1000000) { + bytes = (bytes / 1000000).toFixed(2) + ' MB'; + } else if (bytes >= 1000) { + bytes = (bytes / 1000).toFixed(2) + ' KB'; + } else if (bytes > 1) { + bytes = bytes + ' bytes'; + } else if (bytes == 1) { + bytes = bytes + ' byte'; + } else { + bytes = ''; + } + return bytes; +} + +String.prototype.trim = function (char) { + if (char) { + return this.replace(new RegExp('^\\' + char + '+|\\' + char + '+$', 'g'), ''); + } + return this.replace(/^\s+|\s+$/g, ''); +}; + + +// README.md HEAD.md stand by +function markdown(el, data) { + if (window.md == undefined) { + //$.getScript('https://cdn.jsdelivr.net/npm/markdown-it@10.0.0/dist/markdown-it.min.js',function(){ + window.md = window.markdownit(); + markdown(el, data); + //}); + } else { + var html = md.render(data); + $(el).show().html(html); + } +} + +// Listen for fallback events +window.onpopstate = function () { + var path = window.location.pathname; + render(path); +} + + +$(function () { + init(); + var path = window.location.pathname; + /*$("body").on("click", '.folder', function () { + var url = $(this).attr('href'); + history.pushState(null, null, url); + render(url); + return false; + }); + $("body").on("click", '.view', function () { + var url = $(this).attr('href'); + history.pushState(null, null, url); + render(url); + return false; + });*/ + + render(path); +}); diff --git a/css/classic-button.css b/css/classic-button.css new file mode 100644 index 0000000..e0d1880 --- /dev/null +++ b/css/classic-button.css @@ -0,0 +1,24 @@ + a.button7{ + display:inline-block; + padding:0.7em 1.7em; + margin:0 0.3em 0.3em 0; + border-radius:0.2em; + box-sizing: border-box; + text-decoration:none; + font-family:'Roboto',sans-serif; + font-weight:400; + color:#FFFFFF; + background-color:#3369ff; + box-shadow:inset 0 -0.6em 1em -0.35em rgba(0,0,0,0.17),inset 0 0.6em 2em -0.3em rgba(255,255,255,0.15),inset 0 0 0em 0.05em rgba(255,255,255,0.12); + text-align:center; + position:relative; + } + a.button7:active{ + box-shadow:inset 0 0.6em 2em -0.3em rgba(0,0,0,0.15),inset 0 0 0em 0.05em rgba(255,255,255,0.12); + } + @media all and (max-width:30em){ + a.button7{ + display:block; + margin:0.4em auto; + } + } diff --git a/css/mail-box-style.css b/css/mail-box-style.css new file mode 100644 index 0000000..39f59ce --- /dev/null +++ b/css/mail-box-style.css @@ -0,0 +1,52 @@ +html > body { + /* override bootstrap background */ + background: #f9f9f9; +} + +footer p { + margin-top: 50px; + text-align: center; +} + +.card-block { + padding: 1.25rem; +} + +.email-table { + margin-top: 20px; +} + +div.min-height { + min-height: 400px; +} + +header { + background-color: #D9E2E9; + padding-top: 5px; + padding-bottom: 5px; + margin-bottom: 15px; +} + +#openRandomButton { + + margin-top: 6px; +} + +.email-table > .email { + border-top: 5px solid #7C96AB; + +} + +.header-shadow { + box-shadow: 0 2px 2px rgba(182, 182, 182, 0.75); +} + +.waiting-screen { + padding: 40px 15px; + text-align: center; +} + +.random-column { + border-left: 1px dashed #333; + +} diff --git a/img/logo.png b/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..56def6d6557c72cb0084b71059509b64a71bdad9 GIT binary patch literal 15351 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 uqQ4a*@c#gah(>t; literal 0 HcmV?d00001 diff --git a/img/td-maker.png b/img/td-maker.png new file mode 100644 index 0000000000000000000000000000000000000000..155216f1452ff7e1776fb2e725de8ac75079d87c GIT binary patch literal 159076 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 + + + Google Shared Drive + + + + + + + + + + + + + + +
    +

    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    Google Logo

    ${ authConfig.domain ? ` +
    Create Shared Drive from: ${authConfig.domain}
    ` : "" } +

    + Multiple back-end API requests, the process takes a long time, please be patient! +
    + Never Submit Again, It'll ruin the System +
    + PS: One Team Drive request per day per Email-id +

    +
    +
    +
    +
    + + +
    +
    + + +
    +
    + + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    + Exit Source
    +
    +
    +
    +
    +
    +
    + + + + +
    + + +`; + +addEventListener("fetch", event => { + event.respondWith(handleRequest(event.request)); +}); + +var dailyLimit = []; + +/** + * Fetch and log a request + * @param {Request} request + */ +async function handleRequest(request) { + if (authConfig.dailyLimit) { + if (!today) today = new Date().getDate(); + + // Remove email rate limit every day + if (new Date().getDate() != today) { + today = new Date().getDate(); + dailyLimit.length = 0; + } + } + + if (gd == undefined) { + gd = new googleDrive(authConfig); + } + let url = new URL(request.url); + let path = url.pathname; + + switch (path) { + case "/teamDriveThemes": + let teamDriveThemes = await gd.getTeamDriveThemes(); + return new Response(JSON.stringify(teamDriveThemes), { + status: 200, + headers: { + "Content-Type": "application/json", + "Access-Control-Allow-Origin": "*" + } + }); + case "/drive": + if (request.method === "POST") { + const requestBody = await request.json(); + + if (authConfig.dailyLimit) { + if (dailyLimit.includes(requestBody.emailAddress)) { + return new Response("Submit only one request per day.", { + status: 429 + }); + } else { + dailyLimit.push(requestBody.emailAddress); + } + } + + if (authConfig.black_list.includes(requestBody.emailAddress)) { + return new Response("Failed", { + status: 429 + }); + } + + try { + let result = await gd.createAndShareTeamDrive(requestBody); + return new Response("OK", { + status: 200 + }); + } catch (err) { + return new Response(err.toString(), { + status: 500 + }); + } + } else if (request.method === "OPTIONS") { + return new Response("", { + status: 200, + headers: { + "Access-Control-Allow-Origin": "*" + } + }); + } else { + return new Response("Bad Request", { + status: 400 + }); + } + default: + return new Response(html, { + status: 200, + headers: { + "Content-Type": "text/html; charset=utf-8", + "Access-Control-Allow-Origin": "*" + } + }); + } +} +// https://stackoverflow.com/a/2117523 +function uuidv4() { + return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, c => { + // tslint:disable-next-line:one-variable-per-declaration + const r = (Math.random() * 16) | 0, + // tslint:disable-next-line:triple-equals + v = c == "x" ? r : (r & 0x3) | 0x8; + return v.toString(16); + }); +} + +class googleDrive { + constructor(authConfig) { + this.authConfig = authConfig; + this.accessToken(); + } + + async getTeamDriveThemes() { + let url = "https://www.googleapis.com/drive/v3/about"; + let requestOption = await this.requestOption(); + let params = { fields: "teamDriveThemes" }; + url += "?" + this.enQuery(params); + let response = await fetch(url, requestOption); + return await response.json(); + } + + async createAndShareTeamDrive(requestBody) { + // Create team drive + console.log("Creating TeamDrive"); + let url = "https://www.googleapis.com/drive/v3/drives"; + let requestOption = await this.requestOption( + { "Content-Type": "application/json" }, + "POST" + ); + let params = { requestId: uuidv4() }; + url += "?" + this.enQuery(params); + let post_data = { + name: requestBody.teamDriveName + }; + if ( + requestBody.teamDriveThemeId && + requestBody.teamDriveThemeId !== "random" + ) { + post_data.themeId = requestBody.teamDriveThemeId; + } + requestOption.body = JSON.stringify(post_data); + let response = await fetch(url, requestOption); + let result = await response.json(); + const teamDriveId = result.id; + console.log("Created TeamDrive ID", teamDriveId); + + // Get created drive user permission ID + console.log(`Getting creator permission ID`); + url = `https://www.googleapis.com/drive/v3/files/${teamDriveId}/permissions`; + params = { supportsAllDrives: true }; + params.fields = "permissions(id,emailAddress)"; + url += "?" + this.enQuery(params); + requestOption = await this.requestOption(); + response = await fetch(url, requestOption); + result = await response.json(); + const currentUserPermissionID = result.permissions[0].id; + console.log(currentUserPermissionID); + + // Share team drive with email address + console.log(`Sharing the team drive to ${requestBody.emailAddress}`); + url = `https://www.googleapis.com/drive/v3/files/${teamDriveId}/permissions`; + params = { supportsAllDrives: true }; + url += "?" + this.enQuery(params); + requestOption = await this.requestOption( + { "Content-Type": "application/json" }, + "POST" + ); + post_data = { + role: "organizer", + type: "user", + emailAddress: requestBody.emailAddress + }; + requestOption.body = JSON.stringify(post_data); + response = await fetch(url, requestOption); + await response.json(); + + // Delete creator from the team drive + console.log("Deleting creator from the team drive"); + url = `https://www.googleapis.com/drive/v3/files/${teamDriveId}/permissions/${currentUserPermissionID}`; + params = { supportsAllDrives: true }; + url += "?" + this.enQuery(params); + requestOption = await this.requestOption({}, "DELETE"); + response = await fetch(url, requestOption); + return await response.text(); + } + + async accessToken() { + console.log("accessToken"); + if ( + this.authConfig.expires == undefined || + this.authConfig.expires < Date.now() + ) { + const obj = await this.fetchAccessToken(); + if (obj.access_token != undefined) { + this.authConfig.accessToken = obj.access_token; + this.authConfig.expires = Date.now() + 3500 * 1000; + } + } + return this.authConfig.accessToken; + } + + async fetchAccessToken() { + console.log("fetchAccessToken"); + const url = "https://www.googleapis.com/oauth2/v4/token"; + const headers = { + "Content-Type": "application/x-www-form-urlencoded" + }; + const post_data = { + client_id: this.authConfig.client_id, + client_secret: this.authConfig.client_secret, + refresh_token: this.authConfig.refresh_token, + grant_type: "refresh_token" + }; + + let requestOption = { + method: "POST", + headers: headers, + body: this.enQuery(post_data) + }; + + const response = await fetch(url, requestOption); + return await response.json(); + } + + async requestOption(headers = {}, method = "GET") { + const accessToken = await this.accessToken(); + headers["authorization"] = "Bearer " + accessToken; + return { method: method, headers: headers }; + } + + enQuery(data) { + const ret = []; + for (let d in data) { + ret.push(encodeURIComponent(d) + "=" + encodeURIComponent(data[d])); + } + return ret.join("&"); + } +}