88 lines
2.4 KiB
Ruby
88 lines
2.4 KiB
Ruby
class ApiRecordingssController < ApiController
|
|
|
|
before_filter :api_signed_in_user
|
|
before_filter :look_up_recording, :only => [ :stop, :update_fields, :delete ]
|
|
before_filter :parse_filename, :only => [ :upload_next_part, :upload_sign, :upload_part_complete, :upload_complete ]
|
|
|
|
respond_to :json
|
|
|
|
# All recordings where the current user is a musician, whether owned by the user or not.
|
|
def index
|
|
@recordings = Recording.user_recordings(current_user.id).paginate(page: params[:page])
|
|
respond_with @recordings, responder: ApiResponder, :status => 200
|
|
end
|
|
|
|
def show
|
|
@blah
|
|
end
|
|
|
|
def update
|
|
@recording.update_fields(params)
|
|
end
|
|
|
|
def delete
|
|
@recording.destroy
|
|
end
|
|
|
|
def start
|
|
begin
|
|
Recording.start(params[:music_session_id], current_user)
|
|
respond_with responder: ApiResponder, :status => 204
|
|
rescue
|
|
render :json => { :message => "recording could not be started" }, :status => 403
|
|
end
|
|
end
|
|
|
|
def stop
|
|
begin
|
|
@recording.stop
|
|
respond_with responder: ApiResponder, :status => 204
|
|
rescue
|
|
render :json => { :message => "recording could not be stopped" }, :status => 403
|
|
end
|
|
end
|
|
|
|
def upload_next_part
|
|
if @recorded_track.next_part_to_upload == 0
|
|
@recorded_track.upload_start
|
|
end
|
|
|
|
render :json => { :part => @recorded_track.next_part_to_upload }, :status => 200
|
|
end
|
|
|
|
def upload_sign
|
|
render :json => @recorded_track.upload_sign(params[:content_md5]), :status => 200
|
|
end
|
|
|
|
def upload_part_complete
|
|
begin
|
|
@recorded_track.upload_part_complete(params[:part])
|
|
rescue
|
|
render :json => { :message => "part out of order" }, :status => 403
|
|
end
|
|
respond_with responder: ApiResponder, :status => 204
|
|
end
|
|
|
|
def upload_complete
|
|
@recorded_track.upload_complete
|
|
respond_with responder: ApiResponder, :status => 204
|
|
end
|
|
|
|
private
|
|
|
|
def parse_filename
|
|
@recorded_track = RecordedTrack.find_by_upload_filename(params[:filename])
|
|
unless @recorded_track
|
|
render :json => { :message => RECORDING_NOT_FOUND }, :status => 404
|
|
end
|
|
end
|
|
|
|
def look_up_recording
|
|
@recording = Recording.find(params[id])
|
|
if @recording.nil? || @recording.owner_id != current_user.id
|
|
render :json => { :message => "recording not found" }, :status => 404
|
|
end
|
|
end
|
|
|
|
end
|