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 }