Fix ListObjects()

This commit is contained in:
Yang Luo 2023-07-30 16:46:52 +08:00
parent ec45d9e5eb
commit 9c3f8aed8b
5 changed files with 16 additions and 38 deletions

View File

@ -15,38 +15,15 @@
package casdoor package casdoor
import ( import (
"fmt"
"github.com/astaxie/beego"
"github.com/casbin/casibase/util"
"github.com/casdoor/casdoor-go-sdk/casdoorsdk" "github.com/casdoor/casdoor-go-sdk/casdoorsdk"
) )
func ListResources(prefix string) ([]*casdoorsdk.Resource, error) { func ListResources(prefix string) ([]*casdoorsdk.Resource, error) {
prefix = util.GetIdFromOwnerAndName(fmt.Sprintf("/resource/%s/%s/casibase", res, err := casdoorsdk.GetResources("built-in", "admin", "", "", "", "")
beego.AppConfig.String("casdoorOrganization"), return res, err
beego.AppConfig.String("casdoorApplication")), prefix)
result := make([]*casdoorsdk.Resource, 0)
err := adapter.Engine.Where("name like ?", prefix+"%").Find(&result)
if err != nil {
return nil, err
}
return result, nil
} }
func GetResource(key string) (*casdoorsdk.Resource, error) { func GetResource(key string) (*casdoorsdk.Resource, error) {
id := fmt.Sprintf("/resource/%s/%s/casibase/%s", Organization, Application, key) res, err := casdoorsdk.GetResourceEx("built-in", key)
resource := casdoorsdk.Resource{Owner: Organization, Name: id} return res, err
existed, err := adapter.Engine.Get(&resource)
if err != nil {
return nil, err
}
if existed {
return &resource, nil
} else {
return nil, fmt.Errorf("resource %s not found", key)
}
} }

2
go.mod
View File

@ -7,7 +7,7 @@ require (
github.com/aliyun/aliyun-oss-go-sdk v2.2.2+incompatible github.com/aliyun/aliyun-oss-go-sdk v2.2.2+incompatible
github.com/astaxie/beego v1.12.3 github.com/astaxie/beego v1.12.3
github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f // indirect github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f // indirect
github.com/casdoor/casdoor-go-sdk v0.25.0 github.com/casdoor/casdoor-go-sdk v0.27.0
github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/danaugrs/go-tsne/tsne v0.0.0-20220306155740-2250969e057f github.com/danaugrs/go-tsne/tsne v0.0.0-20220306155740-2250969e057f
github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect

4
go.sum
View File

@ -86,8 +86,8 @@ github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl
github.com/bradfitz/gomemcache v0.0.0-20180710155616-bc664df96737/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60= github.com/bradfitz/gomemcache v0.0.0-20180710155616-bc664df96737/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60=
github.com/casbin/casbin v1.7.0/go.mod h1:c67qKN6Oum3UF5Q1+BByfFxkwKvhwW57ITjqwtzR1KE= github.com/casbin/casbin v1.7.0/go.mod h1:c67qKN6Oum3UF5Q1+BByfFxkwKvhwW57ITjqwtzR1KE=
github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
github.com/casdoor/casdoor-go-sdk v0.25.0 h1:hrx10mgpLgWqNsgFKQN/ljJsnD1i0cytW+S+2XxmxyQ= github.com/casdoor/casdoor-go-sdk v0.27.0 h1:40TdcsomUxxhbtBi0huZxPZhfj+pSB8KtWkXg6Dqtk8=
github.com/casdoor/casdoor-go-sdk v0.25.0/go.mod h1:MBed3ISHQfXTtoOCAk5T8l5lt4wFvsyynrw0awggydY= github.com/casdoor/casdoor-go-sdk v0.27.0/go.mod h1:MBed3ISHQfXTtoOCAk5T8l5lt4wFvsyynrw0awggydY=
github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=

View File

@ -21,7 +21,6 @@ import (
"net/http" "net/http"
"time" "time"
"github.com/astaxie/beego"
"github.com/casbin/casibase/casdoor" "github.com/casbin/casibase/casdoor"
"github.com/casbin/casibase/util" "github.com/casbin/casibase/util"
"github.com/casdoor/casdoor-go-sdk/casdoorsdk" "github.com/casdoor/casdoor-go-sdk/casdoorsdk"
@ -45,6 +44,7 @@ func ListObjects(bucketName string, prefix string) ([]*Object, error) {
res = append(res, &Object{ res = append(res, &Object{
Key: util.GetNameFromIdNoCheck(resource.Name), Key: util.GetNameFromIdNoCheck(resource.Name),
LastModified: &created, LastModified: &created,
Size: int64(resource.FileSize),
}) })
} }
return res, nil return res, nil
@ -66,7 +66,7 @@ func GetObject(bucketName string, key string) (io.ReadCloser, error) {
func PutObject(bucketName string, key string, fileBuffer *bytes.Buffer) error { func PutObject(bucketName string, key string, fileBuffer *bytes.Buffer) error {
_, _, err := casdoorsdk.UploadResource("Casibase", "Casibase", "Casibase", _, _, err := casdoorsdk.UploadResource("Casibase", "Casibase", "Casibase",
fmt.Sprintf("/resource/%s/%s/%s", casdoor.Organization, casdoor.Application, key), fileBuffer.Bytes()) fmt.Sprintf("/casibase/%s", key), fileBuffer.Bytes())
if err != nil { if err != nil {
return err return err
} }
@ -74,9 +74,7 @@ func PutObject(bucketName string, key string, fileBuffer *bytes.Buffer) error {
} }
func DeleteObject(bucketName string, key string) error { func DeleteObject(bucketName string, key string) error {
_, err := casdoorsdk.DeleteResource(util.GetIdFromOwnerAndName(fmt.Sprintf("/resource/%s/%s/casibase", _, err := casdoorsdk.DeleteResource(util.GetIdFromOwnerAndName("built-in", fmt.Sprintf("/casibase/%s", key)))
beego.AppConfig.String("casdoorOrganization"),
beego.AppConfig.String("casdoorApplication")), key))
if err != nil { if err != nil {
return err return err
} }

View File

@ -18,21 +18,24 @@
package storage_test package storage_test
import ( import (
"fmt"
"testing" "testing"
"github.com/casbin/casibase/casdoor" "github.com/casbin/casibase/controllers"
"github.com/casbin/casibase/object" "github.com/casbin/casibase/object"
"github.com/casbin/casibase/storage" "github.com/casbin/casibase/storage"
) )
func TestStorage(t *testing.T) { func TestStorage(t *testing.T) {
object.InitConfig() object.InitConfig()
casdoor.InitCasdoorAdapter() controllers.InitAuthConfig()
objects, err := storage.ListObjects("casibase", "") objects, err := storage.ListObjects("casibase", "")
if err != nil { if err != nil {
panic(err) panic(err)
} }
println(objects) for i, obj := range objects {
fmt.Printf("[%d] %v\n", i, obj)
}
} }