@@ -77,7 +77,9 @@ protected async System.Threading.Tasks.Task<ExitCodes> DownloadAndExtractAsync()
7777
7878 // reference targets
7979 var repoName = _stable ? _refTargetsStableRepo : _refTargetsDevRepo ;
80- string requestUri = $ "{ _cloudsmithPackages } /{ repoName } /?page=1&query={ _targetName } latest";
80+ // get the firmware version if it is defined
81+ var fwVersion = string . IsNullOrEmpty ( _fwVersion ) ? "latest" : _fwVersion ;
82+ string requestUri = $ "{ _cloudsmithPackages } /{ repoName } /?page=1&query={ _targetName } { fwVersion } ";
8183
8284 string downloadUrl = string . Empty ;
8385
@@ -157,7 +159,8 @@ protected async System.Threading.Tasks.Task<ExitCodes> DownloadAndExtractAsync()
157159 }
158160
159161 // try with community targets
160- requestUri = $ "{ _cloudsmithPackages } /{ _communityTargetsepo } /?page=1&query={ _targetName } latest";
162+
163+ requestUri = $ "{ _cloudsmithPackages } /{ _communityTargetsepo } /?page=1&query={ _targetName } { fwVersion } ";
161164 repoName = _communityTargetsepo ;
162165
163166 response = await _cloudsmithClient . GetAsync ( requestUri ) ;
@@ -186,10 +189,24 @@ protected async System.Threading.Tasks.Task<ExitCodes> DownloadAndExtractAsync()
186189 if ( string . IsNullOrEmpty ( _fwVersion ) )
187190 {
188191 _fwVersion = packageInfo . ElementAt ( 0 ) . Version ;
192+ // grab download URL
193+ downloadUrl = packageInfo . ElementAt ( 0 ) . DownloadUrl ;
194+ }
195+ else
196+ {
197+ //get the download Url from the Cloudsmith Package info
198+ // addition check if the cloudsmith json return empty json
199+ if ( packageInfo is null || packageInfo . Count == 0 )
200+ {
201+ return ExitCodes . E9005 ;
202+ }
203+ else
204+ {
205+ downloadUrl = packageInfo . Where ( w => w . Version == _fwVersion ) . Select ( s => s . DownloadUrl ) . FirstOrDefault ( ) ;
206+ }
189207 }
190208
191- // grab download URL
192- downloadUrl = packageInfo . ElementAt ( 0 ) . DownloadUrl ;
209+
193210
194211 // set exposed property
195212 Version = _fwVersion ;
0 commit comments