PageRenderTime 26ms CodeModel.GetById 1ms RepoModel.GetById 0ms app.codeStats 0ms

/lib/bitbucket_worker.rb

https://bitbucket.org/daenoor/redmine_bitbucket
Ruby | 27 lines | 22 code | 5 blank | 0 comment | 3 complexity | 63bd5ae7c59db456fa65780449013ddd MD5 | raw file
  1. class BitbucketWorker
  2. @queue = :bitbucket
  3. def self.perform(action, project_id, payload)
  4. project = find_project(project_id)
  5. adapter = BitbucketAdapter.new(payload)
  6. if action == 'create'
  7. repository = adapter.create_repository(project)
  8. elsif action == 'update'
  9. repository = project.repositories.find_by_identifier(adapter.identifier)
  10. adapter.update_repository(repository)
  11. else
  12. raise ArgumentError "action should be either create or update, got #{action}"
  13. end
  14. repository.fetch_changesets
  15. end
  16. def self.find_project(project_id)
  17. scope = Project.active.has_module(:repository)
  18. project = scope.find_by_identifier(project_id.downcase)
  19. raise ActiveRecord::RecordNotFound unless project
  20. project
  21. end
  22. end