Sha256: aac8a1dc2abe0df6ea828a47abbd82dbb4bafd96c6dce38437567d7cc778f280

Contents?: true

Size: 639 Bytes

Versions: 2

Compression:

Stored size: 639 Bytes

Contents

require "octogate/events/base"
require "octogate/gh"

module Octogate
  class Event::Push < Event::Base
    register_event :push, self

    coerce_key :head_commit, GH::Commit
    coerce_key :repository,  GH::Repository

    class << self
      def parse(delivery_id, json)
        payload = Oj.load(json).deep_symbolize_keys

        commits = payload[:commits].nil? ? [] : payload.delete(:commits).map do |c|
          GH::Commit.new(c.symbolize_keys)
        end

        attrs = payload.merge(delivery_id: delivery_id, commits: commits)

        new(attrs)
      end
    end

    def default_condition
      !deleted
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
octogate-0.4.0 lib/octogate/events/push.rb
octogate-0.3.0 lib/octogate/events/push.rb