Skip to content

Commit

Permalink
#2010 Fix custom fields format
Browse files Browse the repository at this point in the history
  • Loading branch information
To-om committed Apr 30, 2021
1 parent 158e3c6 commit 1fa1d7b
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,14 @@ import play.api.libs.json._

import java.util.Date

case class InputCustomField(name: String, description: String, `type`: String, mandatory: Option[Boolean])
case class InputCustomField(
name: String,
displayName: Option[String],
description: String,
`type`: String,
mandatory: Option[Boolean],
options: Seq[JsValue] = Nil
)

object InputCustomField {
implicit val writes: Writes[InputCustomField] = Json.writes[InputCustomField]
Expand All @@ -22,6 +29,7 @@ case class OutputCustomField(
_createdAt: Date,
_updatedAt: Option[Date] = None,
name: String,
displayName: String,
description: String,
`type`: String,
options: Seq[JsValue],
Expand Down
11 changes: 11 additions & 0 deletions thehive/app/org/thp/thehive/controllers/v1/Conversion.scala
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,17 @@ object Conversion {
.transform
)

implicit class InputCustomFieldOps(inputCustomField: InputCustomField) {

def toCustomField: CustomField =
inputCustomField
.into[CustomField]
.withFieldComputed(_.`type`, icf => CustomFieldType.withName(icf.`type`))
.withFieldComputed(_.mandatory, _.mandatory.getOrElse(false))
.withFieldComputed(_.displayName, c => c.displayName.getOrElse(c.name))
.transform
}

implicit val customFieldOutput: Renderer.Aux[CustomField with Entity, OutputCustomField] =
Renderer.toJson[CustomField with Entity, OutputCustomField](customField =>
customField
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import org.thp.scalligraph.query.{ParamQuery, PublicProperties, PublicPropertyLi
import org.thp.scalligraph.traversal.TraversalOps._
import org.thp.scalligraph.traversal.{IteratorOutput, Traversal}
import org.thp.thehive.controllers.v1.Conversion._
import org.thp.thehive.dto.v1.InputCustomField
import org.thp.thehive.models._
import org.thp.thehive.services.CustomFieldSrv
import play.api.mvc.{Action, AnyContent, Results}
Expand Down Expand Up @@ -42,11 +43,11 @@ class CustomFieldCtrl @Inject() (entrypoint: Entrypoint, db: Database, customFie

def create: Action[AnyContent] =
entrypoint("create custom field")
.extract("customField", FieldsParser[CustomField])
.extract("customField", FieldsParser[InputCustomField])
.authTransaction(db) { implicit request => implicit graph =>
val customField = request.body("customField")
customFieldSrv
.create(customField)
.create(customField.toCustomField)
.map(createdCustomField => Results.Created(createdCustomField.toJson))
}

Expand Down

0 comments on commit 1fa1d7b

Please sign in to comment.