@@ -5,11 +5,12 @@ const path: any = require('path');
5
5
const Debug : any = require ( 'debug' ) ;
6
6
const getos : any = require ( 'getos' ) ;
7
7
const url : any = require ( 'url' ) ;
8
+ const semver : any = require ( 'semver' ) ;
8
9
const decompress : any = require ( 'decompress' ) ;
9
10
const request : any = require ( 'request-promise' ) ;
10
11
const md5File : any = require ( 'md5-file' ) ;
11
12
12
- const DOWNLOAD_URI : string = "https://downloads .mongodb.org" ;
13
+ const DOWNLOAD_URI : string = "https://fastdl .mongodb.org" ;
13
14
const MONGODB_VERSION : string = "latest" ;
14
15
15
16
export interface IMongoDBDownloadOptions {
@@ -273,7 +274,7 @@ export class MongoDBDownload {
273
274
this . getDownloadURIMD5 ( ) . then ( ( md5URL ) => {
274
275
request ( md5URL ) . then ( ( signatureContent : string ) => {
275
276
this . debug ( `getDownloadMD5Hash content: ${ signatureContent } ` ) ;
276
- let signatureMatch : string [ ] = signatureContent . match ( / ( . * ? ) \s / ) ;
277
+ let signatureMatch : string [ ] = signatureContent . match ( / ( [ ^ \s ] * ) ( \s * | $ ) / ) ;
277
278
let signature : string = signatureMatch [ 1 ] ;
278
279
this . debug ( `getDownloadMD5Hash extracted signature: ${ signature } ` ) ;
279
280
this . cacheMD5Hash ( signature ) . then ( ( ) => {
@@ -426,10 +427,26 @@ export class MongoDBDownload {
426
427
427
428
getArchiveName ( ) : Promise < string > {
428
429
return new Promise < string > ( ( resolve , reject ) => {
429
- //var name = "mongodb-" + mongo_platform + "-" + mongo_arch;
430
- let name = "mongodb-" +
431
- this . mongoDBPlatform . getPlatform ( ) + "-" +
432
- this . mongoDBPlatform . getArch ( ) ;
430
+ let platform : string = this . mongoDBPlatform . getPlatform ( ) ;
431
+ let arch : string = this . mongoDBPlatform . getArch ( ) ;
432
+ let version : string = this . getVersion ( ) ;
433
+
434
+ switch ( platform ) {
435
+ case 'osx' :
436
+ if ( ( version === 'latest' ) || semver . satisfies ( version , '>=3.5' ) ) {
437
+ platform = `${ platform } -ssl` ;
438
+ }
439
+ break ;
440
+ case 'win32' :
441
+ // TODO: '2012plus' for 4.x and above
442
+ if ( ( version === 'latest' ) || semver . satisfies ( version , '>=3.5' ) ) {
443
+ arch = `${ arch } -2008plus-ssl` ;
444
+ }
445
+ break ;
446
+ default :
447
+ break ;
448
+ }
449
+ let name : string = `mongodb-${ platform } -${ arch } ` ;
433
450
434
451
this . mongoDBPlatform . getOSVersionString ( ) . then ( osString => {
435
452
osString && ( name += `-${ osString } ` ) ;
@@ -506,6 +523,7 @@ export class MongoDBPlatform {
506
523
} else if ( / d e b i a n / i. test ( os . dist ) ) {
507
524
resolve ( this . getDebianVersionString ( os ) ) ;
508
525
} else {
526
+ // TODO: 'legacy', 'static'
509
527
reject ( "" ) ;
510
528
}
511
529
} ) ;
@@ -551,6 +569,7 @@ export class MongoDBPlatform {
551
569
} else if ( / ^ 5 / . test ( os . release ) ) {
552
570
name += "55" ;
553
571
} else {
572
+ // TODO: 'rhel57'
554
573
this . debug ( "using legacy release" ) ;
555
574
}
556
575
return name ;
0 commit comments