utils.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Copyright (c) [2022] [巴拉迪维 BaratSemet]
  2. // [ohUrlShortener] is licensed under Mulan PSL v2.
  3. // You can use this software according to the terms and conditions of the Mulan PSL v2.
  4. // You may obtain a copy of Mulan PSL v2 at:
  5. // http://license.coscl.org.cn/MulanPSL2
  6. // THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
  7. // See the Mulan PSL v2 for more details.
  8. package utils
  9. import (
  10. "crypto/sha256"
  11. "fmt"
  12. "log"
  13. "math/rand"
  14. "os"
  15. "strings"
  16. "time"
  17. "github.com/btcsuite/btcd/btcutil/base58"
  18. )
  19. func ExitOnError(message string, err error) {
  20. if err != nil {
  21. log.Printf("[%s] - %s", message, err)
  22. os.Exit(-1)
  23. }
  24. }
  25. func PrintOnError(message string, err error) {
  26. if err != nil {
  27. log.Printf("[%s] - %s", message, err)
  28. }
  29. }
  30. func RaiseError(message string) error {
  31. if !EmptyString(message) {
  32. return fmt.Errorf(message)
  33. }
  34. return nil
  35. }
  36. func EmptyString(str string) bool {
  37. str = strings.TrimSpace(str)
  38. return strings.EqualFold(str, "")
  39. }
  40. func UserAgentIpHash(useragent string, ip string) string {
  41. input := fmt.Sprintf("%s-%s-%s-%d", useragent, ip, time.Now().String(), rand.Int())
  42. data, _ := Sha256Of(input)
  43. str := Base58Encode(data)
  44. return str[:10]
  45. }
  46. func Sha256Of(input string) ([]byte, error) {
  47. algorithm := sha256.New()
  48. _, err := algorithm.Write([]byte(strings.TrimSpace(input)))
  49. if err != nil {
  50. return nil, err
  51. }
  52. return algorithm.Sum(nil), nil
  53. }
  54. func Base58Encode(data []byte) string {
  55. return base58.Encode(data)
  56. }