Skip to content

Commit c8bd0de

Browse files
authored
Merge pull request #1848 from guardian/revert-1836-filter-out-invalid-topics-new
Revert "Filter out invalid topics from registration requests"
2 parents ddb142f + 68b1abd commit c8bd0de

3 files changed

Lines changed: 12 additions & 66 deletions

File tree

common/src/main/scala/models/Registration.scala

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,17 @@ object Registration {
2121
val n = (v \ "name").asOpt[String].getOrElse("unknown")
2222
s"$t (id=$n)"
2323
}
24-
25-
val topicsArray = (json \ "topics").asOpt[JsArray].getOrElse(JsArray())
26-
val (validTopics, invalidTopics) = topicsArray.value.partition(_.validate[Topic].isSuccess)
27-
28-
if (invalidTopics.nonEmpty) {
29-
MDC.put("invalidTopics", invalidTopics.map(topicSummary).mkString(", "))
30-
MDC.put("validTopics", validTopics.map(topicSummary).mkString(", "))
24+
val all = (json \ "topics").asOpt[JsArray].toSeq.flatMap(_.value.map(topicSummary))
25+
val invalid = (json \ "topics").asOpt[JsArray].toSeq.flatMap { arr =>
26+
arr.value.flatMap { v =>
27+
if (v.validate[Topic].isError) Some(topicSummary(v)) else None
28+
}
3129
}
32-
33-
val filteredJson = json.as[JsObject] + ("topics" -> JsArray(validTopics))
34-
base.reads(filteredJson)
30+
if (invalid.nonEmpty) {
31+
MDC.put("invalidTopics", invalid.mkString(", "))
32+
if (all.nonEmpty) MDC.put("allTopics", all.mkString(", "))
33+
}
34+
base.reads(json)
3535
},
3636
base
3737
)

common/src/test/scala/models/RegistrationSpec.scala

Lines changed: 0 additions & 43 deletions
This file was deleted.

registration/app/registration/controllers/Main.scala

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import registration.services._
1414
import registration.services.topic.TopicValidator
1515

1616
import scala.concurrent.{ExecutionContext, Future}
17-
import org.slf4j.{Logger, LoggerFactory, MDC}
17+
import org.slf4j.{Logger, LoggerFactory}
1818
import play.api.http.HttpEntity
1919
import providers.ProviderError
2020

@@ -62,18 +62,7 @@ final class Main(
6262
registerWithConverter(legacyRegistrationConverter)
6363

6464
def register: Action[Registration] = actionWithTimeout(parse.json[Registration]) { request: Request[Registration] =>
65-
Option(MDC.get("invalidTopics")).foreach { invalidTopics =>
66-
val validTopics = Option(MDC.get("validTopics")).getOrElse("")
67-
val userAgent = request.headers.get("User-Agent").getOrElse("unknown")
68-
val deviceToken = request.body.deviceToken
69-
logger.warn(s"Request contains invalid topic type(s): [$invalidTopics]. Filtering them out. Keeping: [$validTopics]. Device token: $deviceToken. User agent: $userAgent")
70-
MDC.remove("invalidTopics")
71-
MDC.remove("validTopics")
72-
}
73-
if (request.body.topics.isEmpty)
74-
Future.successful(BadRequest("Request contains no valid topics"))
75-
else
76-
registerCommon(request.body).map(processResponse(_))
65+
registerCommon(request.body).map(processResponse(_))
7766
}
7867

7968
private def registerWithConverter[T](converter: RegistrationConverter[T])(implicit format: Format[T]): Action[T] = actionWithTimeout(parse.json[T]) { request =>

0 commit comments

Comments
 (0)