github.com/nsqio/nsq@v1.3.0/internal/http_api/req_params.go (about)

     1  package http_api
     2  
     3  import (
     4  	"errors"
     5  	"io"
     6  	"net/http"
     7  	"net/url"
     8  )
     9  
    10  type ReqParams struct {
    11  	url.Values
    12  	Body []byte
    13  }
    14  
    15  func NewReqParams(req *http.Request) (*ReqParams, error) {
    16  	reqParams, err := url.ParseQuery(req.URL.RawQuery)
    17  	if err != nil {
    18  		return nil, err
    19  	}
    20  
    21  	data, err := io.ReadAll(req.Body)
    22  	if err != nil {
    23  		return nil, err
    24  	}
    25  
    26  	return &ReqParams{reqParams, data}, nil
    27  }
    28  
    29  func (r *ReqParams) Get(key string) (string, error) {
    30  	v, ok := r.Values[key]
    31  	if !ok {
    32  		return "", errors.New("key not in query params")
    33  	}
    34  	return v[0], nil
    35  }
    36  
    37  func (r *ReqParams) GetAll(key string) ([]string, error) {
    38  	v, ok := r.Values[key]
    39  	if !ok {
    40  		return nil, errors.New("key not in query params")
    41  	}
    42  	return v, nil
    43  }