golint captcha

This commit is contained in:
astaxie 2015-09-14 23:13:51 +08:00
parent 2389bc72f9
commit 7b81617a95
2 changed files with 16 additions and 14 deletions

View File

@ -12,6 +12,7 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
// Package captcha implements generation and verification of image CAPTCHAs.
// an example for use captcha // an example for use captcha
// //
// ``` // ```
@ -78,7 +79,7 @@ const (
// default captcha attributes // default captcha attributes
challengeNums = 6 challengeNums = 6
expiration = 600 expiration = 600
fieldIdName = "captcha_id" fieldIDName = "captcha_id"
fieldCaptchaName = "captcha" fieldCaptchaName = "captcha"
cachePrefix = "captcha_" cachePrefix = "captcha_"
defaultURLPrefix = "/captcha/" defaultURLPrefix = "/captcha/"
@ -93,7 +94,7 @@ type Captcha struct {
URLPrefix string URLPrefix string
// specify captcha id input field name // specify captcha id input field name
FieldIdName string FieldIDName string
// specify captcha result input field name // specify captcha result input field name
FieldCaptchaName string FieldCaptchaName string
@ -121,7 +122,7 @@ func (c *Captcha) genRandChars() []byte {
return utils.RandomCreateBytes(c.ChallengeNums, defaultChars...) return utils.RandomCreateBytes(c.ChallengeNums, defaultChars...)
} }
// beego filter handler for serve captcha image // Handler beego filter handler for serve captcha image
func (c *Captcha) Handler(ctx *context.Context) { func (c *Captcha) Handler(ctx *context.Context) {
var chars []byte var chars []byte
@ -156,8 +157,8 @@ func (c *Captcha) Handler(ctx *context.Context) {
} }
} }
// tempalte func for output html // CreateCaptchaHTML tempalte func for output html
func (c *Captcha) CreateCaptchaHtml() template.HTML { func (c *Captcha) CreateCaptchaHTML() template.HTML {
value, err := c.CreateCaptcha() value, err := c.CreateCaptcha()
if err != nil { if err != nil {
beego.Error("Create Captcha Error:", err) beego.Error("Create Captcha Error:", err)
@ -168,10 +169,10 @@ func (c *Captcha) CreateCaptchaHtml() template.HTML {
return template.HTML(fmt.Sprintf(`<input type="hidden" name="%s" value="%s">`+ return template.HTML(fmt.Sprintf(`<input type="hidden" name="%s" value="%s">`+
`<a class="captcha" href="javascript:">`+ `<a class="captcha" href="javascript:">`+
`<img onclick="this.src=('%s%s.png?reload='+(new Date()).getTime())" class="captcha-img" src="%s%s.png">`+ `<img onclick="this.src=('%s%s.png?reload='+(new Date()).getTime())" class="captcha-img" src="%s%s.png">`+
`</a>`, c.FieldIdName, value, c.URLPrefix, value, c.URLPrefix, value)) `</a>`, c.FieldIDName, value, c.URLPrefix, value, c.URLPrefix, value))
} }
// create a new captcha id // CreateCaptcha create a new captcha id
func (c *Captcha) CreateCaptcha() (string, error) { func (c *Captcha) CreateCaptcha() (string, error) {
// generate captcha id // generate captcha id
id := string(utils.RandomCreateBytes(15)) id := string(utils.RandomCreateBytes(15))
@ -187,13 +188,13 @@ func (c *Captcha) CreateCaptcha() (string, error) {
return id, nil return id, nil
} }
// verify from a request // VerifyReq verify from a request
func (c *Captcha) VerifyReq(req *http.Request) bool { func (c *Captcha) VerifyReq(req *http.Request) bool {
req.ParseForm() req.ParseForm()
return c.Verify(req.Form.Get(c.FieldIdName), req.Form.Get(c.FieldCaptchaName)) return c.Verify(req.Form.Get(c.FieldIDName), req.Form.Get(c.FieldCaptchaName))
} }
// direct verify id and challenge string // Verify direct verify id and challenge string
func (c *Captcha) Verify(id string, challenge string) (success bool) { func (c *Captcha) Verify(id string, challenge string) (success bool) {
if len(challenge) == 0 || len(id) == 0 { if len(challenge) == 0 || len(id) == 0 {
return return
@ -227,11 +228,11 @@ func (c *Captcha) Verify(id string, challenge string) (success bool) {
return true return true
} }
// create a new captcha.Captcha // NewCaptcha create a new captcha.Captcha
func NewCaptcha(urlPrefix string, store cache.Cache) *Captcha { func NewCaptcha(urlPrefix string, store cache.Cache) *Captcha {
cpt := &Captcha{} cpt := &Captcha{}
cpt.store = store cpt.store = store
cpt.FieldIdName = fieldIdName cpt.FieldIDName = fieldIDName
cpt.FieldCaptchaName = fieldCaptchaName cpt.FieldCaptchaName = fieldCaptchaName
cpt.ChallengeNums = challengeNums cpt.ChallengeNums = challengeNums
cpt.Expiration = expiration cpt.Expiration = expiration
@ -252,7 +253,7 @@ func NewCaptcha(urlPrefix string, store cache.Cache) *Captcha {
return cpt return cpt
} }
// create a new captcha.Captcha and auto AddFilter for serve captacha image // NewWithFilter create a new captcha.Captcha and auto AddFilter for serve captacha image
// and add a tempalte func for output html // and add a tempalte func for output html
func NewWithFilter(urlPrefix string, store cache.Cache) *Captcha { func NewWithFilter(urlPrefix string, store cache.Cache) *Captcha {
cpt := NewCaptcha(urlPrefix, store) cpt := NewCaptcha(urlPrefix, store)
@ -261,7 +262,7 @@ func NewWithFilter(urlPrefix string, store cache.Cache) *Captcha {
beego.InsertFilter(cpt.URLPrefix+"*", beego.BeforeRouter, cpt.Handler) beego.InsertFilter(cpt.URLPrefix+"*", beego.BeforeRouter, cpt.Handler)
// add to template func map // add to template func map
beego.AddFuncMap("create_captcha", cpt.CreateCaptchaHtml) beego.AddFuncMap("create_captcha", cpt.CreateCaptchaHTML())
return cpt return cpt
} }

View File

@ -240,6 +240,7 @@ var font = [][]byte{
}, },
} }
// Image struct
type Image struct { type Image struct {
*image.Paletted *image.Paletted
numWidth int numWidth int