generated from clevergo/pkg-template
-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathaudio.go
55 lines (44 loc) · 1.1 KB
/
audio.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
// Copyright 2020 CleverGo. All rights reserved.
// Use of this source code is governed by a MIT style license that can be found
// in the LICENSE file.
package drivers
import (
"clevergo.tech/captchas"
"github.com/mojocn/base64Captcha"
)
// AudioOption is a function that receives a pointer of audio driver.
type AudioOption func(*Audio)
// AudioLength sets audio length.
func AudioLength(length int) AudioOption {
return func(a *Audio) {
a.length = length
}
}
// AudioLangauge sets audio language.
func AudioLangauge(language string) AudioOption {
return func(a *Audio) {
a.language = language
}
}
// Audio is an audio driver.
type Audio struct {
*driver
// number of digits in captcha solution.
length int
// max absolute skew factor of a single audio.
language string
}
var _ captchas.Driver = NewAudio()
// NewAudio returns an audio driver.
func NewAudio(opts ...AudioOption) *Audio {
d := &Audio{
driver: &driver{htmlTag: htmlTagAudio},
length: 6,
language: "en",
}
for _, f := range opts {
f(d)
}
d.driver.driver = base64Captcha.NewDriverAudio(d.length, d.language)
return d
}