Sha256: b42b6091392d2e1c43aca5f64f71b8608c30c1e9171ec2c42e1273b5d8f167a8

Contents?: true

Size: 1.36 KB

Versions: 1

Compression:

Stored size: 1.36 KB

Contents

module Owl
  module Lib
    class Commit

      DEPLOY_TRIGGER  = '#deploy'
      GITHUB_IP_1     = NetAddr::CIDR.create('204.232.175.64/27').enumerate
      GITHUB_IP_2     = NetAddr::CIDR.create('192.30.252.0/22').enumerate
      BITBUCKET_IPS   = ['207.223.240.187', '207.223.240.188']
      AUTHORIZED_IPS  = BITBUCKET_IPS + GITHUB_IP_1 + GITHUB_IP_2

      attr_accessor :data
      attr_accessor :message
      attr_accessor :id
      attr_accessor :ip

      def initialize(payload, ip)
        @payload  = payload.is_a?(String) ? JSON.parse(payload) : payload["payload"]
        @data     = @payload["commits"].first
        @ip       = ip

        parse_message
        parse_id
      end

      def parse_message
        @message = @data['message'].downcase
      end

      def parse_id 
              # github #       # bitbucket #
        @id = @data['id']  ||  @data['node']
      end

      def deploy_if_necessary
        if deploy?
          
          Owl::Lib::CachedFile.clear_all!

          cmd = [
            'git reset --hard HEAD',
            'git pull'
          ]

          system cmd.join(" && ")

        end
      end

      def triggers_deploy?
        @message.include? DEPLOY_TRIGGER
      end

      def authorized?
        AUTHORIZED_IPS.include?(@ip)
      end

      def deploy?
        triggers_deploy? and authorized?
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
owl-cms-0.1.5 core/classes/commit.rb