66 lines
1.5 KiB
Go
66 lines
1.5 KiB
Go
package podcast
|
|
|
|
import "encoding/xml"
|
|
|
|
// EnclosureType specifies the type of the enclosure.
|
|
const (
|
|
M4A EnclosureType = iota
|
|
M4V
|
|
MP4
|
|
MP3
|
|
MOV
|
|
PDF
|
|
EPUB
|
|
)
|
|
|
|
const (
|
|
enclosureDefault = "application/octet-stream"
|
|
)
|
|
|
|
// EnclosureType specifies the type of the enclosure.
|
|
type EnclosureType int
|
|
|
|
// String returns the MIME type encoding of the specified EnclosureType.
|
|
func (et EnclosureType) String() string {
|
|
// https://help.apple.com/itc/podcasts_connect/#/itcb54353390
|
|
switch et {
|
|
case M4A:
|
|
return "audio/x-m4a"
|
|
case M4V:
|
|
return "video/x-m4v"
|
|
case MP4:
|
|
return "video/mp4"
|
|
case MP3:
|
|
return "audio/mpeg"
|
|
case MOV:
|
|
return "video/quicktime"
|
|
case PDF:
|
|
return "application/pdf"
|
|
case EPUB:
|
|
return "document/x-epub"
|
|
}
|
|
return enclosureDefault
|
|
}
|
|
|
|
// Enclosure represents a download enclosure.
|
|
type Enclosure struct {
|
|
XMLName xml.Name `xml:"enclosure"`
|
|
|
|
// URL is the downloadable url for the content. (Required)
|
|
URL string `xml:"url,attr"`
|
|
|
|
// Length is the size in Bytes of the download. (Required)
|
|
Length int64 `xml:"-"`
|
|
// LengthFormatted is the size in Bytes of the download. (Required)
|
|
//
|
|
// This field gets overwritten with the API when setting Length.
|
|
LengthFormatted string `xml:"length,attr"`
|
|
|
|
// Type is MIME type encoding of the download. (Required)
|
|
Type EnclosureType `xml:"-"`
|
|
// TypeFormatted is MIME type encoding of the download. (Required)
|
|
//
|
|
// This field gets overwritten with the API when setting Type.
|
|
TypeFormatted string `xml:"type,attr"`
|
|
}
|