diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-03-18 23:02:30 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-03-18 23:02:30 +0300 |
commit | 41fe97390ceddf945f3d967b8fdb3de4c66b7dea (patch) | |
tree | 9c8d89a8624828992f06d892cd2f43818ff5dcc8 /lib/gitlab/harbor | |
parent | 0804d2dc31052fb45a1efecedc8e06ce9bc32862 (diff) |
Add latest changes from gitlab-org/gitlab@14-9-stable-eev14.9.0-rc42
Diffstat (limited to 'lib/gitlab/harbor')
-rw-r--r-- | lib/gitlab/harbor/client.rb | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/lib/gitlab/harbor/client.rb b/lib/gitlab/harbor/client.rb new file mode 100644 index 00000000000..06142ae2b40 --- /dev/null +++ b/lib/gitlab/harbor/client.rb @@ -0,0 +1,43 @@ +# 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 |