# AWS Instance MetaData Service variables and functions
# vim:set filetype=sh:
# shellcheck shell=sh

IMDS_HEADER="X-aws-ec2-metadata-token"
IMDS_TOKEN_TTL_HEADER="X-aws-ec2-metadata-token-ttl-seconds"
: "${IMDS_TOKEN_TTL:=5}"
# Allow override of IMDS API version (default: latest, can use 2009-04-04 for IMDSv1)
: "${IMDS_URI:=latest}"

_imds_token() {
	# Only try to get token if using 'latest' API version (IMDSv2)
	# Older versions like 2009-04-04 don't support tokens (IMDSv1)
	if [ "$IMDS_URI" = "latest" ]; then
		printf "PUT /latest/api/token HTTP/1.0\r\n%s: %s\r\n\r\n" \
			"$IMDS_TOKEN_TTL_HEADER" "$IMDS_TOKEN_TTL" \
			| nc -w 1 "$IMDS_ENDPOINT" 80 | tail -n 1
	fi
}

_imds_header() {
	local token="$(_imds_token)"
	if [ -n "$token" ]; then
		echo "$IMDS_HEADER: $token"
	fi
}
