jam-cloud/web/app/controllers/api_live_streams_controller.rb

134 lines
3.4 KiB
Ruby

class ApiLiveStreamsController < ApiController
respond_to :json
def log
@log || Logging.logger[ApiLiveStreamsController]
end
def index
@live_streams = LiveStream.upcoming
render "api_live_streams/index", :layout => nil
end
def claim
order = params[:order]
if order.nil?
render :json => {}, :status => 404, layout: nil
return
end
order.strip!
if order.start_with? "#"
order = order[1..-1]
end
event_brite_order = EventBriteOrder.find_by_order_id(order)
if event_brite_order.nil?
render :json => {}, :status => 404, layout: nil
else
EventBriteOrder.where(id: event_brite_order.id).update_all(times_claimed: event_brite_order.times_claimed + 1)
render :json => {event_id: event_brite_order.live_stream.id, order_id: event_brite_order.order_id, event_type: 'eventbrite', slug: event_brite_order.live_stream.slug}, :status => :ok, layout: nil
end
end
def show
slug = params[:slug]
@live_stream = LiveStream.find_by_slug!(slug)
render "api_live_streams/show", :layout => nil
end
def build_user_detail(user)
detail = ''
participant = "---------Participant: #{user.name}---------\n"
detail += participant
detail += "Email: #{user.email}\n"
detail += "Location: #{user.location}\n"
detail += "Profile: #{user.biography}\n"
detail += "Admin URL: #{user.admin_url}\n"
user.bands.each do | band |
detail += " Band: #{band.name} #{band.website}\n"
detail += " Band Profile: #{band.biography}"
end
detail += ("-" * participant.length) + "\n"
detail
end
def email_stream_event(subject, create_entity)
begin
music_session_id = params["music_session_id"]
music_session = MusicSession.find(music_session_id)
music_session_admin_url = ''
if music_session
music_session_admin_url = music_session.admin_url
end
participants = params["participants"]
body = "\n"
body += "Participants: #{participants}\n\n"
body += build_user_detail(current_user)
users = nil
if music_session.active_music_session
users = music_session.active_music_session.users
else
users = music_session.unique_users
end
users.each do |user|
if user == current_user
next
end
body += build_user_detail(user)
end
body += "\nSession Admin URL: #{music_session_admin_url}"
body += "\n\n"
body += "--------DUMP--------\n"
body += params.to_yaml
if create_entity
client_live_stream = ClientLiveStream.new
client_live_stream.user = current_user
client_live_stream.music_session = music_session if music_session
client_live_stream.message = body
client_live_stream.save
end
AdminMailer.ugly({to:'david@jamkazam.com', cc:'seth@jamkazam.com,peter@jamkazam.com', body: body, subject: subject}).deliver_now
rescue => e
AdminMailer.ugly({to:'david@jamkazam.com', cc:'seth@jamkazam.com,peter@jamkazam.com', body: params.to_s + "\n\n" + e.to_s, subject: 'Live Stream Started!'}).deliver_now
end
end
def stream_started
email_stream_event("Live Stream Started!", false)
render json: {}, :status => :ok
end
def stream_stop
email_stream_event("Live Stream Stopped!", true)
render json: {}, :status => :ok
end
end