Class: GemCollector::RepositoriesController
- Inherits:
-
ApplicationController
- Object
- ActionController::Base
- ApplicationController
- GemCollector::RepositoriesController
- Defined in:
- app/controllers/gem_collector/repositories_controller.rb
Instance Method Summary collapse
- #create ⇒ Object
- #destroy ⇒ Object
- #github_webhook ⇒ Object
- #index ⇒ Object
- #new ⇒ Object
- #show ⇒ Object
Instance Method Details
#create ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'app/controllers/gem_collector/repositories_controller.rb', line 17 def create form = params.require(:repository) repository = GemCollector::CreateRepository.new.run( site: form[:site], full_name: form[:full_name], ) redirect_to repository_path(repository.id) rescue GemCollector::CreateRepository::Error => e redirect_to repositories_path, alert: e. end |
#destroy ⇒ Object
28 29 30 31 32 |
# File 'app/controllers/gem_collector/repositories_controller.rb', line 28 def destroy repository = GemCollector::Repository.find(params[:id]) GemCollector::DeleteRepository.new.run(repository) redirect_to repositories_path end |
#github_webhook ⇒ Object
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 |
# File 'app/controllers/gem_collector/repositories_controller.rb', line 34 def github_webhook event = request.headers['X-GitHub-Event'] case event when 'ping' render plain: 'pong' when 'push' html_url = params[:repository][:html_url] site = Addressable::URI.parse(html_url).host unless has_valid_signature?(site) render status: 403, plain: "Signatures didn't match" return end repository = GemCollector::UpdateRepository.new.run( repository_id: params[:repository][:id], full_name: params[:repository][:full_name], html_url: html_url, ssh_url: params[:repository][:ssh_url], ) GemCollector::UpdateGemfileJob.perform_later(repository.id) render plain: 'OK' else render status: 400, plain: "Unknown event #{event}" end end |
#index ⇒ Object
4 5 6 7 |
# File 'app/controllers/gem_collector/repositories_controller.rb', line 4 def index @repositories = GemCollector::Repository.all_with_version_point render 'gem_collector/repositories/index' end |
#new ⇒ Object
13 14 15 |
# File 'app/controllers/gem_collector/repositories_controller.rb', line 13 def new @repository = GemCollector::Repository.new end |
#show ⇒ Object
9 10 11 |
# File 'app/controllers/gem_collector/repositories_controller.rb', line 9 def show @repository = GemCollector::Repository.find(params[:id]) end |