api_op_GetRegion.go raw

   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  }
  74