From 90069329e6ba43061f704dc1022a46e49e55d7d2 Mon Sep 17 00:00:00 2001 From: weiwei Date: Mon, 24 Oct 2016 22:18:26 +0800 Subject: [PATCH] make getjson use node request --- Packages/dicomweb/server/getJSON.js | 47 +++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/Packages/dicomweb/server/getJSON.js b/Packages/dicomweb/server/getJSON.js index f02c38418..839ab6888 100644 --- a/Packages/dicomweb/server/getJSON.js +++ b/Packages/dicomweb/server/getJSON.js @@ -1,30 +1,57 @@ -DICOMWeb.getJSON = function(url, options) { - var getOptions = { +var http = Npm.require('http'), url = Npm.require('url'); + +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: { Accept: 'application/json' - } + }, + path: parsed.path, + method: 'GET' }; - 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) { - console.log(url); + console.log(geturl); } if (options.logTiming) { - console.time(url); + console.time(geturl); } - var result = HTTP.get(url, getOptions); + var result = makeRequestSync(geturl, options); if (options.logTiming) { - console.timeEnd(url); + console.timeEnd(geturl); } if (options.logResponses) { - console.log(result.data); + console.log(result); } return result;