Sha256: fe21f9d3ac02c2978680adb19b50ff5592c5beb0dccf382090179eb0731dd4cd

Contents?: true

Size: 1.33 KB

Versions: 1

Compression:

Stored size: 1.33 KB

Contents

require 'base64'
require 'digest'

module Percy
  class Client

    # A simple data container object used to pass data to create_snapshot.
    class Resource
      attr_accessor :sha
      attr_accessor :resource_url
      attr_accessor :is_root
      attr_accessor :mimetype

      def initialize(sha, resource_url, options = {})
        @sha = sha
        @resource_url = resource_url
        @is_root = options[:is_root]
        @mimetype = options[:mimetype]
      end

      def serialize
        {
          'type' => 'resources',
          'id' => sha,
          'resource-url' => resource_url,
          'mimetype' => mimetype,
          'is-root' => is_root,
        }
      end
    end

    module Resources
      def upload_resource(build_id, content)
        sha = Digest::SHA256.hexdigest(content)
        data = {
          'data' => {
            'type' => 'resources',
            'attributes' => {
              'id' => sha,
              'base64-content' => Base64.strict_encode64(content),
            },
          },
        }
        begin
          post("#{full_base}/builds/#{build_id}/resources/", data)
        rescue Percy::Client::ClientError => e
          raise e if e.env.status != 409
          STDERR.puts "[percy] Warning: unnecessary resource reuploaded with SHA-256: #{sha}"
        end
        true
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
percy-client-0.1.0 lib/percy/client/resources.rb