package winrm

import (
	"fmt"
	"time"
)

// formatDuration formats the given time.Duration into an ISO8601
// duration string.
func formatDuration(duration time.Duration) string {
	// We're not supporting negative durations
	if duration.Seconds() <= 0 {
		return "PT0S"
	}

	h := int(duration.Hours())
	m := int(duration.Minutes()) - (h * 60)
	s := int(duration.Seconds()) - (h*3600 + m*60)

	res := "PT"
	if h > 0 {
		res = fmt.Sprintf("%s%dH", res, h)
	}
	if m > 0 {
		res = fmt.Sprintf("%s%dM", res, m)
	}
	if s > 0 {
		res = fmt.Sprintf("%s%dS", res, s)
	}

	return res
}