src

Go monorepo.
git clone git://code.dwrz.net/src
Log | Files | Refs

api_op_GetRegion.go (1685B)


      1 package imds
      2 
      3 import (
      4 	"context"
      5 	"fmt"
      6 
      7 	"github.com/aws/smithy-go/middleware"
      8 	smithyhttp "github.com/aws/smithy-go/transport/http"
      9 )
     10 
     11 // GetRegion retrieves an identity document describing an
     12 // instance. Error is returned if the request fails or is unable to parse
     13 // the response.
     14 func (c *Client) GetRegion(
     15 	ctx context.Context, params *GetRegionInput, optFns ...func(*Options),
     16 ) (
     17 	*GetRegionOutput, error,
     18 ) {
     19 	if params == nil {
     20 		params = &GetRegionInput{}
     21 	}
     22 
     23 	result, metadata, err := c.invokeOperation(ctx, "GetRegion", params, optFns,
     24 		addGetRegionMiddleware,
     25 	)
     26 	if err != nil {
     27 		return nil, err
     28 	}
     29 
     30 	out := result.(*GetRegionOutput)
     31 	out.ResultMetadata = metadata
     32 	return out, nil
     33 }
     34 
     35 // GetRegionInput provides the input parameters for GetRegion operation.
     36 type GetRegionInput struct{}
     37 
     38 // GetRegionOutput provides the output parameters for GetRegion operation.
     39 type GetRegionOutput struct {
     40 	Region string
     41 
     42 	ResultMetadata middleware.Metadata
     43 }
     44 
     45 func addGetRegionMiddleware(stack *middleware.Stack, options Options) error {
     46 	return addAPIRequestMiddleware(stack,
     47 		options,
     48 		"GetRegion",
     49 		buildGetInstanceIdentityDocumentPath,
     50 		buildGetRegionOutput,
     51 	)
     52 }
     53 
     54 func buildGetRegionOutput(resp *smithyhttp.Response) (interface{}, error) {
     55 	out, err := buildGetInstanceIdentityDocumentOutput(resp)
     56 	if err != nil {
     57 		return nil, err
     58 	}
     59 
     60 	result, ok := out.(*GetInstanceIdentityDocumentOutput)
     61 	if !ok {
     62 		return nil, fmt.Errorf("unexpected instance identity document type, %T", out)
     63 	}
     64 
     65 	region := result.Region
     66 	if len(region) == 0 {
     67 		return "", fmt.Errorf("instance metadata did not return a region value")
     68 	}
     69 
     70 	return &GetRegionOutput{
     71 		Region: region,
     72 	}, nil
     73 }