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