From 3dd3e6bc3596c0bba50dca3d1789f55883e0f681 Mon Sep 17 00:00:00 2001 From: Jason Croft Date: Wed, 11 May 2016 17:05:25 -0400 Subject: [PATCH] Allow importing from GitLab snippet --- public/js/index.js | 69 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 48 insertions(+), 21 deletions(-) diff --git a/public/js/index.js b/public/js/index.js index 17516169..7b22f7fa 100644 --- a/public/js/index.js +++ b/public/js/index.js @@ -243,6 +243,15 @@ var lastInfo = { }; var personalInfo = {}; var onlineUsers = []; +var fileTypes = { + "pl": "perl", + "cgi": "perl", + "js": "javascript", + "php": "php", + "sh": "bash", + "rb": "ruby", + "html": "html" +} //editor settings var textit = document.getElementById("textit"); @@ -1192,7 +1201,22 @@ ui.toolbar.import.gist.click(function () { }); //import from snippet ui.toolbar.import.snippet.click(function () { - //na + $.get(serverurl + '/gitlab') + .success(function (data) { + $("#snippetImportModalAccessToken").val(data.accesstoken); + $("#snippetImportModalBaseURL").val(data.baseURL); + $("#snippetImportModalContent").prop('disabled', false); + $("#snippetImportModalConfirm").prop('disabled', false); + $("#snippetImportModalLoading").hide(); + $("#snippetImportModal").modal('toggle'); + }) + .error(function (data) { + showMessageModal(' Import from Snippet', 'Unable to fetch gitlab parameters :(', '', '', false); + }) + .complete(function () { + //na + }); + return false; }); //import from clipboard ui.toolbar.import.clipboard.click(function () { @@ -1370,32 +1394,35 @@ $("#snippetImportModalConfirm").click(function () { if (!snippeturl) return; $('#snippetImportModal').modal('hide'); $("#snippetImportModalContent").val(''); - if (!isValidURL(snippeturl)) { - showMessageModal(' Import from Snippet', 'Not a valid URL :(', '', '', false); - return; + if (!/^.+\/snippets\/.+$/.test(snippeturl)) { + showMessageModal(' Import from Snippet', 'Not a valid Snippet URL :(', '', '', false); } else { - // TODO: Validate against config.gitlab.baseURL ui.spinner.show(); - $.get(snippeturl) - .success(function (data) { - if (data.files) { - var contents = ""; - Object.keys(data.files).forEach(function (key) { - contents += key; - contents += '\n---\n'; - contents += data.files[key].content; - contents += '\n\n'; + var accessToken = '?access_token=' + $("#snippetImportModalAccessToken").val(); + var fullURL = $("#snippetImportModalBaseURL").val() + '/api/v3' + snippeturl; + $.get(fullURL + accessToken) + .success(function(data) { + var content = '# ' + (data.title || "Snippet Import"); + var fileInfo = data.file_name.split('.'); + $.get(fullURL + '/raw' + accessToken) + .success(function (raw) { + if (raw) { + content += "\n\n```"; + content += fileTypes[fileInfo[1]] + "=\n"; + content += raw; + content += "\n```"; + replaceAll(content); + } + }) + .error(function (data) { + showMessageModal(' Import from Snippet', 'Not a valid Snippet URL :(', '', JSON.stringify(data), false); + }) + .complete(function () { + ui.spinner.hide(); }); - replaceAll(contents); - } else { - showMessageModal(' Import from Snippet', 'Unable to fetch snippet files :(', '', '', false); - } }) .error(function (data) { showMessageModal(' Import from Snippet', 'Not a valid Snippet URL :(', '', JSON.stringify(data), false); - }) - .complete(function () { - ui.spinner.hide(); }); } });