2014-12-16 01:21:27 +00:00
|
|
|
class ApiJamTracksController < ApiController
|
2014-11-04 20:55:12 +00:00
|
|
|
|
|
|
|
|
# have to be signed in currently to see this screen
|
|
|
|
|
before_filter :api_signed_in_user
|
2015-01-09 17:23:20 +00:00
|
|
|
before_filter :lookup_jam_track_right, :only => [:download,:enqueue, :show_jam_track_right]
|
2014-12-17 23:19:36 +00:00
|
|
|
|
2014-11-04 20:55:12 +00:00
|
|
|
respond_to :json
|
|
|
|
|
|
2015-01-07 18:33:49 +00:00
|
|
|
def index
|
2015-01-07 22:16:57 +00:00
|
|
|
data = JamTrack.index(params, current_user)
|
2015-01-04 22:24:24 +00:00
|
|
|
@jam_tracks, @next = data[0], data[1]
|
|
|
|
|
|
|
|
|
|
render "api_jam_tracks/index", :layout => nil
|
|
|
|
|
end
|
|
|
|
|
|
2015-01-09 02:35:39 +00:00
|
|
|
def purchased
|
|
|
|
|
params[:show_purchased_only] = true
|
|
|
|
|
data = JamTrack.index(params, current_user)
|
|
|
|
|
@jam_tracks, @next = data[0], data[1]
|
|
|
|
|
|
|
|
|
|
response.headers['total-entries'] = @jam_tracks.total_entries.to_s
|
|
|
|
|
|
|
|
|
|
render "api_jam_tracks/purchased", :layout => nil
|
|
|
|
|
end
|
|
|
|
|
|
2014-12-17 23:19:36 +00:00
|
|
|
def download
|
2015-03-09 14:44:12 +00:00
|
|
|
if @jam_track_right.valid?
|
|
|
|
|
sample_rate = params[:sample_rate].nil? ? nil : params[:sample_rate].to_i
|
|
|
|
|
if (@jam_track_right && @jam_track_right.ready?(sample_rate))
|
2015-01-09 22:13:04 +00:00
|
|
|
@jam_track_right.update_download_count
|
|
|
|
|
@jam_track_right.last_downloaded_at = Time.now
|
2014-12-17 23:19:36 +00:00
|
|
|
@jam_track_right.save!
|
2015-03-09 14:44:12 +00:00
|
|
|
redirect_to @jam_track_right.sign_url(120, sample_rate)
|
2014-12-17 23:19:36 +00:00
|
|
|
else
|
2015-03-09 14:44:12 +00:00
|
|
|
@jam_track_right.enqueue_if_needed(sample_rate)
|
2014-12-17 23:19:36 +00:00
|
|
|
render :json => { :message => "not available, digitally signing Jam Track offline." }, :status => 202
|
|
|
|
|
end
|
|
|
|
|
else
|
2015-01-04 22:24:24 +00:00
|
|
|
render :json => { :message => "download limit surpassed", :errors=>@jam_track_right.errors }, :status => 403
|
2014-12-17 23:19:36 +00:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2015-01-09 17:23:20 +00:00
|
|
|
def enqueue
|
2015-03-09 14:44:12 +00:00
|
|
|
sample_rate = params[:sample_rate].nil? ? nil : params[:sample_rate].to_i
|
|
|
|
|
@jam_track_right.enqueue_if_needed(sample_rate)
|
2015-01-09 17:23:20 +00:00
|
|
|
render :json => { :message => "enqueued" }, :status => 200
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def show_jam_track_right
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
2015-01-05 22:53:43 +00:00
|
|
|
def keys
|
2015-01-23 16:50:58 +00:00
|
|
|
jamtrack_holder = params[:jamtracks]
|
|
|
|
|
|
|
|
|
|
unless jamtrack_holder.kind_of?(Hash)
|
|
|
|
|
render :json => {message: 'jamtracks parameter must be an hash'}, :status => 422
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
jamtrack_ids = jamtrack_holder[:tracks]
|
2015-01-05 22:53:43 +00:00
|
|
|
|
|
|
|
|
unless jamtrack_ids.kind_of?(Array)
|
2015-01-23 16:50:58 +00:00
|
|
|
render :json => {message: 'jamtracks:tracks parameter must be an array'}, :status => 422
|
2015-01-05 22:53:43 +00:00
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
2015-01-23 16:50:58 +00:00
|
|
|
@jam_tracks = JamTrackRight.list_keys(current_user, jamtrack_ids)
|
2015-01-05 22:53:43 +00:00
|
|
|
end
|
|
|
|
|
|
2014-12-17 23:19:36 +00:00
|
|
|
private
|
2015-01-04 22:24:24 +00:00
|
|
|
def lookup_jam_track_right
|
|
|
|
|
@jam_track_right = JamTrackRight.where("jam_track_id=? AND user_id=?", params[:id], current_user.id).first
|
2014-12-17 23:19:36 +00:00
|
|
|
raise PermissionError, ValidationMessages::PERMISSION_VALIDATION_ERROR unless @jam_track_right
|
|
|
|
|
end
|
|
|
|
|
|
2015-01-04 22:24:24 +00:00
|
|
|
end # class ApiJamTracksController
|