40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| module Ci
 | |
|   module API
 | |
|     module Helpers
 | |
|       UPDATE_RUNNER_EVERY = 60
 | |
| 
 | |
|       def check_enable_flag!
 | |
|         not_found! unless current_application_settings.ci_enabled
 | |
|       end
 | |
| 
 | |
|       def authenticate_runners!
 | |
|         forbidden! unless params[:token] == GitlabCi::REGISTRATION_TOKEN
 | |
|       end
 | |
| 
 | |
|       def authenticate_runner!
 | |
|         forbidden! unless current_runner
 | |
|       end
 | |
| 
 | |
|       def authenticate_project_token!(project)
 | |
|         forbidden! unless project.valid_token?(params[:project_token])
 | |
|       end
 | |
| 
 | |
|       def update_runner_last_contact
 | |
|         if current_runner.contacted_at.nil? || Time.now - current_runner.contacted_at >= UPDATE_RUNNER_EVERY
 | |
|           current_runner.update_attributes(contacted_at: Time.now)
 | |
|         end
 | |
|       end
 | |
| 
 | |
|       def current_runner
 | |
|         @runner ||= Runner.find_by_token(params[:token].to_s)
 | |
|       end
 | |
| 
 | |
|       def update_runner_info
 | |
|         return unless params["info"].present?
 | |
|         info = attributes_for_keys(["name", "version", "revision", "platform", "architecture"], params["info"])
 | |
|         current_runner.update(info)
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 |