diff --git a/config/config.yaml b/config/config.yaml index ccdc7a9fe..da3d2cb1f 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -96,7 +96,7 @@ credential: #腾讯cos,发送图片、视频、文件时需要,请自行申 object: enable: minio - apiURL: http://127.0.0.1:10002/third/object?name= + apiURL: http://127.0.0.1:10002/third/object minio: #MinIO 发送图片、视频、文件时需要,请自行申请后替换,必须修改。 客户端初始化InitSDK,中 object_storage参数为minio tempBucket: "openim" dataBucket: "openim" diff --git a/internal/rpc/third/third.go b/internal/rpc/third/third.go index 5a4a1883c..b68f97c6b 100644 --- a/internal/rpc/third/third.go +++ b/internal/rpc/third/third.go @@ -2,6 +2,7 @@ package third import ( "context" + "github.com/OpenIMSDK/Open-IM-Server/pkg/common/config" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/cache" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/controller" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/obj" @@ -11,9 +12,14 @@ import ( "github.com/OpenIMSDK/Open-IM-Server/pkg/proto/third" "github.com/OpenIMSDK/Open-IM-Server/pkg/rpcclient/check" "google.golang.org/grpc" + "net/url" ) func Start(client discoveryregistry.SvcDiscoveryRegistry, server *grpc.Server) error { + u, err := url.Parse(config.Config.Object.ApiURL) + if err != nil { + return err + } rdb, err := cache.NewRedis() if err != nil { return err @@ -32,7 +38,7 @@ func Start(client discoveryregistry.SvcDiscoveryRegistry, server *grpc.Server) e third.RegisterThirdServer(server, &thirdServer{ thirdDatabase: controller.NewThirdDatabase(cache.NewCacheModel(rdb)), userCheck: check.NewUserCheck(client), - s3dataBase: controller.NewS3Database(o, relation.NewObjectHash(db), relation.NewObjectInfo(db), relation.NewObjectPut(db)), + s3dataBase: controller.NewS3Database(o, relation.NewObjectHash(db), relation.NewObjectInfo(db), relation.NewObjectPut(db), u), }) return nil } diff --git a/pkg/common/db/controller/storage.go b/pkg/common/db/controller/storage.go index b327a2597..96d34cd44 100644 --- a/pkg/common/db/controller/storage.go +++ b/pkg/common/db/controller/storage.go @@ -9,7 +9,6 @@ import ( "encoding/json" "errors" "fmt" - "github.com/OpenIMSDK/Open-IM-Server/pkg/common/config" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/obj" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/table/relation" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/log" @@ -18,6 +17,7 @@ import ( "github.com/OpenIMSDK/Open-IM-Server/pkg/utils" "github.com/google/uuid" "io" + "net/url" "path" "strconv" "time" @@ -39,8 +39,9 @@ type S3Database interface { CleanExpirationObject(ctx context.Context, t time.Time) } -func NewS3Database(obj obj.Interface, hash relation.ObjectHashModelInterface, info relation.ObjectInfoModelInterface, put relation.ObjectPutModelInterface) S3Database { +func NewS3Database(obj obj.Interface, hash relation.ObjectHashModelInterface, info relation.ObjectInfoModelInterface, put relation.ObjectPutModelInterface, url *url.URL) S3Database { return &s3Database{ + url: url, obj: obj, hash: hash, info: info, @@ -49,6 +50,7 @@ func NewS3Database(obj obj.Interface, hash relation.ObjectHashModelInterface, in } type s3Database struct { + url *url.URL obj obj.Interface hash relation.ObjectHashModelInterface info relation.ObjectInfoModelInterface @@ -96,7 +98,23 @@ func (c *s3Database) CheckHash(hash string) error { } func (c *s3Database) urlName(name string) string { - return config.Config.Object.ApiURL + name + u := url.URL{ + Scheme: c.url.Scheme, + Opaque: c.url.Opaque, + User: c.url.User, + Host: c.url.Host, + Path: c.url.Path, + RawPath: c.url.RawPath, + OmitHost: c.url.OmitHost, + ForceQuery: c.url.ForceQuery, + RawQuery: c.url.RawQuery, + Fragment: c.url.Fragment, + RawFragment: c.url.RawFragment, + } + v := make(url.Values, 1) + v.Set("name", name) + u.RawQuery = v.Encode() + return u.String() } func (c *s3Database) UUID() string {