Welcome to mirror list, hosted at ThFree Co, Russian Federation.

lfs_http_helpers.rb « helpers « support « spec - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 91ed56b4d130e8031c2e0182656ec4dc2d3e6838 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# 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

  def batch_url(container)
    "#{container.http_url_to_repo}/info/lfs/objects/batch"
  end

  def objects_url(container, oid = nil, size = nil)
    File.join(["#{container.http_url_to_repo}/gitlab-lfs/objects", oid, size].compact.map(&:to_s))
  end

  def authorize_url(container, oid, size)
    File.join(objects_url(container, oid, size), 'authorize')
  end

  def download_body(objects)
    request_body('download', objects)
  end

  def upload_body(objects)
    request_body('upload', objects)
  end

  def request_body(operation, objects)
    {
      'operation' => operation,
      'objects' => Array.wrap(objects)
    }
  end
end