git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31351
{\r
"title": "Development",\r
- "active": false,\r
+ "active": true,\r
"startInTray": false,\r
"enableCustomMetadataId": true,\r
"filter": "avi",\r
"$type": "NEXIOSource",\r
"hideEmpty": true,\r
"local": {\r
- "address": "ws://10.10.1.27/services/nexio"\r
+ "address": "ws://localhost:8888/services/nexio"\r
},\r
"remote": {\r
"address": "ftp://10.10.1.55:2098",\r
{\r
"$type": "MediaCubeMetadata",\r
"server": {\r
- "address": "http://10.10.1.27/services/rest/jobengine",\r
+ "address": "http://localhost:8888/services/rest/jobengine",\r
"userName": "mediacube",\r
"password": "Dn8t4gfHcK98o8hyPgLDhr5SgSji4JCxsfpMJsODikUp3nXgrM0UNCi45lLAK8ZOnmEneO44P9qpJ4QDqhctN6MxZodjJgdZTyoZKmSa+ECzEzLr/wPYNgxVaXrVotEy",\r
"timeout": 1000\r
{\r
"title": "Development",\r
- "active": true,\r
+ "active": false,\r
"startInTray": false,\r
"enableCustomMetadataId": true,\r
"filter": "avi",\r
using LinkDotNet.MessageHandling.Contracts;\r
using Maestro.Properties;\r
using MaestroShared.Configuration;\r
+using MediaCubeClient;\r
+using Newtonsoft.Json.Linq;\r
using NLog;\r
using System;\r
using System.Collections.Concurrent;\r
using System.Collections.Generic;\r
+using System.Diagnostics;\r
using System.DirectoryServices.AccountManagement;\r
using System.IO;\r
using System.Linq;\r
[STAThread]\r
[SecurityPermission(SecurityAction.Demand, Flags = SecurityPermissionFlag.ControlAppDomain)]\r
static void Main() {\r
+\r
+ IMessageBus mb = new MessageBus();\r
+ mb.Subscribe<MediaCubeWSMessage>(m => {\r
+ if (m.Finished) {\r
+ if (!string.IsNullOrEmpty(m.Content))\r
+ Debug.WriteLine("Error " + m.Content);\r
+ Debug.WriteLine("Finished");\r
+ } else\r
+ Debug.WriteLine("Progress " + m.Data.As<int>("progress"));\r
+ });\r
+ MediaCubeWSApi c = new MediaCubeWSApi("ws://localhost:8888/services/wsapi", mb);\r
+ JObject data = new JObject();\r
+ data.Add("itemID", JToken.FromObject(0));\r
+ data.Add("resultID", JToken.FromObject(0));\r
+ c.SubmitJob("fake.xml", data);\r
+ Thread.Sleep(1000000);\r
+ return;\r
+\r
+\r
string appGuid = ((GuidAttribute)Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(GuidAttribute), false).GetValue(0)).Value.ToString();\r
string userName = WindowsIdentity.GetCurrent().Name;\r
string mutexId = string.Format("Global\\{0}-{1}", appGuid, userName.Replace('\\', '-'));\r
- bool createdNew;\r
var allowEveryoneRule = new MutexAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), MutexRights.FullControl, AccessControlType.Allow);\r
var securitySettings = new MutexSecurity();\r
securitySettings.AddAccessRule(allowEveryoneRule);\r
- using (var mutex = new Mutex(false, mutexId, out createdNew, securitySettings)) {\r
+ using (var mutex = new Mutex(false, mutexId, out bool createdNew, securitySettings)) {\r
var hasHandle = false;\r
bool enableInstance = TrayApplicationContext.HasCommandlineParameter(TrayApplicationContext.NOSINGLE);\r
try {\r
if (hasHandle == false)\r
MessageBox.Show("A MediaCube Maestro alkalmazás már fut egy példányban.");\r
}\r
- }\r
- catch (AbandonedMutexException) {\r
+ } catch (AbandonedMutexException) {\r
hasHandle = true;\r
}\r
- }\r
- finally {\r
+ } finally {\r
if (hasHandle || enableInstance) {\r
TrayApplicationContext context = null;\r
try {\r
- Application.ThreadException += (s,e) => {\r
+ Application.ThreadException += (s, e) => {\r
logger.Error(e);\r
MessageBox.Show(new Form() { TopMost = true }, e.Exception?.Message);\r
};\r
context = new TrayApplicationContext();\r
context.Start();\r
Application.Run(context);\r
- }\r
- catch (Exception e) {\r
+ } catch (Exception e) {\r
logger.Error(e);\r
MessageBox.Show(new Form() { TopMost = true }, e.Message);\r
- }\r
- finally {\r
+ } finally {\r
if (hasHandle)\r
mutex.ReleaseMutex();\r
if (context != null)\r
private const string HYPHEN = "-";\r
private NotifyIcon trayIcon;\r
private ConcurrentBag<MeastroFormNotifyIcon> forms = new ConcurrentBag<MeastroFormNotifyIcon>();\r
- private IMessageBus messageBus = new MessageBus();\r
+ private readonly IMessageBus messageBus = new MessageBus();\r
\r
public static string UserName { get; set; }\r
public static GlobalInfo GlobalConfig { get; internal set; }\r
throw new Exception(CONFIG_ERROR);\r
\r
GlobalConfig = LoadGlobalConfig(configFiles);\r
- \r
+\r
CheckUser();\r
CreateForms(configFiles);\r
CreateTrayIcon();\r
}\r
\r
private void CreateForms(string[] configFiles) {\r
- foreach (String file in configFiles) {\r
+ foreach (string file in configFiles) {\r
string audioRecorderFile = ConfigurationSerializer.Combine(AUDIORECORDER_JSON);\r
if (file.ToLower().Equals(audioRecorderFile.ToLower()))\r
continue;\r
password = loginForm.Password;\r
}\r
}\r
- }\r
- catch (Exception e) {\r
+ } catch (Exception e) {\r
throw new Exception("Hiba a hitelesítő adatok lekérdezésekor. A rendszer üzenete: " + e.Message);\r
}\r
\r
form.ShowFormMinimized();\r
else\r
form.ShowForm();\r
- }\r
- catch (Exception e) {\r
+ } catch (Exception e) {\r
logger.Error(e);\r
MessageBox.Show(e.Message);\r
}\r
+using LinkDotNet.MessageHandling.Contracts;\r
+using MaestroShared.Interfaces;\r
+using MaestroShared.MessageBus;\r
using Newtonsoft.Json;\r
using Newtonsoft.Json.Serialization;\r
using NLog;\r
using System.Diagnostics;\r
using System.Net;\r
using System.Runtime.Serialization;\r
-using LinkDotNet.MessageHandling.Contracts;\r
-using MaestroShared.MessageBus;\r
-using MaestroShared.Interfaces;\r
\r
namespace MediaCubeClient {\r
public class MediaCubeMessage : MaestroMessage {\r
private string user;\r
private string pwd;\r
private IMessageBus messageBus;\r
+ private object template;\r
\r
public MediaCubeApi(string address, string user, string pwd, int timeout, IMessageBus messageBus) {\r
this.user = user;\r
\r
public T Create<T>(object data) {\r
var request = new RestRequest("create", Method.POST);\r
- String body = JsonConvert.SerializeObject(data, serializerSettings);\r
+ string body = JsonConvert.SerializeObject(data, serializerSettings);\r
//Debug.WriteLine(body);\r
request.AddParameter("application/json", body, ParameterType.RequestBody);\r
var response = client.Execute(request);\r
</Reference>\r
</ItemGroup>\r
<ItemGroup>\r
+ <Compile Include="MediaCubeWSApi.cs" />\r
<Compile Include="MediaCubeApi.cs" />\r
+ <Compile Include="MediaCubeStrings.cs" />\r
<Compile Include="NexioAPI.cs" />\r
<Compile Include="Properties\AssemblyInfo.cs" />\r
</ItemGroup>\r
--- /dev/null
+namespace MediaCubeClient {\r
+ class MediaCubeStrings {\r
+ public static readonly string ACTION = "action";\r
+ public static readonly string LIST = "list";\r
+ public static readonly string STARTJOB = "startjob";\r
+ public static readonly string ERROR = "error";\r
+ public static readonly string STATUS = "status";\r
+ public static readonly string TEMPLATE = "template";\r
+ public static readonly string PARAMETERS = "parameters";\r
+ }\r
+}\r
--- /dev/null
+using LinkDotNet.MessageHandling.Contracts;\r
+using MaestroShared.MessageBus;\r
+using Newtonsoft.Json;\r
+using Newtonsoft.Json.Linq;\r
+using NLog;\r
+using System;\r
+using WebSocketSharp;\r
+\r
+namespace MediaCubeClient {\r
+ public class MediaCubeWSMessage : MaestroMessage {\r
+ public bool Finished { get; }\r
+ public JObject Data { get; }\r
+\r
+ public MediaCubeWSMessage() : base(null) {\r
+ Finished = true;\r
+ }\r
+\r
+ public MediaCubeWSMessage(string message) : base(message) {\r
+ Finished = true;\r
+ }\r
+\r
+ public MediaCubeWSMessage(JObject data) : base(null) {\r
+ Data = data;\r
+ }\r
+\r
+ }\r
+\r
+ public class MediaCubeWSApi {\r
+ private const string DATEFORMAT = "yyyy'-'MM'-'dd'T'HH':'mm':'ssK";\r
+ private static NLog.Logger logger = LogManager.GetCurrentClassLogger();\r
+ private JsonSerializerSettings serializerSettings;\r
+ private readonly string address;\r
+ private IMessageBus messageBus;\r
+\r
+ public MediaCubeWSApi(string address, IMessageBus messageBus) {\r
+ this.address = address;\r
+ this.messageBus = messageBus;\r
+ serializerSettings = new JsonSerializerSettings {\r
+ TypeNameHandling = TypeNameHandling.Objects,\r
+ SerializationBinder = new TypeNameSerializationBinder(),\r
+ DateFormatString = DATEFORMAT\r
+ };\r
+ }\r
+ /*\r
+ public T Create<T>(object data) {\r
+ var request = new RestRequest("create", Method.POST);\r
+ string body = JsonConvert.SerializeObject(data, serializerSettings);\r
+ //Debug.WriteLine(body);\r
+ request.AddParameter("application/json", body, ParameterType.RequestBody);\r
+ var response = client.Execute(request);\r
+ if (response.StatusCode != HttpStatusCode.OK && response.ErrorMessage != null) {\r
+ messageBus.Send(new MediaCubeMessage("Sikertelen kapcsolódás a MediaCube rendszerhez."));\r
+ return default(T);\r
+ }\r
+ //Debug.WriteLine(response.Content);\r
+ var result = JsonConvert.DeserializeObject<T>(response.Content);\r
+ return result;\r
+ }\r
+ */\r
+ public void SubmitJob(string template, JObject parameters) {\r
+ WebSocket ws = new WebSocket(address);\r
+ ws.SslConfiguration.ServerCertificateValidationCallback = (s, c, ch, e) => {\r
+ return true;\r
+ };\r
+ ws.OnMessage += (s, e) => {\r
+ JObject jo = JObject.Parse(e.Data);\r
+ if (true.Equals(jo.As<bool>(MediaCubeStrings.ERROR))) {\r
+ ws.Close();\r
+ messageBus.Send(new MediaCubeWSMessage("Hiba a MediaCube szolgáltatás használata során. A rendszer üzenete: " + jo.As<string>(MediaCubeStrings.ERROR)));\r
+ return;\r
+ }\r
+ if ("FINISHED".Equals(jo.As<string>(MediaCubeStrings.STATUS))) {\r
+ ws.Close();\r
+ messageBus.Send(new MediaCubeWSMessage());\r
+ return;\r
+ }\r
+ messageBus.Send(new MediaCubeWSMessage(jo));\r
+ };\r
+ ws.OnError += (s, e) => {\r
+ ws.Close();\r
+ messageBus.Send(new MediaCubeWSMessage("Hiba a MediaCube szolgáltatás használata során. A rendszer üzenete: " + e.Message));\r
+ };\r
+\r
+ try {\r
+ ws.Connect();\r
+ } catch {\r
+ ws.Close();\r
+ messageBus.Send(new MediaCubeWSMessage("Sikertelen kapcsolódás a MediaCube szolgáltatáshoz."));\r
+ }\r
+ try {\r
+ JObject data = new JObject();\r
+ data.Add(MediaCubeStrings.ACTION, JToken.FromObject(MediaCubeStrings.STARTJOB));\r
+ data.Add(MediaCubeStrings.TEMPLATE, JToken.FromObject(template));\r
+ data.Add(MediaCubeStrings.PARAMETERS, JToken.FromObject(parameters));\r
+ ws.Send(data.ToString());\r
+ } catch (Exception e) {\r
+ ws.Close();\r
+ messageBus.Send(new MediaCubeWSMessage("Sikertelen MediaCube folyamatindítás."));\r
+ }\r
+ }\r
+\r
+\r
+ }\r
+\r
+}\r
+\r
+\r
+public static class JObjectValues {\r
+\r
+ public static T As<T>(this JObject jo, string field) {\r
+ JToken jToken = jo.GetValue(field);\r
+ return jToken == null ? default(T) : jToken.Value<T>();\r
+ }\r
+}\r
+using LinkDotNet.MessageHandling.Contracts;\r
+using MediaCubeClient;\r
using Newtonsoft.Json.Linq;\r
using System;\r
using System.Diagnostics;\r
using WebSocketSharp;\r
-using LinkDotNet.MessageHandling.Contracts;\r
-using MediaCubeClient;\r
\r
namespace NexioClient {\r
public class NexioAPI {\r
private string path;\r
private IMessageBus messageBus;\r
\r
- public NexioAPI(String path, IMessageBus messageBus) {\r
+ public NexioAPI(string path, IMessageBus messageBus) {\r
this.path = path;\r
this.messageBus = messageBus;\r
}\r
Debug.WriteLine("OnClose: " + e.Reason);\r
try {\r
ws.Connect();\r
- }\r
- catch (Exception e) {\r
+ } catch (Exception e) {\r
messageBus.Send(new MediaCubeMessage("Sikertelen kapcsolódás a MediaCube NEXIO szolgáltatásához."));\r
}\r
}\r
data.Add(ACTION, JToken.FromObject(LIST));\r
try {\r
ws.Send(data.ToString());\r
- }\r
- catch (Exception e) {\r
+ } catch (Exception e) {\r
messageBus.Send(new MediaCubeMessage("Sikertelen inicializálás a MediaCube NEXIO szolgáltatásában."));\r
}\r
}\r