Exemplo n.º 1
0
        /// <summary>
        /// <see cref="Microsoft.Samples.NLayerApp.DistributedServices.MainModule.IMainModuleService"/>
        /// </summary>
        /// <param name="publisherInformation"><see cref="Microsoft.Samples.NLayerApp.DistributedServices.MainModule.IMainModuleService"/></param>
        /// <returns><see cref="Microsoft.Samples.NLayerApp.DistributedServices.MainModule.IMainModuleService"/></returns>
        public List <Product> GetProductByPublisherInformation(PublisherInformation publisherInformation)
        {
            //Resolve root dependencies and perform query
            ISalesManagementService salesManagement = IoCFactory.Instance.CurrentContainer.Resolve <ISalesManagementService>();

            return(salesManagement.FindProductBySpecification(publisherInformation.PublisherName,
                                                              publisherInformation.Description));
        }
Exemplo n.º 2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AssemblyGeneratorContext"/> class.
 /// </summary>
 /// <param name="process">The process.</param>
 /// <param name="assemblyType">The assembly type.</param>
 /// <param name="pubInfo">The pub info.</param>
 public AssemblyGeneratorContext(
     IProcessDefinition process,
     AssemblyType assemblyType = AssemblyType.Client,
     PublisherInformation pubInfo = null)
 {
     PubInfo = pubInfo;
     AssemblyType = assemblyType;
     Process = process;
 }
Exemplo n.º 3
0
        public RuleResult Validate(IReadOnlyList <ISignature> graph, SignatureLogger verboseWriter, CheckConfiguration configuration)
        {
            var signatures = graph.VisitAll(SignatureKind.AnySignature | SignatureKind.Deep);
            var result     = RuleResult.Pass;

            foreach (var signature in signatures)
            {
                PublisherInformation info = null;
                foreach (var attribute in signature.SignedAttributes)
                {
                    if (attribute.Oid.Value == KnownOids.OpusInfo)
                    {
                        info = new PublisherInformation(attribute.Values[0]);
                        break;
                    }
                }
                if (info == null)
                {
                    result = RuleResult.Fail;
                    verboseWriter.LogSignatureMessage(signature, "Signature does not have any publisher information.");
                }
                else
                {
                    if (string.IsNullOrWhiteSpace(info.Description))
                    {
                        result = RuleResult.Fail;
                        verboseWriter.LogSignatureMessage(signature, "Signature does not have an accompanying description.");
                    }

                    if (string.IsNullOrWhiteSpace(info.UrlLink))
                    {
                        result = RuleResult.Fail;
                        verboseWriter.LogSignatureMessage(signature, "Signature does not have an accompanying URL.");
                    }
                    else
                    {
                        Uri uri;
                        if (!Uri.TryCreate(info.UrlLink, UriKind.Absolute, out uri))
                        {
                            result = RuleResult.Fail;
                            verboseWriter.LogSignatureMessage(signature, "Signature's accompanying URL is not a valid URI.");
                        }
                    }
                }
            }
            return(result);
        }
Exemplo n.º 4
0
        public RuleResult Validate(IReadOnlyList <ICmsSignature> graph, SignatureLogger verboseWriter, CheckConfiguration configuration)
        {
            var signatures = graph.VisitAll(SignatureKind.AnySignature, deep: true);
            var result     = RuleResult.Pass;

            foreach (var signature in signatures)
            {
                PublisherInformation?info = null;
                foreach (var attribute in signature.SignedAttributes)
                {
                    if (attribute.Oid.Value == KnownOids.OpusInfo)
                    {
                        info = new PublisherInformation(attribute.Values[0]);
                        break;
                    }
                }
                if (info == null || info.IsEmpty)
                {
                    result = RuleResult.Fail;
                    verboseWriter.LogSignatureMessage(signature, "Signature does not have any publisher information.");
                }
                else
                {
                    if (string.IsNullOrWhiteSpace(info.UrlLink))
                    {
                        result = RuleResult.Fail;
                        verboseWriter.LogSignatureMessage(signature, "Signature does not have an accompanying URL.");
                    }
                    else if (!info.UrlLink.StartsWith(Uri.UriSchemeHttps, StringComparison.OrdinalIgnoreCase))
                    {
                        result = RuleResult.Fail;
                        verboseWriter.LogSignatureMessage(signature, $"Signature's publisher information URL \"{info.UrlLink}\" does not use the secure HTTPS scheme.");
                    }
                }
            }
            return(result);
        }
Exemplo n.º 5
0
 /// <summary>
 /// Generates the business object code.
 /// </summary>
 /// <param name="process">The process.</param>
 /// <param name="assemblyType">Type of the assembly.</param>
 /// <param name="pubInfo">The pub information.</param>
 /// <returns>System.String.</returns>
 public string GenerateBusinessObjectCode(IProcessDefinition process, AssemblyType assemblyType, PublisherInformation pubInfo = null)
 {
     return
         AssemblyGenerators.Where(
             a =>
             a.Metadata.GeneratorType == assemblyType &&
             (assemblyType == AssemblyType.Client || a.Metadata.DatabaseType == DatabaseType)).Select(
                 generator => generator.Value.GenerateCode(process)).FirstOrDefault();
 }
Exemplo n.º 6
0
        /// <summary>
        /// Generates the business object assembly.
        /// </summary>
        /// <param name="process">The process.</param>
        /// <param name="assemblyType">Type of the assembly.</param>
        /// <param name="pubInfo">The pub information.</param>
        /// <param name="settings">The settings.</param>
        /// <returns>IList{ErrorInfo}.</returns>
        public IList<ErrorInfo> GenerateBusinessObjectAssembly(IProcessDefinition process,
                                                               AssemblyType assemblyType,
                                                               PublisherInformation pubInfo = null,
                                                               GenerationSettings settings = GenerationSettings.GenerateAndCompile)
        {
            var errors = new List<ErrorInfo>();

            foreach (
                var errorList in
                    AssemblyGenerators.Where(a => a.Metadata.GeneratorType == assemblyType && (assemblyType == AssemblyType.Client || a.Metadata.DatabaseType == DatabaseType))
                                      .Select(generator => generator.Value.GenerateBusinessObjectAssembly(new AssemblyGeneratorContext(process, assemblyType, pubInfo)))
                                      .Where(errorList => errorList != null && errorList.Count > 0))
                errors.AddRange(errorList);

            return errors;
        }
Exemplo n.º 7
0
        public TestResult Validate(IReadOnlyList <ICmsSignature> graph, SignatureLogger verboseWriter, CheckConfiguration configuration)
        {
            var signatures = graph.VisitAll(SignatureKind.AnySignature, deep: true);
            var result     = TestResult.Pass;

            foreach (var signature in signatures)
            {
                link        = "";
                Msg         = "";
                description = "";
                link        = "";
                PublisherInformation info = null;
                foreach (var attribute in signature.SignedAttributes)
                {
                    if (attribute.Oid.Value == KnownOids.OpusInfo)
                    {
                        info = new PublisherInformation(attribute.Values[0]);
                        break;
                    }
                }
                if (info == null || info.IsEmpty)
                {
                    result = TestResult.Fail;
                    Msg    = "Signature does not have any publisher information.";
                    verboseWriter.LogSignatureMessage(signature, "Signature does not have any publisher information.");
                }
                else
                {
                    if (string.IsNullOrWhiteSpace(info.Description))
                    {
                        result = TestResult.Fail;
                        Msg    = "Signature does not have an accompanying description.";
                        verboseWriter.LogSignatureMessage(signature, "Signature does not have an accompanying description.");
                    }

                    if (string.IsNullOrWhiteSpace(info.UrlLink))
                    {
                        result = TestResult.Fail;
                        Msg    = "Signature does not have an accompanying URL.";
                        verboseWriter.LogSignatureMessage(signature, "Signature does not have an accompanying URL.");
                    }
                    else
                    {
                        if (!Uri.TryCreate(info.UrlLink, UriKind.Absolute, out _))
                        {
                            result = TestResult.Fail;
                            Msg    = "Signature's accompanying URL is not a valid URI.";
                            verboseWriter.LogSignatureMessage(signature, "Signature's accompanying URL is not a valid URI.");
                        }
                    }
                }
                if (!string.IsNullOrWhiteSpace(info.UrlLink))
                {
                    link = info.UrlLink;
                }
                if (!string.IsNullOrWhiteSpace(info.Description))
                {
                    description = info.Description;
                }
                DBConnect.InsertPublisherTable(Program.appName, Program.fileName, link, signature.Certificate.Thumbprint, description, Msg);
            }
            return(result);
        }