Module: Action

Defined in:
lib/dsl.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(obj) ⇒ Object



32
33
34
35
36
37
# File 'lib/dsl.rb', line 32

def self.extended obj
  obj.instance_variable_set(:@session, {})
  obj.instance_variable_set(:@content_type, nil)
  obj.instance_variable_set(:@status_code, 200)
  obj.instance_variable_set(:@tempfiles, [])
end

.fire(action, params, session) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/dsl.rb', line 69

def self.fire(action, params, session)
  obj = Object
  obj.extend Action
  obj.extend BodyWriter
  obj.content_type = action[:content_type] || :txt
  obj.session = session
  ps = action[:action].parameters.map{|_, name|
    {name => params[name]}
  }.inject({}, :merge)
  result = execute(obj, ps, action[:action])
  unless result[:executed]
    obj.status_code = 400
    obj.body = "Not given enough parameter"
    obj.content_type = :txt
  end
  obj.tempfiles.each{|f| f.close }
  obj
end

Instance Method Details

#content_typeObject



62
# File 'lib/dsl.rb', line 62

def content_type; @content_type; end

#content_type=(type) ⇒ Object



65
# File 'lib/dsl.rb', line 65

def content_type=(type); @content_type = type; end

#file?(file) ⇒ Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/dsl.rb', line 39

def file? file
  file.is_a? Hash
end

#sessionObject



60
# File 'lib/dsl.rb', line 60

def session; @session; end

#session=(value) ⇒ Object



61
# File 'lib/dsl.rb', line 61

def session=(value); @session = value; end

#session_clearObject



55
56
57
58
# File 'lib/dsl.rb', line 55

def session_clear
  session.clear
  session = nil
end

#status_codeObject



64
# File 'lib/dsl.rb', line 64

def status_code; @status_code; end

#status_code=(code) ⇒ Object



66
# File 'lib/dsl.rb', line 66

def status_code=(code); @status_code = code; end

#tempfile(file) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
# File 'lib/dsl.rb', line 43

def tempfile file
  if file.is_a? Hash
    file[:tempfile].path
  else
    f = Tempfile.open(SecureRandom.hex(4))
    f.write file
    f.flush
    @tempfiles.push f
    f.path
  end
end

#tempfilesObject



63
# File 'lib/dsl.rb', line 63

def tempfiles; @tempfiles; end