aceberg/ExerciseDiary

View on GitHub
internal/auth/timeparse.go

Summary

Maintainability
A
0 mins
Test Coverage
package auth

import (
    "errors"
    "time"
)

func timeParse(timeout string) (time.Duration, error) {
    var err error
    var t time.Duration

    length := len(timeout)
    if length > 1 {
        suffix := timeout[length-1]

        switch string(suffix) {
        case "h":
            t, err = time.ParseDuration(timeout)
        case "m":
            t, err = time.ParseDuration(timeout)
        case "d": //day
            t, err = time.ParseDuration(timeout[:length-1] + "h")
            t = 24 * t
        case "M": // month
            t, err = time.ParseDuration(timeout[:length-1] + "h")
            t = 730 * t
        default:
            err = errors.New("ERROR: TimeParse: wrong time format")
        }
    } else {
        err = errors.New("ERROR: TimeParse: wrong time format")
    }

    return t, err
}

// ToTime - converts string (example: 3d) to time.Duration
func ToTime(s string) time.Duration {

    t, err := timeParse(s)
    if err != nil {
        t, _ = timeParse("7d")
    }

    return t
}