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  }