module QuickApi::Mongoid

Public Instance Methods

to_api(options = {relations: true}, result = {}) click to toggle source
# File lib/quick_api/mongoid.rb, line 57
def to_api(options = {relations: true}, result = {})
  if options[:fields]
    api_fields = options[:fields]
  else
    api_fields = self.q_api_attributes.nil? ? [] : self.q_api_attributes
  end
  api_fields.each do |api_field|
    begin
      if (self.send(api_field)).class == Paperclip::Attachment
        picture_styles = []
        self.send(api_field).styles.each {|style| picture_styles << style[0]}
        result[api_field] = {original: "http://#{ActionMailer::Base.default_url_options[:host]}#{self.send(api_field).url}",
                             styles: picture_styles}
      else
        begin
          result[api_field] = self.send(api_field)
        rescue
          raise "The field #{api_field} don't exist in this Model"
        end
      end
    rescue
      begin
        result[api_field] = self.send(api_field)
      rescue
        raise "The field #{api_field} don't exist in this Model"
      end
    end
  end

  # if self.quick_api_methods
  #   result = api_method_options(result, self.quick_api_methods)
  # end

  if options[:relations] == true
      result = api_many_options(result, self.q_api_has_many)                if self.q_api_has_many
      result = api_belongs_or_one_options(result, self.q_api_belongs_to)    if self.q_api_belongs_to
      result = api_belongs_or_one_options(result, self.q_api_has_one)       if self.q_api_has_one
      result = api_many_options(result, self.q_api_has_and_belongs_to_many) if self.q_api_has_and_belongs_to_many
      result = api_many_options(result, self.q_api_embeds_many)             if self.q_api_embeds_many
      result = api_belongs_or_one_options(result, self.q_api_embedded_in)   if self.q_api_embedded_in
      result = api_belongs_or_one_options(result, self.q_api_embeds_one)    if self.q_api_embeds_one
  end

  result = api_set_options(result, options)

  return result
end

Private Instance Methods

api_added(result, added) click to toggle source
# File lib/quick_api/mongoid.rb, line 140
def api_added(result, added)
  added.each do |field|
    field.each do |sub_field|
      result[sub_field[0]] = sub_field[1] unless sub_field.empty?
    end
  end
  return result
end
api_belongs_or_one_options(result, one) click to toggle source
# File lib/quick_api/mongoid.rb, line 132
def api_belongs_or_one_options(result, one)
  one.each do |model|
    resource = eval(model.to_s.singularize.camelize.underscore)
    result[model.to_s.singularize.camelize.underscore] = resource.try(:to_api)
  end
  return result
end
api_many_options(result, many) click to toggle source
# File lib/quick_api/mongoid.rb, line 120
def api_many_options(result, many)
  many.each do |model|
    resources = eval(model.to_s.underscore.pluralize)
    result_api_resources = []
    resources.each do |resource|
      result_api_resources << resource.to_api
    end
    result[model.to_s.underscore.pluralize] = result_api_resources
  end
  return result
end
api_set_options(result, options) click to toggle source

def api_method_options(result, options)

options.each do |method|
  #TODO doc
  result.merge! self.send(method)
end
return result

end

# File lib/quick_api/mongoid.rb, line 115
def api_set_options(result, options)
  result = api_added(result, options[:added]) if options[:added]
  return result
end