module Render::Instant

Instant allows for previews of edited documents @author Bryan T. Meyers

Public Class Methods

do_update(actions, context) click to toggle source

Render a temporary document to HTML @param [Array] actions the allowed actions for this URI @param [Hash] context the context for this request @return [Response] a Rack Response triplet, or status code

# File lib/app/render/instant.rb, line 26
def self.do_update(actions, context)
  ## Default to not found
  message = ''
  status  = 404
  if context.resource
    body = context.body
    if body
      body = body.split('=')[1]
      if body
        body = URI.decode(body)
      end
      ## Assume unsupported mime type
      status   = 415
      message  = 'INSTANT: Unsupported MIME Type'
      mime     = "#{context.resource}/#{context.id}"
      $stderr.puts mime
      renderer = nil
      context.closet.renderers.each do |k, v|
        if v['mimes'].include? mime
          renderer = v['partial']
          break
        end
      end
      if renderer
        context.uri = ['http:','','host'] + context.query[:id].split('/')
        result   = renderer.render(self, { actions:  actions,
                                           context:  context,
                                           mime:     mime,
                                           response: body, })
        name     = context.config['template']
        template = context.closet.templates[name]
        context.resource = context.query[:resource]
        context.uri = ['http:','','host','','instant', context.resource] + context.query[:id].split('/')
        context.id = context.uri.last
        if template
          message = template['file'].render(self, { actions: actions,
                                                    context: context,
                                                    content: result })
        else
          message = result
        end
        status = 200
      end
    end
  end
  [status, {}, message]
end
invoke(actions, context) click to toggle source

Proxy method used when routing @param [Array] actions the allowed actions for this URI @param [Hash] context the context for this request @return [Response] a Rack Response triplet, or status code

# File lib/app/render/instant.rb, line 78
def self.invoke(actions, context)
  if context.action.eql? :update
    do_update(actions, context)
  else
    405
  end
end