123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package oss
- import (
- "bytes"
- "context"
- "fmt"
- "google.golang.org/grpc/peer"
- "jygit.jydev.jianyu360.cn/BaseService/ossClient/constant"
- "jygit.jydev.jianyu360.cn/BaseService/ossClient/entity"
- "jygit.jydev.jianyu360.cn/BaseService/ossClient/pb"
- "log"
- "net"
- )
- type myWriter struct {
- resp pb.Service_DownloadServer
- }
- func (m *myWriter) Write(b []byte) (n int, err error) {
- n = len(b)
- err = m.resp.Send(&pb.Response{Data: b})
- return
- }
- type Grpc struct {
- pb.UnimplementedServiceServer
- }
- func (g *Grpc) Download(req *pb.DownloadRequest, resp pb.Service_DownloadServer) error {
- if err := checkArgs(&entity.Args{BucketID: req.BucketID, ObjectName: req.ObjectName}); err != nil {
- log.Println(g.getIPFromContext(resp.Context()), "grpc方式", fmt.Sprintf(constant.DownloadFail, err))
- return err
- }
- log.Println(g.getIPFromContext(resp.Context()), "grpc方式下载", req.BucketID, req.ObjectName)
- return Download(&myWriter{resp: resp}, 0, req.BucketID, req.ObjectName)
- }
- func (g *Grpc) GetBidDetail(req *pb.DownloadRequest, resp pb.Service_DownloadServer) error {
- if err := checkArgs(&entity.Args{BucketID: req.BucketID, ObjectName: req.ObjectName}); err != nil {
- log.Println("grpc方式", fmt.Sprintf(constant.GetBidDetailFail, err))
- return err
- }
- log.Println(g.getIPFromContext(resp.Context()), "grpc方式获取正文", req.BucketID, req.ObjectName)
- GetBidDetail(&myWriter{resp: resp}, req.BucketID, req.ObjectName)
- return nil
- }
- func (g *Grpc) Upload(ctx context.Context, req *pb.UploadRequest) (*pb.Response, error) {
- if err := checkArgs(&entity.Args{BucketID: req.BucketID, ObjectName: req.ObjectName}); err != nil {
- log.Println(g.getIPFromContext(ctx), "grpc方式", fmt.Sprintf(constant.UploadFail, err))
- return nil, err
- }
- log.Println(g.getIPFromContext(ctx), "rpc方式上传文件", req.BucketID, req.ObjectName, req.Gzip, len(req.Stream))
- err := Upload(req.BucketID, req.ObjectName, bytes.NewReader(req.Stream), req.Gzip)
- if err != nil {
- return nil, err
- }
- return &pb.Response{ErrorMsg: constant.UploadSuccess}, nil
- }
- func (g *Grpc) getIPFromContext(ctx context.Context) string {
- var ip string
- if p, ok := peer.FromContext(ctx); ok {
- if addr, ok := p.Addr.(*net.TCPAddr); ok {
- ip = addr.IP.String()
- }
- }
- return ip
- }
|