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."); }
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(); }
public OverridesExtractor(IIncomingEmailMessage message, Config.InstanceConfig config) { _message = message; _config = config; InitDateBasedResolvers(); }
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(); }
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); }
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); } }
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; }
private static Config.InstanceConfig GetConfig() { var config = new Config.InstanceConfig { WorkItemSettings = new Config.WorkItemSettings { AddEmailHeaderToMessageDescription = true } }; return(config); }
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"); }
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); }
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"); }
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); }
/// <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()); }
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(); }
public AckEmailHandler(Config.InstanceConfig config) { _config = config; }
public OverridesExtractor(Config.InstanceConfig config) { _config = config; InitDateBasedResolvers(); }
/// <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) }); }