api_op_GetDynamicData.go

 1package imds
 2
 3import (
 4	"context"
 5	"fmt"
 6	"io"
 7
 8	"github.com/aws/smithy-go/middleware"
 9	smithyhttp "github.com/aws/smithy-go/transport/http"
10)
11
12const getDynamicDataPath = "/latest/dynamic"
13
14// GetDynamicData uses the path provided to request information from the EC2
15// instance metadata service for dynamic data. The content will be returned
16// as a string, or error if the request failed.
17func (c *Client) GetDynamicData(ctx context.Context, params *GetDynamicDataInput, optFns ...func(*Options)) (*GetDynamicDataOutput, error) {
18	if params == nil {
19		params = &GetDynamicDataInput{}
20	}
21
22	result, metadata, err := c.invokeOperation(ctx, "GetDynamicData", params, optFns,
23		addGetDynamicDataMiddleware,
24	)
25	if err != nil {
26		return nil, err
27	}
28
29	out := result.(*GetDynamicDataOutput)
30	out.ResultMetadata = metadata
31	return out, nil
32}
33
34// GetDynamicDataInput provides the input parameters for the GetDynamicData
35// operation.
36type GetDynamicDataInput struct {
37	// The relative dynamic data path to retrieve. Can be empty string to
38	// retrieve a response containing a new line separated list of dynamic data
39	// resources available.
40	//
41	// Must not include the dynamic data base path.
42	//
43	// May include leading slash. If Path includes trailing slash the trailing
44	// slash will be included in the request for the resource.
45	Path string
46}
47
48// GetDynamicDataOutput provides the output parameters for the GetDynamicData
49// operation.
50type GetDynamicDataOutput struct {
51	Content io.ReadCloser
52
53	ResultMetadata middleware.Metadata
54}
55
56func addGetDynamicDataMiddleware(stack *middleware.Stack, options Options) error {
57	return addAPIRequestMiddleware(stack,
58		options,
59		"GetDynamicData",
60		buildGetDynamicDataPath,
61		buildGetDynamicDataOutput)
62}
63
64func buildGetDynamicDataPath(params interface{}) (string, error) {
65	p, ok := params.(*GetDynamicDataInput)
66	if !ok {
67		return "", fmt.Errorf("unknown parameter type %T", params)
68	}
69
70	return appendURIPath(getDynamicDataPath, p.Path), nil
71}
72
73func buildGetDynamicDataOutput(resp *smithyhttp.Response) (interface{}, error) {
74	return &GetDynamicDataOutput{
75		Content: resp.Body,
76	}, nil
77}