MCPcopy Create free account
hub / github.com/cloudreve/cloudreve / DecodeTimeFlowStringTime

Function DecodeTimeFlowStringTime

pkg/util/common.go:308–356  ·  view source on GitHub ↗
(str string, timeNow int64)

Source from the content-addressed store, hash-verified

306}
307
308func DecodeTimeFlowStringTime(str string, timeNow int64) string {
309 timeNow = timeNow / 1000
310 timeDigits := []int{}
311
312 if len(str) == 0 {
313 return ""
314 }
315
316 for timeNow > 0 {
317 timeDigits = append(timeDigits, int(timeNow%int64(10)))
318 timeNow = timeNow / 10
319 }
320
321 res := make([]int32, utf8.RuneCountInString(str))
322 secret := []rune(str)
323 add := false
324 if len(secret)%2 == 0 {
325 add = true
326 }
327 timeDigitIndex := (len(secret) - 1) % len(timeDigits)
328 for pos := range secret {
329 // take single digit with index timeDigitIndex from timeNow
330 newIndex := len(res) - 1 - pos
331 if add {
332 newIndex = newIndex + timeDigits[timeDigitIndex]*timeDigitIndex
333 } else {
334 newIndex = 2*timeDigitIndex*timeDigits[timeDigitIndex] - newIndex
335 }
336
337 if newIndex < 0 {
338 newIndex = newIndex * -1
339 }
340
341 newIndex = newIndex % len(secret)
342
343 res[len(res)-1-pos] = secret[newIndex]
344 secret[newIndex], secret[len(res)-1-pos] = secret[len(res)-1-pos], secret[newIndex]
345 secret = secret[:len(secret)-1]
346
347 add = !add
348 // Add timeDigitIndex by 1, but does not exceed total digits in timeNow
349 timeDigitIndex--
350 if timeDigitIndex < 0 {
351 timeDigitIndex = len(timeDigits) - 1
352 }
353 }
354
355 return string(res)
356}
357
358func ToPtr[T any](v T) *T {
359 return &v

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected