package ratelimit

import "os"

// DefaultHourlyLimit and DefaultDailyLimit are the platform API rate-limit
// defaults shared by enforcement and dialect projections.
const (
	DefaultHourlyLimit = 1000
	DefaultDailyLimit  = 10000
)

// Config returns the configured hourly and daily API rate limits. Invalid or
// non-positive values fall back to the defaults.
func Config() (hourly, daily int) {
	hourly = DefaultHourlyLimit
	daily = DefaultDailyLimit

	if v := os.Getenv("NEXUS_API_HOURLY_LIMIT"); v != "" {
		if parsed, ok := parsePositiveInt(v); ok {
			hourly = parsed
		}
	}
	if v := os.Getenv("NEXUS_API_DAILY_LIMIT"); v != "" {
		if parsed, ok := parsePositiveInt(v); ok {
			daily = parsed
		}
	}
	return hourly, daily
}

func parsePositiveInt(s string) (int, bool) {
	if s == "" {
		return 0, false
	}
	n := 0
	for _, c := range s {
		if c < '0' || c > '9' {
			return 0, false
		}
		n = n*10 + int(c-'0')
	}
	return n, n > 0
}
