using FluentFTP;\r
-using Maestro.Configuration;\r
+using MaestroShared.Configuration;\r
using NLog;\r
using System;\r
using System.IO;\r
namespace Maestro.Targets {\r
\r
public class FTPTargetProcessor : UNCTargetProcessor {\r
+ private const string PATTERN_CONCAT = "{0}{1}";\r
+ private const string _226 = "226";\r
+ private const string UPLOAD_ERROR = "Feltöltési hiba.";\r
private readonly Logger logger = LogManager.GetCurrentClassLogger();\r
protected FtpClient targetFTP;\r
\r
FtpTrace.LogFunctions = false;\r
if (!(parameters.SourceConfig is UNCSource)) {\r
inputFile = null;\r
- Uri inputUri = new Uri(String.Format("{0}{1}", parameters.SourceConfig.Remote.Address, parameters.InputFileName));\r
+ Uri inputUri = new Uri(String.Format(PATTERN_CONCAT, parameters.SourceConfig.Remote.Address, parameters.InputFileName));\r
Input = inputUri.ToString();\r
}\r
}\r
}\r
}\r
FtpReply reply = targetFTP.GetReply();\r
- if (!reply.Success || !"226".Equals(reply.Code)) {\r
- throw new Exception("Feltöltési hiba.");\r
+ if (!reply.Success || !_226.Equals(reply.Code)) {\r
+ throw new Exception(UPLOAD_ERROR);\r
}\r
- //if ((reply.Success && "226".Equals(reply.Code) && !FileExists(OutputName)) || \r
- // !reply.Success || \r
- // (reply.Success && !"226".Equals(reply.Code))) {\r
- // throw new Exception("Feltöltési hiba.");\r
- //}\r
}\r
\r
protected void reconnect() {\r
}\r
}\r
FtpReply reply = targetFTP.GetReply();\r
- if (!reply.Success || !"226".Equals(reply.Code)) {\r
- throw new Exception("Feltöltési hiba.");\r
+ if (!reply.Success || !_226.Equals(reply.Code)) {\r
+ throw new Exception(UPLOAD_ERROR);\r
}\r
}\r
\r
if (!String.IsNullOrEmpty(parameters.TargetConfig.SubFolderFormat)) {\r
string name = GetDynamicName(parameters.TargetConfig.SubFolderFormat);\r
//TODO ellenőrizni, hogy mi van placeholder esetén\r
- if (parameters.TargetConfig.SubFolderFormat.Contains("%TEXT%")) {\r
- string pattern = name.Split('-')[0] + "-";\r
+ if (parameters.TargetConfig.SubFolderFormat.Contains(PATTERN_TEXT)) {\r
+ string pattern = name.Split(HYPHEN[0])[0] + HYPHEN;\r
targetFTP.SetWorkingDirectory(connection.Address.LocalPath);\r
FtpListItem item = targetFTP.GetListing()?.Where(i => i.Type.Equals(FtpFileSystemObjectType.Directory) && i.Name.StartsWith(pattern)).FirstOrDefault();\r
if (item != null)\r
name = item.Name;\r
- targetFTP.SetWorkingDirectory("/");\r
+ targetFTP.SetWorkingDirectory(SLASH);\r
}\r
result = Path.Combine(connection.Address.LocalPath, name);\r
} else\r
-using Maestro.Configuration;\r
-using NLog;\r
+using NLog;\r
using System;\r
using System.IO;\r
using System.Windows.Forms;\r
using Maestro.Metadata;\r
using System.Globalization;\r
using System.Text.RegularExpressions;\r
+using MaestroShared.Configuration;\r
\r
namespace Maestro.Targets {\r
\r
private const string METADATA_FILE = "{0}.json";\r
private const string DEFAULT_EXTENSION = ".MXF";\r
private const string NORMALIZE_TEXT_PATTERN = "[^0-9A-Za-z-._]";\r
- private const string NORMALIZE_TEXT_REPLACEMENT = "_";\r
-\r
+ protected const string UNDERSCORE = "_";\r
+ protected const string HYPHEN = "-";\r
+ private const string DATE_FORMAT = "yyyy.MM.dd";\r
+ private const string PROGRAMME = "PROGRAMME";\r
+ private const string COMMERCIAL = "COMMERCIAL";\r
+ private const string JUNCTION = "JUNCTION";\r
+ private const string XML_EXT = ".xml";\r
+ private const string PATTERN_TARGETNAME = "%TARGETNAME%";\r
+ protected const string PATTERN_TEXT = "%TEXT%";\r
+ protected const string SLASH = "/";\r
+ private const string INPROGRESS = "Folyamatban";\r
+ private const string ERROR = "Hiba";\r
+ private const string DOT = ".";\r
+ private const string HYPHENSTAR = "-*";\r
+ private const string DATE_FORMAT_NODOTS = "yyyyMMdd";\r
+ private const string READY = "Kész";\r
+ private const string HYPHEN_SPACES = " - ";\r
+ private const string PATTERN_ID = "%ID%";\r
+ private const string PATTERN_IDROOT = "%IDROOT%";\r
+ private const string PATTERN_SOURCENAME = "%SOURCENAME%";\r
+ private const string PATTERN_TIMESTAMP = "%TIMESTAMP%";\r
+ private const string DATETIME_FORMAT = "yyyyMMddhhmmss";\r
protected FileInfo inputFile;\r
protected string workingDir;\r
protected TargetProcessorParameter parameters;\r
Input = Path.Combine(parameters.SourceConfig.Local.Address.LocalPath, parameters.InputFileName);\r
inputFile = new FileInfo(Input);\r
ID = parameters.ID;\r
- workFlowAction = new WorkflowAction() { houseId = ID, tag = parameters.TargetConfig.Tag, touched = DateTime.Now };\r
+ workFlowAction = new WorkflowAction() {\r
+ houseId = ID,\r
+ tag = parameters.TargetConfig.Tag,\r
+ touched = DateTime.Now,\r
+ userName = TrayApplicationContext.UserName\r
+ };\r
Label = parameters.TargetConfig.Label;\r
}\r
\r
Output = Output.Replace(@"\", "/");\r
workFlowAction.source = Input;\r
workFlowAction.destination = Output;\r
- Status = "Folyamatban";\r
+ Status = INPROGRESS;\r
//DateTime started = DateTime.Now;\r
string currentFile = GetOutputFilePath(workingDir, OutputName);\r
if (FileExists(currentFile) && parameters.TargetConfig.DisableFileVersioning)\r
ExecuteCompleted();\r
}\r
catch (Exception e) {\r
- Status = "Hiba";\r
+ Status = ERROR;\r
Message = e.Message;\r
workFlowAction.description = Message;\r
logger.Error(e);\r
if (String.IsNullOrEmpty(OutputName))\r
return null;\r
string result = OutputName;\r
- if (result.Contains("."))\r
- result = result.Substring(0, result.LastIndexOf("."));\r
+ if (result.Contains(DOT))\r
+ result = result.Substring(0, result.LastIndexOf(DOT));\r
return result;\r
}\r
\r
\r
if (parameters.TargetConfig.SendEmailOnSuccess && !String.IsNullOrEmpty(parameters.TargetConfig.SuccessEmailRecipient) && !String.IsNullOrEmpty(parameters.TargetConfig.SuccessEmailPattern))\r
SendEmail(parameters.TargetConfig.SuccessEmailRecipient, parameters.TargetConfig.SuccessEmailPattern);\r
- Status = "Kész";\r
+ Status = READY;\r
Message = SUCCESS;\r
}\r
\r
string description = parameters.ArchiveMetadata?.mediaTitle;\r
if (parameters.TargetConfig.KillDateDays > 0) {\r
DateTime date = GetKillDate();\r
- KillDate = date.ToString("yyyy.MM.dd");\r
+ KillDate = date.ToString(DATE_FORMAT);\r
xml = NexioXML.ToXML(name, date, description, parameters.TargetConfig.Agency);\r
} else\r
xml = NexioXML.ToXML(name, null, description, parameters.TargetConfig.Agency);\r
byte[] content = Encoding.Unicode.GetBytes(xml);\r
- UploadContent(name + ".xml", content);\r
+ UploadContent(name + XML_EXT, content);\r
}\r
\r
private void UploadMorpheusMetadata() {\r
string name = GetOutputName();\r
string title = parameters.ArchiveMetadata?.itemTitle;\r
if (!title.Equals(parameters.ArchiveMetadata?.mediaTitle))\r
- title += " - " + parameters.ArchiveMetadata?.mediaTitle;\r
+ title += HYPHEN_SPACES + parameters.ArchiveMetadata?.mediaTitle;\r
string type = null;\r
switch (parameters.MetadataKind) {\r
case MetadataType.TrafficMaterial:\r
- type = "PROGRAMME";\r
+ type = PROGRAMME;\r
break;\r
case MetadataType.TrafficPromo:\r
- type = "COMMERCIAL";\r
+ type = COMMERCIAL;\r
break;\r
case MetadataType.TrafficAD:\r
- type = "JUNCTION";\r
+ type = JUNCTION;\r
break;\r
}\r
byte[] content = MorpheusXML.ToXML(title, name, parameters.TargetConfig.DeviceIDMorpheus, type, parameters.MovieSegments);\r
EnsureDirectoryExistence(parameters.TargetConfig.PathMorpheusMetadata);\r
- UploadContent(name + ".xml", content);\r
+ UploadContent(name + XML_EXT, content);\r
}\r
\r
private void SendEmail(string to, string messagePattern) {\r
try {\r
- string message = messagePattern.Replace("%TARGETNAME%", OutputName);\r
+ string message = messagePattern.Replace(PATTERN_TARGETNAME, OutputName);\r
parameters.MediaCubeApi.Notify(to, message);\r
}\r
catch (Exception e) {\r
string result = null;\r
if (!String.IsNullOrEmpty(parameters.TargetConfig.SubFolderFormat)) {\r
string name = GetDynamicName(parameters.TargetConfig.SubFolderFormat);\r
- if (parameters.TargetConfig.SubFolderFormat.Contains("%TEXT%")) {\r
- string pattern = name.Split('-')[0] + "-*";\r
+ if (parameters.TargetConfig.SubFolderFormat.Contains(PATTERN_TEXT)) {\r
+ string pattern = name.Split(HYPHEN[0])[0] + HYPHENSTAR;\r
string[] dirs = Directory.GetDirectories(connection.Address.LocalPath, pattern);\r
if (dirs.Length > 0)\r
name = dirs[0];\r
string statusWorkDir = Path.Combine(workingDir, STATUS_FOLDER);\r
EnsureDirectoryExistence(statusWorkDir);\r
DateTime date = GetKillDate();\r
- string fileName = String.Format(KILLDATE_FILE, OutputName, date.ToString("yyyyMMdd"));\r
- logger.Debug("Creating KILLDATE status file {0}", fileName);\r
+ string fileName = String.Format(KILLDATE_FILE, OutputName, date.ToString(DATE_FORMAT_NODOTS));\r
+ //logger.Debug("Creating KILLDATE status file {0}", fileName);\r
KillDatePath = GetOutputFilePath(statusWorkDir, fileName);\r
UploadContent(KillDatePath, new byte[] { });\r
- KillDate = date.ToString("yyyy.MM.dd");\r
+ KillDate = date.ToString(DATE_FORMAT);\r
}\r
\r
private void CreateArchiveMetadata() {\r
string statusWorkDir = Path.Combine(workingDir, STATUS_FOLDER);\r
EnsureDirectoryExistence(statusWorkDir);\r
string fileName = String.Format(METADATA_FILE, OutputName);\r
- logger.Debug("Creating METADATA file {0}", fileName);\r
+ //logger.Debug("Creating METADATA file {0}", fileName);\r
byte[] content = Encoding.UTF8.GetBytes(parameters.ArchiveMetadata.ToString());\r
string ouputPath = GetOutputFilePath(statusWorkDir, fileName);\r
UploadContent(ouputPath, content);\r
string statusWorkDir = Path.Combine(workingDir, STATUS_FOLDER);\r
EnsureDirectoryExistence(statusWorkDir);\r
string fileName = String.Format(METADATA_FILE, OutputName);\r
- logger.Debug("Creating METADATA file {0}", fileName);\r
+ //logger.Debug("Creating METADATA file {0}", fileName);\r
byte[] content = Encoding.UTF8.GetBytes(parameters.ArchiveMetadata.ToString());\r
string ouputPath = GetOutputFilePath(statusWorkDir, fileName);\r
UploadContent(ouputPath, content);\r
}\r
\r
protected string GetDynamicName(string text) {\r
- string idRoot = ID.Contains(NORMALIZE_TEXT_REPLACEMENT) ? ID.Split(NORMALIZE_TEXT_REPLACEMENT[0])[0] : ID;\r
+ string idRoot = ID.Contains(UNDERSCORE) ? ID.Split(UNDERSCORE[0])[0] : ID;\r
string result = text\r
- .Replace("%ID%", ID)\r
- .Replace("%IDROOT%", idRoot)\r
- .Replace("%TEXT%", "-" + RemoveDiacritics(parameters.MetadataText))\r
- .Replace("%SOURCENAME%", Path.GetFileNameWithoutExtension(InputName))\r
- .Replace("%TIMESTAMP%", DateTime.Now.ToString("yyyyMMddhhmmss", CultureInfo.InvariantCulture));\r
+ .Replace(PATTERN_ID, ID)\r
+ .Replace(PATTERN_IDROOT, idRoot)\r
+ .Replace(PATTERN_TEXT, HYPHEN + RemoveDiacritics(parameters.MetadataText))\r
+ .Replace(PATTERN_SOURCENAME, Path.GetFileNameWithoutExtension(InputName))\r
+ .Replace(PATTERN_TIMESTAMP, DateTime.Now.ToString(DATETIME_FORMAT, CultureInfo.InvariantCulture));\r
// replace hungarian and special characters\r
- result = Regex.Replace(result, NORMALIZE_TEXT_PATTERN, NORMALIZE_TEXT_REPLACEMENT);\r
+ result = Regex.Replace(result, NORMALIZE_TEXT_PATTERN, UNDERSCORE);\r
if (result.Length > 100)\r
result = result.Substring(0, 100);\r
return result;\r
\r
protected virtual string CreateOutputFileName() {\r
string nameWithoutExtension = GetDynamicName(parameters.TargetConfig.OutputFormat);\r
- string extension = InputName.Contains(".") ? InputName.Substring(InputName.LastIndexOf(".")) : DEFAULT_EXTENSION;\r
+ string extension = InputName.Contains(DOT) ? InputName.Substring(InputName.LastIndexOf(DOT)) : DEFAULT_EXTENSION;\r
extension = extension.ToUpper();\r
string result = String.Format(FILENAME, nameWithoutExtension, extension);\r
if (!parameters.TargetConfig.DisableFileVersioning) {\r