kopia lustrzana https://github.com/backface/turtlestitch
Collection functions in cloud.js (#2334)
* collection functions * fixed getUserCollections method * reodered getCollectionProjects params to match other functions * getUserCollections is safe against null params * renamed body params in addProjectToCollection * addProjectToCollection call was missing error string * added withThumbnail param to getCollectionProjects, plus wrapped at 80 chars * removed trailing slash from getCollectionProjects query * added Cloud methods to set collection thumbnail and remove project from collection * updated removeProjectFromCollection to match API * add getCollectionMetadata method to cloud.js * added methods to update collection name and description to cloud.js * added method to remove a collection * added methods to share, unshare, publish and unpublish collections * renamed removeCollection to deleteCollection, to match deleteProject * fixed which collection methods need credentials and which don't * getUserCollection needs credentials * added Cloud >> addEditorToCollection * added Cloud >> removeEditorFromCollection * added Cloud >> getCollectionsContainingProject * reordered getRemixes params * updated cloud module datepull/89/head
rodzic
b9923d6738
commit
ab9a62d3df
371
src/cloud.js
371
src/cloud.js
|
@ -34,7 +34,7 @@
|
||||||
/*global modules, hex_sha512*/
|
/*global modules, hex_sha512*/
|
||||||
|
|
||||||
modules = modules || {};
|
modules = modules || {};
|
||||||
modules.cloud = '2019-January-25';
|
modules.cloud = '2019-February-20';
|
||||||
|
|
||||||
// Global stuff
|
// Global stuff
|
||||||
|
|
||||||
|
@ -567,12 +567,11 @@ Cloud.prototype.getProjectVersionMetadata = function (
|
||||||
|
|
||||||
Cloud.prototype.getRemixes = function (
|
Cloud.prototype.getRemixes = function (
|
||||||
username,
|
username,
|
||||||
|
projectName,
|
||||||
page,
|
page,
|
||||||
pageSize,
|
pageSize,
|
||||||
projectName,
|
|
||||||
onSuccess,
|
onSuccess,
|
||||||
onError,
|
onError
|
||||||
withThumbnail
|
|
||||||
) {
|
) {
|
||||||
var path = '/projects/' +
|
var path = '/projects/' +
|
||||||
encodeURIComponent(username) + '/' +
|
encodeURIComponent(username) + '/' +
|
||||||
|
@ -723,3 +722,367 @@ Cloud.prototype.updateProjectName = function (
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Collections
|
||||||
|
|
||||||
|
Cloud.prototype.newCollection = function (
|
||||||
|
collectionName,
|
||||||
|
onSuccess,
|
||||||
|
onError
|
||||||
|
) {
|
||||||
|
this.withCredentialsRequest(
|
||||||
|
'POST',
|
||||||
|
'/users/%username/collections/' + encodeURIComponent(collectionName),
|
||||||
|
onSuccess,
|
||||||
|
onError,
|
||||||
|
'Could not create collection'
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
Cloud.prototype.getCollectionMetadata = function (
|
||||||
|
collectionUsername,
|
||||||
|
collectionName,
|
||||||
|
onSuccess,
|
||||||
|
onError
|
||||||
|
) {
|
||||||
|
this.request(
|
||||||
|
'GET',
|
||||||
|
'/users/' +
|
||||||
|
(collectionUsername ?
|
||||||
|
encodeURIComponent(collectionUsername) :
|
||||||
|
'%username') +
|
||||||
|
'/collections/' + encodeURIComponent(collectionName) +
|
||||||
|
'/metadata',
|
||||||
|
onSuccess,
|
||||||
|
onError,
|
||||||
|
'Could not fetch metadata for ' + collectionName
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
Cloud.prototype.getCollectionProjects = function (
|
||||||
|
collectionUsername,
|
||||||
|
page,
|
||||||
|
pageSize,
|
||||||
|
collectionName,
|
||||||
|
onSuccess,
|
||||||
|
onError,
|
||||||
|
withThumbnail
|
||||||
|
) {
|
||||||
|
var path = '/users/' +
|
||||||
|
(collectionUsername ?
|
||||||
|
encodeURIComponent(collectionUsername) :
|
||||||
|
'%username') +
|
||||||
|
'/collections/' + encodeURIComponent(collectionName) +
|
||||||
|
'/projects';
|
||||||
|
|
||||||
|
if (page) {
|
||||||
|
path += '?page=' + page + '&pagesize=' + (pageSize || 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (withThumbnail) {
|
||||||
|
path += (page ? '&' : '?') + 'withthumbnail=true';
|
||||||
|
}
|
||||||
|
|
||||||
|
this.request(
|
||||||
|
'GET',
|
||||||
|
path,
|
||||||
|
onSuccess,
|
||||||
|
onError,
|
||||||
|
'Could not fetch projects'
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
Cloud.prototype.setCollectionThumbnail = function (
|
||||||
|
collectionUsername,
|
||||||
|
collectionName,
|
||||||
|
thumbnailId,
|
||||||
|
onSuccess,
|
||||||
|
onError
|
||||||
|
) {
|
||||||
|
this.withCredentialsRequest(
|
||||||
|
'POST',
|
||||||
|
'/users/' + encodeURIComponent(collectionUsername) +
|
||||||
|
'/collections/' + encodeURIComponent(collectionName) +
|
||||||
|
'/thumbnail?id=' + encodeURIComponent(thumbnailId),
|
||||||
|
onSuccess,
|
||||||
|
onError,
|
||||||
|
'Could not set project thumbnail'
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
Cloud.prototype.updateCollectionDescription = function (
|
||||||
|
collectionUsername,
|
||||||
|
collectionName,
|
||||||
|
description,
|
||||||
|
onSuccess,
|
||||||
|
onError
|
||||||
|
) {
|
||||||
|
this.withCredentialsRequest(
|
||||||
|
'POST',
|
||||||
|
'/users/' + encodeURIComponent(collectionUsername) +
|
||||||
|
'/collections/' + encodeURIComponent(collectionName) +
|
||||||
|
'/metadata',
|
||||||
|
onSuccess,
|
||||||
|
onError,
|
||||||
|
'Could not update collection description',
|
||||||
|
false, // wants raw response
|
||||||
|
JSON.stringify({ description: description })
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
Cloud.prototype.updateCollectionName = function (
|
||||||
|
collectionUsername,
|
||||||
|
collectionName,
|
||||||
|
newName,
|
||||||
|
onSuccess,
|
||||||
|
onError
|
||||||
|
) {
|
||||||
|
this.withCredentialsRequest(
|
||||||
|
'POST',
|
||||||
|
'/users/' + encodeURIComponent(collectionUsername) +
|
||||||
|
'/collections/' + encodeURIComponent(collectionName) +
|
||||||
|
'/metadata',
|
||||||
|
onSuccess,
|
||||||
|
onError,
|
||||||
|
'Could not update collection name',
|
||||||
|
false, // wants raw response
|
||||||
|
JSON.stringify({ name: newName })
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
Cloud.prototype.shareCollection = function (
|
||||||
|
collectionUsername,
|
||||||
|
collectionName,
|
||||||
|
onSuccess,
|
||||||
|
onError
|
||||||
|
) {
|
||||||
|
this.withCredentialsRequest(
|
||||||
|
'POST',
|
||||||
|
'/users/' + encodeURIComponent(collectionUsername) +
|
||||||
|
'/collections/' + encodeURIComponent(collectionName) +
|
||||||
|
'/metadata?shared=true',
|
||||||
|
onSuccess,
|
||||||
|
onError,
|
||||||
|
'Could not share collection'
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
Cloud.prototype.unshareCollection = function (
|
||||||
|
collectionUsername,
|
||||||
|
collectionName,
|
||||||
|
onSuccess,
|
||||||
|
onError
|
||||||
|
) {
|
||||||
|
this.withCredentialsRequest(
|
||||||
|
'POST',
|
||||||
|
'/users/' + encodeURIComponent(collectionUsername) +
|
||||||
|
'/collections/' + encodeURIComponent(collectionName) +
|
||||||
|
'/metadata?shared=false&published=false',
|
||||||
|
onSuccess,
|
||||||
|
onError,
|
||||||
|
'Could not unshare collection'
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
Cloud.prototype.publishCollection = function (
|
||||||
|
collectionUsername,
|
||||||
|
collectionName,
|
||||||
|
onSuccess,
|
||||||
|
onError
|
||||||
|
) {
|
||||||
|
this.withCredentialsRequest(
|
||||||
|
'POST',
|
||||||
|
'/users/' + encodeURIComponent(collectionUsername) +
|
||||||
|
'/collections/' + encodeURIComponent(collectionName) +
|
||||||
|
'/metadata?published=true',
|
||||||
|
onSuccess,
|
||||||
|
onError,
|
||||||
|
'Could not publish collection'
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
Cloud.prototype.unpublishCollection = function (
|
||||||
|
collectionUsername,
|
||||||
|
collectionName,
|
||||||
|
onSuccess,
|
||||||
|
onError
|
||||||
|
) {
|
||||||
|
this.withCredentialsRequest(
|
||||||
|
'POST',
|
||||||
|
'/users/' + encodeURIComponent(collectionUsername) +
|
||||||
|
'/collections/' + encodeURIComponent(collectionName) +
|
||||||
|
'/metadata?published=false',
|
||||||
|
onSuccess,
|
||||||
|
onError,
|
||||||
|
'Could not unpublish collection'
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
Cloud.prototype.addProjectToCollection = function (
|
||||||
|
collectionUsername,
|
||||||
|
collectionName,
|
||||||
|
projectUsername,
|
||||||
|
projectName,
|
||||||
|
onSuccess,
|
||||||
|
onError
|
||||||
|
) {
|
||||||
|
this.withCredentialsRequest(
|
||||||
|
'POST',
|
||||||
|
'/users/' + encodeURIComponent(collectionUsername) +
|
||||||
|
'/collections/' + encodeURIComponent(collectionName) +
|
||||||
|
'/projects',
|
||||||
|
onSuccess,
|
||||||
|
onError,
|
||||||
|
'Could not add project to collection',
|
||||||
|
false, // wants raw response
|
||||||
|
JSON.stringify({
|
||||||
|
username: projectUsername,
|
||||||
|
projectname: projectName
|
||||||
|
})
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
Cloud.prototype.removeProjectFromCollection = function (
|
||||||
|
collectionUsername,
|
||||||
|
collectionName,
|
||||||
|
projectId,
|
||||||
|
onSuccess,
|
||||||
|
onError
|
||||||
|
) {
|
||||||
|
this.withCredentialsRequest(
|
||||||
|
'DELETE',
|
||||||
|
'/users/' + encodeURIComponent(collectionUsername) +
|
||||||
|
'/collections/' + encodeURIComponent(collectionName) +
|
||||||
|
'/projects/' + encodeURIComponent(projectId),
|
||||||
|
onSuccess,
|
||||||
|
onError,
|
||||||
|
'Could not remove project from collection'
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
Cloud.prototype.getUserCollections = function (
|
||||||
|
collectionUsername,
|
||||||
|
page,
|
||||||
|
pageSize,
|
||||||
|
searchTerm,
|
||||||
|
onSuccess,
|
||||||
|
onError
|
||||||
|
) {
|
||||||
|
this.withCredentialsRequest(
|
||||||
|
'GET',
|
||||||
|
'/users/' +
|
||||||
|
(collectionUsername ?
|
||||||
|
encodeURIComponent(collectionUsername) :
|
||||||
|
'%username') +
|
||||||
|
'/collections?' +
|
||||||
|
this.encodeDict({
|
||||||
|
page: page || '',
|
||||||
|
pageSize: page ? pageSize | 16 : '',
|
||||||
|
matchtext: searchTerm ? encodeURIComponent(searchTerm) : ''
|
||||||
|
}),
|
||||||
|
onSuccess,
|
||||||
|
onError,
|
||||||
|
'Could not fetch collections'
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
Cloud.prototype.getCollectionsContainingProject = function (
|
||||||
|
username,
|
||||||
|
projectName,
|
||||||
|
page,
|
||||||
|
pageSize,
|
||||||
|
onSuccess,
|
||||||
|
onError
|
||||||
|
) {
|
||||||
|
var path = '/projects/' +
|
||||||
|
encodeURIComponent(username) + '/' +
|
||||||
|
encodeURIComponent(projectName) + '/collections';
|
||||||
|
|
||||||
|
if (page) {
|
||||||
|
path += '?page=' + page + '&pagesize=' + (pageSize || 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.request(
|
||||||
|
'GET',
|
||||||
|
path,
|
||||||
|
onSuccess,
|
||||||
|
onError,
|
||||||
|
'Could not fetch collections for project ' + projectName
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
Cloud.prototype.getCollections = function (
|
||||||
|
page,
|
||||||
|
pageSize,
|
||||||
|
searchTerm,
|
||||||
|
onSuccess,
|
||||||
|
onError
|
||||||
|
) {
|
||||||
|
this.request(
|
||||||
|
'GET',
|
||||||
|
'/collections?' +
|
||||||
|
this.encodeDict({
|
||||||
|
page: page,
|
||||||
|
pageSize: page ? pageSize | 16 : '',
|
||||||
|
matchtext: encodeURIComponent(searchTerm)
|
||||||
|
}),
|
||||||
|
onSuccess,
|
||||||
|
onError,
|
||||||
|
'Could not fetch collections'
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
Cloud.prototype.deleteCollection = function (
|
||||||
|
collectionUsername,
|
||||||
|
collectionName,
|
||||||
|
onSuccess,
|
||||||
|
onError
|
||||||
|
) {
|
||||||
|
this.withCredentialsRequest(
|
||||||
|
'DELETE',
|
||||||
|
'/users/' + encodeURIComponent(collectionUsername) +
|
||||||
|
'/collections/' + encodeURIComponent(collectionName),
|
||||||
|
onSuccess,
|
||||||
|
onError,
|
||||||
|
'Could not remove collection'
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
Cloud.prototype.addEditorToCollection = function (
|
||||||
|
collectionUsername,
|
||||||
|
collectionName,
|
||||||
|
editorUsername,
|
||||||
|
onSuccess,
|
||||||
|
onError
|
||||||
|
) {
|
||||||
|
this.withCredentialsRequest(
|
||||||
|
'POST',
|
||||||
|
'/users/' + encodeURIComponent(collectionUsername) +
|
||||||
|
'/collections/' + encodeURIComponent(collectionName) +
|
||||||
|
'/editors',
|
||||||
|
onSuccess,
|
||||||
|
onError,
|
||||||
|
'Could not add editor to collection',
|
||||||
|
false, // wants raw response
|
||||||
|
JSON.stringify({
|
||||||
|
editor_username: editorUsername,
|
||||||
|
})
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
Cloud.prototype.removeEditorFromCollection = function (
|
||||||
|
collectionUsername,
|
||||||
|
collectionName,
|
||||||
|
editorUsername,
|
||||||
|
onSuccess,
|
||||||
|
onError
|
||||||
|
) {
|
||||||
|
this.withCredentialsRequest(
|
||||||
|
'DELETE',
|
||||||
|
'/users/' + encodeURIComponent(collectionUsername) +
|
||||||
|
'/collections/' + encodeURIComponent(collectionName) +
|
||||||
|
'/editors/' + encodeURIComponent(editorUsername),
|
||||||
|
onSuccess,
|
||||||
|
onError,
|
||||||
|
'Could not remove editor from collection'
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
Ładowanie…
Reference in New Issue