mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-21 17:21:09 +01:00
Adds an early return after handling bad request errors in the GetExportDownload function to avoid unnecessary error processing and improve error handling clarity.
89 lines
2.3 KiB
Go
89 lines
2.3 KiB
Go
package controllers
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"github.com/crawlab-team/crawlab/core/constants"
|
|
"github.com/crawlab-team/crawlab/core/export"
|
|
"github.com/crawlab-team/crawlab/core/interfaces"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func PostExport(c *gin.Context) {
|
|
exportType := c.Param("type")
|
|
exportTarget := c.Query("target")
|
|
exportFilter, _ := GetFilter(c)
|
|
|
|
var exportId string
|
|
var err error
|
|
switch exportType {
|
|
case constants.ExportTypeCsv:
|
|
exportId, err = export.GetCsvService().Export(exportType, exportTarget, exportFilter)
|
|
case constants.ExportTypeJson:
|
|
exportId, err = export.GetJsonService().Export(exportType, exportTarget, exportFilter)
|
|
default:
|
|
HandleErrorBadRequest(c, errors.New(fmt.Sprintf("invalid export type: %s", exportType)))
|
|
return
|
|
}
|
|
if err != nil {
|
|
HandleErrorInternalServerError(c, err)
|
|
return
|
|
}
|
|
|
|
HandleSuccessWithData(c, exportId)
|
|
}
|
|
|
|
func GetExport(c *gin.Context) {
|
|
exportType := c.Param("type")
|
|
exportId := c.Param("id")
|
|
|
|
var exp interfaces.Export
|
|
var err error
|
|
switch exportType {
|
|
case constants.ExportTypeCsv:
|
|
exp, err = export.GetCsvService().GetExport(exportId)
|
|
case constants.ExportTypeJson:
|
|
exp, err = export.GetJsonService().GetExport(exportId)
|
|
default:
|
|
HandleErrorBadRequest(c, errors.New(fmt.Sprintf("invalid export type: %s", exportType)))
|
|
}
|
|
if err != nil {
|
|
HandleErrorInternalServerError(c, err)
|
|
return
|
|
}
|
|
|
|
HandleSuccessWithData(c, exp)
|
|
}
|
|
|
|
func GetExportDownload(c *gin.Context) {
|
|
exportType := c.Param("type")
|
|
exportId := c.Param("id")
|
|
|
|
var exp interfaces.Export
|
|
var err error
|
|
switch exportType {
|
|
case constants.ExportTypeCsv:
|
|
exp, err = export.GetCsvService().GetExport(exportId)
|
|
case constants.ExportTypeJson:
|
|
exp, err = export.GetJsonService().GetExport(exportId)
|
|
default:
|
|
HandleErrorBadRequest(c, errors.New(fmt.Sprintf("invalid export type: %s", exportType)))
|
|
return
|
|
}
|
|
if err != nil {
|
|
HandleErrorInternalServerError(c, err)
|
|
return
|
|
}
|
|
|
|
switch exportType {
|
|
case constants.ExportTypeCsv:
|
|
c.Header("Content-Type", "text/csv")
|
|
case constants.ExportTypeJson:
|
|
c.Header("Content-Type", "text/plain")
|
|
default:
|
|
HandleErrorBadRequest(c, errors.New(fmt.Sprintf("invalid export type: %s", exportType)))
|
|
}
|
|
c.Header("Content-Disposition", fmt.Sprintf("attachment; filename=%s", exp.GetDownloadPath()))
|
|
c.File(exp.GetDownloadPath())
|
|
}
|