Sha256: bcd59b3f7a83e5568cbc407e8b95f1931b0b7582f776b01292e27cba78e3304a

Contents?: true

Size: 1.19 KB

Versions: 10

Compression:

Stored size: 1.19 KB

Contents

# frozen_string_literal: true
module Shipit
  module Webhooks
    module Handlers
      class MembershipHandler < Handler
        params do
          requires :action, String
          requires :team do
            requires :id, Integer
            requires :name, String
            requires :slug, String
            requires :url, String
          end
          requires :organization do
            requires :login, String
          end
          requires :member do
            requires :login, String
          end
        end
        def process
          team = find_or_create_team!
          member = User.find_or_create_by_login!(params.member.login)

          case params.action
          when 'added'
            team.add_member(member)
          when 'removed'
            team.members.delete(member)
          else
            raise ArgumentError, "Don't know how to perform action: `#{action.inspect}`"
          end
        end

        private

        def find_or_create_team!
          Team.find_or_create_by!(github_id: params.team.id) do |team|
            team.github_team = params.team
            team.organization = params.organization.login
          end
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
shipit-engine-0.39.0 app/models/shipit/webhooks/handlers/membership_handler.rb
shipit-engine-0.38.0 app/models/shipit/webhooks/handlers/membership_handler.rb
shipit-engine-0.37.0 app/models/shipit/webhooks/handlers/membership_handler.rb
shipit-engine-0.36.1 app/models/shipit/webhooks/handlers/membership_handler.rb
shipit-engine-0.36.0 app/models/shipit/webhooks/handlers/membership_handler.rb
shipit-engine-0.35.1 app/models/shipit/webhooks/handlers/membership_handler.rb
shipit-engine-0.35.0 app/models/shipit/webhooks/handlers/membership_handler.rb
shipit-engine-0.34.0 app/models/shipit/webhooks/handlers/membership_handler.rb
shipit-engine-0.33.0 app/models/shipit/webhooks/handlers/membership_handler.rb
shipit-engine-0.32.0 app/models/shipit/webhooks/handlers/membership_handler.rb