grpc.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package oss
  2. import (
  3. "bytes"
  4. "context"
  5. "fmt"
  6. "jygit.jydev.jianyu360.cn/BaseService/ossClient/constant"
  7. "jygit.jydev.jianyu360.cn/BaseService/ossClient/entity"
  8. "jygit.jydev.jianyu360.cn/BaseService/ossClient/pb"
  9. "log"
  10. )
  11. type myWriter struct {
  12. resp pb.Service_DownloadServer
  13. }
  14. func (m *myWriter) Write(b []byte) (n int, err error) {
  15. n = len(b)
  16. err = m.resp.Send(&pb.Response{Data: b})
  17. return
  18. }
  19. type Grpc struct {
  20. pb.UnimplementedServiceServer
  21. }
  22. func (g *Grpc) Download(req *pb.DownloadRequest, resp pb.Service_DownloadServer) error {
  23. if err := checkArgs(&entity.Args{BucketID: req.BucketID, ObjectName: req.ObjectName}); err != nil {
  24. log.Println("grpc方式", fmt.Sprintf(constant.DownloadFail, err))
  25. return err
  26. }
  27. log.Println("grpc方式下载", req.BucketID, req.ObjectName)
  28. return Download(&myWriter{resp: resp}, 0, req.BucketID, req.ObjectName)
  29. }
  30. func (g *Grpc) GetBidDetail(req *pb.DownloadRequest, resp pb.Service_DownloadServer) error {
  31. if err := checkArgs(&entity.Args{BucketID: req.BucketID, ObjectName: req.ObjectName}); err != nil {
  32. log.Println("grpc方式", fmt.Sprintf(constant.GetBidDetailFail, err))
  33. return err
  34. }
  35. log.Println("grpc方式获取正文", req.BucketID, req.ObjectName)
  36. GetBidDetail(&myWriter{resp: resp}, req.BucketID, req.ObjectName)
  37. return nil
  38. }
  39. func (g *Grpc) Upload(ctx context.Context, req *pb.UploadRequest) (*pb.Response, error) {
  40. if err := checkArgs(&entity.Args{BucketID: req.BucketID, ObjectName: req.ObjectName}); err != nil {
  41. log.Println("grpc方式", fmt.Sprintf(constant.UploadFail, err))
  42. return nil, err
  43. }
  44. err := Upload(req.BucketID, req.ObjectName, bytes.NewReader(req.Stream), req.Gzip)
  45. if err != nil {
  46. return nil, err
  47. }
  48. return &pb.Response{ErrorMsg: constant.UploadSuccess}, nil
  49. }