github.com/aavshr/aws-sdk-go@v1.41.3/private/protocol/restjson/restjson.go (about)

     1  // Package restjson provides RESTful JSON serialization of AWS
     2  // requests and responses.
     3  package restjson
     4  
     5  //go:generate go run -tags codegen ../../../private/model/cli/gen-protocol-tests ../../../models/protocol_tests/input/rest-json.json build_test.go
     6  //go:generate go run -tags codegen ../../../private/model/cli/gen-protocol-tests ../../../models/protocol_tests/output/rest-json.json unmarshal_test.go
     7  
     8  import (
     9  	"github.com/aavshr/aws-sdk-go/aws/request"
    10  	"github.com/aavshr/aws-sdk-go/private/protocol/jsonrpc"
    11  	"github.com/aavshr/aws-sdk-go/private/protocol/rest"
    12  )
    13  
    14  // BuildHandler is a named request handler for building restjson protocol
    15  // requests
    16  var BuildHandler = request.NamedHandler{
    17  	Name: "awssdk.restjson.Build",
    18  	Fn:   Build,
    19  }
    20  
    21  // UnmarshalHandler is a named request handler for unmarshaling restjson
    22  // protocol requests
    23  var UnmarshalHandler = request.NamedHandler{
    24  	Name: "awssdk.restjson.Unmarshal",
    25  	Fn:   Unmarshal,
    26  }
    27  
    28  // UnmarshalMetaHandler is a named request handler for unmarshaling restjson
    29  // protocol request metadata
    30  var UnmarshalMetaHandler = request.NamedHandler{
    31  	Name: "awssdk.restjson.UnmarshalMeta",
    32  	Fn:   UnmarshalMeta,
    33  }
    34  
    35  // Build builds a request for the REST JSON protocol.
    36  func Build(r *request.Request) {
    37  	rest.Build(r)
    38  
    39  	if t := rest.PayloadType(r.Params); t == "structure" || t == "" {
    40  		if v := r.HTTPRequest.Header.Get("Content-Type"); len(v) == 0 {
    41  			r.HTTPRequest.Header.Set("Content-Type", "application/json")
    42  		}
    43  		jsonrpc.Build(r)
    44  	}
    45  }
    46  
    47  // Unmarshal unmarshals a response body for the REST JSON protocol.
    48  func Unmarshal(r *request.Request) {
    49  	if t := rest.PayloadType(r.Data); t == "structure" || t == "" {
    50  		jsonrpc.Unmarshal(r)
    51  	} else {
    52  		rest.Unmarshal(r)
    53  	}
    54  }
    55  
    56  // UnmarshalMeta unmarshals response headers for the REST JSON protocol.
    57  func UnmarshalMeta(r *request.Request) {
    58  	rest.UnmarshalMeta(r)
    59  }