diff --git a/bigbluebutton-html5/imports/api/slides/server/modifiers/addSlideToCollection.js b/bigbluebutton-html5/imports/api/slides/server/modifiers/addSlideToCollection.js index db44861a2e..427030d7a9 100755 --- a/bigbluebutton-html5/imports/api/slides/server/modifiers/addSlideToCollection.js +++ b/bigbluebutton-html5/imports/api/slides/server/modifiers/addSlideToCollection.js @@ -4,41 +4,48 @@ import Slides from '/imports/api/slides'; export function addSlideToCollection(meetingId, presentationId, slideObject) { const url = Npm.require('url'); const http = Npm.require('http'); - + const imageUri = slideObject.svg_uri != null ? slideObject.svg_uri : slideObject.png_uri; if (Slides.findOne({ meetingId: meetingId, 'slide.id': slideObject.id, }) == null) { - const options = url.parse(slideObject.svg_uri); + const options = url.parse(imageUri); http.get(options, Meteor.bindEnvironment(function (response) { - let chunks = []; - response.on('data', Meteor.bindEnvironment(function (chunk) { - chunks.push(chunk); - })).on('end', Meteor.bindEnvironment(function () { - let buffer = Buffer.concat(chunks); - const dimensions = sizeOf(buffer); - const entry = { - meetingId: meetingId, - presentationId: presentationId, - slide: { - height_ratio: slideObject.height_ratio, - y_offset: slideObject.y_offset, - num: slideObject.num, - x_offset: slideObject.x_offset, - current: slideObject.current, - img_uri: slideObject.svg_uri != null ? slideObject.svg_uri : slideObject.png_uri, - txt_uri: slideObject.txt_uri, - id: slideObject.id, - width_ratio: slideObject.width_ratio, - swf_uri: slideObject.swf_uri, - thumb_uri: slideObject.thumb_uri, - width: dimensions.width, - height: dimensions.height, - }, - }; - Slides.insert(entry); + let contentType = response.headers['content-type']; + if (!contentType.match(/svg/gi) && !contentType.match(/png/gi)) { + console.log(`Slide file is not accessible or not ready yet`); + console.log(`response content-type`, response.headers['content-type']); + return; + } + + let chunks = []; + response.on('data', Meteor.bindEnvironment(function (chunk) { + chunks.push(chunk); + })).on('end', Meteor.bindEnvironment(function () { + let buffer = Buffer.concat(chunks); + const dimensions = sizeOf(buffer); + const entry = { + meetingId: meetingId, + presentationId: presentationId, + slide: { + height_ratio: slideObject.height_ratio, + y_offset: slideObject.y_offset, + num: slideObject.num, + x_offset: slideObject.x_offset, + current: slideObject.current, + img_uri: slideObject.svg_uri != null ? slideObject.svg_uri : slideObject.png_uri, + txt_uri: slideObject.txt_uri, + id: slideObject.id, + width_ratio: slideObject.width_ratio, + swf_uri: slideObject.swf_uri, + thumb_uri: slideObject.thumb_uri, + width: dimensions.width, + height: dimensions.height, + }, + }; + Slides.insert(entry); + })); })); - })); //logger.info "added slide id =[#{id}]:#{slideObject.id} in #{meetingId}. Now there // are #{Slides.find({meetingId: meetingId}).count()} slides in the meeting"