Skip to content

Commit

Permalink
Fix: Failure if PreRequisite is empty
Browse files Browse the repository at this point in the history
  • Loading branch information
rzander committed Feb 3, 2019
1 parent ef4a82f commit 91f7510
Show file tree
Hide file tree
Showing 10 changed files with 255 additions and 112 deletions.
4 changes: 2 additions & 2 deletions RZ.Bot/Properties/AssemblyInfo.cs
Expand Up @@ -10,7 +10,7 @@
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Zander Tools")]
[assembly: AssemblyProduct("RuckZuck LogConsole")]
[assembly: AssemblyCopyright("Copyright © 2018 by Roger Zander")]
[assembly: AssemblyCopyright("Copyright © 2019 by Roger Zander")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

Expand All @@ -33,4 +33,4 @@
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.6.*")]
[assembly: AssemblyFileVersion("1.0.6.9")]
[assembly: AssemblyFileVersion("1.0.6.13")]
2 changes: 1 addition & 1 deletion RZ.Bot/Properties/Settings.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

55 changes: 46 additions & 9 deletions RZ.Bot/RZRestAPI.cs
Expand Up @@ -32,7 +32,7 @@ public static string sURL
{
if (sWebSVC.StartsWith("http", StringComparison.CurrentCultureIgnoreCase))
{
RZRestAPI._sURL = sWebSVC;
RZRestAPI._sURL = sWebSVC.TrimEnd('/');
}
}

Expand Down Expand Up @@ -267,7 +267,7 @@ public static List<AddSoftware> CheckForUpdate(List<AddSoftware> lSoftware)
if (contentType == "application/json")
{
var response = oClient.PostAsync(sURL + "/rest/CheckForUpdate", oCont);
response.Wait(15000);
response.Wait(60000);
if (response.IsCompleted)
{
List<AddSoftware> lRes = ser.Deserialize<List<AddSoftware>>(response.Result.Content.ReadAsStringAsync().Result);
Expand Down Expand Up @@ -309,15 +309,20 @@ public static bool UploadSWEntry(AddSoftware lSoftware)


//vNext 5.9.2017
public static async void TrackDownloads2(long SWId, string Architecture)
public static async void TrackDownloads2(long SWId, string Architecture, string Shortname = "")
{
try
{
await oClient.GetStringAsync(sURL + "/rest/TrackDownloadsNew?SWId=" + SWId.ToString() + "&arch=" + WebUtility.UrlEncode(Architecture));
string sID = SWId.ToString();
if (SWId == 0)
sID = "";

await oClient.GetStringAsync(sURL + "/rest/TrackDownloadsNew?SWId=" + sID + "&arch=" + WebUtility.UrlEncode(Architecture) + "&shortname=" + WebUtility.UrlEncode(Shortname));
}
catch { }
}


public static List<string> GetCategories(List<GetSoftware> oSWList)
{
List<string> lResult = new List<string>();
Expand All @@ -339,7 +344,8 @@ public static byte[] GetIcon(long SWId)
using (MemoryStream ms = new MemoryStream())
{
response.Result.CopyTo(ms);
return ms.ToArray();
byte[] bRes = ms.ToArray();
return bRes;
}
}

Expand Down Expand Up @@ -394,6 +400,10 @@ public class GetSoftware

public long IconId { get; set; }

public long SWId { get; set; }

public string IconHash { get; set; }

public bool isInstalled { get; set; }

//public string XMLFile { get; set; }
Expand All @@ -404,14 +414,25 @@ public string IconURL
{
get
{
if (IconId > 0)
//Support new V2 REST API
if(!string.IsNullOrEmpty(IconHash))
{
return RZRestAPI.sURL + "/rest/GetIcon?id=" + IconId.ToString();
return RZRestAPI.sURL + "/rest/v2/GetIcon?iconhash=" + IconHash;
}
else

if (SWId > 0)
{
return ""; // "File://" + IconFile;
return RZRestAPI.sURL + "/rest/GetIcon?id=" + SWId.ToString();
}

if (IconId > 0)
{
SWId = IconId;
return RZRestAPI.sURL + "/rest/GetIcon?id=" + SWId.ToString();
}

return "";

//return "https://ruckzuck.azurewebsites.net/wcf/RZService.svc/rest/GetIcon?id=" + IconId.ToString();
}
}
Expand Down Expand Up @@ -464,6 +485,9 @@ public class AddSoftware
//public long SWId { get { return IconId; } set { IconId = value; } }
public long SWId { get; set; }

public long IconId { get; set; }

public string IconHash { get; set; }
//remove if SWId is in place 5.9.2017
//public long IconId { get; set; }

Expand All @@ -476,6 +500,19 @@ public string IconURL
string sURL = RZRestAPI.sURL + "/rest/GetIcon?id=" + SWId.ToString();
return sURL;
}

//Support new V2 REST API
if (!string.IsNullOrEmpty(IconHash))
{
return RZRestAPI.sURL + "/rest/v2/GetIcon?iconhash=" + IconHash;
}

if (IconId > 0)
{
SWId = IconId;
string sURL = RZRestAPI.sURL + "/rest/GetIcon?id=" + SWId.ToString();
return sURL;
}
return "";
}
}
Expand Down
116 changes: 89 additions & 27 deletions RZ.Bot/RZScan.cs
Expand Up @@ -163,20 +163,66 @@ public async Task<bool> GetSWRepository()
var oDB = RZRestAPI.SWResults("").Distinct().OrderBy(t => t.Shortname).ThenByDescending(t => t.ProductVersion).ThenByDescending(t => t.ProductName).ToList();
lock (SoftwareRepository)
{
SoftwareRepository = oDB.Select(item => new GetSoftware()
SoftwareRepository = oDB.Select(item => new GetSoftware()
{
Categories = item.Categories ?? new List<string>(),
Description = item.Description,
Downloads = item.Downloads,
IconId = item.IconId,
SWId = item.SWId,
Image = item.Image,
Manufacturer = item.Manufacturer,
ProductName = item.ProductName,
ProductURL = item.ProductURL,
ProductVersion = item.ProductVersion,
Shortname = item.Shortname,
IconHash = item.IconHash
}).ToList();
}
}
catch (Exception ex)
{
Debug.WriteLine(ex.Message.ToString());
}
OnSWRepoLoaded(this, new EventArgs());
return true;
});

return bResult;
}

/* public async Task<bool> GetSWRepository(string RepositoryPath)
{
//var tGetSWRepo =
bool bResult = await Task.Run(() =>
{
try
{
//var oDB = RZRestAPI.SWResults("").Distinct().OrderBy(t => t.Shortname).ThenByDescending(t => t.ProductVersion).ThenByDescending(t => t.ProductName).ToList();
DirectoryInfo dInfo = new DirectoryInfo(RepositoryPath);
foreach (FileInfo dFile in dInfo.GetFiles("*.xml", SearchOption.AllDirectories))
{
try
{
Categories = item.Categories.ToList(),
Description = item.Description,
Downloads = item.Downloads,
IconId = item.IconId,
Image = item.Image,
Manufacturer = item.Manufacturer,
ProductName = item.ProductName,
ProductURL = item.ProductURL,
ProductVersion = item.ProductVersion,
Quality = item.Quality,
Shortname = item.Shortname
}).ToList();
var oAddRemSW = RZUpdater.ParseXML(dFile.FullName);
string sFile = dFile.DirectoryName + "\\" + oAddRemSW.ContentID + ".png";
if (!File.Exists(sFile))
{
byte[] image = oAddRemSW.Image;
MemoryStream ms = new MemoryStream(image);
Image img = Image.FromStream(ms);
img.Save(dFile.DirectoryName + "\\" + oAddRemSW.ContentID + ".png", System.Drawing.Imaging.ImageFormat.Png);
}
SoftwareRepository.Add(new GetSoftware() { ProductName = oAddRemSW.ProductName, Description = oAddRemSW.Description, Categories = (oAddRemSW.Category ?? "Local Repository").Split(';').ToList(), isInstalled = false, Manufacturer = oAddRemSW.Manufacturer, ProductURL = oAddRemSW.ProductURL, ProductVersion = oAddRemSW.ProductVersion, Shortname = oAddRemSW.ProductName + " (" + oAddRemSW.Architecture + ")", Downloads = 0, IconId = 0, IconFile = sFile, XMLFile = dFile.FullName, Quality = 100 });
}
catch { }
}
}
catch (Exception ex)
Expand All @@ -191,7 +237,17 @@ public async Task<bool> GetSWRepository()
return bResult;
}
*/

/*public bool CheckForUpdates
{
get { return bCheckUpdates; }
set
{
bCheckUpdates = value;
bInitialScan = value;
}
}*/

private void RZScan_OnUpdScanCompleted(object sender, EventArgs e)
{
Expand Down Expand Up @@ -236,9 +292,13 @@ internal void _CheckUpdates(List<AddSoftware> aSWCheck)
var vSWCheck = aSWCheck.Select(t => new AddSoftware() { ProductName = t.ProductName, ProductVersion = t.ProductVersion, Manufacturer = t.Manufacturer }).ToList();

//we do not have to check for updates if it's in the Catalog
List<AddSoftware> tRes = vSWCheck.Where(t => SoftwareRepository.FirstOrDefault(r => r.ProductName == t.ProductName && r.ProductVersion == t.ProductVersion && r.Manufacturer == t.Manufacturer) == null).ToList();
//List<AddSoftware> tRes = vSWCheck.Where(t => SoftwareRepository.Count(r => r.ProductName.ToLower().Trim() == t.ProductName.ToLower().Trim() && r.ProductVersion.ToLower().Trim() == t.ProductVersion.ToLower().Trim() && r.Manufacturer.ToLower().Trim() == t.Manufacturer.ToLower().Trim()) == 0).ToList();
foreach(var oSW in SoftwareRepository)
{
vSWCheck.RemoveAll(t => t.ProductName.ToLower().Trim() == oSW.ProductName.ToLower().Trim() && t.Manufacturer.ToLower().Trim() == oSW.Manufacturer.ToLower().Trim() && t.ProductVersion.ToLower().Trim() == oSW.ProductVersion.ToLower().Trim());
}

List<AddSoftware> lCheckResult = RZRestAPI.CheckForUpdate(tRes).ToList();
List<AddSoftware> lCheckResult = RZRestAPI.CheckForUpdate(vSWCheck).ToList();

var lResult = lCheckResult.Select(item => new AddSoftware()
{
Expand All @@ -252,7 +312,9 @@ internal void _CheckUpdates(List<AddSoftware> aSWCheck)
ProductVersion = item.ProductVersion,
MSIProductID = item.MSIProductID,
Shortname = item.Shortname,
SWId = item.SWId
SWId = item.SWId,
IconId = item.IconId,
IconHash = item.IconHash
}).ToList();

//Only take updated Versions
Expand Down Expand Up @@ -600,17 +662,17 @@ internal static Bitmap GetImageFromExe(string Filename)

try
{
/*TsudaKageyu.IconExtractor iE = new TsudaKageyu.IconExtractor(Filename);
if (iE.FileName != null)
{
List<Icon> lIcons = TsudaKageyu.IconUtil.Split(iE.GetIcon(0)).ToList();
//Max Size 128px...
var ico = lIcons.Where(t => t.Height <= 128 && t.ToBitmap().PixelFormat == System.Drawing.Imaging.PixelFormat.Format32bppArgb).OrderByDescending(t => t.Height).FirstOrDefault();
if (ico != null)
return ico.ToBitmap();
else
return bResult;
}*/
//TsudaKageyu.IconExtractor iE = new TsudaKageyu.IconExtractor(Filename);
//if (iE.FileName != null)
//{
// List<Icon> lIcons = TsudaKageyu.IconUtil.Split(iE.GetIcon(0)).ToList();
// //Max Size 128px...
// var ico = lIcons.Where(t => t.Height <= 128 && t.ToBitmap().PixelFormat == System.Drawing.Imaging.PixelFormat.Format32bppArgb).OrderByDescending(t => t.Height).FirstOrDefault();
// if (ico != null)
// return ico.ToBitmap();
// else
// return bResult;
//}
}
catch { }

Expand Down

0 comments on commit 91f7510

Please sign in to comment.