def extractProject()

in auditlog/src/main/scala/com/gerritforge/analytics/auditlog/broadcast/GerritProjects.scala [85:110]


  def extractProject(what: String, accessPath: String): Option[String] = accessPath match {
    case _ if matches(NO_PROJECT_RELATED_COMMANDS, what) =>
      None
    case "SSH_COMMAND" =>
      extractGroup(PROJECT_SSH_WITH_SPACES, what)
        .orElse(extractGroup(PROJECT_SSH_WITH_BRACKETS, what))
        .orElse(extractGroup(PROJECT_SSH_PACK, what))
        .orElse(extractGroup(PROJECT_SSH_REPLICATION_START, what))
        .orElse(extractGroup(PROJECT_SSH_NO_SPACES, what).flatMap(findProjectStringAtStart(_)))
        .orElse(findProjectStringAtStart(what))
        .orElse(findProjectStringAtEnd(what))
    case "REST_API" | "UNKNOWN" =>
      extractGroup(PROJECT_REST_API_CHANGES_SEGMENT, what)
        .orElse(extractGroup(PROJECT_REST_API_PROJECTS_SEGMENT, what))
        .map(URLDecoder.decode(_, "UTF-8"))
    case "GIT" =>
      extractGroup(PROJECT_HTTP_PACK_INFO_REF, what)
        .orElse(extractGroup(PROJECT_SSH_PACK, what))
        .orElse(extractGroup(PROJECT_HTTP_PACK, what))
        .flatMap(findProjectStringAtEnd(_, '/'))
    case unexpected =>
      logger.warn(
        s"Unexpected access path '$unexpected' encountered when extracting project from '$what'"
      )
      None
  }