github.com/Axway/agent-sdk@v1.1.101/pkg/apic/definitions/util.go (about)

     1  package definitions
     2  
     3  import (
     4  	"strings"
     5  
     6  	management "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/management/v1alpha1"
     7  )
     8  
     9  // GetSubscriptionNameFromAccessRequest - Returns the subscription name from access request references
    10  func GetSubscriptionNameFromAccessRequest(ar *management.AccessRequest) string {
    11  	if ar == nil {
    12  		return ""
    13  	}
    14  
    15  	subscriptionName := ""
    16  	subsRefName := getSubscriptionRefName(ar)
    17  	if subsRefName != "" {
    18  		refElements := strings.Split(subsRefName, "/")
    19  		if len(refElements) == 2 && refElements[0] == "catalog" {
    20  			subscriptionName = refElements[1]
    21  		}
    22  	}
    23  	return subscriptionName
    24  }
    25  
    26  func getSubscriptionRefName(ar *management.AccessRequest) string {
    27  	for _, ref := range ar.References {
    28  		switch arRef := ref.(type) {
    29  		case map[string]interface{}:
    30  			kind := arRef["kind"]
    31  			if kind == Subscription {
    32  				return arRef["name"].(string)
    33  			}
    34  		case management.AccessRequestReferencesSubscription:
    35  			return getSubscriptionName(&arRef)
    36  		case *management.AccessRequestReferencesSubscription:
    37  			return getSubscriptionName(arRef)
    38  		}
    39  	}
    40  	return ""
    41  }
    42  
    43  func getSubscriptionName(arRef *management.AccessRequestReferencesSubscription) string {
    44  	if arRef.Kind == Subscription {
    45  		return arRef.Name
    46  	}
    47  	return ""
    48  }