trpc.group/trpc-go/trpc-go@v1.0.3/restful/pattern.go (about) 1 // 2 // 3 // Tencent is pleased to support the open source community by making tRPC available. 4 // 5 // Copyright (C) 2023 THL A29 Limited, a Tencent company. 6 // All rights reserved. 7 // 8 // If you have downloaded a copy of the tRPC source code from Tencent, 9 // please note that tRPC source code is licensed under the Apache 2.0 License, 10 // A copy of the Apache 2.0 License is included in this file. 11 // 12 // 13 14 package restful 15 16 import "trpc.group/trpc-go/trpc-go/internal/httprule" 17 18 // Pattern makes *httprule.PathTemplate accessible. 19 type Pattern struct { 20 *httprule.PathTemplate 21 } 22 23 // Parse parses the url path into a *Pattern. It should only be used by trpc-cmdline. 24 func Parse(urlPath string) (*Pattern, error) { 25 tpl, err := httprule.Parse(urlPath) 26 if err != nil { 27 return nil, err 28 } 29 return &Pattern{tpl}, nil 30 } 31 32 // Enforce ensures the url path is legal (will panic if illegal) and parses it into a *Pattern. 33 func Enforce(urlPath string) *Pattern { 34 pattern, err := Parse(urlPath) 35 if err != nil { 36 panic(err) 37 } 38 return pattern 39 }