Sha256: 7aee5284985e516699c283bba3de440026cea9e52474bef4ca86179936c90e38

Contents?: true

Size: 1.5 KB

Versions: 3

Compression:

Stored size: 1.5 KB

Contents

require 'omf_common/lobject'
require 'omf_web'
require 'omf-web/content/content_proxy'
require 'omf-web/content/repository'
require 'singleton'

module OMF::Web
  
  # This class provides an interface to a repository of static,
  # preloaded content.
  #
  class StaticContentRepository < ContentRepository  
      
    
    # Load content described by either a hash or a straightforward path
    # and return a 'ContentProxy' holding it.
    #
    # @return: Content proxy
    #
    def create_content_proxy_for(content_descr)
      debug content_descr
      if content_descr.is_a? String
        content_descr = {text: content_descr}
      end
      descr = content_descr.dup
      unless text = descr.delete(:text)
        raise "Missing ':text' declaraton for static content"
      end
      
      key = Digest::MD5.hexdigest(text)
      @content[key] = text
      descr[:url] = url = "static:" + key
      descr[:url_key] = key
      descr[:name] = content_descr[:name] || url # Should be something human digestable
      proxy = ContentProxy.create(descr, self)
      return proxy
    end

    def read(content_descr)
      debug "READ: #{content_descr}"
      @content[content_descr[:url_key]] || 'Unknown'
    end
           
    def write(content_descr, content, message)
      raise "READ ONLY"
    end

    def mime_type_for_file(content_descriptor)
      content_descriptor[:mime_type] || 'text'
    end

    def initialize(name, opts)
      super
      @content = {}
    end
    
    
              
  end # class
end # module

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
omf_web-1.0.0 lib/omf-web/content/static_repository.rb
omf_web-0.9.9 lib/omf-web/content/static_repository.rb
omf_web-0.9.8 lib/omf-web/content/static_repository.rb