// Package config provides the main configuration
package config

import (
	"golang.org/x/time/rate"
	"time"
)

// Defines default config settings
const (
	DefaultListenHTTP      = ":80"
	defaultManagerInterval = time.Minute
)

// Defines the max number of requests, here:
// 50 requests bucket, replenished at a rate of 1 per second
var (
	defaultLimit      = rate.Every(time.Second)
	defaultLimitBurst = 50
)

// Config is the main config struct for the application. Use New to instantiate a default config struct.
type Config struct {
	ListenHTTP      string
	Limit           rate.Limit
	LimitBurst      int
	ManagerInterval time.Duration
}

// New instantiates a default new config
func New(listenHTTP string) *Config {
	return &Config{
		ListenHTTP:      listenHTTP,
		Limit:           defaultLimit,
		LimitBurst:      defaultLimitBurst,
		ManagerInterval: defaultManagerInterval,
	}
}