1
0
mirror of https://github.com/sismics/docs.git synced 2025-12-30 18:11:44 +00:00

#256: list versions of a file (API)

This commit is contained in:
Benjamin Gamard
2019-01-30 21:14:07 +01:00
parent 4469bb7bee
commit 8bdab73ae9
4 changed files with 104 additions and 3 deletions

View File

@@ -392,10 +392,10 @@ public class FileResource extends BaseResource {
* @apiParam {String} share Share ID
* @apiSuccess {Object[]} files List of files
* @apiSuccess {String} files.id ID
* @apiSuccess {String} files.mimetype MIME type
* @apiSuccess {String} files.processing True if the file is currently processing
* @apiSuccess {String} files.name File name
* @apiSuccess {String} files.version Zero-based version number
* @apiSuccess {String} files.processing True if the file is currently processing
* @apiSuccess {String} files.mimetype MIME type
* @apiSuccess {String} files.document_id Document ID
* @apiSuccess {String} files.create_date Create date (timestamp)
* @apiSuccess {String} files.size File size (in bytes)
@@ -450,6 +450,57 @@ public class FileResource extends BaseResource {
.add("files", files);
return Response.ok().entity(response.build()).build();
}
/**
* List all versions of a file.
*
* @api {get} /file/id/versions Get versions of a file
* @apiName GetFileVersions
* @apiGroup File
* @apiParam {String} id File ID
* @apiSuccess {Object[]} files List of files
* @apiSuccess {String} files.id ID
* @apiSuccess {String} files.name File name
* @apiSuccess {String} files.version Zero-based version number
* @apiSuccess {String} files.mimetype MIME type
* @apiSuccess {String} files.create_date Create date (timestamp)
* @apiError (client) ForbiddenError Access denied
* @apiError (client) NotFound File not found
* @apiPermission user
* @apiVersion 1.5.0
*
* @param id File ID
* @return Response
*/
@GET
@Path("{id: [a-z0-9\\-]+}/versions")
public Response versions(@PathParam("id") String id) {
if (!authenticate()) {
throw new ForbiddenClientException();
}
// Get versions
File file = findFile(id, null);
FileDao fileDao = new FileDao();
List<File> fileList = Lists.newArrayList(file);
if (file.getVersionId() != null) {
fileList = fileDao.getByVersionId(file.getVersionId());
}
JsonArrayBuilder files = Json.createArrayBuilder();
for (File fileDb : fileList) {
files.add(Json.createObjectBuilder()
.add("id", fileDb.getId())
.add("name", JsonUtil.nullable(fileDb.getName()))
.add("version", fileDb.getVersion())
.add("mimetype", fileDb.getMimeType())
.add("create_date", fileDb.getCreateDate().getTime()));
}
JsonObjectBuilder response = Json.createObjectBuilder()
.add("files", files);
return Response.ok().entity(response.build()).build();
}
/**
* Deletes a file.