Module: Ci::API::Helpers

Defined in:
lib/ci/api/helpers.rb

Constant Summary collapse

BUILD_TOKEN_HEADER =
"HTTP_BUILD_TOKEN"
BUILD_TOKEN_PARAM =
:token
UPDATE_RUNNER_EVERY =
60

Instance Method Summary collapse

Instance Method Details

#authenticate_build_token!(build) ⇒ Object


16
17
18
19
# File 'lib/ci/api/helpers.rb', line 16

def authenticate_build_token!(build)
  token = (params[BUILD_TOKEN_PARAM] || env[BUILD_TOKEN_HEADER]).to_s
  forbidden! unless token && build.valid_token?(token)
end

#authenticate_runner!Object


12
13
14
# File 'lib/ci/api/helpers.rb', line 12

def authenticate_runner!
  forbidden! unless current_runner
end

#authenticate_runners!Object


8
9
10
# File 'lib/ci/api/helpers.rb', line 8

def authenticate_runners!
  forbidden! unless runner_registration_token_valid?
end

#current_runnerObject


33
34
35
# File 'lib/ci/api/helpers.rb', line 33

def current_runner
  @runner ||= Runner.find_by_token(params[:token].to_s)
end

#get_runner_version_from_paramsObject


37
38
39
40
# File 'lib/ci/api/helpers.rb', line 37

def get_runner_version_from_params
  return unless params["info"].present?
  attributes_for_keys(["name", "version", "revision", "platform", "architecture"], params["info"])
end

#max_artifacts_sizeObject


47
48
49
# File 'lib/ci/api/helpers.rb', line 47

def max_artifacts_size
  current_application_settings.max_artifacts_size.megabytes.to_i
end

#runner_registration_token_valid?Boolean


21
22
23
# File 'lib/ci/api/helpers.rb', line 21

def runner_registration_token_valid?
  params[:token] == current_application_settings.runners_registration_token
end

#update_runner_infoObject


42
43
44
45
# File 'lib/ci/api/helpers.rb', line 42

def update_runner_info
  current_runner.assign_attributes(get_runner_version_from_params)
  current_runner.save if current_runner.changed?
end

#update_runner_last_contactObject


25
26
27
28
29
30
31
# File 'lib/ci/api/helpers.rb', line 25

def update_runner_last_contact
  # Use a random threshold to prevent beating DB updates
  contacted_at_max_age = UPDATE_RUNNER_EVERY + Random.rand(UPDATE_RUNNER_EVERY)
  if current_runner.contacted_at.nil? || Time.now - current_runner.contacted_at >= contacted_at_max_age
    current_runner.update_attributes(contacted_at: Time.now)
  end
end