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  }