80 lines
2.8 KiB
Go
80 lines
2.8 KiB
Go
package main
|
|
|
|
import (
|
|
"github.com/go-openapi/runtime/middleware"
|
|
"src.dualinventive.com/go/assets-service/internal/assets"
|
|
"src.dualinventive.com/go/assets-service/rest/models"
|
|
"src.dualinventive.com/go/assets-service/rest/server/operations"
|
|
h "src.dualinventive.com/go/assets-service/rest/server/operations/assets"
|
|
)
|
|
|
|
func initHandlers(
|
|
api *operations.AssetAPI,
|
|
assetService *assets.AssetService,
|
|
) {
|
|
registerGetAssetByIDHandler(api, assetService)
|
|
registerGetAssetsHandler(api, assetService)
|
|
}
|
|
|
|
func registerGetAssetByIDHandler(
|
|
api *operations.AssetAPI,
|
|
assetService *assets.AssetService,
|
|
) {
|
|
api.AssetsGetAssetByIDHandler = h.GetAssetByIDHandlerFunc(
|
|
func(params h.GetAssetByIDParams, secret interface{}) middleware.Responder {
|
|
token := secret.(string)
|
|
|
|
asset, err := assetService.GetAssetByID(token, uint64(params.AssetID))
|
|
// dupl: Preferred to keep this autonomous for future use.
|
|
if err != nil { //nolint:dupl
|
|
switch err.(type) {
|
|
case *assets.ErrUnauthorized:
|
|
return &h.GetAssetByIDUnauthorized{Payload: &models.ErrResponse{ErrMsg: err.Error()}}
|
|
case *assets.ErrAuthFailed:
|
|
return &h.GetAssetByIDInternalServerError{Payload: &models.ErrResponse{ErrMsg: err.Error()}}
|
|
case *assets.ErrAssetNotFound:
|
|
return &h.GetAssetByIDNotFound{Payload: &models.ErrResponse{ErrMsg: err.Error()}}
|
|
case *assets.ErrAssetRepositoryErr:
|
|
return &h.GetAssetByIDInternalServerError{Payload: &models.ErrResponse{ErrMsg: err.Error()}}
|
|
default:
|
|
return &h.GetAssetByIDInternalServerError{Payload: &models.ErrResponse{ErrMsg: err.Error()}}
|
|
}
|
|
}
|
|
|
|
return &h.GetAssetByIDOK{Payload: mapAsset(asset)}
|
|
})
|
|
}
|
|
|
|
func registerGetAssetsHandler(
|
|
api *operations.AssetAPI,
|
|
assetService *assets.AssetService,
|
|
) {
|
|
api.AssetsGetAssetsHandler = h.GetAssetsHandlerFunc(
|
|
func(params h.GetAssetsParams, secret interface{}) middleware.Responder {
|
|
token := secret.(string)
|
|
|
|
assetslist, count, err := assetService.GetAssets(
|
|
token,
|
|
uint64(*params.Page),
|
|
uint64(*params.PerPage),
|
|
mapSortCol(*params.Sort),
|
|
)
|
|
if err != nil { //nolint:dupl
|
|
switch err.(type) {
|
|
case *assets.ErrUnauthorized:
|
|
return &h.GetAssetsUnauthorized{Payload: &models.ErrResponse{ErrMsg: err.Error()}}
|
|
case *assets.ErrAuthFailed:
|
|
return &h.GetAssetsInternalServerError{Payload: &models.ErrResponse{ErrMsg: err.Error()}}
|
|
case *assets.ErrAssetNotFound:
|
|
return &h.GetAssetsNotFound{Payload: &models.ErrResponse{ErrMsg: err.Error()}}
|
|
case *assets.ErrAssetRepositoryErr:
|
|
return &h.GetAssetsInternalServerError{Payload: &models.ErrResponse{ErrMsg: err.Error()}}
|
|
default:
|
|
return &h.GetAssetsInternalServerError{Payload: &models.ErrResponse{ErrMsg: err.Error()}}
|
|
}
|
|
}
|
|
|
|
return &h.GetAssetsOK{Payload: mapAssets(assetslist, count)}
|
|
})
|
|
}
|