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)} }) }