public void Post([FromBody] JiraEvent jiraEvent, [FromQuery(Name = "user_id")] string userId) { try { //string test = jiraEvent.Content.ReadAsStringAsync().Result; _logger.LogDebug("JiraWebhookEvent key: " + jiraEvent.Issue.Key); if (!userId.ToLower().Equals(ApiUser)) { string origin = GetOrigin(jiraEvent); if (isCreated(jiraEvent)) { _publisher.OnInstanceCreatedAsync(jiraEvent.Issue.Key, userId); } else if (isUpdated(jiraEvent)) { _publisher.OnInstanceUpdatedAsync(jiraEvent.Issue.Key, userId); } else if (isDeleted(jiraEvent)) { _publisher.OnInstanceDeletedAsync(jiraEvent.Issue.Key, userId); } } } catch (ProjectNotPresentException e) { _logger.LogDebug(e.Message); _logger.LogError(e.StackTrace); } catch (Exception e) { _logger.LogError("Unknown error occured", e.StackTrace); } }
public async Task ConnectAsync() { Debug.WriteLine("Connecting to SignalR"); Connection = new HubConnection(_config.SignalServiceUri, await GetConnectionString()); Connection.Closed += Connection_Closed; HubProxy = Connection.CreateHubProxy("topicsHub"); //Handle incoming event from server: use Invoke to write to console from SignalR's thread HubProxy.On <Topic>("NewTopic", (topic) => { //Ignore if topic was created by IssueConnector if (!EasyAccessMessageFilter.IsOriginalTopic(topic)) { return; } //Else publish the topic created at EasyAccess Debug.WriteLine("Original Easy Access topic created with id: " + topic.Id); _publisher.OnInstanceCreatedAsync(topic.Id, topic.AuthorId, topic.ProjectId); } ); HubProxy.On <Topic>("UpdatedTopic", (topic) => { //TODO, need a "loop-stopping-mechanism" to implement this properly. Debug.WriteLine("Updated topic: " + topic.Title); } ); HubProxy.On <Topic, string>("DeletedTopic", (topic, username) => { //TODO } ); HubProxy.On <Comment>("NewComment", (comment) => { Debug.WriteLine("New comment posted. Content: " + comment.Content + ". Status: " + comment.Status + ". Priority: " + comment.Priority); try { //Ignore if comment was created by issue connector if (comment.AuthorName.Equals("IssueConnector")) { return; } //If comment is created at another system than easy access, ignore if (!EasyAccessMessageFilter.IsOriginalComment(comment)) { return; } //If status or priority is updated, send a message with the updated topic if (comment.Status != null || comment.Priority != null) { _publisher.OnInstanceUpdatedAsync(comment.TopicGuid, null, comment.ProjectId); } //Ignore comment if content is empty if (comment.Content.Length > 0) { _publisher.OnCommentCreatedAsync(comment.TopicGuid, comment.Id, comment.AuthorId, comment.ProjectId); } } catch (Exception e) { Debug.WriteLine("Error publishing comment."); Debug.WriteLine(e.StackTrace); } } ); HubProxy.On <Comment>("DeletedComment", (comment) => { //TODO, this is probably not critical to implement at the moment } ); HubProxy.On <ViewPoint>("NewViewPoint", (viewpoint) => { Debug.WriteLine("New viewpoint created: " + viewpoint.Id); _publisher.OnViewpointCreatedAsync(viewpoint.TopicGuid, viewpoint.Id, viewpoint.ProjectId, viewpoint.CommentGuid); } ); HubProxy.On <ViewPoint>("DeletedViewPoint", (viewpoint) => { } ); try { await Connection.Start(); } catch (HttpRequestException) { Debug.WriteLine("Unable to connect to server: Start server before connecting clients."); //No connection return; } }