debian-mirror-gitlab/lib/gitlab/jira/http_client.rb

67 lines
2.2 KiB
Ruby
Raw Normal View History

2019-09-04 21:01:54 +05:30
# frozen_string_literal: true
module Gitlab
module Jira
# Gitlab JIRA HTTP client to be used with jira-ruby gem, this subclasses JIRA::HTTPClient.
# Uses Gitlab::HTTP to make requests to JIRA REST API.
2021-03-08 18:12:59 +05:30
# The parent class implementation can be found at: https://github.com/sumoheavy/jira-ruby/blob/master/lib/jira/http_client.rb
2019-09-04 21:01:54 +05:30
class HttpClient < JIRA::HttpClient
extend ::Gitlab::Utils::Override
override :request
def request(*args)
result = make_request(*args)
2020-06-23 00:09:42 +05:30
raise JIRA::HTTPError.new(result.response) unless result.response.is_a?(Net::HTTPSuccess)
2019-09-04 21:01:54 +05:30
result
end
override :make_cookie_auth_request
def make_cookie_auth_request
body = {
username: @options.delete(:username),
password: @options.delete(:password)
}.to_json
2019-12-21 20:55:43 +05:30
make_request(:post, @options[:context_path] + '/rest/auth/1/session', body, 'Content-Type' => 'application/json')
2019-09-04 21:01:54 +05:30
end
override :make_request
def make_request(http_method, path, body = '', headers = {})
request_params = { headers: headers }
request_params[:body] = body if body.present?
request_params[:headers][:Cookie] = get_cookies if options[:use_cookies]
request_params[:timeout] = options[:read_timeout] if options[:read_timeout]
request_params[:base_uri] = uri.to_s
request_params.merge!(auth_params)
result = Gitlab::HTTP.public_send(http_method, path, **request_params) # rubocop:disable GitlabSecurity/PublicSend
@authenticated = result.response.is_a?(Net::HTTPOK)
store_cookies(result) if options[:use_cookies]
result
end
2021-03-08 18:12:59 +05:30
private
2019-09-04 21:01:54 +05:30
def auth_params
return {} unless @options[:username] && @options[:password]
{
basic_auth: {
username: @options[:username],
password: @options[:password]
}
}
end
def get_cookies
cookie_array = @cookies.values.map { |cookie| "#{cookie.name}=#{cookie.value[0]}" }
cookie_array += Array(@options[:additional_cookies]) if @options.key?(:additional_cookies)
cookie_array.join('; ') if cookie_array.any?
end
end
end
end