Ejemplo n.º 1
0
        public IcmWorkItemManagment(Config.InstanceConfig instanceConfig)
        {
            Logger.InfoFormat("Creating IcM work item manager...");
            ValidateConfig(instanceConfig);
            config           = instanceConfig;
            incidentDefaults = config.IncidentDefaults;

            X509Certificate certificate = RetrieveCertificate(CertThumbprint);

            dataServiceClient = new DataServiceODataClient(
                new Uri(config.IcmClientConfig.OdataServiceBaseUri),
                config,
                certificate);

            connectorClient = ConnectToIcmInstance();
            if (connectorClient == null)
            {
                Logger.ErrorFormat("Cannot initialize IcM Webservice.");
                throw new Exception("Cannot initialize IcM Webservice.");
            }

            InitWorkItemsCache();

            nameResolver = InitNameResolver();
            dateHolder   = DateTime.UtcNow;
            Logger.InfoFormat("Completed creating IcM work item manager.");
        }
Ejemplo n.º 2
0
        public TFSWorkItemManager(Config.InstanceConfig config)
        {
            ValidateConfig(config);

            _config = config;

            // Init TFS service objects
            _tfsServer = ConnectToTfsCollection();
            Logger.InfoFormat("Connected to TFS. Getting TFS WorkItemStore");

            _tfsStore = _tfsServer.GetService <WorkItemStore>();

            if (_tfsStore == null)
            {
                Logger.ErrorFormat("Cannot initialize TFS Store");
                throw new Exception("Cannot initialize TFS Store");
            }

            Logger.InfoFormat("Geting TFS Project");
            _tfsProject = _tfsStore.Projects[config.TfsServerConfig.Project];

            Logger.InfoFormat("Initializing WorkItems Cache");
            InitWorkItemsCache();

            _nameResolver = InitNameResolver();
        }
Ejemplo n.º 3
0
        public OverridesExtractor(IIncomingEmailMessage message, Config.InstanceConfig config)
        {
            _message = message;
            _config  = config;

            InitDateBasedResolvers();
        }
Ejemplo n.º 4
0
        public TFSWorkItemManager(Config.InstanceConfig config)
        {
            ValidateConfig(config);

            _config = config;

            // Init TFS service objects
            _tfsServer = ConnectToTfsCollection();
            Logger.InfoFormat("Connected to TFS. Getting TFS WorkItemStore");

            _tfsStore = _tfsServer.GetService<WorkItemStore>();

            if (_tfsStore == null)
            {
                Logger.ErrorFormat("Cannot initialize TFS Store");
                throw new Exception("Cannot initialize TFS Store");
            }

            Logger.InfoFormat("Geting TFS Project");
            _tfsProject = _tfsStore.Projects[config.TfsServerConfig.Project];

            Logger.InfoFormat("Initializing WorkItems Cache");
            InitWorkItemsCache();

            _nameResolver = InitNameResolver();
        }
Ejemplo n.º 5
0
 public SimpleBugStrategy(Config.InstanceConfig config, IWorkItemManager workItemManager)
 {
     _config = config;
     _workItemManager = workItemManager;
     _ackEmailHandler = new AckEmailHandler(config);
     _messageToWorkItemMapper = new MessageToWorkItemMapper(
         _config.EmailSettings.AppendOnlyEmailTitleRegex,
         _config.EmailSettings.AppendOnlyEmailBodyRegex,
         _workItemManager.WorkItemsCache);
 }
 public SimpleBugStrategy(Config.InstanceConfig config, IWorkItemManager workItemManager)
 {
     _config                  = config;
     _workItemManager         = workItemManager;
     _ackEmailHandler         = new AckEmailHandler(config);
     _messageToWorkItemMapper = new MessageToWorkItemMapper(
         _config.EmailSettings.AppendOnlyEmailTitleRegex,
         _config.EmailSettings.AppendOnlyEmailBodyRegex,
         _workItemManager.WorkItemsCache);
 }
Ejemplo n.º 7
0
        private static void ProcessMailbox(MailManagerMock mailManager, Config.InstanceConfig instanceConfig,
                                           WorkItemManagerMock workItemManagerMock)
        {
            var sbs = new SimpleBugStrategy(instanceConfig, workItemManagerMock);

            foreach (var incomingEmailMessage in mailManager.ReadMessages())
            {
                sbs.ProcessInboxMessage(incomingEmailMessage);
            }
        }
Ejemplo n.º 8
0
        public DataServiceODataClient(Uri serviceEndpointBaseUri, Config.InstanceConfig config, X509Certificate certificate)
        {
            this.odataClient = new Container(serviceEndpointBaseUri)
            {
                IgnoreMissingProperties = true
            };
            this.odataClient.SendingRequest2 += OdataClientOnSendingRequest2;

            this.config      = config;
            this.certificate = certificate;
        }
Ejemplo n.º 9
0
        private static Config.InstanceConfig GetConfig()
        {
            var config = new Config.InstanceConfig
            {
                WorkItemSettings = new Config.WorkItemSettings
                {
                    AddEmailHeaderToMessageDescription = true
                }
            };

            return(config);
        }
Ejemplo n.º 10
0
        private static void ValidateConfig(Config.InstanceConfig config)
        {
            if (config == null)
            {
                throw new ArgumentNullException("config");
            }

            // Temp variable used for shorthand writing below
            var icmConfig = config.IcmClientConfig;

            ValidateConfigString(icmConfig.IcmUri, "IcmClientConfig.IcmUri");
            ValidateConfigString(icmConfig.IcmTenant, "IcmClientConfig.IcmTenant");
            ValidateConfigString(
                config.WorkItemSettings.ConversationIndexFieldName,
                "WorkItemSettings.ConversationIndexFieldName");
        }
Ejemplo n.º 11
0
        public static string GetHtmlBody(Config.InstanceConfig config, IIncomingEmailMessage message, string htmlBody)
        {
            string newHtmlBody = "";

            if (config.WorkItemSettings.AddEmailHeaderToMessageDescription)
            {
                var extractor = new MailHeaderExtractor(message);
                newHtmlBody = Regex.Replace(htmlBody, @"(<body.*?>)", "$1" + extractor.GetHeaderHtml());
            }
            else
            {
                newHtmlBody = htmlBody;
            }

            return(newHtmlBody);
        }
Ejemplo n.º 12
0
        private static void ValidateConfig(Config.InstanceConfig config)
        {
            if (config == null)
            {
                throw new ArgumentNullException("config");
            }

            // Temp variable used for shorthand writing below
            var tfsConfig = config.TfsServerConfig;

            ValidateConfigString(tfsConfig.CollectionUri, "TfsServerConfig.CollectionUri");
            ValidateConfigString(tfsConfig.Project, "TfsServerConfig.Project");
            ValidateConfigString(tfsConfig.WorkItemTemplate, "TfsServerConfig.WorkItemTemplate");
            ValidateConfigString(tfsConfig.CacheQuery, "TfsServerConfig.CacheQuery");
            ValidateConfigString(tfsConfig.NamesListFieldName, "TfsServerConfig.NamesListFieldName");
            ValidateConfigString(config.WorkItemSettings.ConversationIndexFieldName,
                                 "WorkItemSettings.ConversationIndexFieldName");
        }
Ejemplo n.º 13
0
        private static Config.InstanceConfig GetConfig()
        {
            var config = new Config.InstanceConfig
            {
                WorkItemSettings = new Config.WorkItemSettings
                {
                    Mnemonics          = new List <Config.MnemonicDefinition>(),
                    RecipientOverrides = new List <Config.RecipientOverrideDefinition>(),
                    DateBasedOverrides = new List <Config.DateBasedFieldOverrides>()
                },
                EmailSettings = new Config.EmailSettings
                {
                    ExplicitOverridesRegex = @"###\s*(?<fieldName>[^:]*):\s*(?<value>.*)"
                }
            };

            return(config);
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Produce text content by applying replacements on the template.
        /// </summary>
        /// <param name="workItemFields">work item for which the content is generated</param>
        /// <param name="config">the instance config</param>
        /// <returns>text content produced by applying replacements for placeholders</returns>
        public string Apply(IWorkItemFields workItemFields, Config.InstanceConfig config)
        {
            var bodyBuilder         = new StringBuilder(_text);
            var placeholders        = AckEmailPlaceholder.GetPlaceholders(_text);
            var specialReplacements = GetSpecialReplacements(workItemFields, config);

            foreach (var placeholder in placeholders)
            {
                var fieldNameUpper = placeholder.Field.ToUpper();
                var fieldValue     = specialReplacements.ContainsKey(fieldNameUpper)
                    ? specialReplacements[fieldNameUpper]
                    : workItemFields.GetFieldValue(placeholder.Field);
                var value = string.IsNullOrWhiteSpace(fieldValue) ? placeholder.DefaultValue : fieldValue;
                Logger.DebugFormat("Replacing placeholder {0} with value '{1}'", placeholder.Text, value);
                bodyBuilder.Replace(placeholder.Text, value);
            }

            return(bodyBuilder.ToString());
        }
Ejemplo n.º 15
0
        public TFSWorkItemManager(Config.InstanceConfig config)
        {
            ValidateConfig(config);

            _config = config;

            // Init TFS service objects
            _tfsServer = ConnectToTfsCollection();
            Logger.InfoFormat("Connected to TFS. Getting TFS WorkItemStore");

            _tfsStore = _config.TfsServerConfig.BypassRules
                ? new WorkItemStore(_tfsServer, WorkItemStoreFlags.BypassRules)
                : _tfsServer.GetService <WorkItemStore>();

            if (_tfsStore == null)
            {
                Logger.ErrorFormat("Cannot initialize TFS Store");
                throw new Exception("Cannot initialize TFS Store");
            }

            Logger.InfoFormat("Getting TFS Project");
            _tfsProject = _tfsStore.Projects[config.TfsServerConfig.Project];


            Logger.InfoFormat("Getting Team Config");
            var teamConfig = _tfsStore.TeamProjectCollection.GetService <Microsoft.TeamFoundation.ProcessConfiguration.Client.TeamSettingsConfigurationService>()
                             .GetTeamConfigurationsForUser(new[] { _tfsProject.Uri.ToString() });

            if (teamConfig != null)
            {
                _teamSettings = teamConfig.First().TeamSettings;
            }

            Logger.InfoFormat("Initializing WorkItems Cache");
            InitWorkItemsCache();

            _nameResolver = InitNameResolver();
        }
Ejemplo n.º 16
0
 public AckEmailHandler(Config.InstanceConfig config)
 {
     _config = config;
 }
Ejemplo n.º 17
0
        public OverridesExtractor(Config.InstanceConfig config)
        {
            _config = config;

            InitDateBasedResolvers();
        }
Ejemplo n.º 18
0
 public AckEmailHandler(Config.InstanceConfig config)
 {
     _config = config;
 }
Ejemplo n.º 19
0
        public OverridesExtractor(Config.InstanceConfig config)
        {
            _config = config;

            InitDateBasedResolvers();
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Get replacements to use for special placeholders. This includes provider independent placeholders for standard
        /// work item fields as well as global placeholders that are not work item specific.
        /// </summary>
        /// <param name="workItemFields">work item for which template is to be generated</param>
        /// <param name="config">the instance config</param>
        /// <returns></returns>
        private IDictionary <string, string> GetSpecialReplacements(IWorkItemFields workItemFields, Config.InstanceConfig config)
        {
            return(new Dictionary <string, string>
            {
                // Non-work item fields.
                ["MAIL2BUGALIAS"] = EncodeHtml(config.EmailSettings.Recipients?.Replace(';', '/')),

                // TFS specific fields.
                ["TFSWORKITEMTEMPLATE"] = EncodeHtml(config.TfsServerConfig.WorkItemTemplate),
                ["TFSCOLLECTIONURI"] = EncodeHtml(config.TfsServerConfig.CollectionUri),
                ["TFSPROJECT"] = EncodeHtml(config.TfsServerConfig.Project),

                // Special work item fields.
                ["BUGID"] = EncodeHtml(workItemFields.ID),  // for backward compat
                [AckEmailPlaceholder.ID] = EncodeHtml(workItemFields.ID),
                [AckEmailPlaceholder.Title] = EncodeHtml(workItemFields.Title),
                [AckEmailPlaceholder.Owner] = EncodeHtml(workItemFields.Owner),
                [AckEmailPlaceholder.State] = EncodeHtml(workItemFields.State)
            });
        }