github.com/aavshr/aws-sdk-go@v1.41.3/private/model/api/codegentest/service/restjsonservice/api.go (about)

     1  // Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
     2  
     3  package restjsonservice
     4  
     5  import (
     6  	"bytes"
     7  	"fmt"
     8  	"io"
     9  	"sync"
    10  	"time"
    11  
    12  	"github.com/aavshr/aws-sdk-go/aws"
    13  	"github.com/aavshr/aws-sdk-go/aws/awserr"
    14  	"github.com/aavshr/aws-sdk-go/aws/awsutil"
    15  	"github.com/aavshr/aws-sdk-go/aws/client"
    16  	"github.com/aavshr/aws-sdk-go/aws/request"
    17  	"github.com/aavshr/aws-sdk-go/private/protocol"
    18  	"github.com/aavshr/aws-sdk-go/private/protocol/eventstream"
    19  	"github.com/aavshr/aws-sdk-go/private/protocol/eventstream/eventstreamapi"
    20  	"github.com/aavshr/aws-sdk-go/private/protocol/rest"
    21  	"github.com/aavshr/aws-sdk-go/private/protocol/restjson"
    22  )
    23  
    24  const opEmptyStream = "EmptyStream"
    25  
    26  // EmptyStreamRequest generates a "aws/request.Request" representing the
    27  // client's request for the EmptyStream operation. The "output" return
    28  // value will be populated with the request's response once the request completes
    29  // successfully.
    30  //
    31  // Use "Send" method on the returned Request to send the API call to the service.
    32  // the "output" return value is not valid until after Send returns without error.
    33  //
    34  // See EmptyStream for more information on using the EmptyStream
    35  // API call, and error handling.
    36  //
    37  // This method is useful when you want to inject custom logic or configuration
    38  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
    39  //
    40  //
    41  //    // Example sending a request using the EmptyStreamRequest method.
    42  //    req, resp := client.EmptyStreamRequest(params)
    43  //
    44  //    err := req.Send()
    45  //    if err == nil { // resp is now filled
    46  //        fmt.Println(resp)
    47  //    }
    48  //
    49  // See also, https://docs.aws.amazon.com/goto/WebAPI/RESTJSONService-0000-00-00/EmptyStream
    50  func (c *RESTJSONService) EmptyStreamRequest(input *EmptyStreamInput) (req *request.Request, output *EmptyStreamOutput) {
    51  	op := &request.Operation{
    52  		Name:       opEmptyStream,
    53  		HTTPMethod: "POST",
    54  		HTTPPath:   "/",
    55  	}
    56  
    57  	if input == nil {
    58  		input = &EmptyStreamInput{}
    59  	}
    60  
    61  	output = &EmptyStreamOutput{}
    62  	req = c.newRequest(op, input, output)
    63  
    64  	es := NewEmptyStreamEventStream()
    65  	output.eventStream = es
    66  
    67  	req.Handlers.Send.Swap(client.LogHTTPResponseHandler.Name, client.LogHTTPResponseHeaderHandler)
    68  	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, rest.UnmarshalHandler)
    69  	req.Handlers.Unmarshal.PushBack(es.runOutputStream)
    70  	req.Handlers.Unmarshal.PushBack(es.runOnStreamPartClose)
    71  	return
    72  }
    73  
    74  // EmptyStream API operation for REST JSON Service.
    75  //
    76  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
    77  // with awserr.Error's Code and Message methods to get detailed information about
    78  // the error.
    79  //
    80  // See the AWS API reference guide for REST JSON Service's
    81  // API operation EmptyStream for usage and error information.
    82  // See also, https://docs.aws.amazon.com/goto/WebAPI/RESTJSONService-0000-00-00/EmptyStream
    83  func (c *RESTJSONService) EmptyStream(input *EmptyStreamInput) (*EmptyStreamOutput, error) {
    84  	req, out := c.EmptyStreamRequest(input)
    85  	return out, req.Send()
    86  }
    87  
    88  // EmptyStreamWithContext is the same as EmptyStream with the addition of
    89  // the ability to pass a context and additional request options.
    90  //
    91  // See EmptyStream for details on how to use this API operation.
    92  //
    93  // The context must be non-nil and will be used for request cancellation. If
    94  // the context is nil a panic will occur. In the future the SDK may create
    95  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
    96  // for more information on using Contexts.
    97  func (c *RESTJSONService) EmptyStreamWithContext(ctx aws.Context, input *EmptyStreamInput, opts ...request.Option) (*EmptyStreamOutput, error) {
    98  	req, out := c.EmptyStreamRequest(input)
    99  	req.SetContext(ctx)
   100  	req.ApplyOptions(opts...)
   101  	return out, req.Send()
   102  }
   103  
   104  var _ awserr.Error
   105  
   106  // EmptyStreamEventStream provides the event stream handling for the EmptyStream.
   107  //
   108  // For testing and mocking the event stream this type should be initialized via
   109  // the NewEmptyStreamEventStream constructor function. Using the functional options
   110  // to pass in nested mock behavior.
   111  type EmptyStreamEventStream struct {
   112  
   113  	// Reader is the EventStream reader for the EmptyEventStream
   114  	// events. This value is automatically set by the SDK when the API call is made
   115  	// Use this member when unit testing your code with the SDK to mock out the
   116  	// EventStream Reader.
   117  	//
   118  	// Must not be nil.
   119  	Reader EmptyEventStreamReader
   120  
   121  	outputReader io.ReadCloser
   122  
   123  	done      chan struct{}
   124  	closeOnce sync.Once
   125  	err       *eventstreamapi.OnceError
   126  }
   127  
   128  // NewEmptyStreamEventStream initializes an EmptyStreamEventStream.
   129  // This function should only be used for testing and mocking the EmptyStreamEventStream
   130  // stream within your application.
   131  //
   132  // The Reader member must be set before reading events from the stream.
   133  //
   134  //   es := NewEmptyStreamEventStream(func(o *EmptyStreamEventStream{
   135  //       es.Reader = myMockStreamReader
   136  //   })
   137  func NewEmptyStreamEventStream(opts ...func(*EmptyStreamEventStream)) *EmptyStreamEventStream {
   138  	es := &EmptyStreamEventStream{
   139  		done: make(chan struct{}),
   140  		err:  eventstreamapi.NewOnceError(),
   141  	}
   142  
   143  	for _, fn := range opts {
   144  		fn(es)
   145  	}
   146  
   147  	return es
   148  }
   149  
   150  func (es *EmptyStreamEventStream) runOnStreamPartClose(r *request.Request) {
   151  	if es.done == nil {
   152  		return
   153  	}
   154  	go es.waitStreamPartClose()
   155  
   156  }
   157  
   158  func (es *EmptyStreamEventStream) waitStreamPartClose() {
   159  	var outputErrCh <-chan struct{}
   160  	if v, ok := es.Reader.(interface{ ErrorSet() <-chan struct{} }); ok {
   161  		outputErrCh = v.ErrorSet()
   162  	}
   163  	var outputClosedCh <-chan struct{}
   164  	if v, ok := es.Reader.(interface{ Closed() <-chan struct{} }); ok {
   165  		outputClosedCh = v.Closed()
   166  	}
   167  
   168  	select {
   169  	case <-es.done:
   170  	case <-outputErrCh:
   171  		es.err.SetError(es.Reader.Err())
   172  		es.Close()
   173  	case <-outputClosedCh:
   174  		if err := es.Reader.Err(); err != nil {
   175  			es.err.SetError(es.Reader.Err())
   176  		}
   177  		es.Close()
   178  	}
   179  }
   180  
   181  // Events returns a channel to read events from.
   182  //
   183  // These events are:
   184  //
   185  //     * EmptyEventStreamUnknownEvent
   186  func (es *EmptyStreamEventStream) Events() <-chan EmptyEventStreamEvent {
   187  	return es.Reader.Events()
   188  }
   189  
   190  func (es *EmptyStreamEventStream) runOutputStream(r *request.Request) {
   191  	var opts []func(*eventstream.Decoder)
   192  	if r.Config.Logger != nil && r.Config.LogLevel.Matches(aws.LogDebugWithEventStreamBody) {
   193  		opts = append(opts, eventstream.DecodeWithLogger(r.Config.Logger))
   194  	}
   195  
   196  	unmarshalerForEvent := unmarshalerForEmptyEventStreamEvent{
   197  		metadata: protocol.ResponseMetadata{
   198  			StatusCode: r.HTTPResponse.StatusCode,
   199  			RequestID:  r.RequestID,
   200  		},
   201  	}.UnmarshalerForEventName
   202  
   203  	decoder := eventstream.NewDecoder(r.HTTPResponse.Body, opts...)
   204  	eventReader := eventstreamapi.NewEventReader(decoder,
   205  		protocol.HandlerPayloadUnmarshal{
   206  			Unmarshalers: r.Handlers.UnmarshalStream,
   207  		},
   208  		unmarshalerForEvent,
   209  	)
   210  
   211  	es.outputReader = r.HTTPResponse.Body
   212  	es.Reader = newReadEmptyEventStream(eventReader)
   213  }
   214  
   215  // Close closes the stream. This will also cause the stream to be closed.
   216  // Close must be called when done using the stream API. Not calling Close
   217  // may result in resource leaks.
   218  //
   219  // You can use the closing of the Reader's Events channel to terminate your
   220  // application's read from the API's stream.
   221  //
   222  func (es *EmptyStreamEventStream) Close() (err error) {
   223  	es.closeOnce.Do(es.safeClose)
   224  	return es.Err()
   225  }
   226  
   227  func (es *EmptyStreamEventStream) safeClose() {
   228  	if es.done != nil {
   229  		close(es.done)
   230  	}
   231  
   232  	es.Reader.Close()
   233  	if es.outputReader != nil {
   234  		es.outputReader.Close()
   235  	}
   236  }
   237  
   238  // Err returns any error that occurred while reading or writing EventStream
   239  // Events from the service API's response. Returns nil if there were no errors.
   240  func (es *EmptyStreamEventStream) Err() error {
   241  	if err := es.err.Err(); err != nil {
   242  		return err
   243  	}
   244  	if err := es.Reader.Err(); err != nil {
   245  		return err
   246  	}
   247  
   248  	return nil
   249  }
   250  
   251  const opGetEventStream = "GetEventStream"
   252  
   253  // GetEventStreamRequest generates a "aws/request.Request" representing the
   254  // client's request for the GetEventStream operation. The "output" return
   255  // value will be populated with the request's response once the request completes
   256  // successfully.
   257  //
   258  // Use "Send" method on the returned Request to send the API call to the service.
   259  // the "output" return value is not valid until after Send returns without error.
   260  //
   261  // See GetEventStream for more information on using the GetEventStream
   262  // API call, and error handling.
   263  //
   264  // This method is useful when you want to inject custom logic or configuration
   265  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   266  //
   267  //
   268  //    // Example sending a request using the GetEventStreamRequest method.
   269  //    req, resp := client.GetEventStreamRequest(params)
   270  //
   271  //    err := req.Send()
   272  //    if err == nil { // resp is now filled
   273  //        fmt.Println(resp)
   274  //    }
   275  //
   276  // See also, https://docs.aws.amazon.com/goto/WebAPI/RESTJSONService-0000-00-00/GetEventStream
   277  func (c *RESTJSONService) GetEventStreamRequest(input *GetEventStreamInput) (req *request.Request, output *GetEventStreamOutput) {
   278  	op := &request.Operation{
   279  		Name:       opGetEventStream,
   280  		HTTPMethod: "POST",
   281  		HTTPPath:   "/",
   282  	}
   283  
   284  	if input == nil {
   285  		input = &GetEventStreamInput{}
   286  	}
   287  
   288  	output = &GetEventStreamOutput{}
   289  	req = c.newRequest(op, input, output)
   290  
   291  	es := NewGetEventStreamEventStream()
   292  	output.eventStream = es
   293  
   294  	req.Handlers.Send.Swap(client.LogHTTPResponseHandler.Name, client.LogHTTPResponseHeaderHandler)
   295  	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, rest.UnmarshalHandler)
   296  	req.Handlers.Unmarshal.PushBack(es.runOutputStream)
   297  	req.Handlers.Unmarshal.PushBack(es.runOnStreamPartClose)
   298  	return
   299  }
   300  
   301  // GetEventStream API operation for REST JSON Service.
   302  //
   303  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   304  // with awserr.Error's Code and Message methods to get detailed information about
   305  // the error.
   306  //
   307  // See the AWS API reference guide for REST JSON Service's
   308  // API operation GetEventStream for usage and error information.
   309  // See also, https://docs.aws.amazon.com/goto/WebAPI/RESTJSONService-0000-00-00/GetEventStream
   310  func (c *RESTJSONService) GetEventStream(input *GetEventStreamInput) (*GetEventStreamOutput, error) {
   311  	req, out := c.GetEventStreamRequest(input)
   312  	return out, req.Send()
   313  }
   314  
   315  // GetEventStreamWithContext is the same as GetEventStream with the addition of
   316  // the ability to pass a context and additional request options.
   317  //
   318  // See GetEventStream for details on how to use this API operation.
   319  //
   320  // The context must be non-nil and will be used for request cancellation. If
   321  // the context is nil a panic will occur. In the future the SDK may create
   322  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   323  // for more information on using Contexts.
   324  func (c *RESTJSONService) GetEventStreamWithContext(ctx aws.Context, input *GetEventStreamInput, opts ...request.Option) (*GetEventStreamOutput, error) {
   325  	req, out := c.GetEventStreamRequest(input)
   326  	req.SetContext(ctx)
   327  	req.ApplyOptions(opts...)
   328  	return out, req.Send()
   329  }
   330  
   331  var _ awserr.Error
   332  
   333  // GetEventStreamEventStream provides the event stream handling for the GetEventStream.
   334  //
   335  // For testing and mocking the event stream this type should be initialized via
   336  // the NewGetEventStreamEventStream constructor function. Using the functional options
   337  // to pass in nested mock behavior.
   338  type GetEventStreamEventStream struct {
   339  
   340  	// Reader is the EventStream reader for the EventStream
   341  	// events. This value is automatically set by the SDK when the API call is made
   342  	// Use this member when unit testing your code with the SDK to mock out the
   343  	// EventStream Reader.
   344  	//
   345  	// Must not be nil.
   346  	Reader EventStreamReader
   347  
   348  	outputReader io.ReadCloser
   349  
   350  	done      chan struct{}
   351  	closeOnce sync.Once
   352  	err       *eventstreamapi.OnceError
   353  }
   354  
   355  // NewGetEventStreamEventStream initializes an GetEventStreamEventStream.
   356  // This function should only be used for testing and mocking the GetEventStreamEventStream
   357  // stream within your application.
   358  //
   359  // The Reader member must be set before reading events from the stream.
   360  //
   361  //   es := NewGetEventStreamEventStream(func(o *GetEventStreamEventStream{
   362  //       es.Reader = myMockStreamReader
   363  //   })
   364  func NewGetEventStreamEventStream(opts ...func(*GetEventStreamEventStream)) *GetEventStreamEventStream {
   365  	es := &GetEventStreamEventStream{
   366  		done: make(chan struct{}),
   367  		err:  eventstreamapi.NewOnceError(),
   368  	}
   369  
   370  	for _, fn := range opts {
   371  		fn(es)
   372  	}
   373  
   374  	return es
   375  }
   376  
   377  func (es *GetEventStreamEventStream) runOnStreamPartClose(r *request.Request) {
   378  	if es.done == nil {
   379  		return
   380  	}
   381  	go es.waitStreamPartClose()
   382  
   383  }
   384  
   385  func (es *GetEventStreamEventStream) waitStreamPartClose() {
   386  	var outputErrCh <-chan struct{}
   387  	if v, ok := es.Reader.(interface{ ErrorSet() <-chan struct{} }); ok {
   388  		outputErrCh = v.ErrorSet()
   389  	}
   390  	var outputClosedCh <-chan struct{}
   391  	if v, ok := es.Reader.(interface{ Closed() <-chan struct{} }); ok {
   392  		outputClosedCh = v.Closed()
   393  	}
   394  
   395  	select {
   396  	case <-es.done:
   397  	case <-outputErrCh:
   398  		es.err.SetError(es.Reader.Err())
   399  		es.Close()
   400  	case <-outputClosedCh:
   401  		if err := es.Reader.Err(); err != nil {
   402  			es.err.SetError(es.Reader.Err())
   403  		}
   404  		es.Close()
   405  	}
   406  }
   407  
   408  // Events returns a channel to read events from.
   409  //
   410  // These events are:
   411  //
   412  //     * EmptyEvent
   413  //     * ExplicitPayloadEvent
   414  //     * HeaderOnlyEvent
   415  //     * ImplicitPayloadEvent
   416  //     * PayloadOnlyEvent
   417  //     * PayloadOnlyBlobEvent
   418  //     * PayloadOnlyStringEvent
   419  //     * EventStreamUnknownEvent
   420  func (es *GetEventStreamEventStream) Events() <-chan EventStreamEvent {
   421  	return es.Reader.Events()
   422  }
   423  
   424  func (es *GetEventStreamEventStream) runOutputStream(r *request.Request) {
   425  	var opts []func(*eventstream.Decoder)
   426  	if r.Config.Logger != nil && r.Config.LogLevel.Matches(aws.LogDebugWithEventStreamBody) {
   427  		opts = append(opts, eventstream.DecodeWithLogger(r.Config.Logger))
   428  	}
   429  
   430  	unmarshalerForEvent := unmarshalerForEventStreamEvent{
   431  		metadata: protocol.ResponseMetadata{
   432  			StatusCode: r.HTTPResponse.StatusCode,
   433  			RequestID:  r.RequestID,
   434  		},
   435  	}.UnmarshalerForEventName
   436  
   437  	decoder := eventstream.NewDecoder(r.HTTPResponse.Body, opts...)
   438  	eventReader := eventstreamapi.NewEventReader(decoder,
   439  		protocol.HandlerPayloadUnmarshal{
   440  			Unmarshalers: r.Handlers.UnmarshalStream,
   441  		},
   442  		unmarshalerForEvent,
   443  	)
   444  
   445  	es.outputReader = r.HTTPResponse.Body
   446  	es.Reader = newReadEventStream(eventReader)
   447  }
   448  
   449  // Close closes the stream. This will also cause the stream to be closed.
   450  // Close must be called when done using the stream API. Not calling Close
   451  // may result in resource leaks.
   452  //
   453  // You can use the closing of the Reader's Events channel to terminate your
   454  // application's read from the API's stream.
   455  //
   456  func (es *GetEventStreamEventStream) Close() (err error) {
   457  	es.closeOnce.Do(es.safeClose)
   458  	return es.Err()
   459  }
   460  
   461  func (es *GetEventStreamEventStream) safeClose() {
   462  	if es.done != nil {
   463  		close(es.done)
   464  	}
   465  
   466  	es.Reader.Close()
   467  	if es.outputReader != nil {
   468  		es.outputReader.Close()
   469  	}
   470  }
   471  
   472  // Err returns any error that occurred while reading or writing EventStream
   473  // Events from the service API's response. Returns nil if there were no errors.
   474  func (es *GetEventStreamEventStream) Err() error {
   475  	if err := es.err.Err(); err != nil {
   476  		return err
   477  	}
   478  	if err := es.Reader.Err(); err != nil {
   479  		return err
   480  	}
   481  
   482  	return nil
   483  }
   484  
   485  const opOtherOperation = "OtherOperation"
   486  
   487  // OtherOperationRequest generates a "aws/request.Request" representing the
   488  // client's request for the OtherOperation operation. The "output" return
   489  // value will be populated with the request's response once the request completes
   490  // successfully.
   491  //
   492  // Use "Send" method on the returned Request to send the API call to the service.
   493  // the "output" return value is not valid until after Send returns without error.
   494  //
   495  // See OtherOperation for more information on using the OtherOperation
   496  // API call, and error handling.
   497  //
   498  // This method is useful when you want to inject custom logic or configuration
   499  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   500  //
   501  //
   502  //    // Example sending a request using the OtherOperationRequest method.
   503  //    req, resp := client.OtherOperationRequest(params)
   504  //
   505  //    err := req.Send()
   506  //    if err == nil { // resp is now filled
   507  //        fmt.Println(resp)
   508  //    }
   509  //
   510  // See also, https://docs.aws.amazon.com/goto/WebAPI/RESTJSONService-0000-00-00/OtherOperation
   511  func (c *RESTJSONService) OtherOperationRequest(input *OtherOperationInput) (req *request.Request, output *OtherOperationOutput) {
   512  	op := &request.Operation{
   513  		Name:       opOtherOperation,
   514  		HTTPMethod: "POST",
   515  		HTTPPath:   "/",
   516  	}
   517  
   518  	if input == nil {
   519  		input = &OtherOperationInput{}
   520  	}
   521  
   522  	output = &OtherOperationOutput{}
   523  	req = c.newRequest(op, input, output)
   524  	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
   525  	return
   526  }
   527  
   528  // OtherOperation API operation for REST JSON Service.
   529  //
   530  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   531  // with awserr.Error's Code and Message methods to get detailed information about
   532  // the error.
   533  //
   534  // See the AWS API reference guide for REST JSON Service's
   535  // API operation OtherOperation for usage and error information.
   536  //
   537  // Returned Error Types:
   538  //   * ExceptionEvent2
   539  //
   540  // See also, https://docs.aws.amazon.com/goto/WebAPI/RESTJSONService-0000-00-00/OtherOperation
   541  func (c *RESTJSONService) OtherOperation(input *OtherOperationInput) (*OtherOperationOutput, error) {
   542  	req, out := c.OtherOperationRequest(input)
   543  	return out, req.Send()
   544  }
   545  
   546  // OtherOperationWithContext is the same as OtherOperation with the addition of
   547  // the ability to pass a context and additional request options.
   548  //
   549  // See OtherOperation for details on how to use this API operation.
   550  //
   551  // The context must be non-nil and will be used for request cancellation. If
   552  // the context is nil a panic will occur. In the future the SDK may create
   553  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   554  // for more information on using Contexts.
   555  func (c *RESTJSONService) OtherOperationWithContext(ctx aws.Context, input *OtherOperationInput, opts ...request.Option) (*OtherOperationOutput, error) {
   556  	req, out := c.OtherOperationRequest(input)
   557  	req.SetContext(ctx)
   558  	req.ApplyOptions(opts...)
   559  	return out, req.Send()
   560  }
   561  
   562  type EmptyEvent struct {
   563  	_ struct{} `type:"structure" nopayload:"true"`
   564  }
   565  
   566  // String returns the string representation.
   567  //
   568  // API parameter values that are decorated as "sensitive" in the API will not
   569  // be included in the string output. The member name will be present, but the
   570  // value will be replaced with "sensitive".
   571  func (s EmptyEvent) String() string {
   572  	return awsutil.Prettify(s)
   573  }
   574  
   575  // GoString returns the string representation.
   576  //
   577  // API parameter values that are decorated as "sensitive" in the API will not
   578  // be included in the string output. The member name will be present, but the
   579  // value will be replaced with "sensitive".
   580  func (s EmptyEvent) GoString() string {
   581  	return s.String()
   582  }
   583  
   584  // The EmptyEvent is and event in the EventStream group of events.
   585  func (s *EmptyEvent) eventEventStream() {}
   586  
   587  // UnmarshalEvent unmarshals the EventStream Message into the EmptyEvent value.
   588  // This method is only used internally within the SDK's EventStream handling.
   589  func (s *EmptyEvent) UnmarshalEvent(
   590  	payloadUnmarshaler protocol.PayloadUnmarshaler,
   591  	msg eventstream.Message,
   592  ) error {
   593  	return nil
   594  }
   595  
   596  // MarshalEvent marshals the type into an stream event value. This method
   597  // should only used internally within the SDK's EventStream handling.
   598  func (s *EmptyEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
   599  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
   600  	return msg, err
   601  }
   602  
   603  // EmptyEventStreamEvent groups together all EventStream
   604  // events writes for EmptyEventStream.
   605  //
   606  // These events are:
   607  //
   608  type EmptyEventStreamEvent interface {
   609  	eventEmptyEventStream()
   610  	eventstreamapi.Marshaler
   611  	eventstreamapi.Unmarshaler
   612  }
   613  
   614  // EmptyEventStreamReader provides the interface for reading to the stream. The
   615  // default implementation for this interface will be EmptyEventStream.
   616  //
   617  // The reader's Close method must allow multiple concurrent calls.
   618  //
   619  // These events are:
   620  //
   621  //     * EmptyEventStreamUnknownEvent
   622  type EmptyEventStreamReader interface {
   623  	// Returns a channel of events as they are read from the event stream.
   624  	Events() <-chan EmptyEventStreamEvent
   625  
   626  	// Close will stop the reader reading events from the stream.
   627  	Close() error
   628  
   629  	// Returns any error that has occurred while reading from the event stream.
   630  	Err() error
   631  }
   632  
   633  type readEmptyEventStream struct {
   634  	eventReader *eventstreamapi.EventReader
   635  	stream      chan EmptyEventStreamEvent
   636  	err         *eventstreamapi.OnceError
   637  
   638  	done      chan struct{}
   639  	closeOnce sync.Once
   640  }
   641  
   642  func newReadEmptyEventStream(eventReader *eventstreamapi.EventReader) *readEmptyEventStream {
   643  	r := &readEmptyEventStream{
   644  		eventReader: eventReader,
   645  		stream:      make(chan EmptyEventStreamEvent),
   646  		done:        make(chan struct{}),
   647  		err:         eventstreamapi.NewOnceError(),
   648  	}
   649  	go r.readEventStream()
   650  
   651  	return r
   652  }
   653  
   654  // Close will close the underlying event stream reader.
   655  func (r *readEmptyEventStream) Close() error {
   656  	r.closeOnce.Do(r.safeClose)
   657  	return r.Err()
   658  }
   659  
   660  func (r *readEmptyEventStream) ErrorSet() <-chan struct{} {
   661  	return r.err.ErrorSet()
   662  }
   663  
   664  func (r *readEmptyEventStream) Closed() <-chan struct{} {
   665  	return r.done
   666  }
   667  
   668  func (r *readEmptyEventStream) safeClose() {
   669  	close(r.done)
   670  }
   671  
   672  func (r *readEmptyEventStream) Err() error {
   673  	return r.err.Err()
   674  }
   675  
   676  func (r *readEmptyEventStream) Events() <-chan EmptyEventStreamEvent {
   677  	return r.stream
   678  }
   679  
   680  func (r *readEmptyEventStream) readEventStream() {
   681  	defer r.Close()
   682  	defer close(r.stream)
   683  
   684  	for {
   685  		event, err := r.eventReader.ReadEvent()
   686  		if err != nil {
   687  			if err == io.EOF {
   688  				return
   689  			}
   690  			select {
   691  			case <-r.done:
   692  				// If closed already ignore the error
   693  				return
   694  			default:
   695  			}
   696  			if _, ok := err.(*eventstreamapi.UnknownMessageTypeError); ok {
   697  				continue
   698  			}
   699  			r.err.SetError(err)
   700  			return
   701  		}
   702  
   703  		select {
   704  		case r.stream <- event.(EmptyEventStreamEvent):
   705  		case <-r.done:
   706  			return
   707  		}
   708  	}
   709  }
   710  
   711  type unmarshalerForEmptyEventStreamEvent struct {
   712  	metadata protocol.ResponseMetadata
   713  }
   714  
   715  func (u unmarshalerForEmptyEventStreamEvent) UnmarshalerForEventName(eventType string) (eventstreamapi.Unmarshaler, error) {
   716  	switch eventType {
   717  	default:
   718  		return &EmptyEventStreamUnknownEvent{Type: eventType}, nil
   719  	}
   720  }
   721  
   722  // EmptyEventStreamUnknownEvent provides a failsafe event for the
   723  // EmptyEventStream group of events when an unknown event is received.
   724  type EmptyEventStreamUnknownEvent struct {
   725  	Type    string
   726  	Message eventstream.Message
   727  }
   728  
   729  // The EmptyEventStreamUnknownEvent is and event in the EmptyEventStream
   730  // group of events.
   731  func (s *EmptyEventStreamUnknownEvent) eventEmptyEventStream() {}
   732  
   733  // MarshalEvent marshals the type into an stream event value. This method
   734  // should only used internally within the SDK's EventStream handling.
   735  func (e *EmptyEventStreamUnknownEvent) MarshalEvent(pm protocol.PayloadMarshaler) (
   736  	msg eventstream.Message, err error,
   737  ) {
   738  	return e.Message.Clone(), nil
   739  }
   740  
   741  // UnmarshalEvent unmarshals the EventStream Message into the EmptyEventStream value.
   742  // This method is only used internally within the SDK's EventStream handling.
   743  func (e *EmptyEventStreamUnknownEvent) UnmarshalEvent(
   744  	payloadUnmarshaler protocol.PayloadUnmarshaler,
   745  	msg eventstream.Message,
   746  ) error {
   747  	e.Message = msg.Clone()
   748  	return nil
   749  }
   750  
   751  type EmptyStreamInput struct {
   752  	_ struct{} `type:"structure" nopayload:"true"`
   753  }
   754  
   755  // String returns the string representation.
   756  //
   757  // API parameter values that are decorated as "sensitive" in the API will not
   758  // be included in the string output. The member name will be present, but the
   759  // value will be replaced with "sensitive".
   760  func (s EmptyStreamInput) String() string {
   761  	return awsutil.Prettify(s)
   762  }
   763  
   764  // GoString returns the string representation.
   765  //
   766  // API parameter values that are decorated as "sensitive" in the API will not
   767  // be included in the string output. The member name will be present, but the
   768  // value will be replaced with "sensitive".
   769  func (s EmptyStreamInput) GoString() string {
   770  	return s.String()
   771  }
   772  
   773  type EmptyStreamOutput struct {
   774  	_ struct{} `type:"structure"`
   775  
   776  	eventStream *EmptyStreamEventStream
   777  }
   778  
   779  // String returns the string representation.
   780  //
   781  // API parameter values that are decorated as "sensitive" in the API will not
   782  // be included in the string output. The member name will be present, but the
   783  // value will be replaced with "sensitive".
   784  func (s EmptyStreamOutput) String() string {
   785  	return awsutil.Prettify(s)
   786  }
   787  
   788  // GoString returns the string representation.
   789  //
   790  // API parameter values that are decorated as "sensitive" in the API will not
   791  // be included in the string output. The member name will be present, but the
   792  // value will be replaced with "sensitive".
   793  func (s EmptyStreamOutput) GoString() string {
   794  	return s.String()
   795  }
   796  
   797  // GetStream returns the type to interact with the event stream.
   798  func (s *EmptyStreamOutput) GetStream() *EmptyStreamEventStream {
   799  	return s.eventStream
   800  }
   801  
   802  // EventStreamEvent groups together all EventStream
   803  // events writes for EventStream.
   804  //
   805  // These events are:
   806  //
   807  //     * EmptyEvent
   808  //     * ExplicitPayloadEvent
   809  //     * HeaderOnlyEvent
   810  //     * ImplicitPayloadEvent
   811  //     * PayloadOnlyEvent
   812  //     * PayloadOnlyBlobEvent
   813  //     * PayloadOnlyStringEvent
   814  type EventStreamEvent interface {
   815  	eventEventStream()
   816  	eventstreamapi.Marshaler
   817  	eventstreamapi.Unmarshaler
   818  }
   819  
   820  // EventStreamReader provides the interface for reading to the stream. The
   821  // default implementation for this interface will be EventStream.
   822  //
   823  // The reader's Close method must allow multiple concurrent calls.
   824  //
   825  // These events are:
   826  //
   827  //     * EmptyEvent
   828  //     * ExplicitPayloadEvent
   829  //     * HeaderOnlyEvent
   830  //     * ImplicitPayloadEvent
   831  //     * PayloadOnlyEvent
   832  //     * PayloadOnlyBlobEvent
   833  //     * PayloadOnlyStringEvent
   834  //     * EventStreamUnknownEvent
   835  type EventStreamReader interface {
   836  	// Returns a channel of events as they are read from the event stream.
   837  	Events() <-chan EventStreamEvent
   838  
   839  	// Close will stop the reader reading events from the stream.
   840  	Close() error
   841  
   842  	// Returns any error that has occurred while reading from the event stream.
   843  	Err() error
   844  }
   845  
   846  type readEventStream struct {
   847  	eventReader *eventstreamapi.EventReader
   848  	stream      chan EventStreamEvent
   849  	err         *eventstreamapi.OnceError
   850  
   851  	done      chan struct{}
   852  	closeOnce sync.Once
   853  }
   854  
   855  func newReadEventStream(eventReader *eventstreamapi.EventReader) *readEventStream {
   856  	r := &readEventStream{
   857  		eventReader: eventReader,
   858  		stream:      make(chan EventStreamEvent),
   859  		done:        make(chan struct{}),
   860  		err:         eventstreamapi.NewOnceError(),
   861  	}
   862  	go r.readEventStream()
   863  
   864  	return r
   865  }
   866  
   867  // Close will close the underlying event stream reader.
   868  func (r *readEventStream) Close() error {
   869  	r.closeOnce.Do(r.safeClose)
   870  	return r.Err()
   871  }
   872  
   873  func (r *readEventStream) ErrorSet() <-chan struct{} {
   874  	return r.err.ErrorSet()
   875  }
   876  
   877  func (r *readEventStream) Closed() <-chan struct{} {
   878  	return r.done
   879  }
   880  
   881  func (r *readEventStream) safeClose() {
   882  	close(r.done)
   883  }
   884  
   885  func (r *readEventStream) Err() error {
   886  	return r.err.Err()
   887  }
   888  
   889  func (r *readEventStream) Events() <-chan EventStreamEvent {
   890  	return r.stream
   891  }
   892  
   893  func (r *readEventStream) readEventStream() {
   894  	defer r.Close()
   895  	defer close(r.stream)
   896  
   897  	for {
   898  		event, err := r.eventReader.ReadEvent()
   899  		if err != nil {
   900  			if err == io.EOF {
   901  				return
   902  			}
   903  			select {
   904  			case <-r.done:
   905  				// If closed already ignore the error
   906  				return
   907  			default:
   908  			}
   909  			if _, ok := err.(*eventstreamapi.UnknownMessageTypeError); ok {
   910  				continue
   911  			}
   912  			r.err.SetError(err)
   913  			return
   914  		}
   915  
   916  		select {
   917  		case r.stream <- event.(EventStreamEvent):
   918  		case <-r.done:
   919  			return
   920  		}
   921  	}
   922  }
   923  
   924  type unmarshalerForEventStreamEvent struct {
   925  	metadata protocol.ResponseMetadata
   926  }
   927  
   928  func (u unmarshalerForEventStreamEvent) UnmarshalerForEventName(eventType string) (eventstreamapi.Unmarshaler, error) {
   929  	switch eventType {
   930  	case "Empty":
   931  		return &EmptyEvent{}, nil
   932  	case "ExplicitPayload":
   933  		return &ExplicitPayloadEvent{}, nil
   934  	case "Headers":
   935  		return &HeaderOnlyEvent{}, nil
   936  	case "ImplicitPayload":
   937  		return &ImplicitPayloadEvent{}, nil
   938  	case "PayloadOnly":
   939  		return &PayloadOnlyEvent{}, nil
   940  	case "PayloadOnlyBlob":
   941  		return &PayloadOnlyBlobEvent{}, nil
   942  	case "PayloadOnlyString":
   943  		return &PayloadOnlyStringEvent{}, nil
   944  	case "Exception":
   945  		return newErrorExceptionEvent(u.metadata).(eventstreamapi.Unmarshaler), nil
   946  	case "Exception2":
   947  		return newErrorExceptionEvent2(u.metadata).(eventstreamapi.Unmarshaler), nil
   948  	default:
   949  		return &EventStreamUnknownEvent{Type: eventType}, nil
   950  	}
   951  }
   952  
   953  // EventStreamUnknownEvent provides a failsafe event for the
   954  // EventStream group of events when an unknown event is received.
   955  type EventStreamUnknownEvent struct {
   956  	Type    string
   957  	Message eventstream.Message
   958  }
   959  
   960  // The EventStreamUnknownEvent is and event in the EventStream
   961  // group of events.
   962  func (s *EventStreamUnknownEvent) eventEventStream() {}
   963  
   964  // MarshalEvent marshals the type into an stream event value. This method
   965  // should only used internally within the SDK's EventStream handling.
   966  func (e *EventStreamUnknownEvent) MarshalEvent(pm protocol.PayloadMarshaler) (
   967  	msg eventstream.Message, err error,
   968  ) {
   969  	return e.Message.Clone(), nil
   970  }
   971  
   972  // UnmarshalEvent unmarshals the EventStream Message into the EventStream value.
   973  // This method is only used internally within the SDK's EventStream handling.
   974  func (e *EventStreamUnknownEvent) UnmarshalEvent(
   975  	payloadUnmarshaler protocol.PayloadUnmarshaler,
   976  	msg eventstream.Message,
   977  ) error {
   978  	e.Message = msg.Clone()
   979  	return nil
   980  }
   981  
   982  type ExceptionEvent struct {
   983  	_            struct{}                  `type:"structure"`
   984  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
   985  
   986  	IntVal *int64 `type:"integer"`
   987  
   988  	Message_ *string `locationName:"message" type:"string"`
   989  }
   990  
   991  // String returns the string representation.
   992  //
   993  // API parameter values that are decorated as "sensitive" in the API will not
   994  // be included in the string output. The member name will be present, but the
   995  // value will be replaced with "sensitive".
   996  func (s ExceptionEvent) String() string {
   997  	return awsutil.Prettify(s)
   998  }
   999  
  1000  // GoString returns the string representation.
  1001  //
  1002  // API parameter values that are decorated as "sensitive" in the API will not
  1003  // be included in the string output. The member name will be present, but the
  1004  // value will be replaced with "sensitive".
  1005  func (s ExceptionEvent) GoString() string {
  1006  	return s.String()
  1007  }
  1008  
  1009  // The ExceptionEvent is and event in the EventStream group of events.
  1010  func (s *ExceptionEvent) eventEventStream() {}
  1011  
  1012  // UnmarshalEvent unmarshals the EventStream Message into the ExceptionEvent value.
  1013  // This method is only used internally within the SDK's EventStream handling.
  1014  func (s *ExceptionEvent) UnmarshalEvent(
  1015  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  1016  	msg eventstream.Message,
  1017  ) error {
  1018  	if err := payloadUnmarshaler.UnmarshalPayload(
  1019  		bytes.NewReader(msg.Payload), s,
  1020  	); err != nil {
  1021  		return err
  1022  	}
  1023  	return nil
  1024  }
  1025  
  1026  // MarshalEvent marshals the type into an stream event value. This method
  1027  // should only used internally within the SDK's EventStream handling.
  1028  func (s *ExceptionEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  1029  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.ExceptionMessageType))
  1030  	var buf bytes.Buffer
  1031  	if err = pm.MarshalPayload(&buf, s); err != nil {
  1032  		return eventstream.Message{}, err
  1033  	}
  1034  	msg.Payload = buf.Bytes()
  1035  	return msg, err
  1036  }
  1037  
  1038  func newErrorExceptionEvent(v protocol.ResponseMetadata) error {
  1039  	return &ExceptionEvent{
  1040  		RespMetadata: v,
  1041  	}
  1042  }
  1043  
  1044  // Code returns the exception type name.
  1045  func (s *ExceptionEvent) Code() string {
  1046  	return "ExceptionEvent"
  1047  }
  1048  
  1049  // Message returns the exception's message.
  1050  func (s *ExceptionEvent) Message() string {
  1051  	if s.Message_ != nil {
  1052  		return *s.Message_
  1053  	}
  1054  	return ""
  1055  }
  1056  
  1057  // OrigErr always returns nil, satisfies awserr.Error interface.
  1058  func (s *ExceptionEvent) OrigErr() error {
  1059  	return nil
  1060  }
  1061  
  1062  func (s *ExceptionEvent) Error() string {
  1063  	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
  1064  }
  1065  
  1066  // Status code returns the HTTP status code for the request's response error.
  1067  func (s *ExceptionEvent) StatusCode() int {
  1068  	return s.RespMetadata.StatusCode
  1069  }
  1070  
  1071  // RequestID returns the service's response RequestID for request.
  1072  func (s *ExceptionEvent) RequestID() string {
  1073  	return s.RespMetadata.RequestID
  1074  }
  1075  
  1076  type ExceptionEvent2 struct {
  1077  	_            struct{}                  `type:"structure"`
  1078  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  1079  
  1080  	Message_ *string `locationName:"message" type:"string"`
  1081  }
  1082  
  1083  // String returns the string representation.
  1084  //
  1085  // API parameter values that are decorated as "sensitive" in the API will not
  1086  // be included in the string output. The member name will be present, but the
  1087  // value will be replaced with "sensitive".
  1088  func (s ExceptionEvent2) String() string {
  1089  	return awsutil.Prettify(s)
  1090  }
  1091  
  1092  // GoString returns the string representation.
  1093  //
  1094  // API parameter values that are decorated as "sensitive" in the API will not
  1095  // be included in the string output. The member name will be present, but the
  1096  // value will be replaced with "sensitive".
  1097  func (s ExceptionEvent2) GoString() string {
  1098  	return s.String()
  1099  }
  1100  
  1101  // The ExceptionEvent2 is and event in the EventStream group of events.
  1102  func (s *ExceptionEvent2) eventEventStream() {}
  1103  
  1104  // UnmarshalEvent unmarshals the EventStream Message into the ExceptionEvent2 value.
  1105  // This method is only used internally within the SDK's EventStream handling.
  1106  func (s *ExceptionEvent2) UnmarshalEvent(
  1107  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  1108  	msg eventstream.Message,
  1109  ) error {
  1110  	if err := payloadUnmarshaler.UnmarshalPayload(
  1111  		bytes.NewReader(msg.Payload), s,
  1112  	); err != nil {
  1113  		return err
  1114  	}
  1115  	return nil
  1116  }
  1117  
  1118  // MarshalEvent marshals the type into an stream event value. This method
  1119  // should only used internally within the SDK's EventStream handling.
  1120  func (s *ExceptionEvent2) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  1121  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.ExceptionMessageType))
  1122  	var buf bytes.Buffer
  1123  	if err = pm.MarshalPayload(&buf, s); err != nil {
  1124  		return eventstream.Message{}, err
  1125  	}
  1126  	msg.Payload = buf.Bytes()
  1127  	return msg, err
  1128  }
  1129  
  1130  func newErrorExceptionEvent2(v protocol.ResponseMetadata) error {
  1131  	return &ExceptionEvent2{
  1132  		RespMetadata: v,
  1133  	}
  1134  }
  1135  
  1136  // Code returns the exception type name.
  1137  func (s *ExceptionEvent2) Code() string {
  1138  	return "ExceptionEvent2"
  1139  }
  1140  
  1141  // Message returns the exception's message.
  1142  func (s *ExceptionEvent2) Message() string {
  1143  	if s.Message_ != nil {
  1144  		return *s.Message_
  1145  	}
  1146  	return ""
  1147  }
  1148  
  1149  // OrigErr always returns nil, satisfies awserr.Error interface.
  1150  func (s *ExceptionEvent2) OrigErr() error {
  1151  	return nil
  1152  }
  1153  
  1154  func (s *ExceptionEvent2) Error() string {
  1155  	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
  1156  }
  1157  
  1158  // Status code returns the HTTP status code for the request's response error.
  1159  func (s *ExceptionEvent2) StatusCode() int {
  1160  	return s.RespMetadata.StatusCode
  1161  }
  1162  
  1163  // RequestID returns the service's response RequestID for request.
  1164  func (s *ExceptionEvent2) RequestID() string {
  1165  	return s.RespMetadata.RequestID
  1166  }
  1167  
  1168  type ExplicitPayloadEvent struct {
  1169  	_ struct{} `type:"structure" payload:"NestedVal"`
  1170  
  1171  	LongVal *int64 `location:"header" type:"long"`
  1172  
  1173  	NestedVal *NestedShape `locationName:"NestedVal" type:"structure"`
  1174  
  1175  	StringVal *string `location:"header" type:"string"`
  1176  }
  1177  
  1178  // String returns the string representation.
  1179  //
  1180  // API parameter values that are decorated as "sensitive" in the API will not
  1181  // be included in the string output. The member name will be present, but the
  1182  // value will be replaced with "sensitive".
  1183  func (s ExplicitPayloadEvent) String() string {
  1184  	return awsutil.Prettify(s)
  1185  }
  1186  
  1187  // GoString returns the string representation.
  1188  //
  1189  // API parameter values that are decorated as "sensitive" in the API will not
  1190  // be included in the string output. The member name will be present, but the
  1191  // value will be replaced with "sensitive".
  1192  func (s ExplicitPayloadEvent) GoString() string {
  1193  	return s.String()
  1194  }
  1195  
  1196  // SetLongVal sets the LongVal field's value.
  1197  func (s *ExplicitPayloadEvent) SetLongVal(v int64) *ExplicitPayloadEvent {
  1198  	s.LongVal = &v
  1199  	return s
  1200  }
  1201  
  1202  // SetNestedVal sets the NestedVal field's value.
  1203  func (s *ExplicitPayloadEvent) SetNestedVal(v *NestedShape) *ExplicitPayloadEvent {
  1204  	s.NestedVal = v
  1205  	return s
  1206  }
  1207  
  1208  // SetStringVal sets the StringVal field's value.
  1209  func (s *ExplicitPayloadEvent) SetStringVal(v string) *ExplicitPayloadEvent {
  1210  	s.StringVal = &v
  1211  	return s
  1212  }
  1213  
  1214  // The ExplicitPayloadEvent is and event in the EventStream group of events.
  1215  func (s *ExplicitPayloadEvent) eventEventStream() {}
  1216  
  1217  // UnmarshalEvent unmarshals the EventStream Message into the ExplicitPayloadEvent value.
  1218  // This method is only used internally within the SDK's EventStream handling.
  1219  func (s *ExplicitPayloadEvent) UnmarshalEvent(
  1220  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  1221  	msg eventstream.Message,
  1222  ) error {
  1223  	if hv := msg.Headers.Get("LongVal"); hv != nil {
  1224  		v := hv.Get().(int64)
  1225  		s.LongVal = &v
  1226  	}
  1227  	if hv := msg.Headers.Get("StringVal"); hv != nil {
  1228  		v := hv.Get().(string)
  1229  		s.StringVal = &v
  1230  	}
  1231  	if err := payloadUnmarshaler.UnmarshalPayload(
  1232  		bytes.NewReader(msg.Payload), s,
  1233  	); err != nil {
  1234  		return err
  1235  	}
  1236  	return nil
  1237  }
  1238  
  1239  // MarshalEvent marshals the type into an stream event value. This method
  1240  // should only used internally within the SDK's EventStream handling.
  1241  func (s *ExplicitPayloadEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  1242  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
  1243  	msg.Headers.Set("LongVal", eventstream.Int64Value(*s.LongVal))
  1244  	msg.Headers.Set("StringVal", eventstream.StringValue(*s.StringVal))
  1245  	var buf bytes.Buffer
  1246  	if err = pm.MarshalPayload(&buf, s); err != nil {
  1247  		return eventstream.Message{}, err
  1248  	}
  1249  	msg.Payload = buf.Bytes()
  1250  	return msg, err
  1251  }
  1252  
  1253  type GetEventStreamInput struct {
  1254  	_ struct{} `type:"structure"`
  1255  
  1256  	InputVal *string `type:"string"`
  1257  }
  1258  
  1259  // String returns the string representation.
  1260  //
  1261  // API parameter values that are decorated as "sensitive" in the API will not
  1262  // be included in the string output. The member name will be present, but the
  1263  // value will be replaced with "sensitive".
  1264  func (s GetEventStreamInput) String() string {
  1265  	return awsutil.Prettify(s)
  1266  }
  1267  
  1268  // GoString returns the string representation.
  1269  //
  1270  // API parameter values that are decorated as "sensitive" in the API will not
  1271  // be included in the string output. The member name will be present, but the
  1272  // value will be replaced with "sensitive".
  1273  func (s GetEventStreamInput) GoString() string {
  1274  	return s.String()
  1275  }
  1276  
  1277  // SetInputVal sets the InputVal field's value.
  1278  func (s *GetEventStreamInput) SetInputVal(v string) *GetEventStreamInput {
  1279  	s.InputVal = &v
  1280  	return s
  1281  }
  1282  
  1283  type GetEventStreamOutput struct {
  1284  	_ struct{} `type:"structure"`
  1285  
  1286  	eventStream *GetEventStreamEventStream
  1287  
  1288  	IntVal *int64 `type:"integer"`
  1289  
  1290  	StrVal *string `type:"string"`
  1291  }
  1292  
  1293  // String returns the string representation.
  1294  //
  1295  // API parameter values that are decorated as "sensitive" in the API will not
  1296  // be included in the string output. The member name will be present, but the
  1297  // value will be replaced with "sensitive".
  1298  func (s GetEventStreamOutput) String() string {
  1299  	return awsutil.Prettify(s)
  1300  }
  1301  
  1302  // GoString returns the string representation.
  1303  //
  1304  // API parameter values that are decorated as "sensitive" in the API will not
  1305  // be included in the string output. The member name will be present, but the
  1306  // value will be replaced with "sensitive".
  1307  func (s GetEventStreamOutput) GoString() string {
  1308  	return s.String()
  1309  }
  1310  
  1311  // SetIntVal sets the IntVal field's value.
  1312  func (s *GetEventStreamOutput) SetIntVal(v int64) *GetEventStreamOutput {
  1313  	s.IntVal = &v
  1314  	return s
  1315  }
  1316  
  1317  // SetStrVal sets the StrVal field's value.
  1318  func (s *GetEventStreamOutput) SetStrVal(v string) *GetEventStreamOutput {
  1319  	s.StrVal = &v
  1320  	return s
  1321  }
  1322  
  1323  // GetStream returns the type to interact with the event stream.
  1324  func (s *GetEventStreamOutput) GetStream() *GetEventStreamEventStream {
  1325  	return s.eventStream
  1326  }
  1327  
  1328  type HeaderOnlyEvent struct {
  1329  	_ struct{} `type:"structure"`
  1330  
  1331  	// BlobVal is automatically base64 encoded/decoded by the SDK.
  1332  	BlobVal []byte `location:"header" type:"blob"`
  1333  
  1334  	BoolVal *bool `location:"header" type:"boolean"`
  1335  
  1336  	ByteVal *int64 `location:"header" type:"byte"`
  1337  
  1338  	IntegerVal *int64 `location:"header" type:"integer"`
  1339  
  1340  	LongVal *int64 `location:"header" type:"long"`
  1341  
  1342  	ShortVal *int64 `location:"header" type:"short"`
  1343  
  1344  	StringVal *string `location:"header" type:"string"`
  1345  
  1346  	TimeVal *time.Time `location:"header" type:"timestamp"`
  1347  }
  1348  
  1349  // String returns the string representation.
  1350  //
  1351  // API parameter values that are decorated as "sensitive" in the API will not
  1352  // be included in the string output. The member name will be present, but the
  1353  // value will be replaced with "sensitive".
  1354  func (s HeaderOnlyEvent) String() string {
  1355  	return awsutil.Prettify(s)
  1356  }
  1357  
  1358  // GoString returns the string representation.
  1359  //
  1360  // API parameter values that are decorated as "sensitive" in the API will not
  1361  // be included in the string output. The member name will be present, but the
  1362  // value will be replaced with "sensitive".
  1363  func (s HeaderOnlyEvent) GoString() string {
  1364  	return s.String()
  1365  }
  1366  
  1367  // SetBlobVal sets the BlobVal field's value.
  1368  func (s *HeaderOnlyEvent) SetBlobVal(v []byte) *HeaderOnlyEvent {
  1369  	s.BlobVal = v
  1370  	return s
  1371  }
  1372  
  1373  // SetBoolVal sets the BoolVal field's value.
  1374  func (s *HeaderOnlyEvent) SetBoolVal(v bool) *HeaderOnlyEvent {
  1375  	s.BoolVal = &v
  1376  	return s
  1377  }
  1378  
  1379  // SetByteVal sets the ByteVal field's value.
  1380  func (s *HeaderOnlyEvent) SetByteVal(v int64) *HeaderOnlyEvent {
  1381  	s.ByteVal = &v
  1382  	return s
  1383  }
  1384  
  1385  // SetIntegerVal sets the IntegerVal field's value.
  1386  func (s *HeaderOnlyEvent) SetIntegerVal(v int64) *HeaderOnlyEvent {
  1387  	s.IntegerVal = &v
  1388  	return s
  1389  }
  1390  
  1391  // SetLongVal sets the LongVal field's value.
  1392  func (s *HeaderOnlyEvent) SetLongVal(v int64) *HeaderOnlyEvent {
  1393  	s.LongVal = &v
  1394  	return s
  1395  }
  1396  
  1397  // SetShortVal sets the ShortVal field's value.
  1398  func (s *HeaderOnlyEvent) SetShortVal(v int64) *HeaderOnlyEvent {
  1399  	s.ShortVal = &v
  1400  	return s
  1401  }
  1402  
  1403  // SetStringVal sets the StringVal field's value.
  1404  func (s *HeaderOnlyEvent) SetStringVal(v string) *HeaderOnlyEvent {
  1405  	s.StringVal = &v
  1406  	return s
  1407  }
  1408  
  1409  // SetTimeVal sets the TimeVal field's value.
  1410  func (s *HeaderOnlyEvent) SetTimeVal(v time.Time) *HeaderOnlyEvent {
  1411  	s.TimeVal = &v
  1412  	return s
  1413  }
  1414  
  1415  // The HeaderOnlyEvent is and event in the EventStream group of events.
  1416  func (s *HeaderOnlyEvent) eventEventStream() {}
  1417  
  1418  // UnmarshalEvent unmarshals the EventStream Message into the HeaderOnlyEvent value.
  1419  // This method is only used internally within the SDK's EventStream handling.
  1420  func (s *HeaderOnlyEvent) UnmarshalEvent(
  1421  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  1422  	msg eventstream.Message,
  1423  ) error {
  1424  	if hv := msg.Headers.Get("BlobVal"); hv != nil {
  1425  		v := hv.Get().([]byte)
  1426  		s.BlobVal = v
  1427  	}
  1428  	if hv := msg.Headers.Get("BoolVal"); hv != nil {
  1429  		v := hv.Get().(bool)
  1430  		s.BoolVal = &v
  1431  	}
  1432  	if hv := msg.Headers.Get("ByteVal"); hv != nil {
  1433  		v := hv.Get().(int8)
  1434  		m := int64(v)
  1435  		s.ByteVal = &m
  1436  	}
  1437  	if hv := msg.Headers.Get("IntegerVal"); hv != nil {
  1438  		v := hv.Get().(int32)
  1439  		m := int64(v)
  1440  		s.IntegerVal = &m
  1441  	}
  1442  	if hv := msg.Headers.Get("LongVal"); hv != nil {
  1443  		v := hv.Get().(int64)
  1444  		s.LongVal = &v
  1445  	}
  1446  	if hv := msg.Headers.Get("ShortVal"); hv != nil {
  1447  		v := hv.Get().(int16)
  1448  		m := int64(v)
  1449  		s.ShortVal = &m
  1450  	}
  1451  	if hv := msg.Headers.Get("StringVal"); hv != nil {
  1452  		v := hv.Get().(string)
  1453  		s.StringVal = &v
  1454  	}
  1455  	if hv := msg.Headers.Get("TimeVal"); hv != nil {
  1456  		v := hv.Get().(time.Time)
  1457  		s.TimeVal = &v
  1458  	}
  1459  	return nil
  1460  }
  1461  
  1462  // MarshalEvent marshals the type into an stream event value. This method
  1463  // should only used internally within the SDK's EventStream handling.
  1464  func (s *HeaderOnlyEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  1465  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
  1466  	msg.Headers.Set("BlobVal", eventstream.BytesValue(s.BlobVal))
  1467  	msg.Headers.Set("BoolVal", eventstream.BoolValue(*s.BoolVal))
  1468  	msg.Headers.Set("ByteVal", eventstream.Int8Value(int8(*s.ByteVal)))
  1469  	msg.Headers.Set("IntegerVal", eventstream.Int32Value(int32(*s.IntegerVal)))
  1470  	msg.Headers.Set("LongVal", eventstream.Int64Value(*s.LongVal))
  1471  	msg.Headers.Set("ShortVal", eventstream.Int16Value(int16(*s.ShortVal)))
  1472  	msg.Headers.Set("StringVal", eventstream.StringValue(*s.StringVal))
  1473  	msg.Headers.Set("TimeVal", eventstream.TimestampValue(*s.TimeVal))
  1474  	return msg, err
  1475  }
  1476  
  1477  type ImplicitPayloadEvent struct {
  1478  	_ struct{} `type:"structure"`
  1479  
  1480  	ByteVal *int64 `location:"header" type:"byte"`
  1481  
  1482  	IntegerVal *int64 `type:"integer"`
  1483  
  1484  	ShortVal *int64 `type:"short"`
  1485  }
  1486  
  1487  // String returns the string representation.
  1488  //
  1489  // API parameter values that are decorated as "sensitive" in the API will not
  1490  // be included in the string output. The member name will be present, but the
  1491  // value will be replaced with "sensitive".
  1492  func (s ImplicitPayloadEvent) String() string {
  1493  	return awsutil.Prettify(s)
  1494  }
  1495  
  1496  // GoString returns the string representation.
  1497  //
  1498  // API parameter values that are decorated as "sensitive" in the API will not
  1499  // be included in the string output. The member name will be present, but the
  1500  // value will be replaced with "sensitive".
  1501  func (s ImplicitPayloadEvent) GoString() string {
  1502  	return s.String()
  1503  }
  1504  
  1505  // SetByteVal sets the ByteVal field's value.
  1506  func (s *ImplicitPayloadEvent) SetByteVal(v int64) *ImplicitPayloadEvent {
  1507  	s.ByteVal = &v
  1508  	return s
  1509  }
  1510  
  1511  // SetIntegerVal sets the IntegerVal field's value.
  1512  func (s *ImplicitPayloadEvent) SetIntegerVal(v int64) *ImplicitPayloadEvent {
  1513  	s.IntegerVal = &v
  1514  	return s
  1515  }
  1516  
  1517  // SetShortVal sets the ShortVal field's value.
  1518  func (s *ImplicitPayloadEvent) SetShortVal(v int64) *ImplicitPayloadEvent {
  1519  	s.ShortVal = &v
  1520  	return s
  1521  }
  1522  
  1523  // The ImplicitPayloadEvent is and event in the EventStream group of events.
  1524  func (s *ImplicitPayloadEvent) eventEventStream() {}
  1525  
  1526  // UnmarshalEvent unmarshals the EventStream Message into the ImplicitPayloadEvent value.
  1527  // This method is only used internally within the SDK's EventStream handling.
  1528  func (s *ImplicitPayloadEvent) UnmarshalEvent(
  1529  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  1530  	msg eventstream.Message,
  1531  ) error {
  1532  	if hv := msg.Headers.Get("ByteVal"); hv != nil {
  1533  		v := hv.Get().(int8)
  1534  		m := int64(v)
  1535  		s.ByteVal = &m
  1536  	}
  1537  	if err := payloadUnmarshaler.UnmarshalPayload(
  1538  		bytes.NewReader(msg.Payload), s,
  1539  	); err != nil {
  1540  		return err
  1541  	}
  1542  	return nil
  1543  }
  1544  
  1545  // MarshalEvent marshals the type into an stream event value. This method
  1546  // should only used internally within the SDK's EventStream handling.
  1547  func (s *ImplicitPayloadEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  1548  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
  1549  	msg.Headers.Set("ByteVal", eventstream.Int8Value(int8(*s.ByteVal)))
  1550  	var buf bytes.Buffer
  1551  	if err = pm.MarshalPayload(&buf, s); err != nil {
  1552  		return eventstream.Message{}, err
  1553  	}
  1554  	msg.Payload = buf.Bytes()
  1555  	return msg, err
  1556  }
  1557  
  1558  type NestedShape struct {
  1559  	_ struct{} `type:"structure"`
  1560  
  1561  	IntVal *int64 `type:"integer"`
  1562  
  1563  	StrVal *string `type:"string"`
  1564  }
  1565  
  1566  // String returns the string representation.
  1567  //
  1568  // API parameter values that are decorated as "sensitive" in the API will not
  1569  // be included in the string output. The member name will be present, but the
  1570  // value will be replaced with "sensitive".
  1571  func (s NestedShape) String() string {
  1572  	return awsutil.Prettify(s)
  1573  }
  1574  
  1575  // GoString returns the string representation.
  1576  //
  1577  // API parameter values that are decorated as "sensitive" in the API will not
  1578  // be included in the string output. The member name will be present, but the
  1579  // value will be replaced with "sensitive".
  1580  func (s NestedShape) GoString() string {
  1581  	return s.String()
  1582  }
  1583  
  1584  // SetIntVal sets the IntVal field's value.
  1585  func (s *NestedShape) SetIntVal(v int64) *NestedShape {
  1586  	s.IntVal = &v
  1587  	return s
  1588  }
  1589  
  1590  // SetStrVal sets the StrVal field's value.
  1591  func (s *NestedShape) SetStrVal(v string) *NestedShape {
  1592  	s.StrVal = &v
  1593  	return s
  1594  }
  1595  
  1596  type OtherOperationInput struct {
  1597  	_ struct{} `type:"structure" nopayload:"true"`
  1598  }
  1599  
  1600  // String returns the string representation.
  1601  //
  1602  // API parameter values that are decorated as "sensitive" in the API will not
  1603  // be included in the string output. The member name will be present, but the
  1604  // value will be replaced with "sensitive".
  1605  func (s OtherOperationInput) String() string {
  1606  	return awsutil.Prettify(s)
  1607  }
  1608  
  1609  // GoString returns the string representation.
  1610  //
  1611  // API parameter values that are decorated as "sensitive" in the API will not
  1612  // be included in the string output. The member name will be present, but the
  1613  // value will be replaced with "sensitive".
  1614  func (s OtherOperationInput) GoString() string {
  1615  	return s.String()
  1616  }
  1617  
  1618  type OtherOperationOutput struct {
  1619  	_ struct{} `type:"structure" nopayload:"true"`
  1620  }
  1621  
  1622  // String returns the string representation.
  1623  //
  1624  // API parameter values that are decorated as "sensitive" in the API will not
  1625  // be included in the string output. The member name will be present, but the
  1626  // value will be replaced with "sensitive".
  1627  func (s OtherOperationOutput) String() string {
  1628  	return awsutil.Prettify(s)
  1629  }
  1630  
  1631  // GoString returns the string representation.
  1632  //
  1633  // API parameter values that are decorated as "sensitive" in the API will not
  1634  // be included in the string output. The member name will be present, but the
  1635  // value will be replaced with "sensitive".
  1636  func (s OtherOperationOutput) GoString() string {
  1637  	return s.String()
  1638  }
  1639  
  1640  type PayloadOnlyBlobEvent struct {
  1641  	_ struct{} `type:"structure" payload:"BlobPayload"`
  1642  
  1643  	// BlobPayload is automatically base64 encoded/decoded by the SDK.
  1644  	BlobPayload []byte `type:"blob"`
  1645  }
  1646  
  1647  // String returns the string representation.
  1648  //
  1649  // API parameter values that are decorated as "sensitive" in the API will not
  1650  // be included in the string output. The member name will be present, but the
  1651  // value will be replaced with "sensitive".
  1652  func (s PayloadOnlyBlobEvent) String() string {
  1653  	return awsutil.Prettify(s)
  1654  }
  1655  
  1656  // GoString returns the string representation.
  1657  //
  1658  // API parameter values that are decorated as "sensitive" in the API will not
  1659  // be included in the string output. The member name will be present, but the
  1660  // value will be replaced with "sensitive".
  1661  func (s PayloadOnlyBlobEvent) GoString() string {
  1662  	return s.String()
  1663  }
  1664  
  1665  // SetBlobPayload sets the BlobPayload field's value.
  1666  func (s *PayloadOnlyBlobEvent) SetBlobPayload(v []byte) *PayloadOnlyBlobEvent {
  1667  	s.BlobPayload = v
  1668  	return s
  1669  }
  1670  
  1671  // The PayloadOnlyBlobEvent is and event in the EventStream group of events.
  1672  func (s *PayloadOnlyBlobEvent) eventEventStream() {}
  1673  
  1674  // UnmarshalEvent unmarshals the EventStream Message into the PayloadOnlyBlobEvent value.
  1675  // This method is only used internally within the SDK's EventStream handling.
  1676  func (s *PayloadOnlyBlobEvent) UnmarshalEvent(
  1677  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  1678  	msg eventstream.Message,
  1679  ) error {
  1680  	s.BlobPayload = make([]byte, len(msg.Payload))
  1681  	copy(s.BlobPayload, msg.Payload)
  1682  	return nil
  1683  }
  1684  
  1685  // MarshalEvent marshals the type into an stream event value. This method
  1686  // should only used internally within the SDK's EventStream handling.
  1687  func (s *PayloadOnlyBlobEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  1688  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
  1689  	msg.Headers.Set(":content-type", eventstream.StringValue("application/octet-stream"))
  1690  	msg.Payload = s.BlobPayload
  1691  	return msg, err
  1692  }
  1693  
  1694  type PayloadOnlyEvent struct {
  1695  	_ struct{} `type:"structure" payload:"NestedVal"`
  1696  
  1697  	NestedVal *NestedShape `locationName:"NestedVal" type:"structure"`
  1698  }
  1699  
  1700  // String returns the string representation.
  1701  //
  1702  // API parameter values that are decorated as "sensitive" in the API will not
  1703  // be included in the string output. The member name will be present, but the
  1704  // value will be replaced with "sensitive".
  1705  func (s PayloadOnlyEvent) String() string {
  1706  	return awsutil.Prettify(s)
  1707  }
  1708  
  1709  // GoString returns the string representation.
  1710  //
  1711  // API parameter values that are decorated as "sensitive" in the API will not
  1712  // be included in the string output. The member name will be present, but the
  1713  // value will be replaced with "sensitive".
  1714  func (s PayloadOnlyEvent) GoString() string {
  1715  	return s.String()
  1716  }
  1717  
  1718  // SetNestedVal sets the NestedVal field's value.
  1719  func (s *PayloadOnlyEvent) SetNestedVal(v *NestedShape) *PayloadOnlyEvent {
  1720  	s.NestedVal = v
  1721  	return s
  1722  }
  1723  
  1724  // The PayloadOnlyEvent is and event in the EventStream group of events.
  1725  func (s *PayloadOnlyEvent) eventEventStream() {}
  1726  
  1727  // UnmarshalEvent unmarshals the EventStream Message into the PayloadOnlyEvent value.
  1728  // This method is only used internally within the SDK's EventStream handling.
  1729  func (s *PayloadOnlyEvent) UnmarshalEvent(
  1730  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  1731  	msg eventstream.Message,
  1732  ) error {
  1733  	if err := payloadUnmarshaler.UnmarshalPayload(
  1734  		bytes.NewReader(msg.Payload), s,
  1735  	); err != nil {
  1736  		return err
  1737  	}
  1738  	return nil
  1739  }
  1740  
  1741  // MarshalEvent marshals the type into an stream event value. This method
  1742  // should only used internally within the SDK's EventStream handling.
  1743  func (s *PayloadOnlyEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  1744  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
  1745  	var buf bytes.Buffer
  1746  	if err = pm.MarshalPayload(&buf, s); err != nil {
  1747  		return eventstream.Message{}, err
  1748  	}
  1749  	msg.Payload = buf.Bytes()
  1750  	return msg, err
  1751  }
  1752  
  1753  type PayloadOnlyStringEvent struct {
  1754  	_ struct{} `type:"structure" payload:"StringPayload"`
  1755  
  1756  	StringPayload *string `locationName:"StringPayload" type:"string"`
  1757  }
  1758  
  1759  // String returns the string representation.
  1760  //
  1761  // API parameter values that are decorated as "sensitive" in the API will not
  1762  // be included in the string output. The member name will be present, but the
  1763  // value will be replaced with "sensitive".
  1764  func (s PayloadOnlyStringEvent) String() string {
  1765  	return awsutil.Prettify(s)
  1766  }
  1767  
  1768  // GoString returns the string representation.
  1769  //
  1770  // API parameter values that are decorated as "sensitive" in the API will not
  1771  // be included in the string output. The member name will be present, but the
  1772  // value will be replaced with "sensitive".
  1773  func (s PayloadOnlyStringEvent) GoString() string {
  1774  	return s.String()
  1775  }
  1776  
  1777  // SetStringPayload sets the StringPayload field's value.
  1778  func (s *PayloadOnlyStringEvent) SetStringPayload(v string) *PayloadOnlyStringEvent {
  1779  	s.StringPayload = &v
  1780  	return s
  1781  }
  1782  
  1783  // The PayloadOnlyStringEvent is and event in the EventStream group of events.
  1784  func (s *PayloadOnlyStringEvent) eventEventStream() {}
  1785  
  1786  // UnmarshalEvent unmarshals the EventStream Message into the PayloadOnlyStringEvent value.
  1787  // This method is only used internally within the SDK's EventStream handling.
  1788  func (s *PayloadOnlyStringEvent) UnmarshalEvent(
  1789  	payloadUnmarshaler protocol.PayloadUnmarshaler,
  1790  	msg eventstream.Message,
  1791  ) error {
  1792  	s.StringPayload = aws.String(string(msg.Payload))
  1793  	return nil
  1794  }
  1795  
  1796  // MarshalEvent marshals the type into an stream event value. This method
  1797  // should only used internally within the SDK's EventStream handling.
  1798  func (s *PayloadOnlyStringEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
  1799  	msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
  1800  	msg.Payload = []byte(aws.StringValue(s.StringPayload))
  1801  	return msg, err
  1802  }