]> Sergey Matveev's repositories - meta4ra.git/blob - scheme.go
Unify copyright comment format
[meta4ra.git] / scheme.go
1 // meta4ra -- Metalink 4.0 utilities
2 // Copyright (C) 2021-2024 Sergey Matveev <stargrave@stargrave.org>
3 //
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, version 3 of the License.
7 //
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 // GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License
14 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
15
16 package meta4ra
17
18 import (
19         "encoding/xml"
20         "time"
21 )
22
23 type Metalink struct {
24         XMLName   xml.Name  `xml:"urn:ietf:params:xml:ns:metalink metalink"`
25         Files     []File    `xml:"file"`
26         Generator string    `xml:"generator,,omitempty"`
27         Published time.Time `xml:"published,,omitempty"`
28 }
29
30 type File struct {
31         XMLName     xml.Name   `xml:"file"`
32         Name        string     `xml:"name,attr"`
33         Description string     `xml:"description,,omitempty"`
34         Hashes      []Hash     `xml:"hash,,omitempty"`
35         MetaURLs    []MetaURL  `xml:"metaurl,,omitempty"`
36         Signature   []Signature `xml:"signature"`
37         Size        uint64     `xml:"size,,omitempty"`
38         URLs        []URL      `xml:"url,,omitempty"`
39 }
40
41 type URL struct {
42         XMLName xml.Name `xml:"url"`
43         URL     string   `xml:",chardata"`
44 }
45
46 type Signature struct {
47         XMLName   xml.Name `xml:"signature"`
48         MediaType string   `xml:"mediatype,attr"`
49         Signature string   `xml:",cdata"`
50 }
51
52 type Hash struct {
53         XMLName xml.Name `xml:"hash"`
54         Type    string   `xml:"type,attr"`
55         Hash    string   `xml:",chardata"`
56 }
57
58 type MetaURL struct {
59         XMLName   xml.Name `xml:"metaurl"`
60         MediaType string   `xml:"mediatype,attr"`
61         URL       string   `xml:",chardata"`
62 }