module ZohoApiFieldUtils
Public Instance Methods
add_field(row, field, value)
click to toggle source
# File lib/zoho_api_field_utils.rb, line 6 def add_field(row, field, value) r = (REXML::Element.new 'FL') adjust_tag_case(field) r.attributes['val'] = adjust_tag_case(field) r.add_text("#{value}") row.elements << r row end
adjust_tag_case(tag)
click to toggle source
# File lib/zoho_api_field_utils.rb, line 15 def adjust_tag_case(tag) return tag if tag == 'id' return tag.upcase if tag.downcase.rindex('id') u_tags = %w[SEMODULE] return tag.upcase if u_tags.index(tag.upcase) tag end
clean_field_name?(field_name)
click to toggle source
# File lib/zoho_api_field_utils.rb, line 23 def clean_field_name?(field_name) return false if field_name.nil? r = field_name[/[0-9, a-z, A-Z, _]*/] field_name.size == r.size end
create_and_add_field_value_pair(field_name, module_name, n, record)
click to toggle source
# File lib/zoho_api_field_utils.rb, line 69 def create_and_add_field_value_pair(field_name, module_name, n, record) k = ApiUtils.string_to_symbol(field_name) v = n.text == 'null' ? nil : n.text r = record.merge({ k => v }) r = r.merge({ :id => v }) if primary_key?(module_name, k) r end
extract_field(f, mod_name)
click to toggle source
# File lib/zoho_api_field_utils.rb, line 90 def extract_field(f, mod_name) field = ApiUtils.string_to_symbol(f.to_s) @@module_fields[mod_name] << field if method_name?(field) @@module_fields[(mod_name.to_s + '_original_name').to_sym] << field end
extract_fields_from_response(mod_name, module_name, response)
click to toggle source
# File lib/zoho_api_field_utils.rb, line 82 def extract_fields_from_response(mod_name, module_name, response) x = REXML::Document.new(response.body) REXML::XPath.each(x, "/#{module_name}/section/FL/@dv") do |field| extract_field(field, mod_name) end @@module_fields[mod_name] << ApiUtils.string_to_symbol(module_name.chop + 'id') end
fields(module_name)
click to toggle source
# File lib/zoho_api_field_utils.rb, line 29 def fields(module_name) return user_fields if module_name == 'Users' fields_from_record(module_name).nil? ? fields_from_api(module_name) : fields_from_record(module_name) end
fields_from_api(module_name)
click to toggle source
# File lib/zoho_api_field_utils.rb, line 40 def fields_from_api(module_name) mod_name = ApiUtils.string_to_symbol(module_name) return @@module_fields[mod_name] unless @@module_fields[mod_name].nil? r = self.class.post(create_url(module_name, 'getFields'), :query => { :authtoken => @auth_token, :scope => 'crmapi' }, :headers => { 'Content-length' => '0' }) check_for_errors(r) update_module_fields(mod_name, module_name, r) end
fields_from_record(module_name)
click to toggle source
# File lib/zoho_api_field_utils.rb, line 50 def fields_from_record(module_name) mod_name = ApiUtils.string_to_symbol(module_name) return @@module_fields[mod_name] unless @@module_fields[mod_name].nil? r = first(module_name) return nil if r.nil? @@module_fields[mod_name] = r.first.keys @@module_fields[mod_name] end
fields_original(module_name)
click to toggle source
# File lib/zoho_api_field_utils.rb, line 34 def fields_original(module_name) return nil if @@module_fields.nil? #return user_fields if module_name == 'Users' @@module_fields[module_name + '_original_name'] end
hashed_field_value_pairs(module_name, n, record)
click to toggle source
# File lib/zoho_api_field_utils.rb, line 59 def hashed_field_value_pairs(module_name, n, record) field_name = n.attribute('val').to_s.gsub('val=', '') if @ignore_fields == true return clean_field_name?(field_name) == true ? create_and_add_field_value_pair(field_name, module_name, n, record) : record end create_and_add_field_value_pair(field_name, module_name, n, record) end
reflect_module_fields()
click to toggle source
# File lib/zoho_api_field_utils.rb, line 77 def reflect_module_fields @modules.each { |m| fields(m) } @@module_fields end
to_hash(xml_results, module_name)
click to toggle source
# File lib/zoho_api_field_utils.rb, line 96 def to_hash(xml_results, module_name) r = [] xml_results.each do |e| record = {} record[:module_name] = module_name e.elements.to_a.each do |n| record = hashed_field_value_pairs(module_name, n, record) end r << record unless record.nil? end return nil if r == [] r end
to_hash_with_id(xml_results, module_name)
click to toggle source
# File lib/zoho_api_field_utils.rb, line 110 def to_hash_with_id(xml_results, module_name) to_hash(xml_results, module_name) end
update_module_fields(mod_name, module_name, response)
click to toggle source
# File lib/zoho_api_field_utils.rb, line 114 def update_module_fields(mod_name, module_name, response) @@module_fields[mod_name] = [] @@module_fields[(mod_name.to_s + '_original_name').to_sym] = [] extract_fields_from_response(mod_name, module_name, response) return @@module_fields[mod_name] unless @@module_fields.nil? nil end
user_fields()
click to toggle source
# File lib/zoho_api_field_utils.rb, line 122 def user_fields @@module_fields[:users] = users[0].keys end