2019-09-27 20:06:20 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
require_relative 'workhorse_helpers'
|
|
|
|
|
|
|
|
module LfsHttpHelpers
|
|
|
|
include WorkhorseHelpers
|
|
|
|
|
|
|
|
def authorize_ci_project
|
|
|
|
ActionController::HttpAuthentication::Basic.encode_credentials('gitlab-ci-token', build.token)
|
|
|
|
end
|
|
|
|
|
|
|
|
def authorize_user
|
|
|
|
ActionController::HttpAuthentication::Basic.encode_credentials(user.username, user.password)
|
|
|
|
end
|
|
|
|
|
|
|
|
def authorize_deploy_key
|
|
|
|
Gitlab::LfsToken.new(key).basic_encoding
|
|
|
|
end
|
|
|
|
|
|
|
|
def authorize_user_key
|
|
|
|
Gitlab::LfsToken.new(user).basic_encoding
|
|
|
|
end
|
|
|
|
|
|
|
|
def authorize_deploy_token
|
|
|
|
ActionController::HttpAuthentication::Basic.encode_credentials(deploy_token.username, deploy_token.token)
|
|
|
|
end
|
|
|
|
|
|
|
|
def post_lfs_json(url, body = nil, headers = nil)
|
|
|
|
params = body.try(:to_json)
|
|
|
|
headers = (headers || {}).merge('Content-Type' => LfsRequest::CONTENT_TYPE)
|
|
|
|
|
|
|
|
post(url, params: params, headers: headers)
|
|
|
|
end
|
|
|
|
|
2020-11-10 19:08:58 -05:00
|
|
|
def batch_url(container)
|
|
|
|
"#{container.http_url_to_repo}/info/lfs/objects/batch"
|
2019-09-27 20:06:20 -04:00
|
|
|
end
|
|
|
|
|
2020-11-10 19:08:58 -05:00
|
|
|
def objects_url(container, oid = nil, size = nil)
|
|
|
|
File.join(["#{container.http_url_to_repo}/gitlab-lfs/objects", oid, size].compact.map(&:to_s))
|
2019-09-27 20:06:20 -04:00
|
|
|
end
|
|
|
|
|
2020-11-10 19:08:58 -05:00
|
|
|
def authorize_url(container, oid, size)
|
|
|
|
File.join(objects_url(container, oid, size), 'authorize')
|
2019-09-27 20:06:20 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
def download_body(objects)
|
|
|
|
request_body('download', objects)
|
|
|
|
end
|
|
|
|
|
|
|
|
def upload_body(objects)
|
|
|
|
request_body('upload', objects)
|
|
|
|
end
|
|
|
|
|
|
|
|
def request_body(operation, objects)
|
|
|
|
objects = [objects] unless objects.is_a?(Array)
|
|
|
|
|
|
|
|
{
|
|
|
|
'operation' => operation,
|
|
|
|
'objects' => objects
|
|
|
|
}
|
|
|
|
end
|
|
|
|
end
|