Refactored publishing from received message
Added AppVeyor build file
This commit is contained in:
parent
e9de38b556
commit
210c5c2772
6
GitVersion.yml
Normal file
6
GitVersion.yml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
mode: ContinuousDeployment
|
||||||
|
branches:
|
||||||
|
master:
|
||||||
|
mode: ContinuousDelivery
|
||||||
|
ignore:
|
||||||
|
sha: []
|
@ -3,6 +3,7 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
|
<Version>0.1</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
|
<Version>0.1</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net6.0</TargetFramework>
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
|
<Version>0.1</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>WinExe</OutputType>
|
<OutputType>WinExe</OutputType>
|
||||||
<TargetFramework>net6.0-windows</TargetFramework>
|
<TargetFramework>net6.0-windows</TargetFramework>
|
||||||
|
<Version>0.1</Version>
|
||||||
<UseWPF>true</UseWPF>
|
<UseWPF>true</UseWPF>
|
||||||
<Authors>Mark van Renswoude</Authors>
|
<Authors>Mark van Renswoude</Authors>
|
||||||
<Product>Petting Zoo</Product>
|
<Product>Petting Zoo</Product>
|
||||||
|
@ -134,78 +134,21 @@ namespace PettingZoo.UI.Tab.Publisher
|
|||||||
|
|
||||||
private void SetMessageTypeControl(ReceivedMessageInfo fromReceivedMessage)
|
private void SetMessageTypeControl(ReceivedMessageInfo fromReceivedMessage)
|
||||||
{
|
{
|
||||||
// TODO move to individual viewmodels?
|
if (TapetiPublisherViewModel.IsTapetiMessage(fromReceivedMessage))
|
||||||
if (IsTapetiMessage(fromReceivedMessage, out var assemblyName, out var className))
|
|
||||||
{
|
{
|
||||||
var tapetiPublisherViewModel = new TapetiPublisherViewModel(connection)
|
var tapetiPublisherViewModel = new TapetiPublisherViewModel(connection, fromReceivedMessage);
|
||||||
{
|
tapetiPublisherView = new TapetiPublisherView(tapetiPublisherViewModel);
|
||||||
Exchange = fromReceivedMessage.Exchange,
|
|
||||||
RoutingKey = fromReceivedMessage.RoutingKey,
|
|
||||||
|
|
||||||
AssemblyName = assemblyName,
|
|
||||||
ClassName = className,
|
|
||||||
CorrelationId = fromReceivedMessage.Properties.CorrelationId ?? "",
|
|
||||||
ReplyTo = fromReceivedMessage.Properties.ReplyTo ?? "",
|
|
||||||
Payload = Encoding.UTF8.GetString(fromReceivedMessage.Body)
|
|
||||||
};
|
|
||||||
|
|
||||||
tapetiPublisherView ??= new TapetiPublisherView(tapetiPublisherViewModel);
|
|
||||||
SetMessageTypeControl(MessageType.Tapeti);
|
SetMessageTypeControl(MessageType.Tapeti);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var rawPublisherViewModel = new RawPublisherViewModel(connection)
|
var rawPublisherViewModel = new RawPublisherViewModel(connection, fromReceivedMessage);
|
||||||
{
|
|
||||||
Exchange = fromReceivedMessage.Exchange,
|
|
||||||
RoutingKey = fromReceivedMessage.RoutingKey,
|
|
||||||
|
|
||||||
CorrelationId = fromReceivedMessage.Properties.CorrelationId ?? "",
|
|
||||||
ReplyTo = fromReceivedMessage.Properties.ReplyTo ?? "",
|
|
||||||
Priority = fromReceivedMessage.Properties.Priority?.ToString() ?? "",
|
|
||||||
AppId = fromReceivedMessage.Properties.AppId ?? "",
|
|
||||||
ContentEncoding = fromReceivedMessage.Properties.ContentEncoding ?? "",
|
|
||||||
ContentType = fromReceivedMessage.Properties.ContentType ?? "",
|
|
||||||
Expiration = fromReceivedMessage.Properties.Expiration ?? "",
|
|
||||||
MessageId = fromReceivedMessage.Properties.MessageId ?? "",
|
|
||||||
Timestamp = fromReceivedMessage.Properties.Timestamp?.ToString() ?? "",
|
|
||||||
TypeProperty = fromReceivedMessage.Properties.Type ?? "",
|
|
||||||
UserId = fromReceivedMessage.Properties.UserId ?? "",
|
|
||||||
|
|
||||||
Payload = Encoding.UTF8.GetString(fromReceivedMessage.Body)
|
|
||||||
};
|
|
||||||
|
|
||||||
foreach (var header in fromReceivedMessage.Properties.Headers)
|
|
||||||
rawPublisherViewModel.Headers.Add(new RawPublisherViewModel.Header
|
|
||||||
{
|
|
||||||
Key = header.Key,
|
|
||||||
Value = header.Value
|
|
||||||
});
|
|
||||||
|
|
||||||
rawPublisherView = new RawPublisherView(rawPublisherViewModel);
|
rawPublisherView = new RawPublisherView(rawPublisherViewModel);
|
||||||
|
|
||||||
SetMessageTypeControl(MessageType.Raw);
|
SetMessageTypeControl(MessageType.Raw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static bool IsTapetiMessage(ReceivedMessageInfo receivedMessage, out string assemblyName, out string className)
|
|
||||||
{
|
|
||||||
assemblyName = "";
|
|
||||||
className = "";
|
|
||||||
|
|
||||||
if (receivedMessage.Properties.ContentType != @"application/json")
|
|
||||||
return false;
|
|
||||||
|
|
||||||
if (!receivedMessage.Properties.Headers.TryGetValue(@"classType", out var classType))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
var parts = classType.Split(':');
|
|
||||||
if (parts.Length != 2)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
className = parts[0];
|
|
||||||
assemblyName = parts[1];
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -191,33 +191,60 @@ namespace PettingZoo.UI.Tab.Publisher
|
|||||||
: RawPublisherViewStrings.PropertiesExpand;
|
: RawPublisherViewStrings.PropertiesExpand;
|
||||||
|
|
||||||
|
|
||||||
protected Header lastHeader;
|
protected Header LastHeader;
|
||||||
|
|
||||||
|
|
||||||
public RawPublisherViewModel(IConnection connection)
|
public RawPublisherViewModel(IConnection connection, ReceivedMessageInfo? receivedMessage = null)
|
||||||
{
|
{
|
||||||
this.connection = connection;
|
this.connection = connection;
|
||||||
|
|
||||||
publishCommand = new DelegateCommand(PublishExecute, PublishCanExecute);
|
publishCommand = new DelegateCommand(PublishExecute, PublishCanExecute);
|
||||||
propertiesExpandCollapseCommand = new DelegateCommand(PropertiesExpandCollapseExecute);
|
propertiesExpandCollapseCommand = new DelegateCommand(PropertiesExpandCollapseExecute);
|
||||||
|
|
||||||
|
if (receivedMessage != null)
|
||||||
|
{
|
||||||
|
Exchange = receivedMessage.Exchange;
|
||||||
|
RoutingKey = receivedMessage.RoutingKey;
|
||||||
|
|
||||||
|
CorrelationId = receivedMessage.Properties.CorrelationId ?? "";
|
||||||
|
ReplyTo = receivedMessage.Properties.ReplyTo ?? "";
|
||||||
|
Priority = receivedMessage.Properties.Priority?.ToString() ?? "";
|
||||||
|
AppId = receivedMessage.Properties.AppId ?? "";
|
||||||
|
ContentEncoding = receivedMessage.Properties.ContentEncoding ?? "";
|
||||||
|
ContentType = receivedMessage.Properties.ContentType ?? "";
|
||||||
|
Expiration = receivedMessage.Properties.Expiration ?? "";
|
||||||
|
MessageId = receivedMessage.Properties.MessageId ?? "";
|
||||||
|
Timestamp = receivedMessage.Properties.Timestamp?.ToString() ?? "";
|
||||||
|
TypeProperty = receivedMessage.Properties.Type ?? "";
|
||||||
|
UserId = receivedMessage.Properties.UserId ?? "";
|
||||||
|
|
||||||
|
Payload = Encoding.UTF8.GetString(receivedMessage.Body);
|
||||||
|
|
||||||
|
foreach (var header in receivedMessage.Properties.Headers)
|
||||||
|
Headers.Add(new Header
|
||||||
|
{
|
||||||
|
Key = header.Key,
|
||||||
|
Value = header.Value
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
AddHeader();
|
AddHeader();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void LastHeaderChanged(object? sender, PropertyChangedEventArgs e)
|
private void LastHeaderChanged(object? sender, PropertyChangedEventArgs e)
|
||||||
{
|
{
|
||||||
lastHeader.PropertyChanged -= LastHeaderChanged;
|
LastHeader.PropertyChanged -= LastHeaderChanged;
|
||||||
AddHeader();
|
AddHeader();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[MemberNotNull(nameof(lastHeader))]
|
[MemberNotNull(nameof(LastHeader))]
|
||||||
private void AddHeader()
|
private void AddHeader()
|
||||||
{
|
{
|
||||||
lastHeader = new Header();
|
LastHeader = new Header();
|
||||||
lastHeader.PropertyChanged += LastHeaderChanged;
|
LastHeader.PropertyChanged += LastHeaderChanged;
|
||||||
Headers.Add(lastHeader);
|
Headers.Add(LastHeader);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -310,7 +337,7 @@ namespace PettingZoo.UI.Tab.Publisher
|
|||||||
{
|
{
|
||||||
PropertiesExpanded = true;
|
PropertiesExpanded = true;
|
||||||
|
|
||||||
var capturedLastHeader = lastHeader;
|
var capturedLastHeader = LastHeader;
|
||||||
capturedLastHeader.Key = "Example";
|
capturedLastHeader.Key = "Example";
|
||||||
capturedLastHeader.Value = "header";
|
capturedLastHeader.Value = "header";
|
||||||
}
|
}
|
||||||
|
@ -114,11 +114,52 @@ namespace PettingZoo.UI.Tab.Publisher
|
|||||||
public ICommand PublishCommand => publishCommand;
|
public ICommand PublishCommand => publishCommand;
|
||||||
|
|
||||||
|
|
||||||
public TapetiPublisherViewModel(IConnection connection)
|
|
||||||
|
public static bool IsTapetiMessage(ReceivedMessageInfo receivedMessage)
|
||||||
|
{
|
||||||
|
return IsTapetiMessage(receivedMessage, out _, out _);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static bool IsTapetiMessage(ReceivedMessageInfo receivedMessage, out string assemblyName, out string className)
|
||||||
|
{
|
||||||
|
assemblyName = "";
|
||||||
|
className = "";
|
||||||
|
|
||||||
|
if (receivedMessage.Properties.ContentType != @"application/json")
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (!receivedMessage.Properties.Headers.TryGetValue(@"classType", out var classType))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
var parts = classType.Split(':');
|
||||||
|
if (parts.Length != 2)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
className = parts[0];
|
||||||
|
assemblyName = parts[1];
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public TapetiPublisherViewModel(IConnection connection, ReceivedMessageInfo? receivedMessage = null)
|
||||||
{
|
{
|
||||||
this.connection = connection;
|
this.connection = connection;
|
||||||
|
|
||||||
publishCommand = new DelegateCommand(PublishExecute, PublishCanExecute);
|
publishCommand = new DelegateCommand(PublishExecute, PublishCanExecute);
|
||||||
|
|
||||||
|
|
||||||
|
if (receivedMessage == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Exchange = receivedMessage.Exchange;
|
||||||
|
RoutingKey = receivedMessage.RoutingKey;
|
||||||
|
|
||||||
|
AssemblyName = assemblyName;
|
||||||
|
ClassName = className;
|
||||||
|
CorrelationId = receivedMessage.Properties.CorrelationId ?? "";
|
||||||
|
ReplyTo = receivedMessage.Properties.ReplyTo ?? "";
|
||||||
|
Payload = Encoding.UTF8.GetString(receivedMessage.Body);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
38
appveyor.yml
Normal file
38
appveyor.yml
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
image: Visual Studio 2022
|
||||||
|
|
||||||
|
|
||||||
|
install:
|
||||||
|
- choco install gitversion.portable -pre -y
|
||||||
|
|
||||||
|
before_build:
|
||||||
|
- ps: gitversion /l console /output buildserver
|
||||||
|
- ps: build\UpdateVersion.ps1
|
||||||
|
|
||||||
|
after_build:
|
||||||
|
# Create PettingZoo release
|
||||||
|
- cmd: dotnet publish -c Release -r win-x64 --self-contained=true -o publish\x64\selfcontained PettingZoo\PettingZoo.csproj
|
||||||
|
- cmd: dotnet publish -c Release -r win-x64 --self-contained=false -o publish\x64 PettingZoo\PettingZoo.csproj
|
||||||
|
- cmd: copy publish\x64\selfcontained\PettingZoo.exe publish\x64
|
||||||
|
- cmd: rmdir /s /q publish\x64\selfcontained
|
||||||
|
- cmd: 7z a output\PettingZoo-x64-%GitVersion_NuGetVersion%.zip %APPVEYOR_BUILD_FOLDER%\publish\x64\*
|
||||||
|
# Push artifacts
|
||||||
|
- ps: Get-ChildItem output\*.zip | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
|
||||||
|
|
||||||
|
build:
|
||||||
|
project: PettingZoo.sln
|
||||||
|
|
||||||
|
platform:
|
||||||
|
- Any CPU
|
||||||
|
|
||||||
|
configuration:
|
||||||
|
- Release
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
- provider: GitHub
|
||||||
|
auth_token:
|
||||||
|
secure: dWOConKg3VTPvd9DmWOOKiX1SJCalaqKInuk9GlKQOZX2s+Bia49J7q+AHO8wFj7
|
||||||
|
artifact: /PettingZoo-.*\.zip/
|
||||||
|
draft: false
|
||||||
|
prerelease: false
|
||||||
|
on:
|
||||||
|
APPVEYOR_REPO_TAG: true
|
38
build/UpdateVersion.ps1
Normal file
38
build/UpdateVersion.ps1
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# For debugging purposes
|
||||||
|
if (-not (Test-Path env:APPVEYOR_BUILD_FOLDER))
|
||||||
|
{
|
||||||
|
Write-Host "Warning: APPVEYOR_BUILD_FOLDER environment variable not set"
|
||||||
|
$env:APPVEYOR_BUILD_FOLDER = "P:\PettingZoo"
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not (Test-Path env:GitVersion_MajorMinorPatch))
|
||||||
|
{
|
||||||
|
Write-Host "Warning: GitVersion_MajorMinorPatch environment variable not set"
|
||||||
|
$env:GitVersion_MajorMinorPatch = "0.0.1"
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not (Test-Path env:GitVersion_CommitsSinceVersionSource))
|
||||||
|
{
|
||||||
|
Write-Host "Warning: GitVersion_CommitsSinceVersionSource environment variable not set"
|
||||||
|
$env:GitVersion_CommitsSinceVersionSource = "42"
|
||||||
|
}
|
||||||
|
|
||||||
|
$version = "$($env:GitVersion_MajorMinorPatch).$($env:GitVersion_CommitsSinceVersionSource)"
|
||||||
|
|
||||||
|
Write-Host "Updating version to $($version) for projects in $($env:APPVEYOR_BUILD_FOLDER)"
|
||||||
|
|
||||||
|
$projectFiles = Get-ChildItem $env:APPVEYOR_BUILD_FOLDER -Recurse *.csproj | Select -ExpandProperty FullName
|
||||||
|
foreach ($projectFile in $projectFiles)
|
||||||
|
{
|
||||||
|
$contents = Get-Content -Path $projectFile
|
||||||
|
if ($contents -match "<Version>(.+?)</Version>")
|
||||||
|
{
|
||||||
|
$contents = $contents -replace "<Version>(.+?)</Version>", "<Version>$($version)</Version>"
|
||||||
|
Set-Content -Path $projectFile -Value $contents
|
||||||
|
Write-Host "Updated $($projectFile)"
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Write-Host "No version information in $($projectFile)"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user