summaryrefslogtreecommitdiff
path: root/lib/gitlab_net.rb
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2018-12-13 10:23:17 +0000
committerDouwe Maan <douwe@gitlab.com>2018-12-13 10:23:17 +0000
commitdf89099ed954a6673bb8388ef74480940d40a759 (patch)
treec3db905b0890895303b2f1ca91f3ac02664ce48a /lib/gitlab_net.rb
parent528960c801aed81a977e7ce58a9706b4ea32ab4a (diff)
parent46e81d93ff74a98cf4f02735d310ee4417be0217 (diff)
downloadgitlab-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.rb26
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