PathPatterns.kt

  1. package com.hexagonkt.http.patterns

  2. import com.hexagonkt.core.assertEnabled
  3. import com.hexagonkt.http.patterns.TemplatePathPattern.Companion.WILDCARD

  4. fun createPathPattern(pattern: String, prefix: Boolean): PathPattern =
  5.     when {
  6.         pattern == WILDCARD -> WildcardPathPattern(prefix)
  7.         TemplatePathPattern.isTemplate(pattern) -> TemplatePathPattern(pattern, prefix)
  8.         else -> LiteralPathPattern(pattern, prefix)
  9.     }

  10. internal fun checkPathPatternPrefix(pattern: String, allowedPrefixes: List<String> = emptyList()) {
  11.     if (assertEnabled)
  12.         require(
  13.             pattern.isEmpty()
  14.             || pattern.startsWith('/')
  15.             || allowedPrefixes.any { pattern.startsWith(it) }) {

  16.             "'$pattern' must be empty or start with '/'"
  17.         }
  18. }