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

80 lines
2.4 KiB
Ruby
Raw Normal View History

class ApiJamTracksController < ApiController
# have to be signed in currently to see this screen
before_filter :api_signed_in_user
before_filter :lookup_jam_track_right, :only => [:download,:enqueue, :show_jam_track_right]
respond_to :json
def index
data = JamTrack.index(params, current_user)
@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
def downloads
begin
render :json => JamTrack.list_downloads(current_user, params[:limit], params[:since]), :status => 200
rescue
render :json => { :message => "could not produce list of files" }, :status => 403
end
end
def download
if @jam_track_right.valid?
if (@jam_track_right && @jam_track_right.signed && @jam_track_right.url.present? &&@jam_track_right.url.file.exists?)
JamTrackRight.where(:id => self.id).update_all(:last_downloaded_at => Time.now)
@jam_track_right.update_download_count
@jam_track_right.save!
redirect_to @jam_track_right.sign_url
else
@jam_track_right.enqueue_if_needed
render :json => { :message => "not available, digitally signing Jam Track offline." }, :status => 202
end
else
render :json => { :message => "download limit surpassed", :errors=>@jam_track_right.errors }, :status => 403
end
end
def enqueue
@jam_track_right.enqueue_if_needed
render :json => { :message => "enqueued" }, :status => 200
end
def show_jam_track_right
end
2015-01-05 22:53:43 +00:00
def keys
jamtrack_ids = params[:jamtracks]
unless jamtrack_ids.kind_of?(Array)
render :json => {message: 'jamtracks parameter must be an array'}, :status => 200
return
end
@jam_tracks = JamTrackRight.list_keys(current_user, params[:jamtracks])
render "api_jam_tracks/list_keys", :layout => nil
end
private
def lookup_jam_track_right
@jam_track_right = JamTrackRight.where("jam_track_id=? AND user_id=?", params[:id], current_user.id).first
raise PermissionError, ValidationMessages::PERMISSION_VALIDATION_ERROR unless @jam_track_right
end
end # class ApiJamTracksController