PathPattern.kt

  1. package com.hexagonkt.http.patterns

  2. interface PathPattern {

  3.     val pattern: String
  4.     val prefix: Boolean

  5.     fun addPrefix(prefix: String?): PathPattern

  6.     fun matches(requestUrl: String): Boolean

  7.     fun extractParameters(requestUrl: String): Map<String, String>

  8.     fun insertParameters(parameters: Map<String, Any>): String =
  9.         error("${type()} path pattern does not accept parameters")

  10.     fun describe(): String =
  11.         "${type()}${if (prefix) " (PREFIX)" else ""} '$pattern'"

  12.     private fun type(): String =
  13.         javaClass.simpleName.removeSuffix(typeSuffix)

  14.     private companion object {
  15.         val typeSuffix: String = PathPattern::class.java.simpleName
  16.     }
  17. }