Method: ICC.request

Defined in:
lib/qooxview/helpers/icc.rb

.request(entity_name, m, query_json) ⇒ Object



86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/qooxview/helpers/icc.rb', line 86

def self.request(entity_name, m, query_json)
  m =~ /^icc_/ and log_msg :ICC, "Method #{m} includes 'icc_' - probably not what you want"
  binary = m[0] == '_'
  method = "icc_#{m.sub(/^_/, '')}"
  if en = Object.const_get(entity_name)
    dputs(3) { "Sending #{method} to #{entity_name}" }
    query={}
    begin
      query_json.each_pair { |k, v| query[k] = JSON.parse(v.first) }
    rescue JSON::ParserError => e
      dputs(0) { "Error parsing #{query_json}" }
      dputs(0) { "#{e.inspect}" }
      dputs(0) { "#{caller.inspect}" }
      return self.response('Error', log_msg(:ICC, "Object couldn't be parsed"))
    end
    dputs(3) { "Found query #{query.inspect}" }
    if query.has_key?('icc_data')
      query = query._icc_data
      dputs(3) { "Found icc_data in query, is now: #{query.inspect}" }
    end
    msg = en.send(method, query)
    if msg =~ /^Error:/
      self.response('Error', msg)
    else
      self.response('OK', binary ? Base64::encode64(msg.force_encoding(Encoding::ASCII_8BIT)) :
                            msg)
    end
  else
    self.response('Error', log_msg(:ICC, "Object #{entity_name} doesn't exist"))
  end
end