jam-cloud/web/app/assets/javascripts/jam_rest.js

1518 lines
47 KiB
JavaScript
Raw Normal View History

(function(context,$) {
/**
* Javascript wrappers for the REST API
*/
"use strict";
context.JK = context.JK || {};
context.JK.Rest = function() {
var self = this;
var logger = context.JK.logger;
function createJoinRequest(joinRequest) {
return $.ajax({
type: "POST",
dataType: "json",
url: '/api/join_requests',
contentType: 'application/json',
processData: false,
data: JSON.stringify(joinRequest)
});
}
function updateJoinRequest(joinRequestId, isApproved) {
return $.ajax({
type: "PUT",
dataType: "json",
url: '/api/join_requests/' + joinRequestId,
contentType: 'application/json',
processData: false,
data: JSON.stringify({"approved": isApproved})
});
}
function legacyCreateSession(options) {
return $.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "/api/sessions/legacy",
processData:false,
2014-05-18 04:09:21 +00:00
data: JSON.stringify(options)
});
}
function createScheduledSession(options) {
return $.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "/api/sessions",
processData: false,
data: JSON.stringify(options)
});
}
2014-06-09 22:13:54 +00:00
function uploadMusicNotations(formData) {
return $.ajax({
type: "POST",
processData: false,
contentType: false,
dataType: "json",
cache: false,
url: "/api/music_notations",
data: formData
});
}
function getMusicNotation(query) {
return $.ajax({
type: "GET",
url: "/api/music_notations/"+query
});
}
2014-05-06 22:50:41 +00:00
function legacyJoinSession(options) {
var sessionId = options["session_id"];
delete options["session_id"];
return $.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "/api/sessions/" + sessionId + "/participants/legacy",
data: JSON.stringify(options),
processData:false
});
}
2014-05-20 13:26:32 +00:00
function joinSession(options) {
var sessionId = options["session_id"];
delete options["session_id"];
return $.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "/api/sessions/" + sessionId + "/participants",
2014-05-21 16:24:40 +00:00
data: JSON.stringify(options),
2014-05-20 13:26:32 +00:00
processData: false
});
}
2014-06-17 20:57:48 +00:00
function cancelSession(options) {
var sessionId = options["session_id"];
delete options["session_id"];
return $.ajax({
type: "DELETE",
dataType: "JSON",
contentType: 'application/json',
url: "/api/sessions/" + sessionId,
data: JSON.stringify(options),
processData: false
});
}
function findActiveSessions(query) {
return $.ajax({
type: "GET",
url: "/api/sessions/active?" + $.param(query)
});
}
function findInactiveSessions(query) {
return $.ajax({
type: "GET",
url: "/api/sessions/inactive?" + $.param(query)
});
}
2014-06-01 18:45:17 +00:00
function findScheduledSessions(query) {
return $.ajax({
type: "GET",
url: "/api/sessions/scheduled?" + $.param(query)
});
}
function findScheduledRsvpSessions(query) {
return $.ajax({
type: "GET",
url: "/api/sessions/scheduled_rsvp?" + $.param(query)
});
}
function updateSession(id, newSession) {
2014-06-26 02:20:32 +00:00
return $.ajax({
url: '/api/sessions/' + id,
type: "PUT",
data : newSession,
dataType : 'json'
});
}
function updateScheduledSession(id, newSession) {
return $.ajax({
url: '/api/sessions/' + id,
type: "POST",
data: newSession,
dataType: 'json'
});
}
function getSessionHistory(id, includePending) {
var includeFlag = 'false';
if (includePending) {
includeFlag = 'true';
}
2014-02-02 23:14:47 +00:00
return $.ajax({
type: "GET",
dataType: "json",
url: '/api/sessions/' + id + '/history?includePending=' + includeFlag,
2014-02-02 23:14:47 +00:00
contentType: 'application/json',
processData: false
});
}
2014-05-27 03:52:59 +00:00
function addSessionInfoComment(sessionId, comment) {
return $.ajax({
url: '/api/sessions/' + sessionId + "/details/comments",
type: "POST",
data : JSON.stringify({"comment": comment}),
dataType : 'json',
contentType: 'application/json'
});
}
2014-01-28 07:35:35 +00:00
function addSessionComment(sessionId, userId, comment) {
return $.ajax({
url: '/api/sessions/' + sessionId + "/comments",
type: "POST",
data : JSON.stringify({"comment": comment, "user_id": userId}),
dataType : 'json',
contentType: 'application/json'
});
}
function addSessionLike(sessionId, userId) {
return $.ajax({
url: '/api/sessions/' + sessionId + "/likes",
type: "POST",
data : JSON.stringify({"user_id": userId}),
dataType : 'json',
contentType: 'application/json'
});
}
2014-05-29 06:33:37 +00:00
function getRsvpRequests(sessionId) {
return $.ajax({
url: '/api/rsvp_requests?session_id=' + sessionId,
type: "GET",
dataType : 'json',
contentType: 'application/json'
});
}
2014-05-29 03:43:57 +00:00
function submitRsvpRequest(sessionId, slotIds) {
2014-05-28 05:14:14 +00:00
return $.ajax({
url: '/api/rsvp_requests',
type: "POST",
2014-05-29 03:43:57 +00:00
data : JSON.stringify({"session_id": sessionId, "rsvp_slots": slotIds}),
2014-05-28 05:14:14 +00:00
dataType : 'json',
contentType: 'application/json'
});
}
function updateRsvpRequest(rsvpRequestId, responses) {
return $.ajax({
url: '/api/rsvp_requests/' + rsvpRequestId,
type: "POST",
data : JSON.stringify(responses),
dataType : 'json',
contentType: 'application/json'
});
}
2014-05-29 06:33:37 +00:00
function cancelRsvpRequest(sessionId, rsvpRequestId, cancelAll) {
var cancel = "yes";
if (cancelAll) {
cancel = "all";
}
2014-05-29 06:33:37 +00:00
return $.ajax({
url: '/api/rsvp_requests/' + rsvpRequestId,
type: "DELETE",
data : JSON.stringify({"session_id": sessionId, "cancelled": cancelAll}),
2014-05-28 05:14:14 +00:00
dataType : 'json',
contentType: 'application/json'
});
}
function getOpenSessionSlots(sessionId, openOnly) {
var url = '/api/rsvp_slots?session_id=' + sessionId;
if (openOnly) {
url += '&open_only=true';
}
return $.ajax({
type: "GET",
dataType: "json",
url: url,
contentType: 'application/json',
processData: false
});
}
2014-01-28 07:35:35 +00:00
function addRecordingComment(recordingId, userId, comment) {
return $.ajax({
url: '/api/recordings/' + recordingId + "/comments",
type: "POST",
data : JSON.stringify({"comment": comment, "user_id": userId}),
dataType : 'json',
contentType: 'application/json'
});
}
2014-02-20 20:54:35 +00:00
function addRecordingLike(recordingId, claimedRecordingId, userId) {
2014-01-28 07:35:35 +00:00
return $.ajax({
url: '/api/recordings/' + recordingId + "/likes",
type: "POST",
data : JSON.stringify({"user_id": userId, claimed_recording_id: claimedRecordingId}),
2014-01-28 07:35:35 +00:00
dataType : 'json',
contentType: 'application/json'
});
}
2014-03-07 07:35:10 +00:00
function addPlayablePlay(playableId, playableType, claimedRecordingId, userId) {
if (playableType == 'JamRuby::Recording') {
context.JK.GA.trackRecordingPlay();
2014-05-06 13:34:38 +00:00
} else if (playableType == 'JamRuby::MusicSession') {
context.JK.GA.trackSessionPlay();
}
2014-01-28 07:35:35 +00:00
return $.ajax({
2014-03-07 06:46:07 +00:00
url: '/api/users/' + playableId + "/plays",
2014-01-28 07:35:35 +00:00
type: "POST",
2014-03-07 07:35:10 +00:00
data : JSON.stringify({user_id: userId, claimed_recording_id: claimedRecordingId, playable_type: playableType}),
2014-01-28 07:35:35 +00:00
dataType : 'json',
contentType: 'application/json'
});
}
function updateFavorite(claimedRecordingId, favorite) {
return $.ajax({
url: '/api/favorites/' + claimedRecordingId,
type: "POST",
data : JSON.stringify({favorite: favorite}),
dataType : 'json',
contentType: 'application/json'
});
}
function validateBand(band) {
return $.ajax({
type: "POST",
dataType: "json",
url: '/api/bands/validate',
contentType: 'application/json',
processData: false,
data: JSON.stringify(band)
});
}
2013-12-01 20:09:44 +00:00
function getBand(bandId) {
return $.ajax({
type: "GET",
dataType: "json",
url: '/api/bands/' + bandId,
contentType: 'application/json',
processData: false
});
}
2013-11-21 06:24:40 +00:00
function createBand(band) {
2014-01-30 21:51:05 +00:00
var deferred = $.ajax({
2013-11-21 06:24:40 +00:00
type: "POST",
dataType: "json",
url: '/api/bands',
contentType: 'application/json',
processData: false,
data: JSON.stringify(band)
});
2014-01-30 21:51:05 +00:00
deferred.done(function() {
context.JK.GA.trackBand(context.JK.GA.BandActions.create);
context.JK.GA.trackBand(context.JK.GA.BandActions.join);
2013-12-01 20:09:44 +00:00
});
2014-01-30 21:51:05 +00:00
return deferred;
2013-12-01 20:09:44 +00:00
}
function deleteBand(bandId) {
var url = "/api/bands/" + bandId;
return $.ajax({
type: "DELETE",
dataType: "json",
url: url,
contentType: 'application/json',
processData:false
});
}
2013-11-21 06:24:40 +00:00
function updateBand(band) {
return $.ajax({
type: "POST",
dataType: "json",
url: '/api/bands/' + band.id,
contentType: 'application/json',
processData: false,
data: JSON.stringify(band)
});
}
function createBandInvitation(bandId, userId) {
var bandInvitation = {
band_id: bandId,
user_id: userId
};
2014-01-07 23:30:23 +00:00
return $.ajax({
type: "POST",
dataType: "json",
url: '/api/bands/' + bandId + "/invitations",
contentType: 'application/json',
processData: false,
data: JSON.stringify(bandInvitation)
});
}
function updateBandInvitation(bandId, invitationId, isAccepted) {
2014-01-30 21:51:05 +00:00
var deferred = $.ajax({
type: "POST",
dataType: "json",
url: '/api/bands/' + bandId + "/invitations/" + invitationId,
contentType: 'application/json',
processData: false,
data: JSON.stringify({"accepted": isAccepted})
2014-01-30 21:51:05 +00:00
})
if(isAccepted) {
deferred.done(function() {
context.JK.GA.trackBand(context.JK.GA.BandActions.join);
})
}
return deferred;
}
function resendBandInvitation(bandId, invitationId) {
return $.ajax({
type: "POST",
dataType: "json",
url: '/api/bands/' + bandId + "/invitations/" + invitationId,
contentType: 'application/json',
processData: false,
data: JSON.stringify({"resend": true})
})
}
function removeBandMember(bandId, userId) {
var url = "/api/bands/" + bandId + "/musicians/" + userId;
return $.ajax({
type: "DELETE",
dataType: "json",
url: url,
processData:false
});
}
function getBandMembers(bandId, hasPendingInvitation) {
var url = "/api/bands/" + bandId + "/musicians";
if (hasPendingInvitation) {
url += "?pending=true";
}
2014-03-05 03:32:04 +00:00
return $.ajax({
type: "GET",
dataType: "json",
url: url,
processData:false
});
}
function getSession(id) {
var url = "/api/sessions/" + id;
return $.ajax({
type: "GET",
dataType: "json",
url: url,
processData: false
});
}
function login(options) {
var url = '/api/auths/login';
return $.ajax({
type: "POST",
dataType: "json",
url: url,
processData: false,
contentType: 'application/json',
data: JSON.stringify(options)
});
}
function getUserDetail(options) {
2013-05-31 02:07:33 +00:00
var id = getId(options);
var url = "/api/users/" + id;
return $.ajax({
type: "GET",
dataType: "json",
url: url,
processData: false
});
}
function getCities(options) {
var country = options['country']
var region = options['region']
return $.ajax('/api/cities', {
data : { country: country, region: region },
dataType : 'json'
});
}
function getRegions(options) {
var country = options["country"]
return $.ajax('/api/regions', {
data : { country: country},
dataType : 'json'
});
}
function getCountries() {
return $.ajax('/api/countries', {
dataType : 'json'
});
}
function getResolvedLocation() {
return $.ajax('/api/resolved_location', {
dataType: 'json'
});
}
function getInstruments(options) {
return $.ajax('/api/instruments', {
data : { },
dataType : 'json'
});
}
function getGenres(options) {
return $.ajax('/api/genres', {
data: { },
dataType: 'json'
});
}
2014-09-13 03:30:51 +00:00
function updateUdpReachable(options) {
var id = getId(options);
return $.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "/api/users/" + id + "/udp_reachable",
data: JSON.stringify(options),
processData: false
});
}
function updateNetworkTesting(options) {
var id = getId(options);
return $.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "/api/users/" + id + "/is_network_testing",
data: JSON.stringify(options),
processData: false
});
}
2013-05-31 02:07:33 +00:00
function updateAvatar(options) {
var id = getId(options);
2013-05-23 13:53:37 +00:00
2013-05-31 02:07:33 +00:00
var original_fpfile = options['original_fpfile'];
var cropped_fpfile = options['cropped_fpfile'];
2014-02-06 16:31:52 +00:00
var cropped_large_fpfile = options['cropped_large_fpfile'];
2013-05-31 02:07:33 +00:00
var crop_selection = options['crop_selection'];
2013-12-16 03:53:16 +00:00
logger.debug(JSON.stringify({
original_fpfile : original_fpfile,
cropped_fpfile : cropped_fpfile,
2014-02-06 16:31:52 +00:00
cropped_large_fpfile : cropped_large_fpfile,
2013-12-16 03:53:16 +00:00
crop_selection : crop_selection
}));
2013-05-31 02:07:33 +00:00
var url = "/api/users/" + id + "/avatar";
return $.ajax({
type: "POST",
dataType: "json",
url: url,
contentType: 'application/json',
processData:false,
data: JSON.stringify({
original_fpfile : original_fpfile,
cropped_fpfile : cropped_fpfile,
2014-02-06 16:31:52 +00:00
cropped_large_fpfile : cropped_large_fpfile,
2013-05-31 02:07:33 +00:00
crop_selection : crop_selection
})
});
}
2013-05-23 13:53:37 +00:00
2013-05-31 02:07:33 +00:00
function deleteAvatar(options) {
var id = getId(options);
2013-05-23 13:53:37 +00:00
2013-05-31 02:07:33 +00:00
var url = "/api/users/" + id + "/avatar";
return $.ajax({
type: "DELETE",
dataType: "json",
url: url,
contentType: 'application/json',
processData:false
});
}
function getFilepickerPolicy(options) {
var id = getId(options);
var handle = options && options["handle"];
var convert = options && options["convert"]
var url = "/api/users/" + id + "/filepicker_policy";
return $.ajax(url, {
data : { handle : handle, convert: convert },
2013-05-23 13:53:37 +00:00
dataType : 'json'
});
}
2013-12-15 21:27:11 +00:00
function updateBandPhoto(options) {
var id = getId(options);
var original_fpfile = options['original_fpfile'];
var cropped_fpfile = options['cropped_fpfile'];
2014-02-06 16:31:52 +00:00
var cropped_large_fpfile = options['cropped_large_fpfile'];
2013-12-15 21:27:11 +00:00
var crop_selection = options['crop_selection'];
2013-12-16 03:53:16 +00:00
logger.debug(JSON.stringify({
original_fpfile : original_fpfile,
cropped_fpfile : cropped_fpfile,
2014-02-06 16:31:52 +00:00
cropped_large_fpfile : cropped_large_fpfile,
2013-12-16 03:53:16 +00:00
crop_selection : crop_selection
}));
2013-12-15 21:27:11 +00:00
var url = "/api/bands/" + id + "/photo";
return $.ajax({
type: "POST",
dataType: "json",
url: url,
contentType: 'application/json',
processData:false,
data: JSON.stringify({
original_fpfile : original_fpfile,
cropped_fpfile : cropped_fpfile,
2014-02-06 16:31:52 +00:00
cropped_large_fpfile : cropped_large_fpfile,
2013-12-15 21:27:11 +00:00
crop_selection : crop_selection
})
});
}
function deleteBandPhoto(options) {
var id = getId(options);
var url = "/api/bands/" + id + "/photo";
return $.ajax({
type: "DELETE",
dataType: "json",
url: url,
contentType: 'application/json',
processData:false
});
}
function getBandPhotoFilepickerPolicy(options) {
var id = getId(options);
var handle = options && options["handle"];
var convert = options && options["convert"]
var url = "/api/bands/" + id + "/filepicker_policy";
return $.ajax(url, {
data : { handle : handle, convert: convert },
dataType : 'json'
});
}
function getFriends(options) {
var id = getId(options);
2014-01-07 23:30:23 +00:00
return $.ajax({
type: "GET",
url: '/api/users/' + id + '/friends',
dataType: 'json'
});
}
2014-01-07 23:30:23 +00:00
function removeFriend(options) {
var id = getId(options);
var friendId = options["friend_id"];
return $.ajax({
type: "DELETE",
dataType: "json",
url: "/api/users/" + id + "/friends/" + friendId,
processData: false
});
}
/** NOTE: This is only for Musician, Fan, and Band Likes. Recording and
Session Likes have their own section below since unauthenticated users
are allowed to Like these entities.
*/
function addLike(options) {
var id = getId(options);
return $.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
2014-02-16 18:06:36 +00:00
url: "/api/users/" + id + "/likings",
data: JSON.stringify(options),
processData: false
});
}
function removeLike(likableId, options) {
2014-02-16 18:06:36 +00:00
var id = getId(options);
return $.ajax({
type: "DELETE",
dataType: "json",
contentType: 'application/json',
url: "/api/users/" + id + "/likings",
data: JSON.stringify(options),
processData: false
});
}
2014-01-07 23:30:23 +00:00
function addFollowing(options) {
var id = getId(options);
return $.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "/api/users/" + id + "/followings",
data: JSON.stringify(options),
processData: false
});
}
function removeFollowing(followableId, options) {
2014-01-07 23:30:23 +00:00
var id = getId(options);
return $.ajax({
type: "DELETE",
dataType: "json",
contentType: 'application/json',
url: "/api/users/" + id + "/followings/" + followableId,
2014-01-07 23:30:23 +00:00
processData: false
});
}
function getFollowings(options) {
var userId = getId(options);
// FOLLOWINGS (USERS)
return $.ajax({
type: "GET",
dataType: "json",
url: "/api/users/" + userId + "/followings",
processData:false
});
}
function getFollowers(options) {
var userId = getId(options);
return $.ajax({
type: "GET",
dataType: "json",
url: "/api/users/" + userId + "/followers",
processData:false
});
}
function getBands(options) {
var userId = getId(options);
return $.ajax({
type: "GET",
dataType: "json",
url: "/api/users/" + userId + "/bands",
processData:false
});
}
function getBandFollowers(bandId) {
return $.ajax({
type: "GET",
dataType: "json",
2014-03-05 03:32:04 +00:00
url: "/api/bands/" + bandId + "/followers",
processData:false
});
}
function getClientDownloads(options) {
return $.ajax({
type: "GET",
url: '/api/artifacts/clients',
dataType: 'json'
});
}
/** check if the server is alive */
function serverHealthCheck(options) {
return $.ajax({
type: "GET",
url: "/api/healthcheck"
});
}
2013-05-31 02:07:33 +00:00
function getId(options) {
var id = options && options["id"]
if(!id) {
id = context.JK.currentUserId;
}
2014-01-07 23:30:23 +00:00
else {
delete options["id"];
}
2013-05-31 02:07:33 +00:00
return id;
}
function createEmailInvitations(emails, message) {
return $.ajax({
type: "POST",
dataType: "json",
url: '/api/invited_users',
contentType: 'application/json',
processData:false,
data: JSON.stringify({
emails : emails,
note: message
})
});
}
function getMusicianInvites(options) {
return $.ajax({
type: "GET",
dataType: "json",
data: options,
url: '/api/invitations'
})
}
function createMusicianInvite(options) {
return $.ajax({
type: "POST",
dataType: "json",
url: '/api/invitations',
contentType: 'application/json',
processData:false,
data: JSON.stringify(options)
})
}
function postFeedback(email, body) {
return $.ajax({
type: "POST",
dataType: "json",
url: '/api/feedback',
contentType: 'application/json',
processData:false,
data: JSON.stringify({
email : email,
body: body
})
});
}
function getFeeds(options) {
if(!options) { options = {}; }
return $.ajax({
type: 'GET',
dataType: "json",
url: "/api/feeds?" + $.param(options),
processData:false
})
}
function getUserSyncs(options) {
if(!options) { options = {}; }
var userId = getId(options)
return $.ajax({
type: 'GET',
dataType: "json",
url: "/api/users/" + userId + "/syncs?" + $.param(options),
processData:false
})
}
function getUserSync(options) {
if(!options) { options = {}; }
var userId = getId(options)
var userSyncId = options['user_sync_id']
return $.ajax({
type: 'GET',
dataType: "json",
url: "/api/users/" + userId + "/syncs/" + userSyncId,
processData:false
})
}
function sendFriendRequest(app, userId, callback) {
var url = "/api/users/" + context.JK.currentUserId + "/friend_requests";
$.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: url,
data: '{"friend_id":"' + userId + '"}',
processData: false,
success: function(response) {
if (callback) {
callback(userId);
}
context.JK.GA.trackFriendConnect(context.JK.GA.FriendConnectTypes.request);
},
error: app.ajaxError
});
}
2014-03-25 15:29:08 +00:00
function getFriendRequest(options) {
var id = getId(options);
var friendRequestId = options["friend_request_id"];
var deferred = $.ajax({
type: "GET",
dataType: "json",
contentType: 'application/json',
url: "/api/users/" + id + "/friend_requests/" + friendRequestId,
processData: false
});
return deferred;
}
function acceptFriendRequest(options) {
var id = getId(options);
2014-03-25 15:29:08 +00:00
var friendRequestId = options["friend_request_id"];
var status = options["status"];
var friend_request = { status: status };
var deferred = $.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
2014-03-25 15:29:08 +00:00
url: "/api/users/" + id + "/friend_requests/" + friendRequestId,
data: JSON.stringify(friend_request),
processData: false
});
deferred.done(function() {
context.JK.GA.trackFriendConnect(context.JK.GA.FriendConnectTypes.accept);
});
return deferred;
}
function userDownloadedClient(options) {
return $.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "/api/users/progression/downloaded_client",
processData: false
});
}
function userCertifiedGear(options) {
return $.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "/api/users/progression/certified_gear",
processData: false,
data: JSON.stringify({
success: options.success,
reason: options.reason
})
});
}
function userSocialPromoted(options) {
var id = getId(options);
return $.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "/api/users/progression/social_promoted",
processData: false
});
}
function signout() {
return $.ajax({
type: "DELETE",
dataType: "json",
url: '/signout',
contentType: 'application/json'
});
}
2013-10-21 22:13:53 +00:00
function updateUser(options) {
var id = getId(options);
delete options['id'];
return $.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "/api/users/" + id,
data: JSON.stringify(options),
processData: false
});
}
function startRecording(options) {
return $.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "/api/recordings/start",
data: JSON.stringify(options)
})
}
function stopRecording(options) {
var recordingId = options["id"]
return $.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "/api/recordings/" + recordingId + "/stop",
data: JSON.stringify(options)
})
}
function getRecordedTrack(options) {
var recordingId = options["recording_id"];
var trackId = options["track_id"];
return $.ajax({
type: "GET",
dataType: "json",
contentType: 'application/json',
url: "/api/recordings/" + recordingId + "/tracks/" + trackId
});
}
function getRecording(options) {
var recordingId = options["id"];
return $.ajax({
type: "GET",
dataType: "json",
contentType: 'application/json',
url: "/api/recordings/" + recordingId
2014-01-05 03:47:23 +00:00
});
}
function getClaimedRecordings(options) {
return $.ajax({
type: "GET",
dataType: "json",
contentType: 'application/json',
url: "/api/claimed_recordings",
data: options
});
}
2014-02-02 23:14:47 +00:00
function getClaimedRecording(id) {
return $.ajax({
type: "GET",
dataType: "json",
contentType: 'application/json',
url: "/api/claimed_recordings/" + id
});
}
2014-06-27 19:17:56 +00:00
function updateClaimedRecording(options) {
var claimedRecordingId = options["id"];
return $.ajax({
type: "PUT",
dataType: "json",
url: '/api/claimed_recordings/' + claimedRecordingId,
contentType: 'application/json',
processData: false,
data: JSON.stringify(options)
});
}
function deleteClaimedRecording(id) {
return $.ajax({
type: "DELETE",
dataType: "json",
contentType: 'application/json',
url: "/api/claimed_recordings/" + id
});
}
2014-11-06 17:26:13 +00:00
function deleteRecordingClaim(id) {
return $.ajax({
type: "DELETE",
dataType: "json",
contentType: 'application/json',
url: "/api/recordings/" + id + "/claim"
});
}
function claimRecording(options) {
var recordingId = options["id"];
return $.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "/api/recordings/" + recordingId + "/claim",
data: JSON.stringify(options)
})
}
2014-01-05 03:47:23 +00:00
function startPlayClaimedRecording(options) {
var musicSessionId = options["id"];
var claimedRecordingId = options["claimed_recording_id"];
delete options["id"];
delete options["claimed_recording_id"];
return $.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "/api/sessions/" + musicSessionId + "/claimed_recording/" + claimedRecordingId + "/start",
data: JSON.stringify(options)
})
}
function stopPlayClaimedRecording(options) {
var musicSessionId = options["id"];
var claimedRecordingId = options["claimed_recording_id"];
delete options["id"];
delete options["claimed_recording_id"];
return $.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "/api/sessions/" + musicSessionId + "/claimed_recording/" + claimedRecordingId + "/stop",
data: JSON.stringify(options)
})
}
function discardRecording(options) {
var recordingId = options["id"];
return $.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "/api/recordings/" + recordingId + "/discard",
data: JSON.stringify(options)
})
}
function putTrackSyncChange(options) {
2013-11-16 04:35:40 +00:00
var musicSessionId = options["id"]
delete options["id"];
return $.ajax({
type: "PUT",
dataType: "json",
url: '/api/sessions/' + musicSessionId + '/tracks',
contentType: 'application/json',
processData: false,
data: JSON.stringify(options)
});
}
2014-02-06 16:31:52 +00:00
function getShareSession(options) {
var id = getId(options);
var provider = options['provider'];
delete options['provider']
return $.ajax({
type: "GET",
dataType: "json",
contentType: 'application/json',
url: "/api/users/" + id + "/share/session/" + provider,
data: options
})
}
function getShareRecording(options) {
var id = getId(options);
var provider = options['provider'];
delete options['provider']
return $.ajax({
type: "GET",
dataType: "json",
contentType: 'application/json',
url: "/api/users/" + id + "/share/recording/" + provider,
data: options
})
}
function tweet(options) {
return $.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "/api/twitter/tweet",
data: JSON.stringify(options)
})
}
function createFbInviteUrl() {
return $.ajax({
type: "GET",
url: '/api/invited_users/facebook',
dataType: "json",
contentType: 'application/json'
});
}
function createTextMessage(options) {
var id = getId(options);
return $.ajax({
type: "POST",
url: '/api/users/' + id + '/notifications',
dataType: "json",
contentType: 'application/json',
data: JSON.stringify(options)
});
}
function getNotifications(options) {
if(!options) options = {};
var id = getId(options);
return $.ajax({
type: "GET",
url: '/api/users/' + id + '/notifications?' + $.param(options),
dataType: "json",
contentType: 'application/json'
});
}
function createChatMessage(options) {
return $.ajax({
type: "POST",
url: '/api/chat?' + $.param(options),
dataType: "json",
contentType: 'application/json'
});
}
function getChatMessages(options) {
var musciSessionId = options["music_session"];
delete options["music_session"];
return $.ajax({
type: "GET",
url: '/api/sessions/' + musciSessionId + '/chats?' + $.param(options),
dataType: "json",
contentType: 'application/json'
})
};
2014-04-30 03:01:28 +00:00
function createDiagnostic(options) {
2014-05-14 20:12:42 +00:00
var data = null;
try {
data = JSON.stringify(options)
}
catch(e) {
data = JSON.stringify({data_error: "unable to JSON.stringify debug data:" + e.toString()})
}
2014-04-30 03:01:28 +00:00
return $.ajax({
type: "POST",
url: '/api/diagnostics',
dataType: "json",
contentType: 'application/json',
2014-05-14 20:12:42 +00:00
data: data,
});
}
2014-05-22 16:26:56 +00:00
function getLatencyTester(options) {
return $.ajax({
type: "GET",
url: '/api/latency_testers',
dataType: "json",
contentType: 'application/json',
2014-04-30 03:01:28 +00:00
data: JSON.stringify(options)
});
}
function updateAudioLatency(options) {
var id = getId(options);
return $.ajax({
type: "POST",
url: '/api/users/' + id + '/audio_latency',
dataType: "json",
contentType: 'application/json',
data: options,
});
}
function getJamtracks(options) {
return $.ajax({
type: "GET",
url: '/api/jamtracks?' + $.param(options),
dataType: "json",
contentType: 'application/json'
});
}
function addJamtrackToShoppingCart(options) {
return $.ajax({
type: "POST",
url: '/api/shopping_carts/add_jamtrack?' + $.param(options),
dataType: "json",
contentType: 'applications/json'
});
}
function getShoppingCarts() {
return $.ajax({
type: "GET",
url: '/api/shopping_carts',
dataType: "json",
contentType: 'application/json'
});
}
function removeShoppingCart(options) {
return $.ajax({
type: "DELETE",
url: '/api/shopping_carts?' + $.param(options),
dataType: "json",
contentType: 'application/json'
})
}
function getRecurlyAccount() {
return $.ajax({
type: "GET",
url: '/api/recurly/get_account',
dataType: "json",
contentType: 'application/json'
});
}
function createRecurlyAccount(options) {
return $.ajax({
type: "POST",
url: '/api/recurly/create_account?' + $.param(options),
dataType: "json",
contentType: 'application/json'
});
}
function getBillingInfo() {
return $.ajax({
type: "GET",
url: '/api/recurly/billing_info',
dataType: "json",
contentType: 'application/json'
});
}
function updateBillingInfo(options) {
return $.ajax({
type: "PUT",
url: '/api/recurly/update_billing_info?' + $.param(options),
dataType: "json",
contentType: 'application/json'
});
}
function placeOrder(options) {
return $.ajax({
type: "PUT",
url: '/api/recurly/place_order?' + $.param(options),
dataType: "json",
contentType: 'application/json'
});
}
2014-09-22 19:20:58 +00:00
function searchMusicians(query) {
return $.ajax({
type: "GET",
2014-09-22 19:20:58 +00:00
url: "/api/search.json?" + $.param(query)
});
}
function initialize() {
return self;
}
// Expose publics
this.initialize = initialize;
this.legacyCreateSession = legacyCreateSession;
this.createScheduledSession = createScheduledSession;
2014-06-09 22:13:54 +00:00
this.uploadMusicNotations = uploadMusicNotations;
this.getMusicNotation = getMusicNotation;
2014-05-06 22:50:41 +00:00
this.legacyJoinSession = legacyJoinSession;
2014-05-20 13:26:32 +00:00
this.joinSession = joinSession;
2014-06-17 20:57:48 +00:00
this.cancelSession = cancelSession;
this.updateScheduledSession = updateScheduledSession;
this.getUserDetail = getUserDetail;
this.getCities = getCities;
this.getRegions = getRegions;
this.getCountries = getCountries;
this.getResolvedLocation = getResolvedLocation;
2013-05-31 02:07:33 +00:00
this.getInstruments = getInstruments;
this.getGenres = getGenres;
2014-09-13 03:30:51 +00:00
this.updateUdpReachable = updateUdpReachable;
this.updateNetworkTesting = updateNetworkTesting;
2013-05-31 02:07:33 +00:00
this.updateAvatar = updateAvatar;
this.deleteAvatar = deleteAvatar;
this.getFilepickerPolicy = getFilepickerPolicy;
this.getFriends = getFriends;
2014-01-07 23:30:23 +00:00
this.removeFriend = removeFriend;
this.addLike = addLike;
this.removeLike = removeLike;
2014-01-07 23:30:23 +00:00
this.addFollowing = addFollowing;
this.removeFollowing = removeFollowing;
this.getFollowings = getFollowings;
this.getFollowers = getFollowers;
this.getBands = getBands;
this.getBandFollowers = getBandFollowers;
2014-06-21 20:16:39 +00:00
this.findActiveSessions = findActiveSessions;
this.findInactiveSessions = findInactiveSessions;
2014-06-01 18:45:17 +00:00
this.findScheduledSessions = findScheduledSessions;
this.findScheduledRsvpSessions = findScheduledRsvpSessions;
this.updateSession = updateSession;
2014-02-02 23:14:47 +00:00
this.getSessionHistory = getSessionHistory;
2014-01-28 07:35:35 +00:00
this.addSessionComment = addSessionComment;
2014-05-27 03:52:59 +00:00
this.addSessionInfoComment = addSessionInfoComment;
2014-01-28 07:35:35 +00:00
this.addSessionLike = addSessionLike;
2014-05-29 06:33:37 +00:00
this.getRsvpRequests = getRsvpRequests;
2014-05-28 05:14:14 +00:00
this.submitRsvpRequest = submitRsvpRequest;
2014-06-30 00:10:00 +00:00
this.updateRsvpRequest = updateRsvpRequest;
2014-05-29 06:33:37 +00:00
this.cancelRsvpRequest = cancelRsvpRequest;
2014-05-28 05:14:14 +00:00
this.getOpenSessionSlots = getOpenSessionSlots;
2014-01-28 07:35:35 +00:00
this.addRecordingComment = addRecordingComment;
this.addRecordingLike = addRecordingLike;
2014-03-07 06:46:07 +00:00
this.addPlayablePlay = addPlayablePlay;
this.getSession = getSession;
2014-01-05 03:47:23 +00:00
this.getClientDownloads = getClientDownloads;
this.createEmailInvitations = createEmailInvitations;
this.createMusicianInvite = createMusicianInvite;
this.getMusicianInvites = getMusicianInvites;
this.postFeedback = postFeedback;
this.getFeeds = getFeeds;
this.getUserSyncs = getUserSyncs;
this.getUserSync = getUserSync;
this.serverHealthCheck = serverHealthCheck;
this.sendFriendRequest = sendFriendRequest;
2014-03-25 15:29:08 +00:00
this.getFriendRequest = getFriendRequest;
this.acceptFriendRequest = acceptFriendRequest;
this.signout = signout;
this.userDownloadedClient = userDownloadedClient;
this.userCertifiedGear = userCertifiedGear;
this.userSocialPromoted = userSocialPromoted;
this.createJoinRequest = createJoinRequest;
this.updateJoinRequest = updateJoinRequest;
2013-10-21 22:13:53 +00:00
this.updateUser = updateUser;
this.startRecording = startRecording;
this.stopRecording = stopRecording;
this.getRecording = getRecording;
this.getRecordedTrack = getRecordedTrack;
2014-01-05 03:47:23 +00:00
this.getClaimedRecordings = getClaimedRecordings;
2014-02-02 23:14:47 +00:00
this.getClaimedRecording = getClaimedRecording;
2014-06-27 19:17:56 +00:00
this.updateClaimedRecording = updateClaimedRecording;
this.deleteClaimedRecording = deleteClaimedRecording;
2014-11-06 17:26:13 +00:00
this.deleteRecordingClaim = deleteRecordingClaim;
this.claimRecording = claimRecording;
2014-01-05 03:47:23 +00:00
this.startPlayClaimedRecording = startPlayClaimedRecording;
this.stopPlayClaimedRecording = stopPlayClaimedRecording;
this.discardRecording = discardRecording;
2013-11-16 04:35:40 +00:00
this.putTrackSyncChange = putTrackSyncChange;
this.createBand = createBand;
this.updateBand = updateBand;
2013-12-15 21:27:11 +00:00
this.updateBandPhoto = updateBandPhoto;
this.deleteBandPhoto = deleteBandPhoto;
this.deleteBand = deleteBand;
2013-12-15 21:27:11 +00:00
this.getBandPhotoFilepickerPolicy = getBandPhotoFilepickerPolicy;
2013-12-01 20:09:44 +00:00
this.getBand = getBand;
this.validateBand = validateBand;
this.updateFavorite = updateFavorite;
this.createBandInvitation = createBandInvitation;
this.updateBandInvitation = updateBandInvitation;
this.removeBandMember = removeBandMember;
this.getBandMembers = getBandMembers;
this.login = login;
2014-02-06 16:31:52 +00:00
this.getShareSession = getShareSession;
this.getShareRecording = getShareRecording;
this.tweet = tweet;
this.createFbInviteUrl = createFbInviteUrl;
this.createTextMessage = createTextMessage;
this.getNotifications = getNotifications;
this.createChatMessage = createChatMessage;
this.getChatMessages = getChatMessages;
2014-04-30 03:01:28 +00:00
this.createDiagnostic = createDiagnostic;
2014-05-22 16:26:56 +00:00
this.getLatencyTester = getLatencyTester;
this.updateAudioLatency = updateAudioLatency;
this.getJamtracks = getJamtracks;
this.addJamtrackToShoppingCart = addJamtrackToShoppingCart;
this.getShoppingCarts = getShoppingCarts;
this.removeShoppingCart = removeShoppingCart;
this.getRecurlyAccount = getRecurlyAccount;
this.createRecurlyAccount = createRecurlyAccount;
this.getBillingInfo = getBillingInfo;
this.updateBillingInfo = updateBillingInfo;
this.placeOrder = placeOrder;
this.searchMusicians = searchMusicians;
this.resendBandInvitation = resendBandInvitation;
return this;
};
})(window,jQuery);