diff options
author | Douwe Maan <douwe@gitlab.com> | 2018-12-13 10:23:17 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2018-12-13 10:23:17 +0000 |
commit | df89099ed954a6673bb8388ef74480940d40a759 (patch) | |
tree | c3db905b0890895303b2f1ca91f3ac02664ce48a /lib/gitlab_net.rb | |
parent | 528960c801aed81a977e7ce58a9706b4ea32ab4a (diff) | |
parent | 46e81d93ff74a98cf4f02735d310ee4417be0217 (diff) | |
download | gitlab-shell-df89099ed954a6673bb8388ef74480940d40a759.tar.gz |
Merge branch 'sh-bump-ruby-version' into 'master'
Upgrade to Ruby 2.5.3
See merge request gitlab-org/gitlab-shell!257
Diffstat (limited to 'lib/gitlab_net.rb')
-rw-r--r-- | lib/gitlab_net.rb | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/lib/gitlab_net.rb b/lib/gitlab_net.rb index cae3bdb..1c2954c 100644 --- a/lib/gitlab_net.rb +++ b/lib/gitlab_net.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'net/http' require 'openssl' require 'json' @@ -11,7 +13,7 @@ class GitlabNet # rubocop:disable Metrics/ClassLength include HTTPHelper CHECK_TIMEOUT = 5 - API_INACCESSIBLE_MESSAGE = 'API is not accessible'.freeze + API_INACCESSIBLE_MESSAGE = 'API is not accessible' def check_access(cmd, gl_repository, repo, who, changes, protocol, env: {}) changes = changes.join("\n") unless changes.is_a?(String) @@ -76,8 +78,8 @@ class GitlabNet # rubocop:disable Metrics/ClassLength def merge_request_urls(gl_repository, repo_path, changes) changes = changes.join("\n") unless changes.is_a?(String) changes = changes.encode('UTF-8', 'ASCII', invalid: :replace, replace: '') - url = "#{internal_api_endpoint}/merge_request_urls?project=#{URI.escape(repo_path)}&changes=#{URI.escape(changes)}" - url += "&gl_repository=#{URI.escape(gl_repository)}" if gl_repository + url = "#{internal_api_endpoint}/merge_request_urls?project=#{uri_escape(repo_path)}&changes=#{uri_escape(changes)}" + url += "&gl_repository=#{uri_escape(gl_repository)}" if gl_repository resp = get(url) if resp.code == '200' @@ -85,7 +87,7 @@ class GitlabNet # rubocop:disable Metrics/ClassLength else [] end - rescue + rescue StandardError [] end @@ -94,9 +96,9 @@ class GitlabNet # rubocop:disable Metrics/ClassLength end def authorized_key(key) - resp = get("#{internal_api_endpoint}/authorized_keys?key=#{URI.escape(key, '+/=')}") + resp = get("#{internal_api_endpoint}/authorized_keys?key=#{URI.escape(key, '+/=')}") # rubocop:disable Lint/UriEscapeUnescape JSON.parse(resp.body) if resp.code == "200" - rescue + rescue StandardError nil end @@ -106,7 +108,7 @@ class GitlabNet # rubocop:disable Metrics/ClassLength resp = post("#{internal_api_endpoint}/two_factor_recovery_codes", id_sym => id) JSON.parse(resp.body) if resp.code == '200' - rescue + rescue StandardError {} end @@ -115,7 +117,7 @@ class GitlabNet # rubocop:disable Metrics/ClassLength resp = post("#{internal_api_endpoint}/notify_post_receive", params) resp.code == '200' - rescue + rescue StandardError false end @@ -143,11 +145,15 @@ class GitlabNet # rubocop:disable Metrics/ClassLength def self.parse_who(who) if who.start_with?("key-") value = who.gsub("key-", "") + raise ArgumentError, "who='#{who}' is invalid!" unless value =~ /\A[0-9]+\z/ + [:key_id, 'key_id', value] elsif who.start_with?("user-") value = who.gsub("user-", "") + raise ArgumentError, "who='#{who}' is invalid!" unless value =~ /\A[0-9]+\z/ + [:user_id, 'user_id', value] elsif who.start_with?("username-") [:username, 'username', who.gsub("username-", "")] @@ -161,4 +167,8 @@ class GitlabNet # rubocop:disable Metrics/ClassLength def sanitize_path(repo) repo.delete("'") end + + def uri_escape(str) + URI.escape(str) # rubocop:disable Lint/UriEscapeUnescape + end end |