class Filter8::Request

Attributes

content[RW]

Public Class Methods

new(content, options = {}) click to toggle source
# File lib/filter8/request.rb, line 5
def initialize(content, options = {})
  if content.is_a? Hash
    @content = content[:content]
    options = content.reject!{ |k| k == :content }
  else
    @content = content
  end
  raise Exception.new("No value for 'content' given") if(@content.nil?||@content.empty?)

  options.each do |filter_name, filter_options|
    validate_filter_options(filter_name, filter_options)

    instance_variable_value = nil
    if filter_options.is_a? Hash
      instance_variable_value = { enabled: true }
      instance_variable_value = instance_variable_value.merge(filter_options)
    else
      instance_variable_value = filter_options
    end
    instance_variable_set("@#{filter_name}", instance_variable_value)
    self.class.send(:attr_accessor, filter_name)
  end
end

Public Instance Methods

request_params() click to toggle source
# File lib/filter8/request.rb, line 29
def request_params
  request_params = "content=#{CGI.escape(self.content)}"

  Filter8::AVAILABLE_FILTERS.each do |filter_name|
    if self.respond_to?(filter_name) && !self.send(filter_name).nil?
      request_params = request_params + "&" + filter_options_to_params(filter_name)          
    end
  end

  request_params
end

Private Instance Methods

filter_options_to_params(filter_name) click to toggle source
# File lib/filter8/request.rb, line 43
def filter_options_to_params(filter_name)
  params = []

  filter_options = self.send(filter_name)
  if filter_options.is_a? Hash
    filter_options.each do |filter_option, filter_option_value|
      if filter_option_value.respond_to? :each
        filter_option_value.each do |value|
          params << "#{filter_name}.#{filter_option}=#{value}"
        end
      else
        params << "#{filter_name}.#{filter_option}=#{filter_option_value}"
      end
    end
  else
    params << "#{filter_name}=#{filter_options}"
  end

  return params.join("&")
end
validate_filter_options(filter_name, filter_options) click to toggle source
# File lib/filter8/request.rb, line 64
def validate_filter_options(filter_name, filter_options)
  raise Exception.new("'#{filter_name}' is not a valid filter8-filter") unless Filter8::AVAILABLE_FILTERS.include?(filter_name)

  if filter_options.respond_to? :each
    filter_options.each do |filter_option, filter_option_value|
      raise Exception.new("'#{filter_option}' is not a valid option for filter '#{filter_name}'") unless Filter8::FILTER_PARAMS[filter_name].include?(filter_option)
    end
  end
end