class Dandelionapi::Analysis::Request

Public Instance Methods

analyze(options) click to toggle source
# File lib/dandelionapi/analysis.rb, line 12
def analyze(options)
  params = filter_permitted_params options

  if required_params_missing? params
    raise MissingParameter.new "Please provide one of the following parameters: #{self.class::MANDATORY_FIELDS.join(", ")} as input"
  end

  if too_many_mandatory_parameters? params, 1
    raise TooManyParameters.new "Please provide only one of the following parameters: #{self.class::MANDATORY_FIELDS.join(", ")} as input"        
  end

  verify_format params do |wrong_param|
    raise WrongParameterFormat.new "Wrong format: #{self.class::FIELDS_FORMAT[wrong_param][:error_message]}"  
  end

  call(self.class::ENDPOINT, params)
end

Protected Instance Methods

filter_permitted_params(options) click to toggle source
# File lib/dandelionapi/analysis.rb, line 32
def filter_permitted_params options
  params = {}
  options.each { |key, value| params[key.to_s] = value }
  params.select { |key,value| (self.class::MANDATORY_FIELDS + self.class::OPTIONAL_FIELDS).include? key }
end
mandatory_fields_count(params) click to toggle source
# File lib/dandelionapi/analysis.rb, line 46
def mandatory_fields_count params
  (self.class::MANDATORY_FIELDS & params.keys).size
end
required_params_missing?(params) click to toggle source
# File lib/dandelionapi/analysis.rb, line 38
def required_params_missing? params
  mandatory_fields_count(params) == 0
end
too_many_mandatory_parameters?(params, max) click to toggle source
# File lib/dandelionapi/analysis.rb, line 42
def too_many_mandatory_parameters? params, max
  mandatory_fields_count(params) > max
end
verify_format(params) { |key| ... } click to toggle source
# File lib/dandelionapi/analysis.rb, line 50
def verify_format params, &block
  params.each do |key, value|
    if self.class::FIELDS_FORMAT[key] and self.class::FIELDS_FORMAT[key][:valid]
      yield key unless self.class::FIELDS_FORMAT[key][:valid].call value
    end
  end
end