1
1
const fs = require ( 'fs' )
2
2
const path = require ( 'path' )
3
- const request = require ( 'request' )
3
+ const http = require ( 'http' )
4
+ const https = require ( 'https' )
4
5
const low = require ( 'lowdb' )
5
6
const FileAsync = require ( 'lowdb/adapters/FileAsync' )
6
7
const Memory = require ( 'lowdb/adapters/Memory' )
@@ -25,16 +26,25 @@ module.exports = function(source) {
25
26
26
27
resolve ( low ( new FileAsync ( source ) ) )
27
28
} else if ( is . URL ( source ) ) {
28
- // Load remote data
29
- const opts = {
30
- url : source ,
31
- json : true
32
- }
29
+ // Normalize the source into a URL object.
30
+ const sourceUrl = new URL ( source )
31
+ // Pick the client based on the protocol scheme
32
+ const client = sourceUrl . protocol === 'https:' ? https : http
33
+
34
+ client
35
+ . get ( sourceUrl , res => {
36
+ let dbData = ''
37
+ res . on ( 'data' , data => {
38
+ dbData += data
39
+ } )
33
40
34
- request ( opts , ( err , response ) => {
35
- if ( err ) return reject ( err )
36
- resolve ( low ( new Memory ( ) ) . setState ( response . body ) )
37
- } )
41
+ res . on ( 'end' , ( ) => {
42
+ resolve ( low ( new Memory ( ) ) . setState ( JSON . parse ( dbData ) ) )
43
+ } )
44
+ } )
45
+ . on ( 'error' , error => {
46
+ return reject ( error )
47
+ } )
38
48
} else if ( is . JS ( source ) ) {
39
49
// Clear cache
40
50
const filename = path . resolve ( source )
0 commit comments