Module: KojacUtils

Defined in:
lib/kojac/kojac_rails.rb

Class Method Summary collapse

Class Method Details

.model_class_for_key(aKey) ⇒ Object



45
46
47
48
# File 'lib/kojac/kojac_rails.rb', line 45

def model_class_for_key(aKey)
  resource = aKey.split_kojac_key[0]
  resource.singularize.camelize.constantize rescue nil
end

.model_for_key(aKey) ⇒ Object



50
51
52
53
54
# File 'lib/kojac/kojac_rails.rb', line 50

def model_for_key(aKey)
  klass = KojacUtils.model_class_for_key(aKey)
  resource,id,assoc = aKey.split_kojac_key
  klass.find(id) rescue nil
end

.serializer_for(aObject) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/kojac/kojac_rails.rb', line 69

def serializer_for(aObject)
  return ::KojacBaseSerializer if aObject.is_a?(Hash)
  return ::ActiveModel::ArraySerializer if aObject.respond_to?(:to_ary)
  return ActiveModel::DefaultSerializer if KojacBaseSerializer::SERIALIZABLE_TYPES.include?(aObject.class)
  return aObject.send(:active_model_serializer) if aObject.respond_to?(:active_model_serializer)
  return aObject.class.send(:active_model_serializer) if aObject.class.respond_to?(:active_model_serializer)
  if sz_class = ActiveModel::Serializer.serializer_for(aObject)
    sz_class
  else
    aObject.respond_to?(:attributes) ? ::KojacBaseSerializer : ActiveModel::DefaultSerializer
  end
end

.timestampObject



65
66
67
# File 'lib/kojac/kojac_rails.rb', line 65

def timestamp
  Time.now.to_ms
end

.to_json(aObject, aOptions) ⇒ Object



94
95
96
97
98
# File 'lib/kojac/kojac_rails.rb', line 94

def to_json(aObject,aOptions)
  jsono = to_jsono(aObject,aOptions)
  result = jsono.to_json
  result
end

.to_jsono(aObject, aOptions = nil) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
# File 'lib/kojac/kojac_rails.rb', line 82

def to_jsono(aObject,aOptions=nil)
  aOptions ||= {}
  if aObject.is_a?(Hash) or aObject.respond_to? :attributes
    serializer_for(aObject).new(aObject,aOptions).serializable_hash
  elsif aObject.respond_to?(:to_ary) && aObject.first  # Array
    item_sz = serializer_for(aObject.first)
    ActiveModel::ArraySerializer.new(aObject,aOptions.merge(each_serializer: item_sz)).as_json(aOptions)
  else
    aObject.as_json(aOptions)
  end
end

.upgrade_hashes_to_params(aValue) ⇒ Object



56
57
58
59
60
61
62
63
# File 'lib/kojac/kojac_rails.rb', line 56

def upgrade_hashes_to_params(aValue)
  if aValue.is_a? Hash
    aValue = ActionController::Parameters.new(aValue) unless aValue.is_a?(ActionController::Parameters)
  elsif aValue.is_a? Array
    aValue = aValue.map {|v| upgrade_hashes_to_params(v)}
  end
  aValue
end