// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT. package dynamodb import ( "context" "net/url" "time" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/aws/crr" "github.com/aws/aws-sdk-go-v2/internal/awsutil" ) type DescribeEndpointsInput struct { _ struct{} `type:"structure"` } // String returns the string representation func (s DescribeEndpointsInput) String() string { return awsutil.Prettify(s) } type DescribeEndpointsOutput struct { _ struct{} `type:"structure"` // List of endpoints. // // Endpoints is a required field Endpoints []Endpoint `type:"list" required:"true"` } // String returns the string representation func (s DescribeEndpointsOutput) String() string { return awsutil.Prettify(s) } const opDescribeEndpoints = "DescribeEndpoints" // DescribeEndpointsRequest returns a request value for making API operation for // Amazon DynamoDB. // // Returns the regional endpoint information. // // // Example sending a request using DescribeEndpointsRequest. // req := client.DescribeEndpointsRequest(params) // resp, err := req.Send(context.TODO()) // if err == nil { // fmt.Println(resp) // } // // Please also see https://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/DescribeEndpoints func (c *Client) DescribeEndpointsRequest(input *DescribeEndpointsInput) DescribeEndpointsRequest { op := &aws.Operation{ Name: opDescribeEndpoints, HTTPMethod: "POST", HTTPPath: "/", } if input == nil { input = &DescribeEndpointsInput{} } req := c.newRequest(op, input, &DescribeEndpointsOutput{}) return DescribeEndpointsRequest{Request: req, Input: input, Copy: c.DescribeEndpointsRequest} } // DescribeEndpointsRequest is the request type for the // DescribeEndpoints API operation. type DescribeEndpointsRequest struct { *aws.Request Input *DescribeEndpointsInput Copy func(*DescribeEndpointsInput) DescribeEndpointsRequest } // Send marshals and sends the DescribeEndpoints API request. func (r DescribeEndpointsRequest) Send(ctx context.Context) (*DescribeEndpointsResponse, error) { r.Request.SetContext(ctx) err := r.Request.Send() if err != nil { return nil, err } resp := &DescribeEndpointsResponse{ DescribeEndpointsOutput: r.Request.Data.(*DescribeEndpointsOutput), response: &aws.Response{Request: r.Request}, } return resp, nil } // DescribeEndpointsResponse is the response type for the // DescribeEndpoints API operation. type DescribeEndpointsResponse struct { *DescribeEndpointsOutput response *aws.Response } // SDKResponseMetdata returns the response metadata for the // DescribeEndpoints request. func (r *DescribeEndpointsResponse) SDKResponseMetdata() *aws.Response { return r.response } type discovererDescribeEndpoints struct { Context context.Context Client *Client Required bool EndpointCache *crr.EndpointCache Params map[string]*string Key string } func (d *discovererDescribeEndpoints) Discover() (crr.Endpoint, error) { input := &DescribeEndpointsInput{} req := d.Client.DescribeEndpointsRequest(input) resp, err := req.Send(d.Context) if err != nil { return crr.Endpoint{}, err } endpoint := crr.Endpoint{ Key: d.Key, } for _, e := range resp.Endpoints { if e.Address == nil { continue } cachedInMinutes := aws.Int64Value(e.CachePeriodInMinutes) u, err := url.Parse(*e.Address) if err != nil { continue } addr := crr.WeightedAddress{ URL: u, Expired: time.Now().Add(time.Duration(cachedInMinutes) * time.Minute), } endpoint.Add(addr) } d.EndpointCache.Add(endpoint) return endpoint, nil } func (d *discovererDescribeEndpoints) Handler(r *aws.Request) { d.Context = r.Context() endpointKey := crr.BuildEndpointKey(d.Params) d.Key = endpointKey endpoint, err := d.EndpointCache.Get(d, endpointKey, d.Required) if err != nil { r.Error = err return } if endpoint.URL != nil && len(endpoint.URL.String()) > 0 { e := r.Endpoint e.URL = endpoint.URL.String() r.SetEndpoint(e) } }