Module: Tzispa::Helpers::Request

Defined in:
lib/tzispa/helpers/request.rb

Instance Method Summary collapse

Instance Method Details

#request_data(fields) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/tzispa/helpers/request.rb', line 7

def request_data(fields)
  Hash.new.tap { |data|
    fields.each { |name|
      macro_field = name.split('@:')
      macro = macro_field.first.to_sym if macro_field.length == 2
      field = macro_field.length == 2 ? macro_field.last : macro_field.first
      field.split(':').tap { |fld|
        src = fld.first
        dest = fld.last
        data[dest.to_sym] = macro ? send(macro, context.request[src]) : context.request[src]
      }
    }
  }
end

#request_data_object(data_object:, fields:) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/tzispa/helpers/request.rb', line 22

def request_data_object(data_object:, fields:)
  data_object.tap { |data|
    fields.each { |name|
      macro_field = name.split('@:')
      macro = macro_field.first.to_sym if macro_field.length == 2
      field = macro_field.length == 2 ? macro_field.last : macro_field.first
      field.split(':').tap { |fld|
        src = fld.first
        dest = fld.last
        data.send "#{dest}=".to_sym, macro ? send(macro, context.request[src]) : context.request[src]
      }
    }
  }
end

#request_file_upload(request_file:, destination_path:, save_as: nil, keep_ext: true) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/tzispa/helpers/request.rb', line 37

def request_file_upload(request_file:, destination_path:, save_as: nil, keep_ext: true)
  if request_file
    fileext = File.extname(request_file[:filename]).downcase
    filetype = request_file[:type]
    save_ext = fileext if keep_ext
    filename = (save_as ? "#{save_as}#{save_ext}" : request_file[:filename])
    tempfile = request_file[:tempfile]
    begin
      dest_file = "#{destination_path}/#{filename}"
      FileUtils.cp tempfile.path, dest_file
      result = { name: filename, ext: fileext, path: dest_file, size: ::File.size(dest_file), type: filetype }
    rescue => err
      context.logger.fatal(err) if context
      result = nil
    ensure
      tempfile.close
      tempfile.unlink
    end
  else
    result = nil
  end
  result
end