jam-cloud/ruby/lib/jam_ruby/models/icecast_relay.rb

39 lines
1.4 KiB
Ruby

module JamRuby
class IcecastRelay < ActiveRecord::Base
attr_accessible :server, :port, :mount, :local_mount, :relay_username, :relay_pass, :relay_shoutcast_metadata, :on_demand,
as: :admin
has_many :server_relays, :class_name => "JamRuby::IcecastServerRelay"
has_many :servers, :class_name => "JamRuby::IcecastServer", :through => :server_relays, :source => :server
validates :port, presence: true, numericality: {only_integer: true}, length: {in: 1..65535}
validates :mount, presence: true
validates :server, presence: true
validates :relay_shoutcast_metadata, :inclusion => {:in => [0, 1]}
validates :on_demand, presence: true, :inclusion => {:in => [0, 1]}
after_save :poke_config
def poke_config
IcecastServer.update(servers, :config_changed => true)
end
def to_s
mount
end
def dumpXml (builder)
builder.tag! 'relay' do |listen|
listen.tag! 'server', server
listen.tag! 'port', port
listen.tag! 'mount', mount
listen.tag! 'local-mount', local_mount if !local_mount.nil? && !local_mount.empty?
listen.tag! 'username', relay_username if !relay_username.nil? && !relay_username.empty?
listen.tag! 'password', relay_pass if !relay_pass.nil? && !pasword.empty?
listen.tag! 'relay-shoutcast-metadata', relay_shoutcast_metadata
listen.tag! 'on-demand', on_demand
end
end
end
end