github.com/yankunsam/loki/v2@v2.6.3-0.20220817130409-389df5235c27/pkg/util/query_string_builder.go (about)

     1  package util
     2  
     3  import (
     4  	"net/url"
     5  	"strconv"
     6  )
     7  
     8  type QueryStringBuilder struct {
     9  	values url.Values
    10  }
    11  
    12  func NewQueryStringBuilder() *QueryStringBuilder {
    13  	return &QueryStringBuilder{
    14  		values: url.Values{},
    15  	}
    16  }
    17  
    18  func (b *QueryStringBuilder) SetString(name, value string) {
    19  	b.values.Set(name, value)
    20  }
    21  
    22  func (b *QueryStringBuilder) SetStringArray(name string, values []string) {
    23  	for _, v := range values {
    24  		b.values.Add(name, v)
    25  	}
    26  }
    27  
    28  func (b *QueryStringBuilder) SetInt(name string, value int64) {
    29  	b.SetString(name, strconv.FormatInt(value, 10))
    30  }
    31  
    32  func (b *QueryStringBuilder) SetInt32(name string, value int) {
    33  	b.SetString(name, strconv.Itoa(value))
    34  }
    35  
    36  func (b *QueryStringBuilder) SetFloat(name string, value float64) {
    37  	b.SetString(name, strconv.FormatFloat(value, 'f', -1, 64))
    38  }
    39  
    40  func (b *QueryStringBuilder) SetFloat32(name string, value float32) {
    41  	b.SetString(name, strconv.FormatFloat(float64(value), 'f', -1, 32))
    42  }
    43  
    44  // Encode returns the URL-encoded query string based on key-value
    45  // parameters added to the builder calling Set functions.
    46  func (b *QueryStringBuilder) Encode() string {
    47  	return b.values.Encode()
    48  }