Sha256: 4844dfe9cc044ad58c5d25b9f0e6f471bc60bd8582cb9b59316cd2777755880f

Contents?: true

Size: 1.17 KB

Versions: 10

Compression:

Stored size: 1.17 KB

Contents

module Janky
  module GitHub
    class PayloadParser
      def initialize(json)
        @payload = Yajl.load(json)
      end

      def pusher
        @payload["pusher"]["name"]
      end

      def head
        @payload["after"]
      end

      def compare
        @payload["compare"]
      end

      def commits
        @payload["commits"].map do |commit|
          GitHub::Commit.new(
            commit["id"],
            commit["url"],
            commit["message"],
            normalize_author(commit["author"]),
            commit["timestamp"]
          )
        end
      end

      def normalize_author(author)
        if email = author["email"]
          "#{author["name"]} <#{email}>"
        else
          author
        end
      end

      def uri
        if uri = @payload["uri"]
          return uri
        end

        repository = @payload["repository"]

        if repository["private"]
          "git@#{GitHub.git_host}:#{URI(repository["url"]).path[1..-1]}"
        else
          uri = URI(repository["url"])
          uri.scheme = "git"
          uri.to_s
        end
      end

      def branch
        @payload["ref"].split("refs/heads/").last
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
janky-0.13.0.pre1 lib/janky/github/payload_parser.rb
janky-0.12.0 lib/janky/github/payload_parser.rb
janky-0.11.1 lib/janky/github/payload_parser.rb
janky-0.11.0 lib/janky/github/payload_parser.rb
janky-0.10.2 lib/janky/github/payload_parser.rb
janky-0.10.0 lib/janky/github/payload_parser.rb
janky-0.9.15 lib/janky/github/payload_parser.rb
janky-0.9.14 lib/janky/github/payload_parser.rb
janky-0.9.14.rc1 lib/janky/github/payload_parser.rb
janky-0.9.13 lib/janky/github/payload_parser.rb