diff --git a/web/app/assets/javascripts/jam_rest.js b/web/app/assets/javascripts/jam_rest.js index 36be62054..0772bf500 100644 --- a/web/app/assets/javascripts/jam_rest.js +++ b/web/app/assets/javascripts/jam_rest.js @@ -93,9 +93,9 @@ }); } - function addRecordingPlay(recordingId, claimedRecordingId, userId) { + function addPlayablePlay(playableId, claimedRecordingId, userId) { return $.ajax({ - url: '/api/recordings/' + recordingId + "/plays", + url: '/api/users/' + playableId + "/plays", type: "POST", data : JSON.stringify({user_id: userId, claimed_recording_id: claimedRecordingId}), dataType : 'json', @@ -904,7 +904,7 @@ this.addSessionLike = addSessionLike; this.addRecordingComment = addRecordingComment; this.addRecordingLike = addRecordingLike; - this.addRecordingPlay = addRecordingPlay; + this.addPlayablePlay = addPlayablePlay; this.getSession = getSession; this.getClientDownloads = getClientDownloads; this.createEmailInvitations = createEmailInvitations; diff --git a/web/app/assets/javascripts/jquery.listenRecording.js b/web/app/assets/javascripts/jquery.listenRecording.js index 1ce3717a4..2f8ccad2f 100644 --- a/web/app/assets/javascripts/jquery.listenRecording.js +++ b/web/app/assets/javascripts/jquery.listenRecording.js @@ -63,9 +63,9 @@ transition(PlayStateInitializing); // keep this after transition, because any transition clears this timer waitForBufferingTimeout = setTimeout(noBuffer, WAIT_FOR_BUFFER_TIMEOUT); + //context.JK.Rest().addPlayablePlay(null, null, context.JK.currentUserId); }) - } function pause(e) { diff --git a/web/app/assets/javascripts/web/recordings.js b/web/app/assets/javascripts/web/recordings.js index cea7ffcfd..6ec77f85e 100644 --- a/web/app/assets/javascripts/web/recordings.js +++ b/web/app/assets/javascripts/web/recordings.js @@ -16,7 +16,7 @@ } function play() { - rest.addRecordingPlay(recordingId, claimedRecordingId, JK.currentUserId) + rest.addPlayablePlay(recordingId, claimedRecordingId, JK.currentUserId) .done(function(response) { $("#spnPlayCount", $scope).html(parseInt($("#spnPlayCount").text()) + 1); }); diff --git a/web/app/controllers/api_recordings_controller.rb b/web/app/controllers/api_recordings_controller.rb index e1d0587ef..340bcba90 100644 --- a/web/app/controllers/api_recordings_controller.rb +++ b/web/app/controllers/api_recordings_controller.rb @@ -152,8 +152,9 @@ class ApiRecordingsController < ApiController return end - play = RecordingPlay.new - play.recording_id = params[:id] + play = PlayablePlay.new + play.playable_id = params[:id] + play.playable_type = 'JamRuby::Recording' play.player_id = params[:user_id] play.claimed_recording_id = params[:claimed_recording_id] play.ip_address = request.remote_ip diff --git a/web/app/controllers/api_users_controller.rb b/web/app/controllers/api_users_controller.rb index 031fe0eeb..31b5e4c93 100644 --- a/web/app/controllers/api_users_controller.rb +++ b/web/app/controllers/api_users_controller.rb @@ -572,6 +572,29 @@ class ApiUsersController < ApiController end end + def add_play + if params[:id].blank? + render :json => { :message => "Playable ID is required" }, :status => 400 + return + end + + play = PlayablePlay.new + play.playable_id = params[:id] + play.playable_type = params[:claimed_recording_id].present? ? 'JamRuby::Recording' : 'JamRuby::MusicSession' + play.player_id = params[:user_id] + play.claimed_recording_id = params[:claimed_recording_id] + play.ip_address = request.remote_ip + play.save + + if play.errors.any? + render :json => { :message => "Unexpected error occurred" }, :status => 500 + return + else + render :json => {}, :status => 201 + return + end + end + ###################### RECORDINGS ####################### # def recording_index # @recordings = User.recording_index(current_user, params[:id]) diff --git a/web/config/routes.rb b/web/config/routes.rb index 27ad0432b..e61dde45f 100644 --- a/web/config/routes.rb +++ b/web/config/routes.rb @@ -225,6 +225,8 @@ SampleApp::Application.routes.draw do # match '/users/:id/recordings/:recording_id' => 'api_users#recording_update', :via => :post # match '/users/:id/recordings/:recording_id' => 'api_users#recording_destroy', :via => :delete + match '/users/:id/plays' => 'api_users#add_play', :via => :post, :as => 'api_users_add_play' + # bands match '/bands' => 'api_bands#index', :via => :get match '/bands/validate' => 'api_bands#validate', :via => :post @@ -304,7 +306,6 @@ SampleApp::Application.routes.draw do match '/recordings/:id/claim' => 'api_recordings#claim', :via => :post, :as => 'api_recordings_claim' match '/recordings/:id/comments' => 'api_recordings#add_comment', :via => :post, :as => 'api_recordings_add_comment' match '/recordings/:id/likes' => 'api_recordings#add_like', :via => :post, :as => 'api_recordings_add_like' - match '/recordings/:id/plays' => 'api_recordings#add_play', :via => :post, :as => 'api_recordings_add_play' match '/recordings/:id/discard' => 'api_recordings#discard', :via => :post, :as => 'api_recordings_discard' match '/recordings/:id/tracks/:track_id/download' => 'api_recordings#download', :via => :get, :as => 'api_recordings_download' match '/recordings/:id/tracks/:track_id/upload_next_part' => 'api_recordings#upload_next_part', :via => :get diff --git a/web/spec/factories.rb b/web/spec/factories.rb index 78839e8a0..fa08c477a 100644 --- a/web/spec/factories.rb +++ b/web/spec/factories.rb @@ -359,11 +359,7 @@ FactoryGirl.define do token_expires_at Time.now end - factory :recording_play, :class => JamRuby::RecordingPlay do - - end - - factory :music_session_play, :class => JamRuby::MusicSessionPlay do + factory :playable_play, :class => JamRuby::PlayablePlay do end