github.com/aavshr/aws-sdk-go@v1.41.3/service/glacier/customizations.go (about)

     1  package glacier
     2  
     3  import (
     4  	"encoding/hex"
     5  	"reflect"
     6  
     7  	"github.com/aavshr/aws-sdk-go/aws/awsutil"
     8  	"github.com/aavshr/aws-sdk-go/aws/request"
     9  )
    10  
    11  var (
    12  	defaultAccountID = "-"
    13  )
    14  
    15  func init() {
    16  	initRequest = func(r *request.Request) {
    17  		r.Handlers.Validate.PushFront(addAccountID)
    18  		r.Handlers.Validate.PushFront(copyParams) // this happens first
    19  		r.Handlers.Build.PushBack(addChecksum)
    20  		r.Handlers.Build.PushBack(addAPIVersion)
    21  	}
    22  }
    23  
    24  func copyParams(r *request.Request) {
    25  	r.Params = awsutil.CopyOf(r.Params)
    26  }
    27  
    28  func addAccountID(r *request.Request) {
    29  	if !r.ParamsFilled() {
    30  		return
    31  	}
    32  
    33  	v := reflect.Indirect(reflect.ValueOf(r.Params))
    34  	if f := v.FieldByName("AccountId"); f.IsNil() {
    35  		f.Set(reflect.ValueOf(&defaultAccountID))
    36  	}
    37  }
    38  
    39  func addChecksum(r *request.Request) {
    40  	if r.Body == nil || r.HTTPRequest.Header.Get("X-Amz-Sha256-Tree-Hash") != "" {
    41  		return
    42  	}
    43  
    44  	h := ComputeHashes(r.Body)
    45  	hstr := hex.EncodeToString(h.TreeHash)
    46  	r.HTTPRequest.Header.Set("X-Amz-Sha256-Tree-Hash", hstr)
    47  
    48  	hLstr := hex.EncodeToString(h.LinearHash)
    49  	r.HTTPRequest.Header.Set("X-Amz-Content-Sha256", hLstr)
    50  }
    51  
    52  func addAPIVersion(r *request.Request) {
    53  	r.HTTPRequest.Header.Set("X-Amz-Glacier-Version", r.ClientInfo.APIVersion)
    54  }