Skip to content
Snippets Groups Projects

Add low level api cookie passing

Merged Zeff Morgan requested to merge qa/zm-api-cookie-update into master
+ 33
8
@@ -21,7 +21,7 @@ def post(url, payload, args = {})
}
RestClient::Request.execute(
default_args.merge(args)
default_args.merge(args).merge(with_canary(args))
)
rescue RestClient::ExceptionWithResponse => e
return_response_or_raise(e)
@@ -37,7 +37,7 @@ def get(url, args = {})
}
RestClient::Request.execute(
default_args.merge(args)
default_args.merge(args).merge(with_canary(args))
)
rescue RestClient::ExceptionWithResponse => e
return_response_or_raise(e)
@@ -46,11 +46,16 @@ def get(url, args = {})
def patch(url, payload = nil)
with_retry_on_too_many_requests do
RestClient::Request.execute(
default_args = {
method: :patch,
url: url,
payload: payload,
verify_ssl: false)
verify_ssl: false
}
RestClient::Request.execute(
default_args.merge(args).merge(with_canary(args))
)
rescue RestClient::ExceptionWithResponse => e
return_response_or_raise(e)
end
@@ -58,11 +63,16 @@ def patch(url, payload = nil)
def put(url, payload = nil)
with_retry_on_too_many_requests do
RestClient::Request.execute(
default_args = {
method: :put,
url: url,
payload: payload,
verify_ssl: false)
verify_ssl: false
}
RestClient::Request.execute(
default_args.merge(args).merge(with_canary(args))
)
rescue RestClient::ExceptionWithResponse => e
return_response_or_raise(e)
end
@@ -70,10 +80,15 @@ def put(url, payload = nil)
def delete(url)
with_retry_on_too_many_requests do
RestClient::Request.execute(
default_args = {
method: :delete,
url: url,
verify_ssl: false)
verify_ssl: false
}
RestClient::Request.execute(
default_args.merge(args).merge(with_canary(args))
)
rescue RestClient::ExceptionWithResponse => e
return_response_or_raise(e)
end
@@ -90,6 +105,16 @@ def head(url)
end
end
def with_canary(args)
# returns empty hash when `gitlab_canary` not present so chained #merge succeeds
+1
return {} unless ENV['QA_COOKIES']['gitlab_canary']
canary_value = { 'gitlab_canary' => ENV['QA_COOKIES']['gitlab_canary=true'] ? 'true' : 'false' }
# merges `gitlab_canary` cookie with existing cookies, not overwriting them
# or returns single cookie hash if no other cookies exist
args[:cookies] ? args[:cookies].merge!(canary_value) : { cookies: canary_value }
end
def with_retry_on_too_many_requests
response = nil
Loading