Skip to content

Commit

Permalink
Merge pull request #259 from dasgarner/develop
Browse files Browse the repository at this point in the history
Prepare v3 R304
  • Loading branch information
dasgarner authored Jun 21, 2022
2 parents b57630f + daf9134 commit a0243e2
Show file tree
Hide file tree
Showing 10 changed files with 75 additions and 37 deletions.
17 changes: 16 additions & 1 deletion Action/Command.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Copyright (C) 2021 Xibo Signage Ltd
* Copyright (C) 2022 Xibo Signage Ltd
*
* Xibo - Digital Signage - http://www.xibo.org.uk
*
Expand Down Expand Up @@ -32,6 +32,21 @@ public class Command
public string CommandString;
public string Validation;

/// <summary>
/// Does this command use a helper?
/// </summary>
/// <returns></returns>
public bool IsUsesHelper()
{
return CommandString.StartsWith("rs232")
|| CommandString == "SoftRestart"
|| CommandString.StartsWith("http|");
}

/// <summary>
/// Is validation required?
/// </summary>
/// <returns></returns>
public bool IsValidationRequired()
{
return !string.IsNullOrEmpty(Validation);
Expand Down
2 changes: 1 addition & 1 deletion Adspace/Ad.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public class Ad

public bool IsWrapper;
public int CountWraps = 0;
public string AllowedWrapperType;
public List<string> AllowedWrapperTypes = new List<string>();
public string AllowedWrapperDuration;

public bool IsGeoAware = false;
Expand Down
35 changes: 17 additions & 18 deletions Adspace/ExchangeManager.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Copyright (C) 2021 Xibo Signage Ltd
* Copyright (C) 2022 Xibo Signage Ltd
*
* Xibo - Digital Signage - http://www.xibo.org.uk
*
Expand All @@ -24,23 +24,15 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Xml;
using XiboClient.Log;
using XiboClient.Logic;

namespace XiboClient.Adspace
{
class ExchangeManager
{
#if DEBUG
private readonly string AdspaceUrl = @"https://test-exchange.xibo-adspace.com/vast/device";
#else
private readonly string AdspaceUrl = @"https://exchange.xibo-adspace.com/vast/device";
#endif

// State
private bool isActive;
Expand Down Expand Up @@ -388,7 +380,10 @@ private List<Ad> Request(Url url, Ad wrappedAd)
break;

case "validType":
ad.AllowedWrapperType = extensionNode.InnerText;
if (!string.IsNullOrEmpty(extensionNode.InnerText))
{
ad.AllowedWrapperTypes = extensionNode.InnerText.Split(',').ToList();
}
break;

case "validDuration":
Expand Down Expand Up @@ -495,9 +490,8 @@ private List<Ad> Request(Url url, Ad wrappedAd)
// Did this resolve from a wrapper? if so do some extra checks.
if (ad.IsWrapper)
{
if (!string.IsNullOrEmpty(ad.AllowedWrapperType)
&& ad.AllowedWrapperType.ToLower() != "all"
&& ad.Type.ToLower() != ad.AllowedWrapperType.ToLower())
if (!ad.AllowedWrapperTypes.Contains("all", StringComparer.OrdinalIgnoreCase)
&& !ad.AllowedWrapperTypes.Contains(ad.Type.ToLower(), StringComparer.OrdinalIgnoreCase))
{
ReportError(ad.ErrorUrls, 200);
continue;
Expand Down Expand Up @@ -528,7 +522,7 @@ private List<Ad> Request(Url url, Ad wrappedAd)
if (buffet.Count <= 0)
{
// Nothing added this time.
throw new Exception("No ads returned this time");
Trace.WriteLine(new LogMessage("ExchangeManager", "Request: No ads returned this time"), LogType.Info.ToString());
}
}
catch (Exception e)
Expand All @@ -550,20 +544,25 @@ private List<Ad> Request(Url url, Ad wrappedAd)
/// <param name="errorCode"></param>
private void ReportError(List<string> urls, int errorCode)
{
foreach (string uri in urls)
foreach (string url in urls)
{
try
{
var url = new Url(uri.Replace("[ERRORCODE]", "" + errorCode));
url.WithTimeout(10).GetAsync().ContinueWith(t =>
// Macros
string uri = url
.Replace("[TIMESTAMP]", "" + DateTime.Now.ToString("o", System.Globalization.CultureInfo.InvariantCulture))
.Replace("[ERRORCODE]", "" + errorCode);

// Call the URL
new Url(uri).WithTimeout(10).GetAsync().ContinueWith(t =>
{
Trace.WriteLine(new LogMessage("ExchangeManager", "ReportError: failed to report error to " + uri + ", code: " + errorCode), LogType.Error.ToString());
},
TaskContinuationOptions.OnlyOnFaulted);
}
catch (Exception e)
{
Trace.WriteLine(new LogMessage("ExchangeManager", "ReportError: failed to report error to " + uri + ", code: " + errorCode + ". e: " + e.Message), LogType.Error.ToString());
Trace.WriteLine(new LogMessage("ExchangeManager", "ReportError: failed to report error to " + url + ", code: " + errorCode + ". e: " + e.Message), LogType.Error.ToString());
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions Logic/ApplicationSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,9 @@ private static readonly Lazy<ApplicationSettings>
/// </summary>
private List<string> ExcludedProperties;

public string ClientVersion { get; } = "3 R303.0";
public string ClientVersion { get; } = "3 R304.1";
public string Version { get; } = "6";
public int ClientCodeVersion { get; } = 303;
public int ClientCodeVersion { get; } = 304;

private ApplicationSettings()
{
Expand Down
6 changes: 6 additions & 0 deletions Logic/ScheduleManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -823,6 +823,12 @@ private List<ScheduleItem> ResolveNormalAndInterrupts(List<ScheduleItem> schedul
index++;
}

// If the interrupt schedule is a full hour, then just resolve 1 item covering the whole lot
if (interruptSecondsInHour >= 3600)
{
return interrupt;
}

// We will have some time remaining, so go through the normal layouts and produce a schedule
// to consume this remaining time
int normalSecondsInHour = 3600 - interruptSecondsInHour;
Expand Down
4 changes: 2 additions & 2 deletions Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,6 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("3.303.0.0")]
[assembly: AssemblyFileVersion("3.303.0.0")]
[assembly: AssemblyVersion("3.304.1.0")]
[assembly: AssemblyFileVersion("3.304.1.0")]
[assembly: Guid("3bd467a4-4ef9-466a-b156-a79c13a863f7")]
7 changes: 5 additions & 2 deletions Rendering/Layout.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,7 @@ public void LoadFromFile(ScheduleItem scheduleItem, XmlDocument layoutXml, DateT
}

// Parse the regions
int maxLayer = 0;
foreach (XmlNode region in listRegions)
{
// Is there any media
Expand Down Expand Up @@ -504,8 +505,10 @@ public void LoadFromFile(ScheduleItem scheduleItem, XmlDocument layoutXml, DateT
}
catch
{
temp.ZIndex = 0;
// Use the ordering of this region as the z-index
temp.ZIndex = maxLayer + 1;
}
maxLayer = Math.Max(temp.ZIndex, maxLayer);

Debug.WriteLine("loadFromFile: Created new region", "Layout");

Expand All @@ -522,7 +525,7 @@ public void LoadFromFile(ScheduleItem scheduleItem, XmlDocument layoutXml, DateT
_actions.Sort((l, r) => Action.Action.PriorityForActionSource(l.Source) < Action.Action.PriorityForActionSource(r.Source) ? -1 : 1);

// Order all Regions by their ZIndex
_regions.Sort((l, r) => l.ZIndex <= r.ZIndex ? -1 : 1);
_regions.Sort((l, r) => l.ZIndex.CompareTo(r.ZIndex));

// Add all Regions to the Scene
foreach (Region temp in _regions)
Expand Down
17 changes: 13 additions & 4 deletions Rendering/ShellCommand.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/**
* Copyright (C) 2020 Xibo Signage Ltd
* Copyright (C) 2022 Xibo Signage Ltd
*
* Xibo - Digital Signage - http://www.xibo.org.uk
*
Expand Down Expand Up @@ -77,10 +77,19 @@ public override void RenderMedia(double position)
}
else
{
// shell command
// AdHoc Shell command
// does this command use one of our helpers?
Command command = new Command
{
CommandString = _command
};

// Is this module enabled?
if (ApplicationSettings.Default.EnableShellCommands)
if (command.IsUsesHelper())
{
// Run this command as if it was a stored command.
command.Run();
}
else if (ApplicationSettings.Default.EnableShellCommands)
{
// Check to see if we have an allow list
if (!string.IsNullOrEmpty(ApplicationSettings.Default.ShellCommandAllowList))
Expand Down
8 changes: 7 additions & 1 deletion Stats/StatManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -352,8 +352,14 @@ public double WidgetStop(int scheduleId, int layoutId, string widgetId, bool sta
foreach (string url in urls)
{
// We append parameters to the URL and then send or queue
// TODO: the ACTUAL_IMP count can come from a third party source such as Admobilize.
string annotatedUrl = url + "&t=" + ((DateTimeOffset)stat.To).ToUnixTimeMilliseconds();
annotatedUrl = annotatedUrl
.Replace("[DURATION]", "" + duration)
.Replace("[ACTUAL_IMP]", "1")
.Replace("[TIMESTAMP]", "" + stat.From.ToString("o", CultureInfo.InvariantCulture));

// Geo
if (stat.GeoEnd != null)
{
annotatedUrl += "&lat=" + stat.GeoEnd.Latitude + "&lng=" + stat.GeoEnd.Longitude;
Expand All @@ -364,7 +370,7 @@ public double WidgetStop(int scheduleId, int layoutId, string widgetId, bool sta
}

// Call Impress on a new thread
Task.Factory.StartNew(() => Impress(url));
Task.Factory.StartNew(() => Impress(annotatedUrl));
}
}
}
Expand Down
12 changes: 6 additions & 6 deletions XiboClient.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@
<Version>1.8.9</Version>
</PackageReference>
<PackageReference Include="CefSharp.Wpf">
<Version>99.2.90</Version>
<Version>102.0.100</Version>
</PackageReference>
<PackageReference Include="Crc32.NET">
<Version>1.2.0</Version>
Expand All @@ -310,10 +310,10 @@
<Version>3.4.3</Version>
</PackageReference>
<PackageReference Include="Flurl">
<Version>3.0.4</Version>
<Version>3.0.6</Version>
</PackageReference>
<PackageReference Include="Flurl.Http">
<Version>3.2.2</Version>
<Version>3.2.4</Version>
</PackageReference>
<PackageReference Include="GeoJSON.Net">
<Version>1.2.19</Version>
Expand All @@ -322,13 +322,13 @@
<Version>0.3.6</Version>
</PackageReference>
<PackageReference Include="Microsoft.Data.Sqlite">
<Version>6.0.3</Version>
<Version>6.0.6</Version>
</PackageReference>
<PackageReference Include="Microsoft.SqlServer.Types">
<Version>14.0.1016.290</Version>
</PackageReference>
<PackageReference Include="Microsoft.Web.WebView2">
<Version>1.0.1108.44</Version>
<Version>1.0.1245.22</Version>
</PackageReference>
<PackageReference Include="NetMQ">
<Version>4.0.1.8</Version>
Expand All @@ -337,7 +337,7 @@
<Version>13.0.1</Version>
</PackageReference>
<PackageReference Include="NodaTime">
<Version>3.0.9</Version>
<Version>3.1.0</Version>
</PackageReference>
<PackageReference Include="Ookii.Dialogs.Wpf">
<Version>5.0.1</Version>
Expand Down

0 comments on commit a0243e2

Please sign in to comment.