private async void MaintainConnection() { if(!_shouldMaintainConnection) return; try { _connection = await _connector.Connect(AuthToken); var jiraResponse = new JiraResponse(_connection); _connection.OnMessageReceived += jiraResponse.HandleMessage; _connection.OnDisconnect += async () => { if (!_shouldMaintainConnection) return; Log.Warn("Disconnected, trying to reconnect"); await Task.Delay(500); MaintainConnection(); }; Log.Info("Connected"); } catch (Exception ex) { Log.Error("Failed to connect", ex); await Task.Delay(500); MaintainConnection(); } }
public IEnumerable <Ticket> ConvertJiraResponseToTickets(JiraResponse response) { return(response.Issues?.Select((issue) => new Ticket { Id = issue.Key, Summary = issue.Fields?.Summary, Assignee = issue.Fields?.Assignee != null ? new User { Name = issue.Fields?.Assignee?.DisplayName, Icon = issue.Fields?.Assignee?.AvatarUrls["16x16"], } : null, IssueType = new IssueType { Text = issue.Fields?.IssueType.Name, Icon = issue.Fields?.IssueType.IconUrl, }, Url = $"{_jiraBaseUrl}/browse/{issue.Key}", Updated = issue.Fields?.Updated, })); }
private static async void TryConnect() { try { Console.Out.WriteLine("Trying to connect"); var connection = await Connector.Connect("xoxb-21484668518-CKA3ci4Fo9iduVZKi6dinCnA"); Console.Out.WriteLine("Connected"); var jiraResponse = new JiraResponse(connection); connection.OnMessageReceived += jiraResponse.HandleMessage; connection.OnDisconnect += async () => { Console.Out.WriteLine("Disconnected"); await Task.Delay(500); TryConnect(); }; } catch (Exception ex) { Console.Out.WriteLine("Failed to connect"); await Task.Delay(500); TryConnect(); } }