github.com/free5gc/openapi@v1.0.8/media_type.go (about)

     1  package openapi
     2  
     3  import "regexp"
     4  
     5  // MediaKind - represents the sets of media type
     6  type MediaKind int
     7  
     8  // MediaKind enums
     9  const (
    10  	MediaKindUnsupported MediaKind = iota
    11  	MediaKindPlaintext   MediaKind = iota
    12  	MediaKindJSON
    13  	MediaKindXML
    14  	MediaKindMultipartRelated
    15  )
    16  
    17  var (
    18  	jsonRegex             = regexp.MustCompile(`(?i:(?:application|text)/(?:[a-zA-Z0-9./-]+\+)?json)`)
    19  	xmlRegex              = regexp.MustCompile(`(?i:(?:application|text)/xml)`)
    20  	multipartRelatedRegex = regexp.MustCompile("(?i:multipart/related)")
    21  )
    22  
    23  // KindOfMediaType - returns Mediakind of the media type
    24  func KindOfMediaType(mediaType string) MediaKind {
    25  	if jsonRegex.MatchString(mediaType) {
    26  		return MediaKindJSON
    27  	} else if xmlRegex.MatchString(mediaType) {
    28  		return MediaKindXML
    29  	} else if multipartRelatedRegex.MatchString(mediaType) {
    30  		return MediaKindMultipartRelated
    31  	}
    32  	return MediaKindUnsupported
    33  }