/// <summary> /// Copy constructor. /// </summary> /// <param name="source"></param> public Ticket(Ticket source) { ParameterCheck.ParameterRequired(source, "source"); if (source.Root != null) { Add(new XElement(source.Root)); } }
/// <summary> /// Given an IDictionary of mappings between old and new URLs, converts the URL /// in every Preview in the JdfTree to the appropriate new URL. /// </summary> /// <param name="ticket">The Ticket to process</param> /// <param name="urlMapping">A IDictionary keyed by existing URLs mapping to new System.Uri</param> /// <param name="mustMapCIDs">If <i>true</i> throws an exception if an existing URL starts with CID and /// no mapping has been provided for that CID.</param> /// <exception cref="JdfException">Thrown if mustMapCIDs is true and no mapping was supplied for a CID-based URL.</exception> public static void MapPreviewUrls(Ticket ticket, IDictionary<string, string> urlMapping, bool mustMapCIDs) { var previews = ticket.Root.SelectJDFDescendants(Element.Preview); foreach (var preview in previews) { var urlValue = preview.GetAttributeValueOrNull("URL"); if (urlValue != null) { string newUrl = urlMapping.FirstOrDefault(item => item.Key.Equals(urlValue, StringComparison.OrdinalIgnoreCase)).Value; if (newUrl != null) { preview.AddOrReplaceAttribute(new XAttribute("URL", (new Uri(newUrl)).AbsoluteUri)); } else { if (urlValue.StartsWith("cid:", StringComparison.OrdinalIgnoreCase) && mustMapCIDs) { throw new JdfException(string.Format(FluentJdf.Resources.Messages.MustMapCIDsIsTrueAndNoMappingSuppliedForURL, urlValue)); } } } } }
/// <summary> /// Creates a transmission part based on a Ticket. /// </summary> /// <param name="name"></param> /// <param name="ticket"></param> /// <param name="id"></param> /// <returns></returns> public ITransmissionPart CreateTransmissionPart(string name, Ticket ticket, string id = null) { var transmissionPart = ConstructConfiguredTransmissionPart(MimeTypeHelper.JdfMimeType); if (transmissionPart is ITicketTransmissionPart) { ((ITicketTransmissionPart)transmissionPart).InitalizeProperties(ticket, name, id); } else { var tempStream = new TempFileStream(); ticket.Save(tempStream); transmissionPart.Initialize(name, tempStream, MimeTypeHelper.JdfMimeType, id); } return transmissionPart; }
/// <summary> /// ctor /// </summary> /// <param name="ticket"></param> /// <param name="elements"></param> public TicketProcess(Ticket ticket, IEnumerable<XElement> elements) { ParameterCheck.ParameterRequired(ticket, "ticket"); ParameterCheck.ParameterRequired(elements, "elements"); _ticket = ticket; _elements = elements; }
/// <summary> /// Construct a part from a ticket /// </summary> /// <param name="ticket"></param> /// <param name="name"></param> /// <param name="id"></param> public TicketTransmissionPart(Ticket ticket, string name, string id = null) { ParameterCheck.ParameterRequired(ticket, "ticket"); ParameterCheck.StringRequiredAndNotWhitespace(name, "name"); InitalizeProperties(ticket, name, id); }
/// <summary> /// Initialize the properties. /// </summary> /// <param name="ticket"></param> /// <param name="name"></param> /// <param name="id"></param> public void InitalizeProperties(Ticket ticket, string name, string id) { if (string.IsNullOrWhiteSpace(id)) { id = string.Format("P_{0}", UniqueGenerator.MakeUnique()); } Name = name; MimeType = ticket.MimeType(); Id = id; Ticket = ticket; }
/// <summary> /// Create a ticket from a document. /// </summary> /// <param name="document"></param> /// <returns></returns> /// <exception cref="ArgumentException">If the document has /// a root element that is not a JDF element.</exception> public static Ticket ToTicket(this XDocument document) { ParameterCheck.ParameterRequired(document, "document"); if (document.Root != null) { document.Root.ThrowExceptionIfNotJdfElement(); } var ticket = new Ticket(); if (document.Root != null) { ticket.Add(document.Root); } return ticket; }