package oss import ( "bytes" "errors" "io/ioutil" "log" "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 := s.checkArgs(&entity.Args{BucketID: args.BucketID, ObjectName: args.ObjectName}); err != nil { log.Println(err.Error()) return err } else if args.Stream == nil || len(args.Stream) == 0 { err := errors.New(api.Error_msg_1002 + "Data") log.Println(err.Error()) return err } log.Println("rpc方式上传文件", args.BucketID, args.ObjectName, args.Gzip, len(args.Stream)) err := UploadAttachment(args.BucketID, args.ObjectName, ioutil.NopCloser(bytes.NewReader(args.Stream)), args.Gzip) if err != nil { log.Println(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 := s.checkArgs(args); err != nil { log.Println(constant.UploadFail, err) return err } log.Println("rpc方式下载文件", args.BucketID, args.ObjectName) data, err := DownloadAttachment(args.BucketID, args.ObjectName) if err != nil { log.Println(constant.DownloadFail, err) return err } reply.Error_msg = constant.DownloadSuccess reply.Data = data 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 := s.checkArgs(args); err != nil { log.Println(constant.UploadFail, err) return err } log.Println("rpc方式删除文件", args.BucketID, args.ObjectName) err := DeleteAttachment(args.BucketID, args.ObjectName) if err != nil { log.Println(constant.DeleteFail, err) return err } reply.Error_msg = constant.DeleteSuccess return nil } func (s *OSSService) checkArgs(args *entity.Args) error { if args.BucketID == "" { return errors.New(api.Error_msg_1002 + "BucketID") } else if args.ObjectName == "" { return errors.New(api.Error_msg_1002 + "ObjectName") } 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 := s.checkArgs(args); err != nil { log.Println(constant.BidDetailFail, err) return err } log.Println("rpc方式获取正文", args.BucketID, args.ObjectName) args.ObjectName += ".txt" reply.Data = string(GetBidDetail(args.BucketID, args.ObjectName)) reply.Error_msg = constant.GetBidDetailSuccess return nil }