github.com/cloudreve/Cloudreve/v3@v3.0.0-20240224133659-3edb00a6484c/routers/controllers/callback.go (about)

     1  package controllers
     2  
     3  import (
     4  	model "github.com/cloudreve/Cloudreve/v3/models"
     5  	"path"
     6  	"strconv"
     7  
     8  	"github.com/cloudreve/Cloudreve/v3/pkg/serializer"
     9  	"github.com/cloudreve/Cloudreve/v3/pkg/util"
    10  	"github.com/cloudreve/Cloudreve/v3/service/callback"
    11  	"github.com/gin-gonic/gin"
    12  )
    13  
    14  // RemoteCallback 远程上传回调
    15  func RemoteCallback(c *gin.Context) {
    16  	var callbackBody callback.RemoteUploadCallbackService
    17  	if err := c.ShouldBindJSON(&callbackBody); err == nil {
    18  		res := callback.ProcessCallback(callbackBody, c)
    19  		c.JSON(200, res)
    20  	} else {
    21  		c.JSON(200, ErrorResponse(err))
    22  	}
    23  }
    24  
    25  // QiniuCallback 七牛上传回调
    26  func QiniuCallback(c *gin.Context) {
    27  	var callbackBody callback.UploadCallbackService
    28  	if err := c.ShouldBindJSON(&callbackBody); err == nil {
    29  		res := callback.ProcessCallback(callbackBody, c)
    30  		if res.Code != 0 {
    31  			c.JSON(401, serializer.GeneralUploadCallbackFailed{Error: res.Msg})
    32  		} else {
    33  			c.JSON(200, res)
    34  		}
    35  	} else {
    36  		c.JSON(401, ErrorResponse(err))
    37  	}
    38  }
    39  
    40  // OSSCallback 阿里云OSS上传回调
    41  func OSSCallback(c *gin.Context) {
    42  	var callbackBody callback.UploadCallbackService
    43  	if err := c.ShouldBindJSON(&callbackBody); err == nil {
    44  		if callbackBody.PicInfo == "," {
    45  			callbackBody.PicInfo = ""
    46  		}
    47  		res := callback.ProcessCallback(callbackBody, c)
    48  		c.JSON(200, res)
    49  	} else {
    50  		c.JSON(200, ErrorResponse(err))
    51  	}
    52  }
    53  
    54  // UpyunCallback 又拍云上传回调
    55  func UpyunCallback(c *gin.Context) {
    56  	var callbackBody callback.UpyunCallbackService
    57  	if err := c.ShouldBind(&callbackBody); err == nil {
    58  		if callbackBody.Code != 200 {
    59  			util.Log().Debug(
    60  				"Upload callback returned error code:%d, message: %s",
    61  				callbackBody.Code,
    62  				callbackBody.Message,
    63  			)
    64  			return
    65  		}
    66  		res := callback.ProcessCallback(callbackBody, c)
    67  		c.JSON(200, res)
    68  	} else {
    69  		c.JSON(200, ErrorResponse(err))
    70  	}
    71  }
    72  
    73  // OneDriveCallback OneDrive上传完成客户端回调
    74  func OneDriveCallback(c *gin.Context) {
    75  	var callbackBody callback.OneDriveCallback
    76  	if err := c.ShouldBindJSON(&callbackBody); err == nil {
    77  		res := callbackBody.PreProcess(c)
    78  		c.JSON(200, res)
    79  	} else {
    80  		c.JSON(200, ErrorResponse(err))
    81  	}
    82  }
    83  
    84  // OneDriveOAuth OneDrive 授权回调
    85  func OneDriveOAuth(c *gin.Context) {
    86  	var callbackBody callback.OauthService
    87  	if err := c.ShouldBindQuery(&callbackBody); err == nil {
    88  		res := callbackBody.OdAuth(c)
    89  		redirect := model.GetSiteURL()
    90  		redirect.Path = path.Join(redirect.Path, "/admin/policy")
    91  		queries := redirect.Query()
    92  		queries.Add("code", strconv.Itoa(res.Code))
    93  		queries.Add("msg", res.Msg)
    94  		queries.Add("err", res.Error)
    95  		redirect.RawQuery = queries.Encode()
    96  		c.Redirect(303, redirect.String())
    97  	} else {
    98  		c.JSON(200, ErrorResponse(err))
    99  	}
   100  }
   101  
   102  // GoogleDriveOAuth Google Drive 授权回调
   103  func GoogleDriveOAuth(c *gin.Context) {
   104  	var callbackBody callback.OauthService
   105  	if err := c.ShouldBindQuery(&callbackBody); err == nil {
   106  		res := callbackBody.GDriveAuth(c)
   107  		redirect := model.GetSiteURL()
   108  		redirect.Path = path.Join(redirect.Path, "/admin/policy")
   109  		queries := redirect.Query()
   110  		queries.Add("code", strconv.Itoa(res.Code))
   111  		queries.Add("msg", res.Msg)
   112  		queries.Add("err", res.Error)
   113  		redirect.RawQuery = queries.Encode()
   114  		c.Redirect(303, redirect.String())
   115  	} else {
   116  		c.JSON(200, ErrorResponse(err))
   117  	}
   118  }
   119  
   120  // COSCallback COS上传完成客户端回调
   121  func COSCallback(c *gin.Context) {
   122  	var callbackBody callback.COSCallback
   123  	if err := c.ShouldBindQuery(&callbackBody); err == nil {
   124  		res := callbackBody.PreProcess(c)
   125  		c.JSON(200, res)
   126  	} else {
   127  		c.JSON(200, ErrorResponse(err))
   128  	}
   129  }
   130  
   131  // S3Callback S3上传完成客户端回调
   132  func S3Callback(c *gin.Context) {
   133  	var callbackBody callback.S3Callback
   134  	if err := c.ShouldBindQuery(&callbackBody); err == nil {
   135  		res := callbackBody.PreProcess(c)
   136  		c.JSON(200, res)
   137  	} else {
   138  		c.JSON(200, ErrorResponse(err))
   139  	}
   140  }