Sha256: a439d9a64dffb15e78885fdba53829433b6b3ea25099f215d8b71f5c4a20f994

Contents?: true

Size: 1.74 KB

Versions: 63

Compression:

Stored size: 1.74 KB

Contents

# encoding: utf-8
require 'travis/client'
require 'travis/tools/safe_string'

module Travis
  module Client
    class Artifact < Entity
      CHUNKED = "application/json; chunked=true; version=2, application/json; version=2"

      # @!parse attr_reader :job_id, :type, :body
      attributes :job_id, :type, :body

      # @!parse attr_reader :job
      has :job

      def encoded_body
        Tools::SafeString.encoded(body)
      end

      def colorized_body
        attributes['colorized_body'] ||= Tools::SafeString.colorized(body)
      end

      def clean_body
        attributes['clean_body'] ||= Tools::SafeString.clean(body)
      end

      def body(stream = block_given?)
        return load_attribute('body') unless block_given? or stream
        return yield(load_attribute('body')) unless stream and job.pending?
        number = 0

        session.listen(self) do |listener|
          listener.on 'job:log' do |event|
            next unless event.payload['number'] > number
            number = event.payload['number']
            yield event.payload['_log']
            listener.disconnect if event.payload['final']
          end

          listener.on 'job:finished' do |event|
            listener.disconnect
          end

          listener.on_connect do
            data = session.get_raw("/artifacts/#{id}", nil, "Accept" => CHUNKED)['log']
            if data['parts']
              data['parts'].each { |p| yield p['content'] }
              number = data['parts'].last['number'] if data['parts'].any?
            else
              yield data['body']
              listener.disconnect
            end
          end
        end
      end

      def pusher_entity
        job
      end

      one :log
      many :logs
      aka :artifact
    end
  end
end

Version data entries

63 entries across 63 versions & 1 rubygems

Version Path
travis-1.6.1 lib/travis/client/artifact.rb
travis-1.6.1.travis.363.4 lib/travis/client/artifact.rb
travis-1.6.0 lib/travis/client/artifact.rb
travis-1.5.9.travis.362.4 lib/travis/client/artifact.rb
travis-1.5.9.travis.361.4 lib/travis/client/artifact.rb
travis-1.5.9.travis.360.4 lib/travis/client/artifact.rb
travis-1.5.9.travis.358.4 lib/travis/client/artifact.rb
travis-1.5.8 lib/travis/client/artifact.rb
travis-1.5.8.travis.356.4 lib/travis/client/artifact.rb
travis-1.5.7 lib/travis/client/artifact.rb
travis-1.5.7.travis.345.4 lib/travis/client/artifact.rb
travis-1.5.7.travis.341.4 lib/travis/client/artifact.rb
travis-1.5.7.travis.338.4 lib/travis/client/artifact.rb
travis-1.5.6 lib/travis/client/artifact.rb
travis-1.5.6.travis.337.4 lib/travis/client/artifact.rb
travis-1.5.6.travis.336.4 lib/travis/client/artifact.rb
travis-1.5.6.travis.333.4 lib/travis/client/artifact.rb
travis-1.5.6.travis.332.4 lib/travis/client/artifact.rb
travis-1.5.6.travis.330.4 lib/travis/client/artifact.rb
travis-1.5.6.travis.329.4 lib/travis/client/artifact.rb