Files
waf-platform/EdgeCommon/pkg/userconfigs/ad_traffic_package_plus.go

75 lines
1.6 KiB
Go

// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
//go:build plus
package userconfigs
import (
"strings"
)
type ADPackagePeriod = string
const (
ADPackagePeriodMonth ADPackagePeriod = "month"
ADPackagePeriodYear ADPackagePeriod = "year"
)
func IsValidADPackagePeriod(period string) bool {
return period == ADPackagePeriodMonth || period == ADPackagePeriodYear
}
func ADPackagePeriodToMonths(count int32, unit ADPackagePeriod) int32 {
if count < 0 {
return count
}
switch unit {
case ADPackagePeriodMonth:
return count
case ADPackagePeriodYear:
return count * 12
}
return 0
}
func ADPackagePeriodUnitName(unit ADPackagePeriod) string {
switch unit {
case ADPackagePeriodMonth:
return "个月"
case ADPackagePeriodYear:
return "年"
}
return ""
}
type ADPackageSizeUnit = string
const (
ADPackageSizeUnitMb ADPackageSizeUnit = "mb"
ADPackageSizeUnitGb ADPackageSizeUnit = "gb"
ADPackageSizeUnitTb ADPackageSizeUnit = "tb"
)
func IsValidADPackageSizeUnit(unit string) bool {
return unit == ADPackageSizeUnitMb || unit == ADPackageSizeUnitGb || unit == ADPackageSizeUnitTb
}
func ADPackageSizeFullUnit(unit ADPackageSizeUnit) string {
if len(unit) != 2 {
return unit
}
return strings.ToUpper(unit[:1]) + unit[1:] + "ps"
}
func ADPackageSizeBits(count int32, unit ADPackageSizeUnit) int64 {
switch unit {
case ADPackageSizeUnitMb:
return int64(count) * (1 << 20) * 8
case ADPackageSizeUnitGb:
return int64(count) * (1 << 30) * 8
case ADPackageSizeUnitTb:
return int64(count) * (1 << 40) * 8
}
return 0
}