Wrapper functions for XMLHTTPRequest in scholar.js, stolen and adapted slightly from Simon's ingester code (those override the mime type to text/plain and only use responseText, I assume to conform to the Piggy Bank API, so unfortunately we can't use the same ones elsewhere)
Scholar.HTTP.doGet(url, onStatus, onDone) and Scholar.HTTP.doPost(url, body, onStatus, onDone) -- onStatus and onDone are callbacks to call on non-200 responses and the response body, respectively
This commit is contained in:
parent
d42258b168
commit
39f9d2c3b3
1 changed files with 81 additions and 1 deletions
|
@ -3,7 +3,8 @@ const SCHOLAR_CONFIG = {
|
||||||
DB_FILE: 'scholar.sqlite',
|
DB_FILE: 'scholar.sqlite',
|
||||||
DB_REBUILD: false, // erase DB and recreate from schema
|
DB_REBUILD: false, // erase DB and recreate from schema
|
||||||
DEBUG_LOGGING: true,
|
DEBUG_LOGGING: true,
|
||||||
DEBUG_TO_CONSOLE: true // dump debug messages to console rather than (much slower) Debug Logger
|
DEBUG_TO_CONSOLE: true, // dump debug messages to console rather than (much slower) Debug Logger
|
||||||
|
REPOSITORY_URL: 'http://chnm.gmu.edu/firefoxscholar/dev/repo'
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -304,4 +305,83 @@ Scholar.Hash.prototype.remove = function(in_key){
|
||||||
|
|
||||||
Scholar.Hash.prototype.has = function(in_key){
|
Scholar.Hash.prototype.has = function(in_key){
|
||||||
return typeof(this.items[in_key]) != 'undefined';
|
return typeof(this.items[in_key]) != 'undefined';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Scholar.HTTP = new function(){
|
||||||
|
|
||||||
|
this.doGet = doGet;
|
||||||
|
this.doPost = doPost;
|
||||||
|
|
||||||
|
function doGet(url, onStatus, onDone){
|
||||||
|
var xmlhttp = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
|
||||||
|
.createInstance();
|
||||||
|
|
||||||
|
xmlhttp.open('GET', url, true);
|
||||||
|
|
||||||
|
xmlhttp.onreadystatechange = function(){
|
||||||
|
_stateChange(xmlhttp, onStatus, onDone);
|
||||||
|
};
|
||||||
|
xmlhttp.send(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function doPost(url, body, onStatus, onDone){
|
||||||
|
var xmlhttp = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"]
|
||||||
|
.createInstance();
|
||||||
|
|
||||||
|
xmlhttp.open('POST', url, true);
|
||||||
|
|
||||||
|
xmlhttp.onreadystatechange = function(){
|
||||||
|
_stateChange(xmlhttp, onStatus, onDone);
|
||||||
|
};
|
||||||
|
xmlhttp.send(body);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function _stateChange(xmlhttp, onStatus, onDone){
|
||||||
|
switch (xmlhttp.readyState){
|
||||||
|
|
||||||
|
// Request not yet made
|
||||||
|
case 1:
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Contact established with server but nothing downloaded yet
|
||||||
|
case 2:
|
||||||
|
try {
|
||||||
|
// Check for HTTP status 200
|
||||||
|
if (xmlhttp.status != 200){
|
||||||
|
if (onStatus) {
|
||||||
|
onStatus(
|
||||||
|
xmlhttp.status,
|
||||||
|
xmlhttp.statusText,
|
||||||
|
xmlhttp
|
||||||
|
);
|
||||||
|
xmlhttp.abort();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (e){
|
||||||
|
Scholar.debug(e, 2);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Called multiple while downloading in progress
|
||||||
|
case 3:
|
||||||
|
break;
|
||||||
|
|
||||||
|
// Download complete
|
||||||
|
case 4:
|
||||||
|
try {
|
||||||
|
if (onDone){
|
||||||
|
onDone(xmlhttp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (e){
|
||||||
|
Scholar.debug(e, 2);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in a new issue