(rateLimitUnit key.TimeUnit)
| 101 | } |
| 102 | |
| 103 | func getCounterTtl(rateLimitUnit key.TimeUnit) (time.Time, error) { |
| 104 | now := time.Now().UTC() |
| 105 | switch rateLimitUnit { |
| 106 | case key.SecondTimeUnit: |
| 107 | return now.Truncate(time.Second).Add(time.Second).Add(-time.Millisecond), nil |
| 108 | case key.MinuteTimeUnit: |
| 109 | return now.Truncate(60 * time.Second).Add(time.Second * 60).Add(-time.Millisecond), nil |
| 110 | case key.HourTimeUnit: |
| 111 | return now.Truncate(60 * time.Minute).Add(time.Minute * 60).Add(-time.Millisecond), nil |
| 112 | case key.DayTimeUnit: |
| 113 | return now.Truncate(24 * time.Hour).Add(time.Hour * 24).Add(-time.Millisecond), nil |
| 114 | case key.MonthTimeUnit: |
| 115 | firstDayOfNextMonth := time.Date(now.Year(), now.Month()+1, 1, 0, 0, 0, 0, time.UTC) |
| 116 | return firstDayOfNextMonth.Add(-time.Millisecond), nil |
| 117 | } |
| 118 | |
| 119 | return time.Time{}, fmt.Errorf("cannot recognize rate limit time unit %v", rateLimitUnit) |
| 120 | } |
| 121 | |
| 122 | func getCounterTimeStamp(rateLimitUnit key.TimeUnit) (int64, error) { |
| 123 | now := time.Now().UTC() |
no outgoing calls
no test coverage detected