Skip to content

Commit e1a6020

Browse files
authored
Merge pull request #205 from clowder-framework/add-new-events-archive-unarchive
Add events to track when users archive/unarchive a file
2 parents 1e41093 + bbf1ac3 commit e1a6020

File tree

3 files changed

+37
-0
lines changed

3 files changed

+37
-0
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](http://keepachangelog.com/)
55
and this project adheres to [Semantic Versioning](http://semver.org/).
66

7+
## Unrelease
8+
9+
### Added
10+
- Log an event each time that a user archives or unarchives a file.
11+
712
## 1.16.0 - 2021-03-31
813

914
### Fixed

app/api/Files.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1856,9 +1856,11 @@ class Files @Inject()(
18561856
}
18571857

18581858
def archive(id: UUID) = PermissionAction(Permission.ArchiveFile, Some(ResourceRef(ResourceRef.file, id))) { implicit request =>
1859+
implicit val user = request.user
18591860
files.get(id) match {
18601861
case Some(file) => {
18611862
files.setStatus(id, FileStatus.ARCHIVED)
1863+
sinkService.logFileArchiveEvent(file, user)
18621864
Ok(toJson(Map("status" -> "success")))
18631865
}
18641866
case None => {
@@ -1869,9 +1871,11 @@ class Files @Inject()(
18691871
}
18701872

18711873
def unarchive(id: UUID) = PermissionAction(Permission.ArchiveFile, Some(ResourceRef(ResourceRef.file, id))) { implicit request =>
1874+
implicit val user = request.user
18721875
files.get(id) match {
18731876
case Some(file) => {
18741877
files.setStatus(id, FileStatus.PROCESSED)
1878+
sinkService.logFileUnarchiveEvent(file, user)
18751879
Ok(toJson(Map("status" -> "success")))
18761880
}
18771881
case None => {

app/services/EventSinkService.scala

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,34 @@ class EventSinkService {
261261
"size" -> (dataset.files.length + dataset.folders.length)
262262
))
263263
}
264+
265+
def logFileArchiveEvent(file: File, archiver: Option[User]) = {
266+
logEvent(Json.obj(
267+
"category" -> "archive",
268+
"type" -> "file",
269+
"resource_id" -> file.id,
270+
"resource_name" -> file.filename,
271+
"author_id" -> file.author.id,
272+
"author_name" -> file.author.fullName,
273+
"user_id" -> archiver.get.id,
274+
"user_name" -> archiver.get.getMiniUser.fullName,
275+
"size" -> file.length
276+
))
277+
}
278+
279+
def logFileUnarchiveEvent(file: File, unarchiver: Option[User]) = {
280+
logEvent(Json.obj(
281+
"category" -> "unarchive",
282+
"type" -> "file",
283+
"resource_id" -> file.id,
284+
"resource_name" -> file.filename,
285+
"author_id" -> file.author.id,
286+
"author_name" -> file.author.fullName,
287+
"user_id" -> unarchiver.get.id,
288+
"user_name" -> unarchiver.get.getMiniUser.fullName,
289+
"size" -> file.length
290+
))
291+
}
264292
}
265293

266294
//case class EventSinkMessage(created: Long, category: String, metadata: JsValue)

0 commit comments

Comments
 (0)