module Neutrino::AudiomaticRails::Model::ClassMethods

Constants

FieldOptionParams
Processors

Public Instance Methods

analyze(processor, options = {}) click to toggle source

Sets processor which will be done on the file. Gives posibillites to sets method which convert result.

===Example

  analyze :duration, {duration:  {transformation: :to_ms=}}
  analyze :replay_gain, save_to: :save_replay_gain=
# File lib/neutrino_audiomatic_rails/neutrino_audiomatic_rails_model.rb, line 321
def analyze(processor, options = {})
  errors = validate_analyze(processor, options)
  raise ProcessorException.new(errors) unless errors.empty?

  @_processors ||= {}
  @_processors[processor] = options
end
audiomatic_error(method) click to toggle source

Allows set customize rection on error duting sending request to Audiomatic, such as:

  => "Invalid credentials"
  => "Rate limit reached"

===Example

 audiomatic_error :audiomatic_error

    def audiomatic_error= result
      raise ActiveRecord::RecordInvalid.new(self)
    end
# File lib/neutrino_audiomatic_rails/neutrino_audiomatic_rails_model.rb, line 294
def audiomatic_error method
  @_user_error_solution =  method
end
audiomatic_file_url(method=nil) click to toggle source

Sets url of file which will be analyze

# File lib/neutrino_audiomatic_rails/neutrino_audiomatic_rails_model.rb, line 217
def audiomatic_file_url method=nil
  if method.nil?
    @_file_url = default_file_url
  else
    @_file_url = method 
  end
end
callback_url(method=nil) click to toggle source
# File lib/neutrino_audiomatic_rails/neutrino_audiomatic_rails_model.rb, line 233
def callback_url method=nil
  unless method.nil?
    @_callback_url = method
  else
    @_callback_url
  end
end
clean_processors() click to toggle source
# File lib/neutrino_audiomatic_rails/neutrino_audiomatic_rails_model.rb, line 362
 def clean_processors
  @_processors = {}
end
field(processor) click to toggle source

Saves result of analyze in ActiveRecord field

===Example

  analyze :duration, field: :duration
# File lib/neutrino_audiomatic_rails/neutrino_audiomatic_rails_model.rb, line 274
def field processor
  @_processors[processor.intern][:field]
end
field_exists?(field) click to toggle source
# File lib/neutrino_audiomatic_rails/neutrino_audiomatic_rails_model.rb, line 356
 def field_exists?(field)
   self.column_names.include?(field.to_s)
 rescue
  false
end
file_url() click to toggle source
# File lib/neutrino_audiomatic_rails/neutrino_audiomatic_rails_model.rb, line 225
def file_url
  if @_file_url.nil?
    :default_file_url
  else
    @_file_url
  end
end
mount_on(processor) click to toggle source
# File lib/neutrino_audiomatic_rails/neutrino_audiomatic_rails_model.rb, line 264
def mount_on processor
  @_processors[processor.intern][:mount_on]
end
options() click to toggle source
# File lib/neutrino_audiomatic_rails/neutrino_audiomatic_rails_model.rb, line 366
def options
  @_options
end
processors() click to toggle source
# File lib/neutrino_audiomatic_rails/neutrino_audiomatic_rails_model.rb, line 241
def processors 
  @_processors
end
save_to(processor) click to toggle source

Allows set customize rection on saving audiomatic response

===Example

 analyze :duration, save_to: :save_to=

    def save_to= result
      if result > 0     
        self.duration = result
        true
      else
        {error: "duration < 0"}
      end
    end
# File lib/neutrino_audiomatic_rails/neutrino_audiomatic_rails_model.rb, line 260
def save_to processor 
  @_processors[processor.intern][:save_to]
end
transformation(processor) click to toggle source

Modifies response data from Audiomatic before saving. Works only if you use method field.

===Example - convert response duration from miliseconds to seconds

 analyze :duration, {duration: {field: :duration, transformation: :to_seconds=} 

    def to_seconds= result
      result.to_i / 1000
    end
# File lib/neutrino_audiomatic_rails/neutrino_audiomatic_rails_model.rb, line 308
def transformation processor
  @_processors[processor.intern][:transformation]
end
user_error_solution() click to toggle source
# File lib/neutrino_audiomatic_rails/neutrino_audiomatic_rails_model.rb, line 278
def user_error_solution
  @_user_error_solution
end
validate_analyze(processor, options = {}) click to toggle source
# File lib/neutrino_audiomatic_rails/neutrino_audiomatic_rails_model.rb, line 329
def validate_analyze(processor, options = {})
  return ["Processor #{processor} is not valid. It should be one of #{Processors}"] unless Processors.include?(processor)
  return [] if options.include?(:save_to) || options.include?(:mount_on)
  case options
  when Array
    return ["Model #{self.class} hasn't got requiring field "] unless options.all? { |elem| field_exists?(elem) } # Change it to check fields or remove entirely
  when Hash 
    return ["Options of processor #{processor} are not valid"] unless options.values.all? { |suboptions| validate_analyze_options(suboptions) } # {field: asdfsdf, transforamtion: asdfdsf},  :transfr
  else
    raise ProcessorException.new(["Options passed to #{self.class}#analyze - #{processor} invalid.  Should be hash or array, is #{options.class}"])
  end
  []
end
validate_analyze_options(suboptions) click to toggle source
# File lib/neutrino_audiomatic_rails/neutrino_audiomatic_rails_model.rb, line 343
def validate_analyze_options(suboptions)
  case suboptions
  when Symbol then  
    field_exists?(suboptions)
  when Hash 
    (suboptions[:field].nil? || field_exists?(suboptions[:field].to_s)) &&
    (suboptions[:transformation].nil? || suboptions[:transformation].kind_of?(Array)) &&
    suboptions.keys.all? { |elem| FieldOptionParams.include?(elem) }
  else
    raise ProcessorException.new(["Options passed to #{self.class} analyze - #{processor} invalid.  Should be hash or symbol, is #{suboptions.class}"])
  end
end