Sha256: 04206444e134ed6fbbee0d37b87d134d89f93cac5c813c7f6f53a81215a9af13

Contents?: true

Size: 1.46 KB

Versions: 4

Compression:

Stored size: 1.46 KB

Contents

module Videojuicer
  module Asset
    class Base
      
      def self.inherited(base)
        base.send(:include, Videojuicer::Resource)
        base.send(:extend, Videojuicer::Asset::Base::ClassMethods)
        base.send(:include, Videojuicer::Asset::Base::InstanceMethods)
        
        base.property :user_id,         Integer
        # - generic file handling
        base.property :file,            File
        base.property :file_name,       String
        base.property :file_size,       Integer, :writer=>:private
        # - common metadata
        base.property :duration,        Integer # milliseconds
        base.property :licensed_at,     Date
        base.property :licensed_by,     String
        base.property :licensed_under,  String
        base.property :published_at,    Date
        # - access control / workflow
        base.property :state,           String, :writer => :private
        base.property :url,             String, :writer => :private
        
        base.property :created_at,      DateTime
        base.property :updated_at,      DateTime
      end
      
      module ClassMethods
        def singular_name
          "asset"
        end
        
        def base_path
          "/assets/#{self.to_s.downcase.split("::").last}"
        end
      end
      
      module InstanceMethods
        def returnable_attributes
          attrs = super
          attrs.delete(:file) unless new_record?
          attrs
        end
      end
      
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
videojuicer-vj-sdk-0.1.1 lib/videojuicer/asset/base.rb
videojuicer-vj-sdk-0.1.3 lib/videojuicer/asset/base.rb
videojuicer-vj-sdk-0.1.4 lib/videojuicer/asset/base.rb
videojuicer-vj-sdk-0.1.5 lib/videojuicer/asset/base.rb