53 lines
1.0 KiB
Go
53 lines
1.0 KiB
Go
package domain
|
|
|
|
import (
|
|
"mime"
|
|
"strings"
|
|
)
|
|
|
|
type MediaType struct {
|
|
mainType string
|
|
subType string
|
|
mediaType string
|
|
}
|
|
|
|
// NewMediaType creates a new MediaType domain from raw string in
|
|
// the 'MainType/SubType' format.
|
|
func NewMediaType(raw string) MediaType {
|
|
parts := strings.Split(raw, "/")
|
|
if len(parts) < 2 {
|
|
return MediaType{}
|
|
}
|
|
|
|
return MediaType{
|
|
mainType: parts[0],
|
|
subType: parts[1],
|
|
mediaType: mime.FormatMediaType(strings.Join([]string{parts[0], parts[1]}, "/"), nil),
|
|
}
|
|
}
|
|
|
|
// Type returns main part of MediaType.
|
|
// For 'image/jpeg' it returns 'image'.
|
|
func (mt MediaType) MainType() string {
|
|
return mt.mainType
|
|
}
|
|
|
|
// Type returns sub part of MediaType.
|
|
// For 'image/jpeg' it returns 'jpeg'.
|
|
func (mt MediaType) SubType() string {
|
|
return mt.subType
|
|
}
|
|
|
|
// Type returns 'MainType/SubType' string.
|
|
func (mt MediaType) Type() string {
|
|
return mt.mediaType
|
|
}
|
|
|
|
func (mt MediaType) String() string {
|
|
return mt.mediaType
|
|
}
|
|
|
|
func (mt MediaType) GoString() string {
|
|
return "domain.MediaType(" + mt.mediaType + ")"
|
|
}
|