Added comments for ICaptcha interface.

This commit is contained in:
Alexander Andreev 2022-06-27 00:43:12 +04:00
parent 28ceae169b
commit 10167c4e17
Signed by: Arav
GPG Key ID: 0388CC8FAA51063F

View File

@ -16,15 +16,33 @@ var errorNotFound = errors.New("captcha not found")
type Answer string type Answer string
// ICaptcha interface that should be implemented by captcha.
type ICaptcha interface { type ICaptcha interface {
// generateImage is used to create a captcha image.
generateImage() *image.Image generateImage() *image.Image
// GetImage() returns an image of captcha. Calls
// generateImage() method if image doesn't exist.
GetImage() *image.Image GetImage() *image.Image
// GetAnswer returns a pregenerated answer.
GetAnswer() Answer GetAnswer() Answer
// Solve compares a stored answer with a passed one.
// Sets field Solved to true if they are equal.
Solve(answer Answer) bool Solve(answer Answer) bool
// IsSolved returns field IsSolved.
IsSolved() bool IsSolved() bool
// Expiry returns a date after what captcha will expire.
Expiry() time.Time Expiry() time.Time
} }
// Captcha is a base implementation of a CAPTCHA.
//
// All derivatives that embed this struct only need to
// implement GetImage() and generateImage() methods.
// And GetImage() could simply be copied.
//
// You need to do that because in Go there is no inheritance,
// and if you won't do that, calling a base GetImage
// method will call an empty base generateImage() method.
type Captcha struct { type Captcha struct {
Image image.Image Image image.Image
Answer Answer Answer Answer