Skip to content

Commit

Permalink
#1410 Add impactStatus and resolutionStatus in output case
Browse files Browse the repository at this point in the history
  • Loading branch information
To-om committed Jun 30, 2020
1 parent 76eae04 commit f9d4073
Showing 1 changed file with 85 additions and 2 deletions.
87 changes: 85 additions & 2 deletions dto/src/main/scala/org/thp/thehive/dto/v1/Case.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package org.thp.thehive.dto.v1
import java.util.Date

import org.thp.scalligraph.controllers.WithParser
import play.api.libs.json.{JsObject, Json, OFormat, OWrites}
import play.api.libs.json.{JsObject, Json, OFormat, OWrites, Reads}

case class InputCase(
title: String,
Expand Down Expand Up @@ -45,11 +45,94 @@ case class OutputCase(
pap: Int,
status: String,
summary: Option[String] = None,
impactStatus: Option[String] = None,
resolutionStatus: Option[String] = None,
assignee: Option[String],
customFields: Set[OutputCustomFieldValue] = Set.empty,
extraData: JsObject
)

object OutputCase {
implicit val format: OFormat[OutputCase] = Json.format[OutputCase]

val reads: Reads[OutputCase] = Reads[OutputCase] { json =>
for {
_id <- (json \ "_id").validate[String]
_type <- (json \ "_type").validate[String]
_createdBy <- (json \ "_createdBy").validate[String]
_updatedBy <- (json \ "_updatedBy").validateOpt[String]
_createdAt <- (json \ "_createdAt").validate[Date]
_updatedAt <- (json \ "_updatedAt").validateOpt[Date]
number <- (json \ "number").validate[Int]
title <- (json \ "title").validate[String]
description <- (json \ "description").validate[String]
severity <- (json \ "severity").validate[Int]
startDate <- (json \ "startDate").validate[Date]
endDate <- (json \ "endDate").validateOpt[Date]
tags <- (json \ "tags").validate[Set[String]]
flag <- (json \ "flag").validate[Boolean]
tlp <- (json \ "tlp").validate[Int]
pap <- (json \ "pap").validate[Int]
status <- (json \ "status").validate[String]
summary <- (json \ "summary").validateOpt[String]
impactStatus <- (json \ "impactStatus").validateOpt[String]
resolutionStatus <- (json \ "resolutionStatus").validateOpt[String]
assignee <- (json \ "assignee").validateOpt[String]
customFields <- (json \ "customFields").validate[Set[OutputCustomFieldValue]]
extraData <- (json \ "extraData").validate[JsObject]
} yield OutputCase(
_id,
_type,
_createdBy,
_updatedBy,
_createdAt,
_updatedAt,
number,
title,
description,
severity,
startDate,
endDate,
tags,
flag,
tlp,
pap,
status,
summary,
impactStatus,
resolutionStatus,
assignee,
customFields,
extraData
)
}

val writes: OWrites[OutputCase] = OWrites[OutputCase] { outputCase =>
Json.obj(
"_id" -> outputCase._id,
"_type" -> outputCase._type,
"_createdBy" -> outputCase._createdBy,
"_updatedBy" -> outputCase._updatedBy,
"_createdAt" -> outputCase._createdAt,
"_updatedAt" -> outputCase._updatedAt,
"number" -> outputCase.number,
"title" -> outputCase.title,
"description" -> outputCase.description,
"severity" -> outputCase.severity,
"startDate" -> outputCase.startDate,
"endDate" -> outputCase.endDate,
"tags" -> outputCase.tags,
"flag" -> outputCase.flag,
"tlp" -> outputCase.tlp,
"pap" -> outputCase.pap,
"status" -> outputCase.status,
"summary" -> outputCase.summary,
"impactStatus" -> outputCase.impactStatus,
"resolutionStatus" -> outputCase.resolutionStatus,
"assignee" -> outputCase.assignee,
"customFields" -> outputCase.customFields,
"extraData" -> outputCase.extraData
)
}

implicit val format: OFormat[OutputCase] = OFormat(reads, writes)
}

0 comments on commit f9d4073

Please sign in to comment.