/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