You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

utils.go 805 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package s3
  2. import (
  3. "encoding/base64"
  4. "fmt"
  5. "strings"
  6. cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
  7. )
  8. func JoinKey(comps ...string) string {
  9. sb := strings.Builder{}
  10. hasTrailingSlash := true
  11. for _, comp := range comps {
  12. if !hasTrailingSlash {
  13. sb.WriteString("/")
  14. }
  15. sb.WriteString(comp)
  16. hasTrailingSlash = strings.HasSuffix(comp, "/")
  17. }
  18. return sb.String()
  19. }
  20. func BaseKey(key string) string {
  21. return key[strings.LastIndex(key, "/")+1:]
  22. }
  23. func DecodeBase64Hash(hash string) (cdssdk.FileHash, error) {
  24. hashBytes := make([]byte, 32)
  25. n, err := base64.RawStdEncoding.Decode(hashBytes, []byte(hash))
  26. if err != nil {
  27. return "", err
  28. }
  29. if n != 32 {
  30. return "", fmt.Errorf("invalid hash length: %d", n)
  31. }
  32. return cdssdk.FileHash(strings.ToUpper(string(hashBytes))), nil
  33. }

本项目旨在将云际存储公共基础设施化,使个人及企业可低门槛使用高效的云际存储服务(安装开箱即用云际存储客户端即可,无需关注其他组件的部署),同时支持用户灵活便捷定制云际存储的功能细节。