class Qiita::Team::Services::Hooks::Webhook

Public Class Methods

generate_token() click to toggle source

@return [String]

# File lib/qiita/team/services/hooks/webhook.rb, line 26
def self.generate_token
  SecureRandom.base64(20)
end
new(hash) click to toggle source

@param hash [Hash{String => Object}]

# File lib/qiita/team/services/hooks/webhook.rb, line 31
def initialize(hash)
  unless hash.key?("token")
    hash = hash.dup.merge("token" => self.class.generate_token)
  end
  super(hash)
end
service_name() click to toggle source

@note Override {Qiita::Team::Services::Hooks::Base.service_name}.

# File lib/qiita/team/services/hooks/webhook.rb, line 21
def self.service_name
  "Webhook"
end

Public Instance Methods

item_comment_created(event) click to toggle source

@param event [Qiita::Team::Services::Events::ItemCommentCreated]

# File lib/qiita/team/services/hooks/webhook.rb, line 77
def item_comment_created(event)
  send_hook(
    action: "created",
    model: "comment",
    comment: event.resource,
    item: event.item,
  )
end
item_comment_destroyed(event) click to toggle source

@param event [Qiita::Team::Services::Events::ItemCommentDestroyed]

# File lib/qiita/team/services/hooks/webhook.rb, line 97
def item_comment_destroyed(event)
  send_hook(
    action: "destroyed",
    model: "comment",
    comment: event.resource,
    item: event.item,
  )
end
item_comment_updated(event) click to toggle source

@param event [Qiita::Team::Services::Events::ItemCommentUpdated]

# File lib/qiita/team/services/hooks/webhook.rb, line 87
def item_comment_updated(event)
  send_hook(
    action: "updated",
    model: "comment",
    comment: event.resource,
    item: event.item,
  )
end
item_created(event) click to toggle source

@param event [Qiita::Team::Services::Events::ItemCreated]

# File lib/qiita/team/services/hooks/webhook.rb, line 47
def item_created(event)
  send_hook(
    action: "created",
    model: "item",
    item: event.resource,
    user: event.user,
  )
end
item_destroyed(event) click to toggle source

@param event [Qiita::Team::Services::Events::ItemDestroyed]

# File lib/qiita/team/services/hooks/webhook.rb, line 68
def item_destroyed(event)
  send_hook(
    action: "destroyed",
    model: "item",
    item: event.resource,
  )
end
item_updated(event) click to toggle source

@param event [Qiita::Team::Services::Events::ItemUpdated]

# File lib/qiita/team/services/hooks/webhook.rb, line 57
def item_updated(event)
  send_hook(
    action: "updated",
    model: "item",
    message: event.resource.message,
    item: event.resource,
    user: event.user,
  )
end
ping() click to toggle source
# File lib/qiita/team/services/hooks/webhook.rb, line 38
def ping
  send_hook(
    action: "requested",
    message: "ping",
    model: "ping",
  )
end
project_comment_created(event) click to toggle source

@param event [Qiita::Team::Services::Events::ProjectCommentCreated]

# File lib/qiita/team/services/hooks/webhook.rb, line 107
def project_comment_created(event)
  send_hook(
    action: "created",
    model: "comment",
    comment: event.resource,
    item: event.project,
  )
end
project_comment_destroyed(event) click to toggle source

@param event [Qiita::Team::Services::Events::ProjectCommentDestroyed]

# File lib/qiita/team/services/hooks/webhook.rb, line 127
def project_comment_destroyed(event)
  send_hook(
    action: "destroyed",
    model: "comment",
    comment: event.resource,
    item: event.project,
  )
end
project_comment_updated(event) click to toggle source

@param event [Qiita::Team::Services::Events::ProjectCommentUpdated]

# File lib/qiita/team/services/hooks/webhook.rb, line 117
def project_comment_updated(event)
  send_hook(
    action: "updated",
    model: "comment",
    comment: event.resource,
    item: event.project,
  )
end
project_created(event) click to toggle source

@param event [Qiita::Team::Services::Events::ProjectCreated]

# File lib/qiita/team/services/hooks/webhook.rb, line 155
def project_created(event)
  send_hook(
    action: "created",
    model: "project",
    project: event.resource,
    user: event.user,
  )
end
project_destroyed(event) click to toggle source

@param event [Qiita::Team::Services::Events::ProjectDestroyed]

# File lib/qiita/team/services/hooks/webhook.rb, line 176
def project_destroyed(event)
  send_hook(
    action: "destroyed",
    model: "project",
    project: event.resource,
  )
end
project_updated(event) click to toggle source

@param event [Qiita::Team::Services::Events::ProjectUpdated]

# File lib/qiita/team/services/hooks/webhook.rb, line 165
def project_updated(event)
  send_hook(
    action: "updated",
    model: "project",
    message: event.resource.message,
    project: event.resource,
    user: event.user,
  )
end
team_member_added(event) click to toggle source

@param event [Qiita::Team::Services::Events::TeamMemberAdded]

# File lib/qiita/team/services/hooks/webhook.rb, line 137
def team_member_added(event)
  send_hook(
    action: "added",
    model: "member",
    user: event.resource,
  )
end
team_member_removed(event) click to toggle source

@param event [Qiita::Team::Services::Events::TeamMemberRemoved]

# File lib/qiita/team/services/hooks/webhook.rb, line 146
def team_member_removed(event)
  send_hook(
    action: "removed",
    model: "member",
    user: event.resource,
  )
end

Private Instance Methods

send_hook(properties) click to toggle source
# File lib/qiita/team/services/hooks/webhook.rb, line 186
def send_hook(properties)
  http_post(
    properties.as_json,
    {
      "X-Qiita-Event-Model" => properties[:model],
      "X-Qiita-Token" => token,
    }.reject { |_key, value| value.nil? },
  )
end