From ec6fb30fc94ccc7f39a5bc2f253452479cfda4f8 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Sat, 14 Feb 2015 18:26:10 +0000 Subject: [PATCH] Fixed searching the Skyrim masterlist. The Repository API doesn't allow fetching of file contents that are > 1 MB, so use the Git Data API instead. --- js/search.js | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/js/search.js b/js/search.js index 7432717..1d190a9 100644 --- a/js/search.js +++ b/js/search.js @@ -37,6 +37,7 @@ function isRegexEntry(name) { function readMasterlist(err, data) { if (err) { console.log(err); + document.getElementById('progress').classList.add('hidden'); return; } @@ -73,9 +74,36 @@ function readMasterlist(err, data) { console.log("Search complete."); } +function fetchMasterlist(err, data) { + if (err) { + console.log(err); + document.getElementById('progress').classList.add('hidden'); + return; + } + + for (var i = 0; i < data.tree.length; ++i) { + if (data.tree[i].path == 'masterlist.yaml') { + github.repos('loot', gameSelect.selected).git.blobs(data.tree[i].sha).read(readMasterlist); + break; + } + } +} + +function fetchTree(err, data) { + if (err) { + console.log(err); + document.getElementById('progress').classList.add('hidden'); + return; + } + + github.repos('loot', gameSelect.selected).git.trees(data.object.sha).fetch(fetchMasterlist); +} + function onSearchInit(evt) { - var repo = github.repos('loot', gameSelect.selected); - repo.contents('masterlist.yaml').read({ref: repoBranch}, readMasterlist); + /* The GitHub Repository API can't be used because it only supports + files of sizes up to 1 MB. The Skyrim masterlist is larger than this, so + use the GitHub Git Data API instead. */ + github.repos('loot', gameSelect.selected).git.refs('heads/' + repoBranch).fetch(fetchTree); /* Clear any previous search results. */ var progress = document.getElementById('progress');