diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-06-18 11:18:50 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-06-18 11:18:50 +0000 |
commit | 8c7f4e9d5f36cff46365a7f8c4b9c21578c1e781 (patch) | |
tree | a77e7fe7a93de11213032ed4ab1f33a3db51b738 /app/services/jira/requests/base.rb | |
parent | 00b35af3db1abfe813a778f643dad221aad51fca (diff) | |
download | gitlab-ce-8c7f4e9d5f36cff46365a7f8c4b9c21578c1e781.tar.gz |
Add latest changes from gitlab-org/gitlab@13-1-stable-ee
Diffstat (limited to 'app/services/jira/requests/base.rb')
-rw-r--r-- | app/services/jira/requests/base.rb | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/app/services/jira/requests/base.rb b/app/services/jira/requests/base.rb new file mode 100644 index 00000000000..7521c7610cb --- /dev/null +++ b/app/services/jira/requests/base.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +module Jira + module Requests + class Base + include ProjectServicesLoggable + + PER_PAGE = 50 + + attr_reader :jira_service, :project, :limit, :start_at, :query + + def initialize(jira_service, limit: PER_PAGE, start_at: 0, query: nil) + @project = jira_service&.project + @jira_service = jira_service + + @limit = limit + @start_at = start_at + @query = query + end + + def execute + return ServiceResponse.error(message: _('Jira service not configured.')) unless jira_service&.active? + return ServiceResponse.success(payload: empty_payload) if limit.to_i <= 0 + + request + end + + private + + def client + @client ||= jira_service.client + end + + def request + response = client.get(url) + build_service_response(response) + rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, Errno::ECONNREFUSED, URI::InvalidURIError, JIRA::HTTPError, OpenSSL::SSL::SSLError => error + error_message = "Jira request error: #{error.message}" + log_error("Error sending message", client_url: client.options[:site], error: error_message) + ServiceResponse.error(message: error_message) + end + + def url + raise NotImplementedError + end + + def build_service_response(response) + raise NotImplementedError + end + end + end +end |