github.com/cloudwego/hertz@v0.9.3/pkg/route/param/param.go (about)

     1  /*
     2   * Copyright 2022 CloudWeGo Authors
     3   *
     4   * Licensed under the Apache License, Version 2.0 (the "License");
     5   * you may not use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *     http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.
    15   * The MIT License (MIT)
    16   *
    17   * Copyright (c) 2014 Manuel Martínez-Almeida
    18   *
    19   * Permission is hereby granted, free of charge, to any person obtaining a copy
    20   * of this software and associated documentation files (the "Software"), to deal
    21   * in the Software without restriction, including without limitation the rights
    22   * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    23   * copies of the Software, and to permit persons to whom the Software is
    24   * furnished to do so, subject to the following conditions:
    25   *
    26   * The above copyright notice and this permission notice shall be included in
    27   * all copies or substantial portions of the Software.
    28   *
    29   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    30   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    31   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    32   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    33   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    34   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    35   * THE SOFTWARE.
    36   *
    37   * This file may have been modified by CloudWeGo authors. All CloudWeGo
    38   * Modifications are Copyright 2022 CloudWeGo Authors
    39   */
    40  
    41  package param
    42  
    43  // Param is a single URL parameter, consisting of a key and a value.
    44  type Param struct {
    45  	Key   string
    46  	Value string
    47  }
    48  
    49  // Params is a Param-slice, as returned by the router.
    50  // The slice is ordered, the first URL parameter is also the first slice value.
    51  // It is therefore safe to read values by the index.
    52  type Params []Param
    53  
    54  // Get returns the value of the first Param which key matches the given name.
    55  // If no matching Param is found, an empty string is returned.
    56  func (ps Params) Get(name string) (string, bool) {
    57  	for _, entry := range ps {
    58  		if entry.Key == name {
    59  			return entry.Value, true
    60  		}
    61  	}
    62  	return "", false
    63  }
    64  
    65  // ByName returns the value of the first Param which key matches the given name.
    66  // If no matching Param is found, an empty string is returned.
    67  func (ps Params) ByName(name string) (va string) {
    68  	va, _ = ps.Get(name)
    69  	return
    70  }