43 lines
990 B
Ruby
43 lines
990 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module Harbor
|
|
class Client
|
|
Error = Class.new(StandardError)
|
|
ConfigError = Class.new(Error)
|
|
|
|
attr_reader :integration
|
|
|
|
def initialize(integration)
|
|
raise ConfigError, 'Please check your integration configuration.' unless integration
|
|
|
|
@integration = integration
|
|
end
|
|
|
|
def ping
|
|
options = { headers: headers.merge!('Accept': 'text/plain') }
|
|
response = Gitlab::HTTP.get(url('ping'), options)
|
|
|
|
{ success: response.success? }
|
|
end
|
|
|
|
private
|
|
|
|
def url(path)
|
|
Gitlab::Utils.append_path(base_url, path)
|
|
end
|
|
|
|
def base_url
|
|
Gitlab::Utils.append_path(integration.url, '/api/v2.0/')
|
|
end
|
|
|
|
def headers
|
|
auth = Base64.strict_encode64("#{integration.username}:#{integration.password}")
|
|
{
|
|
'Content-Type': 'application/json',
|
|
'Authorization': "Basic #{auth}"
|
|
}
|
|
end
|
|
end
|
|
end
|
|
end
|