package oss import ( "bytes" "errors" "fmt" "io/ioutil" "log" "strings" "app.yhyue.com/moapp/jybase/api" "jygit.jydev.jianyu360.cn/BaseService/ossClient/constant" "jygit.jydev.jianyu360.cn/BaseService/ossClient/entity" ) // OSSService 定义了RPC服务方法 type OSSService struct { } /* rpc方式上传 * @param args 参数 * @param args.BucketID 文件名 * @param args.ObjectName 对象名称 * @param args.Stream 文件流 * @param args.Gzip 是否压缩 * @param reply 返回结果 * @param reply.Error_code 错误代码 0:成功 * @param reply.Error_msg 错误信息 * @return error 错误信息 */ func (s *OSSService) Upload(args *entity.UploadArgs, reply *api.Result) error { if err := checkArgs(&entity.Args{BucketID: args.BucketID, ObjectName: args.ObjectName}); err != nil { log.Println("rpc方式", fmt.Sprintf(constant.UploadFail, err)) return err } else if args.Stream == nil || len(args.Stream) == 0 { err := errors.New(api.Error_msg_1002 + "Stream") log.Println("rpc方式", fmt.Sprintf(constant.UploadFail, err)) return err } log.Println("rpc方式上传文件", args.BucketID, args.ObjectName, args.Gzip, len(args.Stream)) err := Upload(args.BucketID, args.ObjectName, ioutil.NopCloser(bytes.NewReader(args.Stream)), args.Gzip) if err != nil { log.Println(args.BucketID, args.ObjectName, "rpc方式", fmt.Sprintf(constant.UploadFail, err)) return err } reply.Error_msg = constant.UploadSuccess return nil } /* rpc方式下载 * @param args 参数 * @param args.BucketID 文件名 * @param args.ObjectName 对象名称 * @param reply 返回结果 * @param reply.Error_code 错误代码 0:成功 * @param reply.Error_msg 错误信息 * @return error 错误信息 */ func (s *OSSService) Download(args *entity.Args, reply *api.Result) error { if err := checkArgs(args); err != nil { log.Println("rpc方式", fmt.Sprintf(constant.DownloadFail, err)) return err } log.Println("rpc方式下载", args.BucketID, args.ObjectName) b := &bytes.Buffer{} if err := Download(b, 1, args.BucketID, args.ObjectName); err != nil { log.Println(args.BucketID, args.ObjectName, "rpc方式", fmt.Sprintf(constant.DownloadFail, err)) return err } reply.Error_msg = constant.DownloadSuccess reply.Data = b return nil } /* rpc方式下载 * @param args 参数 * @param args.BucketID 文件名 * @param args.ObjectName 对象名称 * @param reply 返回结果 * @param reply.Error_code 错误代码 0:成功 * @param reply.Error_msg 错误信息 * @return error 错误信息 */ func (s *OSSService) Delete(args *entity.Args, reply *api.Result) error { if err := checkArgs(args); err != nil { log.Println("rpc方式", fmt.Sprintf(constant.DeleteFail, err)) return err } log.Println("rpc方式删除文件", args.BucketID, args.ObjectName) err := Delete(args.BucketID, args.ObjectName) if err != nil { log.Println(args.BucketID, args.ObjectName, "rpc方式", fmt.Sprintf(constant.DeleteFail, err)) return err } reply.Error_msg = constant.DeleteSuccess return nil } /* rpc方式获取标讯正文 * @param args 参数 * @param args.BucketID 文件名 * @param args.ObjectName 对象名称 * @param reply 返回结果 * @param reply.Error_code 错误代码 0:成功 * @param reply.Error_msg 错误信息 * @param reply.Data 标讯正文 * @return error 错误信息 */ func (s *OSSService) GetBidDetail(args *entity.Args, reply *api.Result) error { if err := checkArgs(args); err != nil { log.Println("rpc方式", fmt.Sprintf(constant.GetBidDetailFail, err)) return err } log.Println("rpc方式获取正文", args.BucketID, args.ObjectName) data := &strings.Builder{} GetBidDetail(data, args.BucketID, args.ObjectName) reply.Data = data.String() reply.Error_msg = constant.GetBidDetailSuccess return nil }