From 7ebbdd25799b74bf7a965750bf218ec7065e5152 Mon Sep 17 00:00:00 2001 From: pardeepshokeen Date: Fri, 23 Feb 2018 21:13:53 +0530 Subject: [PATCH] helper function to parse url --- src/display/node_stream.js | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/display/node_stream.js b/src/display/node_stream.js index 3a5d25690..3332d46d9 100644 --- a/src/display/node_stream.js +++ b/src/display/node_stream.js @@ -28,14 +28,30 @@ import { const fileUriRegex = /^file:\/\/\/[a-zA-Z]:\//; +function parseUrl(sourceUrl) { + let parsedUrl = url.parse(sourceUrl); + if (parsedUrl.protocol === 'file:' || parsedUrl.host) { + return parsedUrl; + } + // Prepending 'file:///' to Windows absolute path. + if (/^[a-z]:[/\\]/i.test(sourceUrl)) { + return url.parse(`file:///${sourceUrl}`); + } + // Changes protocol to 'file:' if url refers to filesystem. + if (!parsedUrl.host) { + parsedUrl.protocol = 'file:'; + } + return parsedUrl; +} + class PDFNodeStream { constructor(source) { this.source = source; - this.url = url.parse(source.url); + this.url = parseUrl(source.url); this.isHttp = this.url.protocol === 'http:' || this.url.protocol === 'https:'; // Check if url refers to filesystem. - this.isFsUrl = this.url.protocol === 'file:' || !this.url.host; + this.isFsUrl = this.url.protocol === 'file:'; this.httpHeaders = (this.isHttp && source.httpHeaders) || {}; this._fullRequest = null;