Sha256: e51ed41547a3e35be7e7387384705cc7edf2ee35edee5ea6992e84b3275521f7

Contents?: true

Size: 1.72 KB

Versions: 4

Compression:

Stored size: 1.72 KB

Contents

module Progstr
  module Filer
    class Attachment
      attr_accessor :id, :attribute, :file, :pre_validated

      @@id_generator = ::UUID.new

      class EmptyAttachment < Attachment
        def blank?
          true
        end

        def size
          0
        end

        def path
          ""
        end

        def extension
          ""
        end
      end

      def self.empty
        EmptyAttachment.new
      end

      def self.from_file(attribute, file)
        result = Attachment.new
        result.id = generate_id
        result.attribute = attribute

        result.file = file
        result.pre_validated = false
        result
      end

      def self.generate_id
        uuid = @@id_generator.generate
        uuid.gsub("-", "")
      end

      def size
        file.size
      end

      def path
        (file.original_filename if file.respond_to?(:original_filename)) ||
          (file_path = file.path if file.respond_to?(:path))
      end

      def extension
        from_file = File.extname(path) || ""
        from_file.sub(".", "")
      end

      def self.from_id(attribute, id)
        result = Attachment.new
        result.id = id
        result.attribute = attribute

        result.pre_validated = true
        result
      end

      def blank?
        false
      end

      def url
        if !blank?
          token = Progstr::Filer.generate_file_auth_token(id)
          "#{Progstr::Filer.url_prefix}files/data/#{Progstr::Filer.access_key}/#{id}?auth=#{token}"
        else
          ""
        end
      end

      def public_url
        if !blank?
          "#{Progstr::Filer.url_prefix}files/data/#{Progstr::Filer.access_key}/#{id}"
        else
          ""
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
progstr-filer-0.8.7 lib/filer/attachment.rb
progstr-filer-0.8.6 lib/filer/attachment.rb
progstr-filer-0.8.5 lib/filer/attachment.rb
progstr-filer-0.8.4 lib/filer/attachment.rb