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