-
Notifications
You must be signed in to change notification settings - Fork 0
/
models.go
122 lines (101 loc) · 2.43 KB
/
models.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
package imhashdb
import "github.com/simon987/fastimagehash-go"
type HashType string
const (
DHash8 HashType = "dhash8"
DHash16 HashType = "dhash16"
DHash32 HashType = "dhash32"
MHash8 HashType = "mhash8"
MHash16 HashType = "mhash16"
MHash32 HashType = "mhash32"
PHash8 HashType = "phash8"
PHash16 HashType = "phash16"
PHash32 HashType = "phash32"
WHash8Haar HashType = "whash8haar"
WHash16Haar HashType = "whash16haar"
WHash32Haar HashType = "whash32haar"
)
var HashTypes = []HashType{
DHash8, DHash16, DHash32,
MHash8, MHash16, MHash32,
PHash8, PHash16, PHash32,
WHash8Haar, WHash16Haar, WHash32Haar,
}
func (h HashType) HashLength() int {
switch h {
case DHash8:
fallthrough
case MHash8:
fallthrough
case PHash8:
fallthrough
case WHash8Haar:
return 8
case DHash16:
fallthrough
case MHash16:
fallthrough
case PHash16:
fallthrough
case WHash16Haar:
return 32
case DHash32:
fallthrough
case MHash32:
fallthrough
case PHash32:
fallthrough
case WHash32Haar:
return 128
default:
panic("Invalid invalid hash")
}
}
type HashReq struct {
Data []byte `json:"data"`
}
type Hashes struct {
DHash8 *fastimagehash.Hash `json:"dhash8"`
DHash16 *fastimagehash.Hash `json:"dhash16"`
DHash32 *fastimagehash.Hash `json:"dhash32"`
MHash8 *fastimagehash.Hash `json:"mhash8"`
MHash16 *fastimagehash.Hash `json:"mhash16"`
MHash32 *fastimagehash.Hash `json:"mhash32"`
PHash8 *fastimagehash.Hash `json:"phash8"`
PHash16 *fastimagehash.Hash `json:"phash16"`
PHash32 *fastimagehash.Hash `json:"phash32"`
WHash8 *fastimagehash.Hash `json:"whash8haar"`
WHash16 *fastimagehash.Hash `json:"whash16haar"`
WHash32 *fastimagehash.Hash `json:"whash32haar"`
}
type QueryReq struct {
HashType HashType `json:"type"`
Hash []byte `json:"hash"`
Distance uint `json:"distance"`
Limit uint `json:"limit"`
Offset uint `json:"offset"`
}
type ImageList struct {
Images []*Image `json:"images"`
}
type QueryResp struct {
Err string `json:"err,omitempty"`
}
type Meta struct {
RetrievedAt int64 `json:"retrieved_at"`
Id string `json:"id"`
Meta interface{} `json:"meta"`
}
type ImageHasMeta struct {
Url string `json:"url"`
Meta Meta `json:"meta"`
}
type Image struct {
id int64
Size int `json:"size"`
Sha1 []byte `json:"sha1"`
Md5 []byte `json:"md5"`
Sha256 []byte `json:"sha256"`
Crc32 uint32 `json:"crc32"`
Meta []ImageHasMeta `json:"meta"`
}