/* meta4a -- Metalink 4.0 creator Copyright (C) 2021-2023 Sergey Matveev This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ // Metalink 4.0 utilities package meta4ra import ( "encoding/xml" "time" ) const ( Generator = "meta4ra/0.2.0" GPGSigMediaType = "application/pgp-signature" HashSHA256 = "sha-256" HashSHA512 = "sha-512" HashStreebog256 = "streebog-256" HashStreebog512 = "streebog-512" ) type Metalink struct { XMLName xml.Name `xml:"urn:ietf:params:xml:ns:metalink metalink"` Files []File `xml:"file"` Generator string `xml:"generator,,omitempty"` Published time.Time `xml:"published,,omitempty"` } type File struct { XMLName xml.Name `xml:"file"` Name string `xml:"name,attr"` Description string `xml:"description,,omitempty"` Hashes []Hash `xml:"hash,,omitempty"` MetaURLs []MetaURL `xml:"metaurl,,omitempty"` Signature *Signature `xml:"signature"` Size uint64 `xml:"size,,omitempty"` URLs []URL `xml:"url,,omitempty"` } type URL struct { XMLName xml.Name `xml:"url"` URL string `xml:",chardata"` } type Signature struct { XMLName xml.Name `xml:"signature"` MediaType string `xml:"mediatype,attr"` Signature string `xml:",cdata"` } type Hash struct { XMLName xml.Name `xml:"hash"` Type string `xml:"type,attr"` Hash string `xml:",chardata"` } type MetaURL struct { XMLName xml.Name `xml:"metaurl"` MediaType string `xml:"mediatype,attr"` URL string `xml:",chardata"` }