diff options
Diffstat (limited to 'app/models/project_services/jira_service.rb')
-rw-r--r-- | app/models/project_services/jira_service.rb | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/app/models/project_services/jira_service.rb b/app/models/project_services/jira_service.rb index 2caf6179ef8..aeded715893 100644 --- a/app/models/project_services/jira_service.rb +++ b/app/models/project_services/jira_service.rb @@ -128,15 +128,9 @@ class JiraService < IssueTrackerService return unless jira_issue.present? - project = self.project - noteable_name = noteable.model_name.singular - noteable_id = if noteable.is_a?(Commit) - noteable.id - else - noteable.iid - end - - entity_url = build_entity_url(noteable_name.to_sym, noteable_id) + noteable_id = noteable.respond_to?(:iid) ? noteable.iid : noteable.id + noteable_type = noteable_name(noteable) + entity_url = build_entity_url(noteable_type, noteable_id) data = { user: { @@ -144,11 +138,11 @@ class JiraService < IssueTrackerService url: resource_url(user_path(author)), }, project: { - name: project.path_with_namespace, - url: resource_url(namespace_project_path(project.namespace, project)) + name: self.project.path_with_namespace, + url: resource_url(namespace_project_path(project.namespace, self.project)) }, entity: { - name: noteable_name.humanize.downcase, + name: noteable_type.humanize.downcase, url: entity_url, title: noteable.title } @@ -285,18 +279,26 @@ class JiraService < IssueTrackerService "#{Settings.gitlab.base_url.chomp("/")}#{resource}" end - def build_entity_url(entity_name, entity_id) + def build_entity_url(noteable_type, entity_id) polymorphic_url( [ self.project.namespace.becomes(Namespace), self.project, - entity_name + noteable_type.to_sym ], id: entity_id, host: Settings.gitlab.base_url ) end + def noteable_name(noteable) + name = noteable.model_name.singular + + # ProjectSnippet inherits from Snippet class so it causes + # routing error building the URL. + name == "project_snippet" ? "snippet" : name + end + # Handle errors when doing JIRA API calls def jira_request yield |