Пример #1
0
        public CodeOutput GeneratePoco(Table table)
        {
            var filename = table.NameHumanCaseWithSuffix() + Settings.FileExtension;

            if (!CanWritePoco())
            {
                FileManagementService.DeleteFile(filename);
                return(null);
            }

            var isEfCore3Plus = Settings.IsEfCore3Plus();

            var data = new PocoModel
            {
                UseHasNoKey             = isEfCore3Plus && table.IsView && !table.HasPrimaryKey,
                HasNoPrimaryKey         = !table.HasPrimaryKey,
                Name                    = table.DbName,
                NameHumanCaseWithSuffix = table.NameHumanCaseWithSuffix(),
                ClassModifier           = Settings.EntityClassesModifiers,
                ClassComment            = table.WriteComments(),
                ExtendedComments        = table.WriteExtendedComments(),
                ClassAttributes         = table.WriteClassAttributes(),
                BaseClasses             = table.BaseClasses,
                InsideClassBody         = table.WriteInsideClassBody(),
                Columns                 = table.Columns
                                          .Where(x => !x.Hidden && !x.ExistsInBaseClass)
                                          .OrderBy(x => x.Ordinal)
                                          .Select((col, index) => new PocoColumnModel
                {
                    AddNewLineBefore   = index > 0 && (((Settings.IncludeExtendedPropertyComments == CommentsStyle.InSummaryBlock || Settings.IncludeComments == CommentsStyle.InSummaryBlock) && !string.IsNullOrEmpty(col.SummaryComments)) || (col.Attributes != null && col.Attributes.Any())),
                    HasSummaryComments = (Settings.IncludeExtendedPropertyComments == CommentsStyle.InSummaryBlock || Settings.IncludeComments == CommentsStyle.InSummaryBlock) && !string.IsNullOrEmpty(col.SummaryComments),
                    SummaryComments    = !string.IsNullOrEmpty(col.SummaryComments) ? SecurityElement.Escape(col.SummaryComments) : null,
                    Attributes         = col.Attributes,
                    OverrideModifier   = col.OverrideModifier,
                    WrapIfNullable     = col.WrapIfNullable(),
                    NameHumanCase      = col.NameHumanCase,
                    PrivateSetterForComputedColumns = Settings.UsePrivateSetterForComputedColumns && col.IsComputed ? "private " : string.Empty,
                    PropertyInitialisers            = Settings.UsePropertyInitialisers ? (string.IsNullOrWhiteSpace(col.Default) ? string.Empty : string.Format(" = {0};", col.Default)) : string.Empty,
                    InlineComments = col.InlineComments
                })
                                          .ToList(),
                HasReverseNavigation      = table.ReverseNavigationProperty.Count > 0,
                ReverseNavigationProperty = table.ReverseNavigationProperty
                                            .OrderBy(x => x.Definition)
                                            .Select(x => new PocoReverseNavigationPropertyModel
                {
                    ReverseNavHasComment = Settings.IncludeComments != CommentsStyle.None && !string.IsNullOrEmpty(x.Comments),
                    ReverseNavComment    = Settings.IncludeComments != CommentsStyle.None ? x.Comments : string.Empty,
                    AdditionalReverseNavigationsDataAnnotations = Settings.AdditionalReverseNavigationsDataAnnotations,
                    AdditionalDataAnnotations = x.AdditionalDataAnnotations,
                    Definition = x.Definition
                })
                                            .ToList(),
                HasForeignKey          = table.HasForeignKey,
                ForeignKeyTitleComment = Settings.IncludeComments != CommentsStyle.None && table.Columns.SelectMany(x => x.EntityFk).Any() ? "    // Foreign keys" + Environment.NewLine : string.Empty,
                ForeignKeys            = table.Columns
                                         .SelectMany(x => x.EntityFk)
                                         .OrderBy(o => o.Definition)
                                         .Select(x => new PocoForeignKeyModel
                {
                    HasFkComment = Settings.IncludeComments != CommentsStyle.None && !string.IsNullOrEmpty(x.Comments),
                    FkComment    = x.Comments,
                    AdditionalForeignKeysDataAnnotations = Settings.AdditionalForeignKeysDataAnnotations,
                    AdditionalDataAnnotations            = x.AdditionalDataAnnotations,
                    Definition = x.Definition
                })
                                         .ToList(),
                CreateConstructor = !Settings.UsePropertyInitialisers &&
                                    (
                    table.Columns.Any(c => c.Default != string.Empty && !c.Hidden) ||
                    table.ReverseNavigationCtor.Any() ||
                    Settings.EntityClassesArePartial()
                                    ),
                ColumnsWithDefaults = table.Columns
                                      .Where(c => c.Default != string.Empty && !c.Hidden && Settings.IncludeColumnsWithDefaults)
                                      .OrderBy(x => x.Ordinal)
                                      .Select(x => new PocoColumnsWithDefaultsModel {
                    NameHumanCase = x.NameHumanCase, Default = x.Default
                })
                                      .ToList(),
                ReverseNavigationCtor   = table.ReverseNavigationCtor,
                EntityClassesArePartial = Settings.EntityClassesArePartial()
            };

            var co = new CodeOutput(table.DbName, filename, null, _globalUsings);

            co.AddUsings(_template.PocoUsings(data));
            co.AddCode(Template.Transform(_template.Poco(), data));
            return(co);
        }
Пример #2
0
        public static void WriteObject(object value, string name, TextWriter output, bool addSchemaDeclaration = true, IDictionary <string, string> attributes = null, Type objectType = null)
        {
            if (value != null)
            {
                objectType = objectType ?? value.GetType();
                var typeCode = Type.GetTypeCode(objectType);
                if (typeCode != TypeCode.DBNull)
                {
                    string xmlValue = null;
                    switch (typeCode)
                    {
                    case TypeCode.Boolean:
                        xmlValue = XmlConvert.ToString((bool)value);
                        break;

                    case TypeCode.String:
                        xmlValue = SecurityElement.Escape((string)value);
                        break;

                    case TypeCode.DateTime:
                        xmlValue = XmlConvert.ToString((DateTime)value, XmlDateTimeSerializationMode.Utc);
                        break;

                    case TypeCode.Byte:
                    case TypeCode.UInt16:
                    case TypeCode.UInt32:
                    case TypeCode.UInt64:
                    case TypeCode.SByte:
                    case TypeCode.Int16:
                    case TypeCode.Int32:
                    case TypeCode.Int64:
                    case TypeCode.Char:
                    case TypeCode.Single:
                    case TypeCode.Double:
                    case TypeCode.Decimal:
                        xmlValue = Convert.ToString(value);
                        break;

                    default:
                        if (objectType == typeof(byte[]))
                        {
                            xmlValue = Convert.ToBase64String((byte[])value);
                        }
                        else if (objectType == typeof(DateTimeOffset))
                        {
                            xmlValue = XmlConvert.ToString((DateTimeOffset)value);
                        }
                        else if (objectType == typeof(TimeSpan))
                        {
                            xmlValue = XmlConvert.ToString((TimeSpan)value);
                        }
                        else if (objectType == typeof(Guid))
                        {
                            xmlValue = ((Guid)value).ToString("D");
                        }
                        else
                        {
                            var list = value as IList;
                            if (list != null)
                            {
                                WriteStartElement(name, output, false, null);
                                var items = list.Cast <object>().ToArray();
                                if (items.Length > 0 && (items[0] is IDataEntity || !Reflector.IsSimpleType(items[0].GetType())))
                                {
                                    var args = list.GetType().GetGenericArguments();
                                    var isPolymorphicList = args.Length == 1 && args[0].IsAbstract && !args[0].IsInterface;
                                    for (var i = 0; i < items.Length; i++)
                                    {
                                        var elementType = items[i].GetType();

                                        var serializer = CreateDelegate(elementType, isPolymorphicList);
                                        serializer(items[i], output, false);
                                    }
                                }
                                else
                                {
                                    WriteList(list, true, output);
                                }
                                WriteEndElement(name, output);
                            }
                            else
                            {
                                var serializer = CreateDelegate(objectType);
                                serializer(value, output, addSchemaDeclaration);
                            }
                        }
                        break;
                    }

                    if (xmlValue != null)
                    {
                        WriteElement(name, xmlValue, output, false, null);
                    }
                }
            }
        }
Пример #3
0
        private static XmlObjectSerializer GenerateDelegate(string key, Type objectType, bool isPolymorphic)
        {
            var method = new DynamicMethod("XmlSerialize_" + key, null, new[] { typeof(object), typeof(TextWriter), typeof(bool) }, typeof(XmlSerializationWriter).Module);
            var il     = method.GetILGenerator();

            var writeObject       = typeof(XmlSerializationWriter).GetMethod("WriteObject");
            var writeStart        = typeof(XmlSerializationWriter).GetMethod("WriteStartElement");
            var writeEnd          = typeof(XmlSerializationWriter).GetMethod("WriteEndElement");
            var getXmlValue       = typeof(XmlSerializationWriter).GetMethod("GetXmlValue");
            var getTypeFromHandle = typeof(Type).GetMethod("GetTypeFromHandle");

            var interfaceType = objectType;

            if (Reflector.IsEmitted(objectType))
            {
                interfaceType = Reflector.GetInterface(objectType) ?? objectType;
            }

            var properties = Reflector.GetPropertyMap(interfaceType).Where(p => p.Key.CanRead && p.Key.CanWrite && p.Key.Name != "Indexer" && !p.Key.GetCustomAttributes(typeof(DoNotSerializeAttribute), false).Any())
                             .Partition(p => (p.Value.IsSimpleType || (p.Value.IsSimpleList && p.Value.ElementType == typeof(byte))) && p.Key.GetCustomAttributes(typeof(XmlAttributeAttribute), false).Any());

            var elementName = Xml.GetElementNameFromType(interfaceType);

            if (properties.Item1.Any() || isPolymorphic)
            {
                var attributeSetType = typeof(Dictionary <string, string>);
                var addItem          = attributeSetType.GetMethod("Add");
                il.DeclareLocal(attributeSetType);
                il.Emit(OpCodes.Newobj, attributeSetType.GetConstructor(Type.EmptyTypes));
                il.Emit(OpCodes.Stloc_0);

                if (isPolymorphic)
                {
                    il.Emit(OpCodes.Ldloc_0);
                    il.Emit(OpCodes.Ldstr, "_.type");
                    il.Emit(OpCodes.Ldstr, SecurityElement.Escape(string.Format("{0},{1}", objectType.FullName, objectType.Assembly.GetName().Name)));
                    il.EmitCall(OpCodes.Callvirt, addItem, null);
                }

                foreach (var property in properties.Item1)
                {
                    il.Emit(OpCodes.Ldloc_0);
                    il.Emit(OpCodes.Ldstr, property.Value.PropertyName);
                    il.Emit(OpCodes.Ldarg_0);
                    il.EmitCastToReference(interfaceType);
                    il.EmitCall(OpCodes.Callvirt, property.Key.GetGetMethod(), null);
                    il.BoxIfNeeded(property.Value.PropertyType);
                    il.Emit(OpCodes.Ldtoken, property.Value.PropertyType);
                    il.Emit(OpCodes.Call, getTypeFromHandle);
                    il.Emit(OpCodes.Call, getXmlValue);
                    il.EmitCall(OpCodes.Callvirt, addItem, null);
                }
            }

            il.Emit(OpCodes.Ldstr, elementName);
            il.Emit(OpCodes.Ldarg_1);
            il.Emit(OpCodes.Ldarg_2);
            il.Emit(properties.Item1.Any() || isPolymorphic ? OpCodes.Ldloc_0 : OpCodes.Ldnull);
            il.Emit(OpCodes.Call, writeStart);

            foreach (var property in properties.Item2)
            {
                // Write property value
                il.Emit(OpCodes.Ldarg_0);
                il.EmitCastToReference(interfaceType);
                il.EmitCall(OpCodes.Callvirt, property.Key.GetGetMethod(), null);
                il.BoxIfNeeded(property.Key.PropertyType);
                il.Emit(OpCodes.Ldstr, Xml.GetElementName(property.Key, property.Value.IsSimpleList));
                il.Emit(OpCodes.Ldarg_1);
                il.Emit(OpCodes.Ldc_I4_0);
                il.Emit(properties.Item1.Any() || isPolymorphic ? OpCodes.Ldloc_0 : OpCodes.Ldnull);
                il.Emit(OpCodes.Ldtoken, property.Value.PropertyType);
                il.Emit(OpCodes.Call, getTypeFromHandle);
                il.Emit(OpCodes.Call, writeObject);
            }

            il.Emit(OpCodes.Ldstr, elementName);
            il.Emit(OpCodes.Ldarg_1);
            il.Emit(OpCodes.Call, writeEnd);

            il.Emit(OpCodes.Ret);

            var serializer = (XmlObjectSerializer)method.CreateDelegate(typeof(XmlObjectSerializer));

            return(serializer);
        }
 public static string EscapeString(this string value)
 {
     return(SecurityElement.Escape(value));
 }
Пример #5
0
 /// <summary>
 /// Encodes problematic XML characters
 /// </summary>
 internal static string Escape(this string value)
 {
     return(SecurityElement.Escape(value));
 }
Пример #6
0
        public ActionResult Export(int?school, int?yearList, RegistrationStatus?status, int?classyear)
        {
            var results     = repository.GetRegistration(school, status, yearList, classyear);
            var currentYear = DateTime.Now.Year;
            var ms          = new MemoryStream();

            using (var fs =
                       new FileStream(
                           AppDomain.CurrentDomain.BaseDirectory + "/Content/templates/EnrolmentTemplate.xls",
                           FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                var templateWorkbook = new HSSFWorkbook(fs, true);
                var rowcount         = 2; // skips header

                foreach (var entry in results.OrderBy(x => x.user.name))
                {
                    var sheet = templateWorkbook.GetSheetAt(0);

                    var row = sheet.CreateRow(rowcount);
                    var col = 0;
                    row.CreateCell(col++).SetCellValue(rowcount - 1);
                    if (entry.enrollingYear.HasValue)
                    {
                        row.CreateCell(col++).SetCellValue(entry.enrollingYear.Value);
                    }
                    else
                    {
                        col++;
                    }

                    if (entry.user.dob.HasValue)
                    {
                        row.CreateCell(col++).SetCellValue(entry.user.dob.Value.ToShortDateString());
                    }
                    else
                    {
                        col++;
                    }
                    row.CreateCell(col++).SetCellValue(entry.user.gender.Substring(0, 1));
                    row.CreateCell(col++).SetCellValue(SecurityElement.Escape(entry.user.ToName()));
                    row.CreateCell(col++).SetCellValue(entry.status);
                    row.CreateCell(col++).SetCellValue(entry.school.name);
                    row.CreateCell(col++).SetCellValue(entry.school_year.name);
                    row.CreateCell(col++).SetCellValue(SecurityElement.Escape(entry.previous_school));
                    row.CreateCell(col++).SetCellValue(SecurityElement.Escape(entry.previous_class));
                    row.CreateCell(col++).SetCellValue(SecurityElement.Escape(entry.leaving_reason));

                    // disability
                    var disabilityString = new StringBuilder();
                    if (entry.isHandicap.HasValue && entry.isHandicap.Value)
                    {
                        disabilityString.Append("HANDICAP ");
                    }
                    if (entry.hasLearningProblem.HasValue && entry.hasLearningProblem.Value)
                    {
                        disabilityString.Append("LEARNING_PROBLEM ");
                    }
                    disabilityString.Append(entry.disability_details);
                    row.CreateCell(col++).SetCellValue(SecurityElement.Escape(disabilityString.ToString()));

                    // address of student (applicant)
                    row.CreateCell(col++).SetCellValue(SecurityElement.Escape(entry.user.address));

                    // siblings
                    var siblingsList = new List <string>();
                    if (entry.user.students_guardians.Count == 0)
                    {
                        row.CreateCell(col++).SetCellValue("No Guardians");
                    }
                    else if (entry.user.students_guardians.First().user1.students_guardians1.Count == 0)
                    {
                        row.CreateCell(col++).SetCellValue("No siblings");
                    }
                    else
                    {
                        var siblings = entry.user.students_guardians.First().user1.students_guardians1.Select(x => x.user);
                        foreach (var sibling in siblings)
                        {
                            var sclass =
                                sibling.classes_students_allocateds.Where(x => x.year == currentYear).SingleOrDefault();
                            if (sclass != null)
                            {
                                siblingsList.Add(string.Format("{0} ({1}) ", sibling.ToName(), sclass.school_class.name));
                            }
                        }
                        row.CreateCell(col++).SetCellValue(string.Join(", ", siblingsList.ToArray()));
                    }

                    var father = entry.user.ToParent(GuardianType.FATHER);
                    if (father != null)
                    {
                        row.CreateCell(col++).SetCellValue(father.ToName());
                        row.CreateCell(col++).SetCellValue(father.ToContactString());
                    }
                    else
                    {
                        col++;
                        col++;
                    }
                    var mother = entry.user.ToParent(GuardianType.MOTHER);
                    if (mother != null)
                    {
                        row.CreateCell(col++).SetCellValue(mother.ToName());
                        row.CreateCell(col++).SetCellValue(mother.ToContactString());
                    }
                    else
                    {
                        col++;
                        col++;
                    }
                    var guardian = entry.user.ToParent(GuardianType.GUARDIAN);
                    if (guardian != null)
                    {
                        row.CreateCell(col++).SetCellValue(guardian.ToName());
                        row.CreateCell(col++).SetCellValue(guardian.ToContactString());
                    }
                    else
                    {
                        col++;
                        col++;
                    }

                    rowcount++;
                }
                templateWorkbook.Write(ms);
            }

            // return created file path);
            return(File(ms.ToArray(), "application/vnd.ms-excel", string.Format("Enrolment_{0}.xls", DateTime.Now.ToShortDateString().Replace("/", ""))));
        }
Пример #7
0
        /// <summary>
        /// Parses a data element
        /// </summary>
        /// <param name="parseTree">The data element grammar.</param>
        /// <param name="value">The data element line.</param>
        /// <param name="interchangeContext"></param>
        /// <returns>The parsed XML.</returns>
        private static XElement ParseElement(ParseTree parseTree, string value, InterchangeContext interchangeContext)
        {
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }
            if (!parseTree.IsComplex && !parseTree.IsSimple)
            {
                throw new Exception("Not a data element.");
            }

            XNamespace ns     = interchangeContext.TargetNamespace;
            var        result = new XElement(ns + parseTree.Name);

            if (parseTree.IsComplex)
            {
                if (value == string.Empty)
                {
                    // Only deal with blank values for envelope headers
                    if (parseTree.IsEnvelope)
                    {
                        foreach (var dataElement in parseTree.Children)
                        {
                            var element = new XElement(ns + dataElement.Name);
                            element.SetValue(string.Empty);
                            result.Add(element);
                        }
                    }
                }
                else
                {
                    // Get the simple data elements
                    var componentDataElements =
                        EdiHelper.GetEdiComponentDataElements(value, interchangeContext).ToList();

                    // Index the composite data elements from the class definition
                    var indexedGrammar =
                        parseTree.Children.Select((g, p) => new { Grammar = g, Position = p }).ToList();
                    // Index the composite data elements from the EDI string
                    var indexedValues = componentDataElements.Select((v, p) => new { Value = v, Position = p }).ToList();

                    // This will try to parse the EDI string into the class definition
                    // Load a parse tree against each value
                    // If there are more values in the EDI string than in the class definition - they will be ignored
                    // If there are less values in the EDI string than in the class definition - it will throw an exception
                    var indexedList = from ig in indexedGrammar
                                      from iv in indexedValues
                                      where ig.Position == iv.Position
                                      select new { ig.Position, iv.Value };

                    // Index the list so we can position each element
                    //var indexed = componentDataElements.Select((a, i) => new {Item = a, Position = i}).ToList();

                    foreach (var dataElement in indexedList)
                    {
                        // Skip blank data elements otherwise this will produce blank XML nodes
                        if (string.IsNullOrEmpty(dataElement.Value))
                        {
                            if (!parseTree.IsEnvelope)
                            {
                                continue;
                            }
                        }

                        // Handle the repetitions
                        // If the children the EDI string are more than the class definition,
                        // Then the extra ones are considered repetitions of the last child in the class definition
                        var objectToParse = dataElement.Position >= parseTree.Children.Count
                                                ? parseTree.Children.Last()
                                                : parseTree.Children[dataElement.Position];

                        var element = new XElement(ns + objectToParse.Name);
                        // Set the value and escape to prevent faulty XML
                        element.SetValue(SecurityElement.Escape(dataElement.Value) ?? string.Empty);
                        result.Add(element);
                    }
                }
            }
            else
            {
                // Prevent faulty XML
                result.SetValue(SecurityElement.Escape(value) ?? string.Empty);
            }

            return(result);
        }
Пример #8
0
        /// <summary>
        /// Converts the data from raw format (*.nz.tar.gz) to json files consumable by LEAN
        /// </summary>
        /// <param name="startDate">Starting date to start process files</param>
        /// <param name="endDate">Ending date to stop processing files</param>
        public void Process(DateTime startDate, DateTime endDate)
        {
            Parallel.ForEach(
                Directory.GetFiles(RawSource, "*.nc.tar.gz", SearchOption.AllDirectories).ToList(),
                rawFile =>
            {
                // GetFileNameWithoutExtension only strips the first extension from the name.
                var fileDate        = Path.GetFileName(rawFile).Split('.')[0];
                var extractDataPath = Path.Combine(RawSource, fileDate);

                DateTime currentDate;
                if (!DateTime.TryParseExact(fileDate, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out currentDate))
                {
                    throw new Exception($"Unable to parse date from file {rawFile}. Filename we attempted to parse: {fileDate}");
                }

                // Only process files within start and end bounds
                if (currentDate < startDate || currentDate > endDate)
                {
                    return;
                }

                using (var data = File.OpenRead(rawFile))
                {
                    using (var archive = TarArchive.CreateInputTarArchive(new GZipInputStream(data)))
                    {
                        Directory.CreateDirectory(extractDataPath);
                        archive.ExtractContents(extractDataPath);

                        Log.Trace($"SECDataConverter.Process(): Extracted SEC data to path {extractDataPath}");
                    }
                }

                // For the meantime, let's only process .nc files, and deal with correction files later.
                Parallel.ForEach(
                    Directory.GetFiles(extractDataPath, "*.nc", SearchOption.AllDirectories),
                    rawReportFilePath =>
                {
                    // Avoid processing files greater than MaxFileSize megabytes
                    if (MaxFileSize < new FileInfo(rawReportFilePath).Length)
                    {
                        Log.Trace($"SECDataConverter.Process(): File {rawReportFilePath} is too large to process. Continuing...");
                        return;
                    }

                    var factory = new SECReportFactory();
                    var xmlText = new StringBuilder();

                    // We need to escape any nested XML to ensure our deserialization happens smoothly
                    var parsingText = false;

                    foreach (var line in File.ReadLines(rawReportFilePath))
                    {
                        var newTextLine    = line;
                        var currentTagName = GetTagNameFromLine(newTextLine);

                        // This tag is present rarely in SEC reports, but is unclosed without value when encountered.
                        // Verified by searching with ripgrep for "CONFIRMING-COPY"
                        if (currentTagName == "CONFIRMING-COPY")
                        {
                            return;
                        }

                        // Don't encode the closing tag
                        if (currentTagName == "/TEXT")
                        {
                            parsingText = false;
                        }

                        // To ensure that we can serialize/deserialize data with hours, minutes, seconds
                        if (currentTagName == "FILING-DATE" || currentTagName == "PERIOD" ||
                            currentTagName == "DATE-OF-FILING-CHANGE" || currentTagName == "DATE-CHANGED")
                        {
                            newTextLine = $"{newTextLine.TrimEnd()} 00:00:00";
                        }

                        // Encode all contents inside tags to prevent errors in XML parsing.
                        // The json deserializer will convert these values back to their original form
                        if (!parsingText && HasValue(newTextLine))
                        {
                            newTextLine =
                                $"<{currentTagName}>{SecurityElement.Escape(GetTagValueFromLine(newTextLine))}</{currentTagName}>";
                        }
                        // Escape all contents inside TEXT tags
                        else if (parsingText)
                        {
                            newTextLine = SecurityElement.Escape(newTextLine);
                        }

                        // Don't encode the opening tag
                        if (currentTagName == "TEXT")
                        {
                            parsingText = true;
                        }

                        xmlText.AppendLine(newTextLine);
                    }

                    ISECReport report;
                    try
                    {
                        report = factory.CreateSECReport(xmlText.ToString());
                    }
                    catch (DataException e)
                    {
                        Log.Trace($"SECDataConverter.Process(): {e.Message}");
                        return;
                    }
                    catch (XmlException e)
                    {
                        Log.Error(e, $"SECDataConverter.Process(): Failed to parse XML from file path: {rawReportFilePath}");
                        return;
                    }

                    // First filer listed in SEC report is usually the company listed on stock exchanges
                    var companyCik = report.Report.Filers.First().CompanyData.Cik;

                    // Some companies can operate under two tickers, but have the same CIK.
                    // Don't bother continuing if we don't find any tickers for the given CIK
                    List <string> tickers;
                    if (!CikTicker.TryGetValue(companyCik, out tickers))
                    {
                        return;
                    }

                    try
                    {
                        // There can potentially not be an index file present for the given CIK
                        GetPublicationDate(report, companyCik);
                    }
                    catch (Exception e)
                    {
                        Log.Error(e, $"Index file not found for company {companyCik}");
                    }

                    // Default to company CIK if no known ticker is found.
                    // If we don't find a known equity in our list, the equity is probably not worth our time
                    foreach (var ticker in tickers.Where(KnownEquities.Contains))
                    {
                        var tickerReports = Reports.GetOrAdd(
                            ticker,
                            _ => new ConcurrentDictionary <DateTime, List <ISECReport> >()
                            );
                        var reports = tickerReports.GetOrAdd(
                            report.Report.FilingDate.Date,
                            _ => new List <ISECReport>()
                            );

                        reports.Add(report);
                    }
                }
                    );

                Parallel.ForEach(Reports.Keys, ticker =>
                {
                    List <ISECReport> reports;
                    if (!Reports[ticker].TryRemove(currentDate, out reports))
                    {
                        return;
                    }

                    WriteReport(reports, ticker);
                }
                                 );

                // This will clean up after ourselves without having to pay
                // the expense of deleting every single file inside the raw_data folder
                Directory.Delete(extractDataPath, true);
            }
                );
        }
Пример #9
0
 static void HtmlGenerateParams(BBCodeParser rules, StringBuilder SB, IReadOnlyList <CmdletObject> cmdlets, CmdletObject cmdlet)
 {
     SB.Append("<h2><strong>Parameters</strong></h2>" + n);
     foreach (ParameterDescription param in cmdlet.Parameters)
     {
         SB.Append("<h3><strong>-" + SecurityElement.Escape(param.Name) + "</strong> <em style=\"font-weight: 100;\">&lt;" + SecurityElement.Escape(param.Type) + "&gt;</em></h3>" + n);
         if (!String.IsNullOrEmpty(param.Description))
         {
             String str = rules.ToHtml(GenerateHtmlLink(param.Description, cmdlets));
             SB.Append("<p style=\"margin-left: 40px; text-align: left;\">" + str + "</p>" + n);
         }
         SB.Append("<table border=\"1\" style=\"margin-left: 40px;\">" + n);
         SB.Append("	<tbody>" + n);
         SB.Append("		<tr>"+ n);
         SB.Append("			<td>Required?</td>"+ n);
         SB.Append("			<td>"+ Convert.ToString(param.Mandatory) + "</td>" + n);
         SB.Append("		</tr>"+ n);
         SB.Append("		<tr>"+ n);
         SB.Append("			<td>Position?</td>"+ n);
         SB.Append("			<td>"+ param.Position + "</td>" + n);
         SB.Append("		</tr>"+ n);
         SB.Append("		<tr>"+ n);
         SB.Append("			<td>Default value</td>"+ n);
         if (String.IsNullOrEmpty(param.DefaultValue))
         {
             SB.Append("			<td>&nbsp;</td>"+ n);
         }
         else
         {
             SB.Append("			<td>"+ param.DefaultValue + "</td>" + n);
         }
         SB.Append("		</tr>"+ n);
         SB.Append("		<tr>"+ n);
         SB.Append("			<td>Accept pipeline input?</td>"+ n);
         if (param.Pipeline || param.PipelinePropertyName)
         {
             SB.Append("			<td>true");
             if (param.Pipeline && !param.PipelinePropertyName)
             {
                 SB.Append(" (ByValue)");
             }
             else if (param.Pipeline && param.PipelinePropertyName)
             {
                 SB.Append(" (ByValue, ByPropertyName)");
             }
             else
             {
                 SB.Append(" (ByPropertyName)");
             }
             SB.Append("</td>" + n);
         }
         else
         {
             SB.Append("			<td>false</td>"+ n);
         }
         SB.Append("		</tr>"+ n);
         SB.Append("		<tr>"+ n);
         SB.Append("			<td>Accept wildcard characters?</td>"+ n);
         SB.Append("			<td>"+ Convert.ToString(param.Globbing) + "</td>" + n);
         SB.Append("		</tr>"+ n);
         SB.Append("	</tbody>" + n);
         SB.Append("</table>" + n);
     }
     // Common parameters
     SB.Append("<h3>&lt;CommonParameters&gt;</h3>" + n);
     SB.Append("<p style=\"margin-left: 40px;\">This cmdlet supports the common parameters: Verbose, Debug,<br />" + n);
     SB.Append("ErrorAction, ErrorVariable, InformationAction, InformationVariable,<br />" + n);
     SB.Append("WarningAction, WarningVariable, OutBuffer, PipelineVariable and OutVariable.<br />" + n);
     SB.Append("For more information, see about_CommonParameters (<a href=\"http://go.microsoft.com/fwlink/?LinkID=113216\">http://go.microsoft.com/fwlink/?LinkID=113216</a>).</p>" + n);
 }
Пример #10
0
        public ActionResult ExportStats(Schools school, UserGroup ugroup, int year)
        {
            var stats = new ClassStatistics {
                school = school, usergroup = ugroup, year = year
            };

            stats.CalculateStats(repository);

            var ms = new MemoryStream();

            using (var fs =
                       new FileStream(
                           AppDomain.CurrentDomain.BaseDirectory + "/Content/templates/NPOITemplate.xls",
                           FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                var templateWorkbook = new HSSFWorkbook(fs, true);
                var sheet            = templateWorkbook.CreateSheet(school.ToString());

                // create fonts
                var boldStyle = templateWorkbook.CreateCellStyle();
                var boldFont  = templateWorkbook.CreateFont();
                boldFont.Boldweight = (short)FontBoldWeight.BOLD;
                boldStyle.SetFont(boldFont);

                var rowcount = 0;
                var row      = sheet.CreateRow(rowcount++);
                var colcount = 0;

                // show general stats first
                row.CreateCell(colcount).SetCellValue(SecurityElement.Escape("Malaysian"));
                colcount += 2;
                row.CreateCell(colcount).SetCellValue(SecurityElement.Escape("Foreigners"));
                colcount += 2;
                row.CreateCell(colcount).SetCellValue(SecurityElement.Escape("SubTotal"));
                colcount += 2;
                row.CreateCell(colcount).SetCellValue(SecurityElement.Escape("Total"));
                row = sheet.CreateRow(rowcount++);
                for (int i = 0; i < 3; i++)
                {
                    row.CreateCell(i * 2).SetCellValue(SecurityElement.Escape("M"));
                    row.CreateCell(i * 2 + 1).SetCellValue(SecurityElement.Escape("F"));
                }
                row = sheet.CreateRow(rowcount++);
                row.CreateCell(0, CellType.NUMERIC).SetCellValue(stats.msian_male);
                row.CreateCell(1, CellType.NUMERIC).SetCellValue(stats.msian_female);
                row.CreateCell(2, CellType.NUMERIC).SetCellValue(stats.foreign_male);
                row.CreateCell(3, CellType.NUMERIC).SetCellValue(stats.foreign_female);
                row.CreateCell(4, CellType.NUMERIC).SetCellValue(stats.msian_male + stats.foreign_male);
                row.CreateCell(5, CellType.NUMERIC).SetCellValue(stats.msian_female + stats.foreign_female);
                row.CreateCell(6, CellType.NUMERIC).SetCellValue(stats.msian_male + stats.foreign_male + stats.msian_female + stats.foreign_female);

                foreach (var entry in stats.collections)
                {
                    // class row
                    row = sheet.CreateRow(rowcount++);
                    row.CreateCell(0).SetCellValue(SecurityElement.Escape(entry.name));
                    row.GetCell(0).CellStyle = boldStyle;

                    // header row1
                    row      = sheet.CreateRow(rowcount++);
                    colcount = 0;
                    foreach (var race in entry.GetList())
                    {
                        row.CreateCell(colcount).SetCellValue(SecurityElement.Escape(race.name));
                        colcount += 2;
                    }
                    row.CreateCell(colcount).SetCellValue(SecurityElement.Escape("Total"));

                    // header row2
                    row = sheet.CreateRow(rowcount++);
                    for (int i = 0; i < entry.GetList().Count(); i++)
                    {
                        row.CreateCell(i * 2).SetCellValue(SecurityElement.Escape("M"));
                        row.CreateCell(i * 2 + 1).SetCellValue(SecurityElement.Escape("F"));
                    }

                    // stats row
                    row      = sheet.CreateRow(rowcount++);
                    colcount = 0;
                    foreach (var race in entry.GetList())
                    {
                        row.CreateCell(colcount++).SetCellValue(race.male);
                        row.CreateCell(colcount++).SetCellValue(race.female);
                    }
                    row.CreateCell(colcount).SetCellValue(entry.GetList().Sum(x => x.male + x.female));
                }
                // delete first sheet
                templateWorkbook.RemoveSheetAt(0);
                templateWorkbook.Write(ms);
            }

            // return created file path);
            return(File(ms.ToArray(), "application/vnd.ms-excel", string.Format("Statistics_{0}_{1}.xls", ugroup, school)));
        }
Пример #11
0
        /// <summary>
        /// Saves the specified item.
        /// </summary>
        /// <param name="item">The item.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>Task.</returns>
        public void Save(BaseItem item, CancellationToken cancellationToken)
        {
            var series = (Series)item;

            var builder = new StringBuilder();

            builder.Append("<Series>");

            var tvdb = item.GetProviderId(MetadataProviders.Tvdb);

            if (!string.IsNullOrEmpty(tvdb))
            {
                builder.Append("<id>" + SecurityElement.Escape(tvdb) + "</id>");
            }

            if (!string.IsNullOrEmpty(item.Name))
            {
                builder.Append("<SeriesName>" + SecurityElement.Escape(item.Name) + "</SeriesName>");
            }

            if (series.Status.HasValue)
            {
                builder.Append("<Status>" + SecurityElement.Escape(series.Status.Value.ToString()) + "</Status>");
            }

            if (series.Studios.Count > 0)
            {
                builder.Append("<Network>" + SecurityElement.Escape(item.Studios[0]) + "</Network>");
            }

            if (!string.IsNullOrEmpty(series.AirTime))
            {
                builder.Append("<Airs_Time>" + SecurityElement.Escape(series.AirTime) + "</Airs_Time>");
            }

            if (series.AirDays != null)
            {
                if (series.AirDays.Count == 7)
                {
                    builder.Append("<Airs_DayOfWeek>" + SecurityElement.Escape("Daily") + "</Airs_DayOfWeek>");
                }
                else if (series.AirDays.Count > 0)
                {
                    builder.Append("<Airs_DayOfWeek>" + SecurityElement.Escape(series.AirDays[0].ToString()) + "</Airs_DayOfWeek>");
                }
            }

            if (series.PremiereDate.HasValue)
            {
                builder.Append("<FirstAired>" + SecurityElement.Escape(series.PremiereDate.Value.ToString("yyyy-MM-dd")) + "</FirstAired>");
            }

            XmlSaverHelpers.AddCommonNodes(item, builder);

            builder.Append("</Series>");

            var xmlFilePath = GetSavePath(item);

            XmlSaverHelpers.Save(builder, xmlFilePath, new[]
            {
                "id",
                "SeriesName",
                "Status",
                "Network",
                "Airs_Time",
                "Airs_DayOfWeek",
                "FirstAired"
            });

            // Set last refreshed so that the provider doesn't trigger after the file save
            SeriesProviderFromXml.Current.SetLastRefreshed(item, DateTime.UtcNow);
        }
Пример #12
0
        protected PSObject InsertEntity(string tableName, string partitionKey, string rowKey, PSObject obj, string author, string email, bool update, bool merge, bool excludeTableInfo)
        {
            return(Retry <PSObject>(delegate()
            {
                HttpWebResponse response;

                try
                {
                    // Create properties list. Use reflection to retrieve properties from the object.

                    StringBuilder properties = new StringBuilder();
                    properties.Append(string.Format("<d:{0}>{1}</d:{0}>\n", "PartitionKey", partitionKey));
                    properties.Append(string.Format("<d:{0}>{1}</d:{0}>\n", "RowKey", rowKey));

                    string lastTypeName = obj.TypeNames.Last();
                    if (lastTypeName != "System.Object" && lastTypeName != "System.Management.Automation.PSObject")
                    {
                        properties.Append(string.Format("<d:psTypeName>{0}</d:psTypeName>\n", SecurityElement.Escape(lastTypeName)));
                    }
                    foreach (PSPropertyInfo p in obj.Properties)
                    {
                        try
                        {
                            string valueToInsert = p.Value.ToString();

                            properties.Append(string.Format("<d:{0}>{1}</d:{0}>\n", p.Name, SecurityElement.Escape(valueToInsert)));
                        }
                        catch
                        {
                        }
                    }

                    string now = DateTime.UtcNow.ToString("o", System.Globalization.CultureInfo.InvariantCulture);
                    string id = String.Empty;
                    if (update || merge)
                    {
                        id = String.Format("http://{0}.table.core.windows.net/{1}(PartitionKey='{2}',RowKey='{3}')", StorageAccount, tableName, partitionKey, rowKey);
                    }
                    string requestBody = String.Format("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" +
                                                       "<entry xmlns:d=\"http://schemas.microsoft.com/ado/2007/08/dataservices\"" +
                                                       "       xmlns:m=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\"" +
                                                       "       xmlns=\"http://www.w3.org/2005/Atom\"> " +
                                                       "  <title /> " +
                                                       "  <updated>{0}</updated> " +
                                                       "  <author>" +
                                                       "    <name/> " +
                                                       "  </author> " +
                                                       "  <id>{1}</id> " +
                                                       "  <content type=\"application/xml\">" +
                                                       "  <m:properties>" +
                                                       "{2}" +
                                                       "  </m:properties>" +
                                                       "  </content> " +
                                                       "</entry>",
                                                       now,
                                                       id,
                                                       properties);

                    if (!String.IsNullOrEmpty(author))
                    {
                        if (!String.IsNullOrEmpty(email))
                        {
                            requestBody.Replace("<name/>", ("<name>" + SecurityElement.Escape(author) + "</name><email>" + SecurityElement.Escape(email) + "</email>"));
                        }
                        else
                        {
                            requestBody.Replace("<name/>", ("<name>" + SecurityElement.Escape(author) + "</name>"));
                        }
                    }

                    if (merge)
                    {
                        string resource = String.Format(tableName + "(PartitionKey='{0}',RowKey='{1}')", partitionKey, rowKey);
                        SortedList <string, string> headers = new SortedList <string, string>();
                        headers.Add("If-Match", "*");
                        response = CreateRESTRequest("MERGE", resource, requestBody, headers, String.Empty, String.Empty).GetResponse() as HttpWebResponse;
                    }
                    else if (update)
                    {
                        string resource = String.Format(tableName + "(PartitionKey='{0}',RowKey='{1}')", partitionKey, rowKey);
                        SortedList <string, string> headers = new SortedList <string, string>();
                        headers.Add("If-Match", "*");

                        response = CreateRESTRequest("PUT", resource, requestBody, headers, String.Empty, String.Empty).GetResponse() as HttpWebResponse;
                    }
                    else
                    {
                        response = CreateRESTRequest("POST", tableName, requestBody, null, String.Empty, String.Empty).GetResponse() as HttpWebResponse;
                    }

                    if (response.StatusCode == HttpStatusCode.Created)
                    {
                        using (StreamReader reader = new StreamReader(response.GetResponseStream()))
                        {
                            string result = reader.ReadToEnd();

                            XNamespace ns = "http://www.w3.org/2005/Atom";
                            XNamespace d = "http://schemas.microsoft.com/ado/2007/08/dataservices";
                            XNamespace m = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata";
                            return RecreateObject(result, !excludeTableInfo, tableName).First();
                        }
                    }
                    response.Close();

                    return null;
                }
                catch (WebException ex)
                {
                    if (ex.Status == WebExceptionStatus.ProtocolError &&
                        ex.Response != null)
                    {
                        WriteError(
                            new ErrorRecord(
                                new InvalidOperationException(
                                    ((ex.Response as HttpWebResponse).StatusCode.ToString()) + "-- Table: " + tableName + "Partition: " + partitionKey + "Row: " + rowKey),
                                "SetAzureTableCommand.WebError." + ((int)(ex.Response as HttpWebResponse).StatusCode).ToString(),
                                ErrorCategory.InvalidOperation,
                                this)
                            );
                    }
                    return null;
                }
            }));
        }
Пример #13
0
        // Convert this permissions object into an XML value.
        public override SecurityElement ToXml()
        {
            SecurityElement element;
            SecurityElement child;
            SecurityElement uri;

            element = new SecurityElement("IPermission");
            element.AddAttribute
                ("class",
                SecurityElement.Escape(typeof(WebPermission).
                                       AssemblyQualifiedName));
            element.AddAttribute("version", "1");
            if (state == PermissionState.Unrestricted)
            {
                element.AddAttribute("Unrestricted", "true");
            }
            else
            {
                if (connectList.Count > 0)
                {
                    child = new SecurityElement("ConnectAccess");
                    element.AddChild(child);
                    foreach (Object p1 in connectList)
                    {
                        uri = new SecurityElement("URI");
                        child.AddChild(uri);
                                                #if !ECMA_COMPAT
                        if (p1 is Regex)
                        {
                            uri.AddAttribute
                                ("uri",
                                SecurityElement.Escape(p1.ToString()));
                        }
                        else
                                                #endif
                        {
                            uri.AddAttribute
                                ("uri",
                                SecurityElement.Escape
                                    (RegexEscape(p1.ToString())));
                        }
                    }
                }
                if (acceptList.Count > 0)
                {
                    child = new SecurityElement("AcceptAccess");
                    element.AddChild(child);
                    foreach (Object p2 in acceptList)
                    {
                        uri = new SecurityElement("URI");
                        child.AddChild(uri);
                                                #if !ECMA_COMPAT
                        if (p2 is Regex)
                        {
                            uri.AddAttribute
                                ("uri",
                                SecurityElement.Escape(p2.ToString()));
                        }
                        else
                                                #endif
                        {
                            uri.AddAttribute
                                ("uri",
                                SecurityElement.Escape
                                    (RegexEscape(p2.ToString())));
                        }
                    }
                }
            }
            return(element);
        }
Пример #14
0
 public void Escape()
 {
     Assert.Equal("foo&lt;&gt;&quot;&apos;&amp; bar",
                  SecurityElement.Escape("foo<>\"'& bar"));
     Assert.Null(SecurityElement.Escape(null));
 }
Пример #15
0
 //http://developer.marklogic.com/pipermail/general/2015-August/017790.html
 //https://msdn.microsoft.com/pl-pl/library/system.security.securityelement.escape(v=vs.110).aspx
 private static string EscapeXml(string content)
 {
     return(SecurityElement.Escape(content));
 }
        private void PutDataToConcretePresentationTable(PresentationInfo presInfo)
        {
            if (presInfo == null)
            {
                throw new ArgumentNullException("presInfo");
            }

            #region Создаю конкретную таблицу, если она еще не создана
            try
            {
                MySqlCommand command = _MySqlConnection.CreateCommand();
                command.CommandText = String.Format(@"CREATE TABLE IF NOT EXISTS `{0}`
                              (
                              `id` MEDIUMINT NOT NULL AUTO_INCREMENT,
                              `url_news` VARCHAR(200) NOT NULL,
                              `title` VARCHAR(200) NULL,
                              `nazvanie` VARCHAR(200) NOT NULL,
                              `slider` TEXT NULL,
                              `url_dowload` TEXT(1000) NOT NULL,
                              `size` FLOAT NOT NULL,
                              `content` TEXT NULL,
                              `iframe` INT NOT NULL,
                              `random` TEXT NULL,
                              `poxpres` TEXT NULL,
                              PRIMARY KEY (id)
                              ) CHARSET={1}", SecurityElement.Escape(presInfo.Categorie.ToString()), TABLE_CHARSET);
                command.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw new Exception(String.Format("Во время создания таблицы '{0}' произошла ошибка: {1}", presInfo.NameAsTranslit, ex.Message));
            }
            #endregion

            try
            {
                MySqlCommand command = _MySqlConnection.CreateCommand();
                command.CommandText = String.Format(new System.Globalization.CultureInfo("en-GB"), @"
          INSERT INTO `{8}` (`url_news`, `title`, `nazvanie`, `slider`, `url_dowload`, `size`, `content`, `iframe`)
           VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', {5:0.00}, '{6}', '{7}')
        ", SecurityElement.Escape(presInfo.UrlNews), SecurityElement.Escape(presInfo.Title), SecurityElement.Escape(presInfo.Name), SecurityElement.Escape(FormatIframeBDColumn(presInfo)),
                                                    SecurityElement.Escape(presInfo.UrlDownload), Convert.ToSingle(presInfo.FileSize / 1024 / 1024, System.Globalization.CultureInfo.InvariantCulture),
                                                    SecurityElement.Escape(FormContentDbColumn(presInfo)), presInfo.DbId, SecurityElement.Escape(presInfo.Categorie.ToString()));

                command.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw new Exception(String.Format("Во время заполнения таблицы 'main' презентацией '{0}' произошла ошибка: {1}", presInfo.Name, ex.Message));
            }
        }
Пример #17
0
        public override TaskStatus Run()
        {
            Info("Retrieving post history...");

            Status status = Status.Success;

            RedditClient reddit;

            try
            {
                reddit = new RedditClient(AppId, RefreshToken);
                InfoFormat("Username: {0}", reddit.Account.Me.Name);
                InfoFormat("Cake Day: {0}", reddit.Account.Me.Created.ToString("D"));
                Info("Authentication succeeded.");
            }
            catch (ThreadAbortException)
            {
                throw;
            }
            catch (Exception e)
            {
                ErrorFormat("Authentication failed: {0}", e.Message);
                return(new TaskStatus(Status.Error));
            }


            try
            {
                // Retrieve the authenticated user's recent post history.
                // Change "new" to "newForced" if you don't want older stickied profile posts to appear first.
                var posts = reddit.Account.Me.GetPostHistory(sort: "new", limit: MaxResults, show: "all");

                var xdoc = new XDocument(new XElement("Posts"));

                foreach (var post in posts)
                {
                    var xpost = new XElement("Post", new XAttribute("id", SecurityElement.Escape(post.Id)), new XAttribute("subreddit", SecurityElement.Escape(post.Subreddit)), new XAttribute("title", SecurityElement.Escape(post.Title)), new XAttribute("upvotes", post.UpVotes), new XAttribute("downvotes", post.DownVotes));
                    xdoc.Root.Add(xpost);
                }

                var xmlPath = Path.Combine(Workflow.WorkflowTempFolder,
                                           string.Format("{0}_{1:yyyy-MM-dd-HH-mm-ss-fff}.xml", "RedditListPosts", DateTime.Now));
                xdoc.Save(xmlPath);
                Files.Add(new FileInf(xmlPath, Id));
                InfoFormat("Post history written in {0}", xmlPath);
            }
            catch (ThreadAbortException)
            {
                throw;
            }
            catch (Exception e)
            {
                ErrorFormat("An error occured while retrieving post history: {0}", e.Message);
                status = Status.Error;
            }

            Info("Task finished.");
            return(new TaskStatus(status));
        }
        private void PutDataToMainTable(PresentationInfo presInfo)
        {
            if (presInfo == null)
            {
                throw new ArgumentNullException("presInfo");
            }

            #region Создание таблицы main, если это необходимо
            try
            {
                {
                    MySqlCommand command = _MySqlConnection.CreateCommand();
                    command.CommandText = String.Format(@"CREATE TABLE IF NOT EXISTS `{0}`
                              (
                              `id` MEDIUMINT NOT NULL,
                              `url_news` VARCHAR(300) NOT NULL,
                              `nazvanie` VARCHAR(300) NULL,
                              `category` VARCHAR(300) NOT NULL,
                              `iframe` MEDIUMTEXT NULL,
                              `url_dowload` TEXT(1000) NOT NULL,
                              `lastSmallImageIndex` INT NULL,
                              UNIQUE KEY (lastSmallImageIndex, id)
                              ) CHARSET={1}", SecurityElement.Escape(_MAIN_TABLE_NAME), TABLE_CHARSET);
                    command.ExecuteNonQuery();
                }
            }
            catch (Exception ex)
            {
                throw new Exception(String.Format("Во время создания таблицы 'main' произошла ошибка: {1}", ex.Message));
            }

            #endregion

            #region Получаю данные из таблицы, необходимые для доформирования информации о презентации
            #region Получаю информацию о предыдущей презентации
            try
            {
                MySqlCommand command = _MySqlConnection.CreateCommand();
                command.CommandText = String.Format("SELECT * FROM `{0}` ORDER BY id DESC LIMIT 1", _MAIN_TABLE_NAME);
                var reader = command.ExecuteReader();

                int lastPresentationId    = 0,
                    lastSmallImageIndex   = 0,
                    lastAverageImageIndex = 0,
                    lastBigImageIndex     = 0;

                if (reader.HasRows)
                {
                    reader.Read();

                    Int32.TryParse(reader.GetString("lastSmallImageIndex"), out lastSmallImageIndex);
                    Int32.TryParse(reader.GetString("id"), out lastPresentationId);
                }

                reader.Close();

                presInfo.DbId = ++lastPresentationId;

                presInfo.SlidersInfo.ForEach(info =>
                {
                    if (!String.IsNullOrEmpty(info.ImageNameClientBig))
                    {
                        info.ImageNameServerBig = ++lastBigImageIndex + ".jpg";
                    }

                    if (!String.IsNullOrEmpty(info.ImageNameClientAverage))
                    {
                        info.ImageNameServerAverage = ++lastAverageImageIndex + ".jpg";
                    }

                    if (!String.IsNullOrEmpty(info.ImageNameClientSmall))
                    {
                        info.ImageNameServerSmall = ++lastSmallImageIndex + ".png";
                    }
                });

                presInfo.LastImageSmallIndex = lastSmallImageIndex;
            }
            catch (Exception ex)
            {
                throw new Exception(String.Format("При получении данных из таблицы {0}, необходимых для формирования информации по экспорту новой презентации, произошла ошибка: {1}", _MAIN_TABLE_NAME, ex.Message));
            }
            #endregion

            #region Формирую уникальный url_news
            try
            {
                int    coincidenceCount = 0;
                string newNameAsTranslit;
                bool   isNeedNextLoop = true;

                do
                {
                    if (coincidenceCount == 0)
                    {
                        newNameAsTranslit = presInfo.NameAsTranslit;
                    }
                    else
                    {
                        newNameAsTranslit = presInfo.NameAsTranslit + coincidenceCount;
                    }

                    MySqlCommand command = _MySqlConnection.CreateCommand();
                    command.CommandText = String.Format("SELECT id FROM {0} WHERE url_news='{1}'", _MAIN_TABLE_NAME, newNameAsTranslit);

                    using (var reader = command.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            coincidenceCount++;
                        }
                        else
                        {
                            isNeedNextLoop = false;
                        }
                    }
                } while (isNeedNextLoop);

                presInfo.NameAsTranslit = newNameAsTranslit;
            }
            catch (Exception ex)
            {
                throw new Exception(String.Format("При формировании уникального url_new произошла ошибка: {0}", ex.Message));
            }
            #endregion
            #endregion

            try
            {
                MySqlCommand command = _MySqlConnection.CreateCommand();
                command.CommandText = String.Format(@"INSERT INTO `{7}` (`id`, `url_news`, `nazvanie`, `category`, `iframe`, `url_dowload`, `lastSmallImageIndex`) VALUES ({0}, '{1}', '{2}', '{3}', '{4}', '{5}', '{6}')",
                                                    presInfo.DbId, SecurityElement.Escape(presInfo.UrlNews), SecurityElement.Escape(presInfo.Name), SecurityElement.Escape(presInfo.Categorie.ToString().Unidecode()),
                                                    SecurityElement.Escape(FormatIframeBDColumn(presInfo)), SecurityElement.Escape(presInfo.UrlDownload), presInfo.LastImageSmallIndex, SecurityElement.Escape(_MAIN_TABLE_NAME));

                command.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw new Exception(String.Format("Во время заполнения таблицы 'main' презентацией '{0}' произошла ошибка: {1}", presInfo.Name, ex.Message));
            }
        }
Пример #19
0
 public static string XmlEncode(this string @string)
 {
     return(SecurityElement.Escape(@string));
 }
Пример #20
0
 public static String XmlDataEscape(String value)
 {
     return(SecurityElement.Escape(value));
 }
Пример #21
0
        [System.Security.SecurityCritical]  // auto-generated
        internal SecurityElement ToXml(PolicyLevel level, String policyClassName)
        {
            if (m_membershipCondition == null && m_element != null)
            {
                ParseMembershipCondition();
            }

            if (m_children == null)
            {
                ParseChildren();
            }

            if (m_policy == null && m_element != null)
            {
                ParsePolicy();
            }

            SecurityElement e = new SecurityElement("CodeGroup");

            System.Security.Util.XMLUtil.AddClassAttribute(e, this.GetType(), policyClassName);
            // If you hit this assert then most likely you are trying to change the name of this class.
            // This is ok as long as you change the hard coded string above and change the assert below.
            Contract.Assert(this.GetType().FullName.Equals(policyClassName), "Incorrect class name passed in! Was: " + policyClassName + " Should be " + this.GetType().FullName);

            e.AddAttribute("version", "1");

            e.AddChild(m_membershipCondition.ToXml(level));

            // Grab the inerts of the policy statement's xml and just stick it
            // into the code group xml directly. We do this to hide the policy statement from
            // users in the config file.

            if (m_policy != null)
            {
                PermissionSet      permSet      = m_policy.GetPermissionSetNoCopy();
                NamedPermissionSet namedPermSet = permSet as NamedPermissionSet;

                if (namedPermSet != null && level != null && level.GetNamedPermissionSetInternal(namedPermSet.Name) != null)
                {
                    e.AddAttribute("PermissionSetName", namedPermSet.Name);
                }
                else
                {
                    if (!permSet.IsEmpty())
                    {
                        e.AddChild(permSet.ToXml());
                    }
                }

                if (m_policy.Attributes != PolicyStatementAttribute.Nothing)
                {
                    e.AddAttribute("Attributes", XMLUtil.BitFieldEnumToString(typeof(PolicyStatementAttribute), m_policy.Attributes));
                }
            }

            if (m_children.Count > 0)
            {
                lock (this)
                {
                    IEnumerator enumerator = m_children.GetEnumerator();

                    while (enumerator.MoveNext())
                    {
                        e.AddChild(((CodeGroup)enumerator.Current).ToXml(level));
                    }
                }
            }

            if (m_name != null)
            {
                e.AddAttribute("Name", SecurityElement.Escape(m_name));
            }

            if (m_description != null)
            {
                e.AddAttribute("Description", SecurityElement.Escape(m_description));
            }

            CreateXml(e, level);

            return(e);
        }
Пример #22
0
        void Save()
        {
            if (IsMarkedForDeletion)
            {
                return;
            }

            SecurityElement se = new SecurityElement("values");

            lock (values){
                if (!File.Exists(file) && values.Count == 0)
                {
                    return;
                }

                // With SecurityElement.Text = value, and SecurityElement.AddAttribute(key, value)
                // the values must be escaped prior to being assigned.
                foreach (DictionaryEntry de in values)
                {
                    object          val   = de.Value;
                    SecurityElement value = new SecurityElement("value");
                    value.AddAttribute("name", SecurityElement.Escape((string)de.Key));

                    if (val is string)
                    {
                        value.AddAttribute("type", "string");
                        value.Text = SecurityElement.Escape((string)val);
                    }
                    else if (val is int)
                    {
                        value.AddAttribute("type", "int");
                        value.Text = val.ToString();
                    }
                    else if (val is long)
                    {
                        value.AddAttribute("type", "qword");
                        value.Text = val.ToString();
                    }
                    else if (val is byte [])
                    {
                        value.AddAttribute("type", "bytearray");
                        value.Text = Convert.ToBase64String((byte[])val);
                    }
                    else if (val is ExpandString)
                    {
                        value.AddAttribute("type", "expand");
                        value.Text = SecurityElement.Escape(val.ToString());
                    }
                    else if (val is string [])
                    {
                        value.AddAttribute("type", "string-array");

                        foreach (string ss in (string[])val)
                        {
                            SecurityElement str = new SecurityElement("string");
                            str.Text = SecurityElement.Escape(ss);
                            value.AddChild(str);
                        }
                    }
                    se.AddChild(value);
                }
            }

            using (FileStream fs = File.Create(file)){
                StreamWriter sw = new StreamWriter(fs);

                sw.Write(se.ToString());
                sw.Flush();
            }
        }
Пример #23
0
 /// <summary>
 /// Replaces invalid XML characters in a string with their valid XML equivalent.
 /// </summary>
 /// <param name="str">The string within which to escape invalid characters.</param>
 /// <returns>The input string with invalid characters replaced.</returns>
 public static string ConvertInvalidXMLCharacters(string str)
 {
     return(SecurityElement.Escape(str));
 }
Пример #24
0
 public void OnChars(string ch)
 {
     current.Text = SecurityElement.Escape(ch);
 }
Пример #25
0
        public static void PrintBadge(Badge badge, bool backOnly = false)
        {
            var labelData = Encoding.ASCII.GetString(Properties.Resources.BadgeFront);
            var label     = DYMO.Label.Framework.Label.OpenXml(labelData);
            var builder   = new LabelSetBuilder();
            var record    = builder.AddRecord();

            if (!backOnly)
            {
                record.AddTextMarkup("BadgeName", "<font family=\"Arial\" size=\"32\">" + SecurityElement.Escape(badge.BadgeName) + "</font>");
                record.AddTextMarkup("BadgeNumber", "<font family=\"Lucida Console\" size=\"22\">" + badge.BadgeNumber + "</font>");
                label.Print(Framework.GetLabelWriterPrinters().First(), null, builder.Xml);
            }

            if (badge.BadgeTypeID == 2)
            {
                labelData = Encoding.ASCII.GetString(Properties.Resources.BadgeBackKid);
                label     = DYMO.Label.Framework.Label.OpenXml(labelData);
                builder   = new LabelSetBuilder();
                record    = builder.AddRecord();
                record.AddTextMarkup("RealName", "<font family=\"Arial\" size=\"18\">" + SecurityElement.Escape(badge.Name) + "</font>");
                record.AddTextMarkup("ParentName", "<font family=\"Arial\" size=\"18\">" + SecurityElement.Escape(badge.ParentName) +
                                     " " + SecurityElement.Escape(badge.ParentContact) + "</font>");
                record.AddTextMarkup("BadgeType", "<font family=\"Arial\" size=\"18\">" + SecurityElement.Escape(badge.Description) + "</font>");
                record.AddTextMarkup("BadgeNumber", "<font family=\"Lucida Console\" size=\"22\">" + badge.BadgeNumber + "</font>");
                label.Print(Framework.GetLabelWriterPrinters().First(), null, builder.Xml);
            }
            else
            {
                labelData = Encoding.ASCII.GetString(Properties.Resources.BadgeBack);
                label     = DYMO.Label.Framework.Label.OpenXml(labelData);
                builder   = new LabelSetBuilder();
                record    = builder.AddRecord();
                record.AddTextMarkup("RealName", "<font family=\"Arial\" size=\"24\">" + SecurityElement.Escape(badge.Name) + "</font>");
                record.AddTextMarkup("BadgeType", "<font family=\"Arial\" size=\"24\">" + SecurityElement.Escape(badge.Description) + "</font>");
                record.AddTextMarkup("BadgeNumber", "<font family=\"Lucida Console\" size=\"22\">" + badge.BadgeNumber + "</font>");
                label.Print(Framework.GetLabelWriterPrinters().First(), null, builder.Xml);
            }
        }
Пример #26
0
        public void Save(BaseItem item, CancellationToken cancellationToken)
        {
            var builder = new StringBuilder();

            builder.Append("<tvshow>");

            var task = XmlSaverHelpers.AddCommonNodes(item, builder, _libraryManager);

            Task.WaitAll(task);

            var tvdb = item.GetProviderId(MetadataProviders.Tvdb);

            if (!string.IsNullOrEmpty(tvdb))
            {
                builder.Append("<id>" + SecurityElement.Escape(tvdb) + "</id>");

                builder.AppendFormat("<episodeguide><url cache=\"{0}.xml\">http://www.thetvdb.com/api/1D62F2F90030C444/series/{0}/all/{1}.zip</url></episodeguide>",
                                     tvdb,
                                     string.IsNullOrEmpty(_config.Configuration.PreferredMetadataLanguage) ? "en" : _config.Configuration.PreferredMetadataLanguage);
            }

            var imdb = item.GetProviderId(MetadataProviders.Imdb);

            if (!string.IsNullOrEmpty(imdb))
            {
                builder.Append("<imdb_id>" + SecurityElement.Escape(imdb) + "</imdb_id>");
            }

            builder.Append("<season>-1</season>");
            builder.Append("<episode>-1</episode>");

            var series = (Series)item;

            if (series.Status.HasValue)
            {
                builder.Append("<status>" + SecurityElement.Escape(series.Status.Value.ToString()) + "</status>");
            }

            if (series.Studios.Count > 0)
            {
                builder.Append("<studio>" + SecurityElement.Escape(item.Studios[0]) + "</studio>");
            }

            if (!string.IsNullOrEmpty(series.AirTime))
            {
                builder.Append("<airs_time>" + SecurityElement.Escape(series.AirTime) + "</airs_time>");
            }

            if (series.AirDays.Count == 7)
            {
                builder.Append("<airs_dayofweek>" + SecurityElement.Escape("Daily") + "</airs_dayofweek>");
            }
            else if (series.AirDays.Count > 0)
            {
                builder.Append("<airs_dayofweek>" + SecurityElement.Escape(series.AirDays[0].ToString()) + "</airs_dayofweek>");
            }

            builder.Append("</tvshow>");

            var xmlFilePath = GetSavePath(item);

            XmlSaverHelpers.Save(builder, xmlFilePath, new[]
            {
                "id",
                "imdb_id",
                "season",
                "episode",
                "status",
                "studio",
                "airs_time",
                "airs_dayofweek",
                "episodeguide"
            });
        }
Пример #27
0
        public static string GetXmlValue(object value, Type objectType)
        {
            string xmlValue = null;

            if (value != null)
            {
                var typeCode = Type.GetTypeCode(objectType);
                if (typeCode != TypeCode.DBNull)
                {
                    switch (typeCode)
                    {
                    case TypeCode.Boolean:
                        xmlValue = XmlConvert.ToString((bool)value);
                        break;

                    case TypeCode.String:
                        xmlValue = SecurityElement.Escape((string)value);
                        break;

                    case TypeCode.DateTime:
                        xmlValue = XmlConvert.ToString((DateTime)value, XmlDateTimeSerializationMode.Utc);
                        break;

                    case TypeCode.Byte:
                    case TypeCode.UInt16:
                    case TypeCode.UInt32:
                    case TypeCode.UInt64:
                    case TypeCode.SByte:
                    case TypeCode.Int16:
                    case TypeCode.Int32:
                    case TypeCode.Int64:
                    case TypeCode.Char:
                    case TypeCode.Single:
                    case TypeCode.Double:
                    case TypeCode.Decimal:
                        xmlValue = Convert.ToString(value);
                        break;

                    default:
                        if (objectType == typeof(byte[]))
                        {
                            xmlValue = Convert.ToBase64String((byte[])value);
                        }
                        else if (objectType == typeof(DateTimeOffset))
                        {
                            xmlValue = XmlConvert.ToString((DateTimeOffset)value);
                        }
                        else if (objectType == typeof(TimeSpan))
                        {
                            xmlValue = XmlConvert.ToString((TimeSpan)value);
                        }
                        else if (objectType == typeof(Guid))
                        {
                            xmlValue = ((Guid)value).ToString("D");
                        }
                        break;
                    }
                }
            }
            return(xmlValue);
        }
Пример #28
0
        /// <summary>
        /// Adds the common nodes.
        /// </summary>
        /// <param name="item">The item.</param>
        /// <param name="builder">The builder.</param>
        public static void AddCommonNodes(BaseItem item, ILibraryManager libraryManager, StringBuilder builder)
        {
            if (!string.IsNullOrEmpty(item.OfficialRating))
            {
                builder.Append("<ContentRating>" + SecurityElement.Escape(item.OfficialRating) + "</ContentRating>");
            }

            if (!string.IsNullOrEmpty(item.OfficialRatingDescription))
            {
                builder.Append("<MPAADescription>" + SecurityElement.Escape(item.OfficialRatingDescription) + "</MPAADescription>");
            }

            builder.Append("<Added>" + SecurityElement.Escape(item.DateCreated.ToLocalTime().ToString("G")) + "</Added>");

            builder.Append("<LockData>" + item.IsLocked.ToString().ToLower() + "</LockData>");

            if (item.LockedFields.Count > 0)
            {
                builder.Append("<LockedFields>" + string.Join("|", item.LockedFields.Select(i => i.ToString()).ToArray()) + "</LockedFields>");
            }

            if (!string.IsNullOrEmpty(item.DisplayMediaType))
            {
                builder.Append("<Type>" + SecurityElement.Escape(item.DisplayMediaType) + "</Type>");
            }

            var hasCriticRating = item as IHasCriticRating;

            if (hasCriticRating != null)
            {
                if (hasCriticRating.CriticRating.HasValue)
                {
                    builder.Append("<CriticRating>" + SecurityElement.Escape(hasCriticRating.CriticRating.Value.ToString(UsCulture)) + "</CriticRating>");
                }

                if (!string.IsNullOrEmpty(hasCriticRating.CriticRatingSummary))
                {
                    builder.Append("<CriticRatingSummary><![CDATA[" + hasCriticRating.CriticRatingSummary + "]]></CriticRatingSummary>");
                }
            }

            if (!string.IsNullOrEmpty(item.Overview))
            {
                builder.Append("<Overview><![CDATA[" + item.Overview + "]]></Overview>");
            }

            var hasOriginalTitle = item as IHasOriginalTitle;

            if (hasOriginalTitle != null)
            {
                if (!string.IsNullOrEmpty(hasOriginalTitle.OriginalTitle))
                {
                    builder.Append("<OriginalTitle>" + SecurityElement.Escape(hasOriginalTitle.OriginalTitle) + "</OriginalTitle>");
                }
            }

            var hasShortOverview = item as IHasShortOverview;

            if (hasShortOverview != null)
            {
                if (!string.IsNullOrEmpty(hasShortOverview.ShortOverview))
                {
                    builder.Append("<ShortOverview><![CDATA[" + hasShortOverview.ShortOverview + "]]></ShortOverview>");
                }
            }

            if (!string.IsNullOrEmpty(item.CustomRating))
            {
                builder.Append("<CustomRating>" + SecurityElement.Escape(item.CustomRating) + "</CustomRating>");
            }

            if (!string.IsNullOrEmpty(item.Name) && !(item is Episode))
            {
                builder.Append("<LocalTitle>" + SecurityElement.Escape(item.Name) + "</LocalTitle>");
            }

            if (!string.IsNullOrEmpty(item.ForcedSortName))
            {
                builder.Append("<SortTitle>" + SecurityElement.Escape(item.ForcedSortName) + "</SortTitle>");
            }

            if (item.PremiereDate.HasValue)
            {
                if (item is Person)
                {
                    builder.Append("<BirthDate>" + SecurityElement.Escape(item.PremiereDate.Value.ToLocalTime().ToString("yyyy-MM-dd")) + "</BirthDate>");
                }
                else if (!(item is Episode))
                {
                    builder.Append("<PremiereDate>" + SecurityElement.Escape(item.PremiereDate.Value.ToLocalTime().ToString("yyyy-MM-dd")) + "</PremiereDate>");
                }
            }

            if (item.EndDate.HasValue)
            {
                if (item is Person)
                {
                    builder.Append("<DeathDate>" + SecurityElement.Escape(item.EndDate.Value.ToString("yyyy-MM-dd")) + "</DeathDate>");
                }
                else if (!(item is Episode))
                {
                    builder.Append("<EndDate>" + SecurityElement.Escape(item.EndDate.Value.ToString("yyyy-MM-dd")) + "</EndDate>");
                }
            }

            var hasTrailers = item as IHasTrailers;

            if (hasTrailers != null)
            {
                if (hasTrailers.RemoteTrailers.Count > 0)
                {
                    builder.Append("<Trailers>");

                    foreach (var trailer in hasTrailers.RemoteTrailers)
                    {
                        builder.Append("<Trailer>" + SecurityElement.Escape(trailer.Url) + "</Trailer>");
                    }

                    builder.Append("</Trailers>");
                }
            }

            var hasDisplayOrder = item as IHasDisplayOrder;

            if (hasDisplayOrder != null && !string.IsNullOrEmpty(hasDisplayOrder.DisplayOrder))
            {
                builder.Append("<DisplayOrder>" + SecurityElement.Escape(hasDisplayOrder.DisplayOrder) + "</DisplayOrder>");
            }

            var hasMetascore = item as IHasMetascore;

            if (hasMetascore != null && hasMetascore.Metascore.HasValue)
            {
                builder.Append("<Metascore>" + SecurityElement.Escape(hasMetascore.Metascore.Value.ToString(UsCulture)) + "</Metascore>");
            }

            var hasAwards = item as IHasAwards;

            if (hasAwards != null && !string.IsNullOrEmpty(hasAwards.AwardSummary))
            {
                builder.Append("<AwardSummary>" + SecurityElement.Escape(hasAwards.AwardSummary) + "</AwardSummary>");
            }

            var hasBudget = item as IHasBudget;

            if (hasBudget != null)
            {
                if (hasBudget.Budget.HasValue)
                {
                    builder.Append("<Budget>" + SecurityElement.Escape(hasBudget.Budget.Value.ToString(UsCulture)) + "</Budget>");
                }

                if (hasBudget.Revenue.HasValue)
                {
                    builder.Append("<Revenue>" + SecurityElement.Escape(hasBudget.Revenue.Value.ToString(UsCulture)) + "</Revenue>");
                }
            }

            if (item.CommunityRating.HasValue)
            {
                builder.Append("<Rating>" + SecurityElement.Escape(item.CommunityRating.Value.ToString(UsCulture)) + "</Rating>");
            }
            if (item.VoteCount.HasValue)
            {
                builder.Append("<VoteCount>" + SecurityElement.Escape(item.VoteCount.Value.ToString(UsCulture)) + "</VoteCount>");
            }

            if (item.ProductionYear.HasValue && !(item is Person))
            {
                builder.Append("<ProductionYear>" + SecurityElement.Escape(item.ProductionYear.Value.ToString(UsCulture)) + "</ProductionYear>");
            }

            if (!string.IsNullOrEmpty(item.HomePageUrl))
            {
                builder.Append("<Website>" + SecurityElement.Escape(item.HomePageUrl) + "</Website>");
            }

            var hasAspectRatio = item as IHasAspectRatio;

            if (hasAspectRatio != null)
            {
                if (!string.IsNullOrEmpty(hasAspectRatio.AspectRatio))
                {
                    builder.Append("<AspectRatio>" + SecurityElement.Escape(hasAspectRatio.AspectRatio) + "</AspectRatio>");
                }
            }

            if (!string.IsNullOrEmpty(item.PreferredMetadataLanguage))
            {
                builder.Append("<Language>" + SecurityElement.Escape(item.PreferredMetadataLanguage) + "</Language>");
            }
            if (!string.IsNullOrEmpty(item.PreferredMetadataCountryCode))
            {
                builder.Append("<CountryCode>" + SecurityElement.Escape(item.PreferredMetadataCountryCode) + "</CountryCode>");
            }

            // Use original runtime here, actual file runtime later in MediaInfo
            var runTimeTicks = item.RunTimeTicks;

            if (runTimeTicks.HasValue)
            {
                var timespan = TimeSpan.FromTicks(runTimeTicks.Value);

                builder.Append("<RunningTime>" + Convert.ToInt32(timespan.TotalMinutes).ToString(UsCulture) + "</RunningTime>");
            }

            var imdb = item.GetProviderId(MetadataProviders.Imdb);

            if (!string.IsNullOrEmpty(imdb))
            {
                builder.Append("<IMDB>" + SecurityElement.Escape(imdb) + "</IMDB>");
            }

            var tmdb = item.GetProviderId(MetadataProviders.Tmdb);

            if (!string.IsNullOrEmpty(tmdb))
            {
                builder.Append("<TMDbId>" + SecurityElement.Escape(tmdb) + "</TMDbId>");
            }

            if (!(item is Series))
            {
                var tvdb = item.GetProviderId(MetadataProviders.Tvdb);

                if (!string.IsNullOrEmpty(tvdb))
                {
                    builder.Append("<TvDbId>" + SecurityElement.Escape(tvdb) + "</TvDbId>");
                }
            }

            var externalId = item.GetProviderId(MetadataProviders.Tvcom);

            if (!string.IsNullOrEmpty(externalId))
            {
                builder.Append("<TVcomId>" + SecurityElement.Escape(externalId) + "</TVcomId>");
            }

            externalId = item.GetProviderId(MetadataProviders.RottenTomatoes);

            if (!string.IsNullOrEmpty(externalId))
            {
                builder.Append("<RottenTomatoesId>" + SecurityElement.Escape(externalId) + "</RottenTomatoesId>");
            }

            externalId = item.GetProviderId(MetadataProviders.Zap2It);

            if (!string.IsNullOrEmpty(externalId))
            {
                builder.Append("<Zap2ItId>" + SecurityElement.Escape(externalId) + "</Zap2ItId>");
            }

            externalId = item.GetProviderId(MetadataProviders.MusicBrainzAlbum);

            if (!string.IsNullOrEmpty(externalId))
            {
                builder.Append("<MusicBrainzAlbumId>" + SecurityElement.Escape(externalId) + "</MusicBrainzAlbumId>");
            }

            externalId = item.GetProviderId(MetadataProviders.MusicBrainzAlbumArtist);

            if (!string.IsNullOrEmpty(externalId))
            {
                builder.Append("<MusicBrainzAlbumArtistId>" + SecurityElement.Escape(externalId) + "</MusicBrainzAlbumArtistId>");
            }

            externalId = item.GetProviderId(MetadataProviders.MusicBrainzArtist);

            if (!string.IsNullOrEmpty(externalId))
            {
                builder.Append("<MusicBrainzArtistId>" + SecurityElement.Escape(externalId) + "</MusicBrainzArtistId>");
            }

            externalId = item.GetProviderId(MetadataProviders.MusicBrainzReleaseGroup);

            if (!string.IsNullOrEmpty(externalId))
            {
                builder.Append("<MusicBrainzReleaseGroupId>" + SecurityElement.Escape(externalId) + "</MusicBrainzReleaseGroupId>");
            }

            externalId = item.GetProviderId(MetadataProviders.Gamesdb);

            if (!string.IsNullOrEmpty(externalId))
            {
                builder.Append("<GamesDbId>" + SecurityElement.Escape(externalId) + "</GamesDbId>");
            }

            externalId = item.GetProviderId(MetadataProviders.TmdbCollection);

            if (!string.IsNullOrEmpty(externalId))
            {
                builder.Append("<TMDbCollectionId>" + SecurityElement.Escape(externalId) + "</TMDbCollectionId>");
            }

            externalId = item.GetProviderId(MetadataProviders.AudioDbArtist);

            if (!string.IsNullOrEmpty(externalId))
            {
                builder.Append("<AudioDbArtistId>" + SecurityElement.Escape(externalId) + "</AudioDbArtistId>");
            }

            externalId = item.GetProviderId(MetadataProviders.AudioDbAlbum);

            if (!string.IsNullOrEmpty(externalId))
            {
                builder.Append("<AudioDbAlbumId>" + SecurityElement.Escape(externalId) + "</AudioDbAlbumId>");
            }

            externalId = item.GetProviderId(MetadataProviders.TvRage);

            if (!string.IsNullOrEmpty(externalId))
            {
                builder.Append("<TVRageId>" + SecurityElement.Escape(externalId) + "</TVRageId>");
            }

            if (!string.IsNullOrWhiteSpace(item.Tagline))
            {
                builder.Append("<Taglines>");
                builder.Append("<Tagline>" + SecurityElement.Escape(item.Tagline) + "</Tagline>");
                builder.Append("</Taglines>");
            }

            if (item.Genres.Count > 0)
            {
                builder.Append("<Genres>");

                foreach (var genre in item.Genres)
                {
                    builder.Append("<Genre>" + SecurityElement.Escape(genre) + "</Genre>");
                }

                builder.Append("</Genres>");
            }

            if (item.Studios.Count > 0)
            {
                builder.Append("<Studios>");

                foreach (var studio in item.Studios)
                {
                    builder.Append("<Studio>" + SecurityElement.Escape(studio) + "</Studio>");
                }

                builder.Append("</Studios>");
            }

            if (item.Tags.Count > 0)
            {
                builder.Append("<Tags>");

                foreach (var tag in item.Tags)
                {
                    builder.Append("<Tag>" + SecurityElement.Escape(tag) + "</Tag>");
                }

                builder.Append("</Tags>");
            }

            if (item.Keywords.Count > 0)
            {
                builder.Append("<PlotKeywords>");

                foreach (var tag in item.Keywords)
                {
                    builder.Append("<PlotKeyword>" + SecurityElement.Escape(tag) + "</PlotKeyword>");
                }

                builder.Append("</PlotKeywords>");
            }

            var people = libraryManager.GetPeople(item);

            if (people.Count > 0)
            {
                builder.Append("<Persons>");

                foreach (var person in people)
                {
                    builder.Append("<Person>");
                    builder.Append("<Name>" + SecurityElement.Escape(person.Name) + "</Name>");
                    builder.Append("<Type>" + SecurityElement.Escape(person.Type) + "</Type>");
                    builder.Append("<Role>" + SecurityElement.Escape(person.Role) + "</Role>");

                    if (person.SortOrder.HasValue)
                    {
                        builder.Append("<SortOrder>" + SecurityElement.Escape(person.SortOrder.Value.ToString(UsCulture)) + "</SortOrder>");
                    }

                    builder.Append("</Person>");
                }

                builder.Append("</Persons>");
            }

            var boxset = item as BoxSet;

            if (boxset != null)
            {
                AddLinkedChildren(boxset, builder, "CollectionItems", "CollectionItem");
            }

            var playlist = item as Playlist;

            if (playlist != null)
            {
                AddLinkedChildren(playlist, builder, "PlaylistItems", "PlaylistItem");
            }

            var hasShares = item as IHasShares;

            if (hasShares != null)
            {
                AddShares(hasShares, builder);
            }
        }
        //? - not clear if it is suitable for any request
        static string get_CiscoIPPhoneResponse(params ResponseItem[] ris)
        {
            //XmlDocument xd = new XmlDocument();
            //XmlNode xn = xd.CreateNode()
            //xd.AppendChild()
            StringBuilder sb = new StringBuilder();

            sb.Append("<CiscoIPPhoneResponse>");
            sb.Append("<test>" + HttpService.Name + ":" + HttpService.Port + "</test>");
            foreach (ResponseItem ri in ris)
            {
                sb.Append("<ResponseItem Status=\"" + ri.Status + "\" Data=\"" + SecurityElement.Escape(ri.Data) + "\" URL=\"" + SecurityElement.Escape(ri.Url) + "\"/>");
            }
            sb.Append("</CiscoIPPhoneResponse>");
            return(sb.ToString());
        }
Пример #30
0
        protected virtual string ProcessCommonWebpartProperties(string webPartXml, WebPartDefinitionBase definition)
        {
            var xml = WebpartXmlExtensions.LoadWebpartXmlDocument(webPartXml)
                      .SetTitle(definition.Title)
                      .SetID(definition.Id);

            if (definition.Width.HasValue)
            {
                xml.SetWidth(definition.Width.Value);
            }

            if (definition.Height.HasValue)
            {
                xml.SetHeight(definition.Height.Value);
            }

            if (!string.IsNullOrEmpty(definition.Description))
            {
                xml.SetDescription(definition.Description);
            }

            if (!string.IsNullOrEmpty(definition.ImportErrorMessage))
            {
                xml.SetImportErrorMessage(definition.ImportErrorMessage);
            }

            if (!string.IsNullOrEmpty(definition.TitleUrl))
            {
                xml.SetTitleUrl(definition.TitleUrl);
            }

            if (!string.IsNullOrEmpty(definition.TitleIconImageUrl))
            {
                xml.SetTitleIconImageUrl(definition.TitleIconImageUrl);
            }

            if (!string.IsNullOrEmpty(definition.ChromeState))
            {
                xml.SetChromeState(definition.ChromeState);
            }

            if (!string.IsNullOrEmpty(definition.ChromeType))
            {
                var chromeType = string.Empty;

                if (xml.IsV3version())
                {
                    chromeType = WebPartChromeTypesConvertService.NormilizeValueToPartChromeTypes(definition.ChromeType);
                }
                else if (xml.IsV2version())
                {
                    chromeType = WebPartChromeTypesConvertService.NormilizeValueToFrameTypes(definition.ChromeType);
                }

                // SetChromeType() sets correct XML props depending on V2/V3 web part XML
                xml.SetChromeType(chromeType);
            }

            if (!string.IsNullOrEmpty(definition.ExportMode))
            {
                xml.SetExportMode(definition.ExportMode);
            }

            if (definition.ParameterBindings != null && definition.ParameterBindings.Count > 0)
            {
                var parameterBinder = new WebPartParameterBindingsOptions();

                foreach (var binding in definition.ParameterBindings)
                {
                    parameterBinder.AddParameterBinding(binding.Name, binding.Location);
                }

                var parameterBindingValue = SecurityElement.Escape(parameterBinder.ParameterBinding);
                xml.SetOrUpdateProperty("ParameterBindings", parameterBindingValue);
            }

            return(xml.ToString());
        }