go.charczuk.com@v0.0.0-20240327042549-bc490516bd1a/sdk/r2/opt_headers.go (about)

     1  /*
     2  
     3  Copyright (c) 2023 - Present. Will Charczuk. All rights reserved.
     4  Use of this source code is governed by a MIT license that can be found in the LICENSE file at the root of the repository.
     5  
     6  */
     7  
     8  package r2
     9  
    10  import "net/http"
    11  
    12  // OptHeaders sets the request headers.
    13  func OptHeaders(headers http.Header) Option {
    14  	return func(r *Request) error {
    15  		r.req.Header = headers
    16  		return nil
    17  	}
    18  }
    19  
    20  // OptHeader is an alias to `r2.OptHeaderSet` and sets a
    21  // header on the request by key and value.
    22  func OptHeader(key, value string) Option {
    23  	return OptHeaderSet(key, value)
    24  }
    25  
    26  // OptHeaderAdd adds a header value on a request.
    27  func OptHeaderAdd(key, value string) Option {
    28  	return func(r *Request) error {
    29  		if r.req.Header == nil {
    30  			r.req.Header = make(http.Header)
    31  		}
    32  		r.req.Header.Add(key, value)
    33  		return nil
    34  	}
    35  }
    36  
    37  // OptHeaderSet sets a header value on a request.
    38  func OptHeaderSet(key, value string) Option {
    39  	return func(r *Request) error {
    40  		if r.req.Header == nil {
    41  			r.req.Header = make(http.Header)
    42  		}
    43  		r.req.Header.Set(key, value)
    44  		return nil
    45  	}
    46  }
    47  
    48  // OptHeaderDel deletes a header by key on a request.
    49  func OptHeaderDel(key string) Option {
    50  	return func(r *Request) error {
    51  		if r.req.Header == nil {
    52  			r.req.Header = make(http.Header)
    53  		}
    54  		r.req.Header.Del(key)
    55  		return nil
    56  	}
    57  }