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.

casdoor.go 1.6 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package storage
  2. import (
  3. "fmt"
  4. "io"
  5. "net/http"
  6. "time"
  7. "github.com/astaxie/beego"
  8. "github.com/casbin/casibase/casdoor"
  9. "github.com/casbin/casibase/util"
  10. "github.com/casdoor/casdoor-go-sdk/casdoorsdk"
  11. )
  12. type casdoorClient struct {
  13. Storage
  14. }
  15. func NewCasdoorStorage() Storage {
  16. return &casdoorClient{}
  17. }
  18. func (s *casdoorClient) Get(key string) (io.ReadCloser, error) {
  19. res, err := casdoor.GetResource(key)
  20. if err != nil {
  21. return nil, err
  22. }
  23. response, err := http.Get(res.Url)
  24. if err != nil {
  25. return nil, err
  26. }
  27. return response.Body, nil
  28. }
  29. func (s *casdoorClient) Put(user, key string, bytes []byte) error {
  30. _, _, err := casdoorsdk.UploadResource(user, "Casibase", "Casibase",
  31. fmt.Sprintf("/resource/%s/%s/%s",
  32. casdoor.Organization, casdoor.Application, key),
  33. bytes)
  34. if err != nil {
  35. return err
  36. }
  37. return nil
  38. }
  39. func (s *casdoorClient) Delete(key string) error {
  40. _, err := casdoorsdk.DeleteResource(util.GetIdFromOwnerAndName(fmt.Sprintf("/resource/%s/%s/casibase",
  41. beego.AppConfig.String("casdoorOrganization"),
  42. beego.AppConfig.String("casdoorApplication")), key))
  43. if err != nil {
  44. return err
  45. }
  46. return nil
  47. }
  48. func (s *casdoorClient) List(prefix string) ([]*Object, error) {
  49. res, err := casdoor.ListResources(prefix)
  50. if err != nil {
  51. return nil, err
  52. }
  53. result := make([]*Object, 0)
  54. for _, r := range res {
  55. created, _ := time.Parse(time.RFC3339, r.CreatedTime)
  56. result = append(result, &Object{
  57. Key: util.GetNameFromIdNoCheck(r.Name),
  58. LastModified: &created,
  59. Storage: s,
  60. })
  61. }
  62. return result, nil
  63. }