123456789101112131415161718192021222324252627282930313233343536373839 |
- package provider
- import (
- "strconv"
- "strings"
- )
- type SubscriptionInfo struct {
- Upload int64
- Download int64
- Total int64
- Expire int64
- }
- func NewSubscriptionInfo(userinfo string) (si *SubscriptionInfo, err error) {
- userinfo = strings.ToLower(userinfo)
- userinfo = strings.ReplaceAll(userinfo, " ", "")
- si = new(SubscriptionInfo)
- for _, field := range strings.Split(userinfo, ";") {
- switch name, value, _ := strings.Cut(field, "="); name {
- case "upload":
- si.Upload, err = strconv.ParseInt(value, 10, 64)
- case "download":
- si.Download, err = strconv.ParseInt(value, 10, 64)
- case "total":
- si.Total, err = strconv.ParseInt(value, 10, 64)
- case "expire":
- if value == "" {
- si.Expire = 0
- } else {
- si.Expire, err = strconv.ParseInt(value, 10, 64)
- }
- }
- if err != nil {
- return
- }
- }
- return
- }
|