diff options
Diffstat (limited to 'app/models/project_services/confluence_service.rb')
-rw-r--r-- | app/models/project_services/confluence_service.rb | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/app/models/project_services/confluence_service.rb b/app/models/project_services/confluence_service.rb deleted file mode 100644 index 8a6f4de540c..00000000000 --- a/app/models/project_services/confluence_service.rb +++ /dev/null @@ -1,91 +0,0 @@ -# frozen_string_literal: true - -class ConfluenceService < Service - include ActionView::Helpers::UrlHelper - - VALID_SCHEME_MATCH = %r{\Ahttps?\Z}.freeze - VALID_HOST_MATCH = %r{\A.+\.atlassian\.net\Z}.freeze - VALID_PATH_MATCH = %r{\A/wiki(/|\Z)}.freeze - - prop_accessor :confluence_url - - validates :confluence_url, presence: true, if: :activated? - validate :validate_confluence_url_is_cloud, if: :activated? - - after_commit :cache_project_has_confluence - - def self.to_param - 'confluence' - end - - def self.supported_events - %w() - end - - def title - s_('ConfluenceService|Confluence Workspace') - end - - def description - s_('ConfluenceService|Connect a Confluence Cloud Workspace to GitLab') - end - - def help - return unless project&.wiki_enabled? - - if activated? - wiki_url = project.wiki.web_url - - s_( - 'ConfluenceService|Your GitLab Wiki can be accessed here: %{wiki_link}. To re-enable your GitLab Wiki, disable this integration' % - { wiki_link: link_to(wiki_url, wiki_url) } - ).html_safe - else - s_('ConfluenceService|Enabling the Confluence Workspace will disable the default GitLab Wiki. Your GitLab Wiki data will be saved and you can always re-enable it later by turning off this integration').html_safe - end - end - - def fields - [ - { - type: 'text', - name: 'confluence_url', - title: 'Confluence Cloud Workspace URL', - placeholder: s_('ConfluenceService|The URL of the Confluence Workspace'), - required: true - } - ] - end - - def can_test? - false - end - - private - - def validate_confluence_url_is_cloud - unless confluence_uri_valid? - errors.add(:confluence_url, 'URL must be to a Confluence Cloud Workspace hosted on atlassian.net') - end - end - - def confluence_uri_valid? - return false unless confluence_url - - uri = URI.parse(confluence_url) - - (uri.scheme&.match(VALID_SCHEME_MATCH) && - uri.host&.match(VALID_HOST_MATCH) && - uri.path&.match(VALID_PATH_MATCH)).present? - - rescue URI::InvalidURIError - false - end - - def cache_project_has_confluence - return unless project && !project.destroyed? - - project.project_setting.save! unless project.project_setting.persisted? - project.project_setting.update_column(:has_confluence, active?) - end -end |