Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ var axios = require('axios')
var randomAccess = require('random-access-storage')
var logger = require('./lib/logger')
var isNode = require('./lib/is-node')
var validUrl = require('./lib/valid-url')
var {validUrl, prependUrlProtocol} = require('./lib/url')

var defaultOptions = {
responseType: 'arraybuffer',
Expand All @@ -12,10 +12,15 @@ var defaultOptions = {
}

var randomAccessHttp = function (filename, options) {
var url = options && options.url
if (!options) options = {}

var url = prependUrlProtocol(options.url)

if (!url) filename = prependUrlProtocol(filename)
if (!filename || (!validUrl(filename) && !validUrl(url))) {
throw new Error('Expect first argument to be a valid URL or a relative path, with url set in options')
}

var axiosConfig = Object.assign({}, defaultOptions)
if (isNode) {
var http = require('http')
Expand Down
22 changes: 22 additions & 0 deletions lib/url.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
var url = require('url')

module.exports.validUrl = function (str) {
if (typeof str !== 'string') return false
var parsed = url.parse(str)
return ~['http:', 'https:'].indexOf(parsed.protocol)
}

module.exports.prependUrlProtocol = function (str) {
if (typeof str !== 'string') return false
var parsed = url.parse(str)

if (parsed.protocol === null) {
parsed.protocol = 'http:'
var parts = parsed.href.split('/')
parsed.slashes = true
parsed.hostname = parsed.host = parts[0]
parsed.pathname = parsed.path = parts.slice(1).join('/')
}

return url.format(parsed)
}
7 changes: 0 additions & 7 deletions lib/valid-url.js

This file was deleted.

Loading