34
34
35
35
const request = require ( 'request' ) ;
36
36
const parseXml = require ( 'xml2js' ) . parseString ;
37
- const _ = require ( 'lodash' ) ;
38
37
const Semver = require ( 'semver' ) ;
39
38
40
39
function buildDownloadUrl ( version , minorVersion ) {
@@ -43,43 +42,21 @@ function buildDownloadUrl(version, minorVersion) {
43
42
44
43
const FALLBACK_SELENIUM_VERSION = '3.9.1' ;
45
44
46
- function addPrefix ( lookup , prefixEntry ) {
47
- const prefix = `${ prefixEntry . Prefix } ` ;
48
- const prefixMatch = prefix . match ( / ^ ( \d + \. \d + ) \/ $ / ) ;
49
- if ( prefixMatch ) {
50
- const minorVersion = prefixMatch [ 1 ] ;
51
- const semver = Semver . coerce ( minorVersion ) ;
52
- lookup [ semver ] = { error : null , minorVersion : minorVersion } ;
53
- }
54
- return lookup ;
55
- }
56
-
57
- function parseSeleniumMinor ( result ) {
58
- try {
59
- const prefixes = result . ListBucketResult . CommonPrefixes . reduce (
60
- addPrefix ,
61
- { }
62
- ) ;
63
- // Once 4.x is stable, we can go back to '*' or '<5' as our base range.
64
- const latest = Semver . maxSatisfying ( Object . keys ( prefixes ) , '<4' ) ;
65
- return prefixes [ latest ] ;
66
- } catch ( parseError ) {
67
- return { error : parseError , minorVersion : null } ;
68
- }
69
- }
70
-
71
45
function parseSelenium ( result ) {
72
46
try {
73
47
const contents = result . ListBucketResult . Contents ;
74
- const standalone = _ . find ( contents , content => {
75
- return content . Key [ 0 ] . match (
76
- / s e l e n i u m - s e r v e r - s t a n d a l o n e - \d + .\d + .\d + \. j a r $ /
77
- ) ;
78
- } ) ;
79
- return {
80
- error : null ,
81
- version : standalone . Key [ 0 ] . match ( / ( \d + \. \d + \. \d + ) / ) [ 0 ] ,
82
- } ;
48
+ const standalone = contents
49
+ . filter ( content => {
50
+ return content . Key [ 0 ] . match (
51
+ / s e l e n i u m - s e r v e r - s t a n d a l o n e - \d + .\d + .\d + \. j a r $ /
52
+ ) ;
53
+ } )
54
+ . map ( s => s . Key [ 0 ] . match ( / ( \d + \. \d + \. \d + ) / ) [ 0 ] ) ;
55
+
56
+ // Once 4.x is stable, we can go back to '*' or '<5' as our base range.
57
+ const latest = Semver . maxSatisfying ( standalone , '<4' ) ;
58
+
59
+ return { error : null , version : latest } ;
83
60
} catch ( parseError ) {
84
61
return { error : parseError , version : null } ;
85
62
}
@@ -109,8 +86,7 @@ function getMinor(version) {
109
86
}
110
87
111
88
function getLatestVersion ( callback ) {
112
- const url =
113
- 'https://selenium-release.storage.googleapis.com/?delimiter=/&prefix=' ;
89
+ const url = 'https://selenium-release.storage.googleapis.com/' ;
114
90
115
91
function onFullVersionData ( error , result ) {
116
92
if ( error != null ) {
@@ -120,19 +96,7 @@ function getLatestVersion(callback) {
120
96
return callback ( parsed . error , parsed . version ) ;
121
97
}
122
98
123
- function onMinorVersionData ( error , result ) {
124
- if ( error != null ) {
125
- return callback ( error ) ;
126
- }
127
- const parsedMinor = parseSeleniumMinor ( result ) ;
128
- if ( parsedMinor . error ) {
129
- return callback ( parsedMinor . error ) ;
130
- }
131
- const prefixedUrl = `https://selenium-release.storage.googleapis.com/?delimiter=/&prefix=${ parsedMinor . minorVersion } /` ;
132
- return requestXml ( prefixedUrl , onFullVersionData ) ;
133
- }
134
-
135
- return requestXml ( url , onMinorVersionData ) ;
99
+ return requestXml ( url , onFullVersionData ) ;
136
100
}
137
101
138
102
function getLatestDownloadInfo ( callback ) {
0 commit comments