make getjson use node request

This commit is contained in:
weiwei 2016-10-24 22:18:26 +08:00
parent 2cf666f7a5
commit 90069329e6

View File

@ -1,30 +1,57 @@
DICOMWeb.getJSON = function(url, options) { var http = Npm.require('http'), url = Npm.require('url');
var getOptions = {
function makeRequest(geturl, options, callback) {
var parsed = url.parse(geturl), jsonHeaders = ['application/json', 'application/dicom+json'];
var requestOpt = {
hostname: parsed.hostname,
port: parsed.port,
headers: { headers: {
Accept: 'application/json' Accept: 'application/json'
} },
path: parsed.path,
method: 'GET'
}; };
if (options.auth) { if (options.auth) {
getOptions.auth = options.auth; requestOpt.auth = options.auth;
} }
var req = http.request(requestOpt, function(resp) {
if (jsonHeaders.indexOf(resp.headers['content-type']) == -1) {
callback('We only support json', null);
return;
}
var output = '';
resp.setEncoding('utf8');
resp.on('data', function(chunk){
output += chunk;
});
resp.on('end', function(){
callback(null, {data: JSON.parse(output)});
});
});
req.end();
}
var makeRequestSync = Meteor.wrapAsync(makeRequest);
DICOMWeb.getJSON = function(geturl, options) {
if (options.logRequests) { if (options.logRequests) {
console.log(url); console.log(geturl);
} }
if (options.logTiming) { if (options.logTiming) {
console.time(url); console.time(geturl);
} }
var result = HTTP.get(url, getOptions); var result = makeRequestSync(geturl, options);
if (options.logTiming) { if (options.logTiming) {
console.timeEnd(url); console.timeEnd(geturl);
} }
if (options.logResponses) { if (options.logResponses) {
console.log(result.data); console.log(result);
} }
return result; return result;