github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/pkg/platform/model/limits.go (about) 1 package model 2 3 import ( 4 "github.com/ActiveState/cli/internal/errs" 5 "github.com/ActiveState/cli/internal/locale" 6 "github.com/ActiveState/cli/pkg/platform/api" 7 clientLimits "github.com/ActiveState/cli/pkg/platform/api/mono/mono_client/limits" 8 "github.com/ActiveState/cli/pkg/platform/api/mono/mono_models" 9 "github.com/ActiveState/cli/pkg/platform/authentication" 10 ) 11 12 // FetchOrganizationLimits returns the limits for an organization 13 func FetchOrganizationLimits(orgName string, auth *authentication.Auth) (*mono_models.Limits, error) { 14 params := clientLimits.NewGetOrganizationLimitsParams() 15 params.SetOrganizationIdentifier(orgName) 16 authClient, err := auth.Client() 17 if err != nil { 18 return nil, errs.Wrap(err, "Could not get auth client") 19 } 20 res, err := authClient.Limits.GetOrganizationLimits(params, auth.ClientAuth()) 21 22 if err != nil { 23 return nil, processLimitsErrorResponse(err) 24 } 25 26 return res.Payload, nil 27 } 28 29 func processLimitsErrorResponse(err error) error { 30 switch statusCode := api.ErrorCode(err); statusCode { 31 case 401: 32 return locale.NewError("err_api_not_authenticated") 33 case 403: 34 return locale.NewError("err_api_forbidden") 35 case 404: 36 return locale.NewError("err_api_org_not_found") 37 default: 38 return errs.Wrap(err, "Unknown failure") 39 } 40 }