49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| class Import::GitoriousController < Import::BaseController
 | |
|   before_action :verify_gitorious_import_enabled
 | |
| 
 | |
|   def new
 | |
|     redirect_to client.authorize_url(callback_import_gitorious_url)
 | |
|   end
 | |
| 
 | |
|   def callback
 | |
|     session[:gitorious_repos] = params[:repos]
 | |
|     redirect_to status_import_gitorious_path
 | |
|   end
 | |
| 
 | |
|   def status
 | |
|     @repos = client.repos
 | |
| 
 | |
|     @already_added_projects = current_user.created_projects.where(import_type: "gitorious")
 | |
|     already_added_projects_names = @already_added_projects.pluck(:import_source)
 | |
| 
 | |
|     @repos.reject! { |repo| already_added_projects_names.include? repo.full_name }
 | |
|   end
 | |
| 
 | |
|   def jobs
 | |
|     jobs = current_user.created_projects.where(import_type: "gitorious").to_json(only: [:id, :import_status])
 | |
|     render json: jobs
 | |
|   end
 | |
| 
 | |
|   def create
 | |
|     @repo_id = params[:repo_id]
 | |
|     repo = client.repo(@repo_id)
 | |
|     @target_namespace = params[:new_namespace].presence || repo.namespace
 | |
|     @project_name = repo.name
 | |
| 
 | |
|     namespace = get_or_create_namespace || (render and return)
 | |
| 
 | |
|     @project = Gitlab::GitoriousImport::ProjectCreator.new(repo, namespace, current_user).execute
 | |
|   end
 | |
| 
 | |
|   private
 | |
| 
 | |
|   def client
 | |
|     @client ||= Gitlab::GitoriousImport::Client.new(session[:gitorious_repos])
 | |
|   end
 | |
| 
 | |
|   def verify_gitorious_import_enabled
 | |
|     render_404 unless gitorious_import_enabled?
 | |
|   end
 | |
| 
 | |
| end
 |