2014-05-05 21:08:01 +04:00
// Copyright 2014 The Gogs Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package apiv1
import (
"reflect"
2014-07-26 08:24:27 +04:00
"github.com/Unknwon/macaron"
2014-10-15 19:19:20 +04:00
"github.com/macaron-contrib/binding"
2014-05-05 21:08:01 +04:00
"github.com/gogits/gogs/modules/auth"
)
type MarkdownForm struct {
2014-12-11 00:37:54 +03:00
Text string ` form:"text" `
2014-05-05 21:08:01 +04:00
Mode string ` form:"mode" `
Context string ` form:"context" `
}
2014-10-15 19:19:20 +04:00
func ( f * MarkdownForm ) Validate ( ctx * macaron . Context , errs binding . Errors ) binding . Errors {
return validateApiReq ( errs , ctx . Data , f )
2014-05-05 21:08:01 +04:00
}
2014-10-15 19:19:20 +04:00
func validateApiReq ( errs binding . Errors , data map [ string ] interface { } , f auth . Form ) binding . Errors {
if errs . Len ( ) == 0 {
return errs
2014-05-05 21:08:01 +04:00
}
data [ "HasError" ] = true
typ := reflect . TypeOf ( f )
val := reflect . ValueOf ( f )
if typ . Kind ( ) == reflect . Ptr {
typ = typ . Elem ( )
val = val . Elem ( )
}
for i := 0 ; i < typ . NumField ( ) ; i ++ {
field := typ . Field ( i )
fieldName := field . Tag . Get ( "form" )
// Allow ignored fields in the struct
if fieldName == "-" {
continue
}
2014-10-15 19:19:20 +04:00
if errs [ 0 ] . FieldNames [ 0 ] == field . Name {
switch errs [ 0 ] . Classification {
case binding . RequiredError :
2014-05-06 00:21:43 +04:00
data [ "ErrorMsg" ] = fieldName + " cannot be empty"
2014-10-15 19:19:20 +04:00
case binding . AlphaDashError :
2014-05-06 00:21:43 +04:00
data [ "ErrorMsg" ] = fieldName + " must be valid alpha or numeric or dash(-_) characters"
2014-10-15 19:19:20 +04:00
case binding . AlphaDashDotError :
2014-05-06 00:21:43 +04:00
data [ "ErrorMsg" ] = fieldName + " must be valid alpha or numeric or dash(-_) or dot characters"
2014-10-15 19:19:20 +04:00
case binding . MinSizeError :
2014-08-01 14:12:14 +04:00
data [ "ErrorMsg" ] = fieldName + " must contain at least " + auth . GetMinSize ( field ) + " characters"
2014-10-15 19:19:20 +04:00
case binding . MaxSizeError :
2014-08-01 14:12:14 +04:00
data [ "ErrorMsg" ] = fieldName + " must contain at most " + auth . GetMaxSize ( field ) + " characters"
2014-10-15 19:19:20 +04:00
case binding . EmailError :
2014-05-06 00:21:43 +04:00
data [ "ErrorMsg" ] = fieldName + " is not a valid e-mail address"
2014-10-15 19:19:20 +04:00
case binding . UrlError :
2014-05-06 00:21:43 +04:00
data [ "ErrorMsg" ] = fieldName + " is not a valid URL"
2014-05-05 21:08:01 +04:00
default :
2014-10-15 19:19:20 +04:00
data [ "ErrorMsg" ] = "Unknown error: " + errs [ 0 ] . Classification
2014-05-05 21:08:01 +04:00
}
2014-10-15 19:19:20 +04:00
return errs
2014-05-05 21:08:01 +04:00
}
}
2014-10-15 19:19:20 +04:00
return errs
2014-05-05 21:08:01 +04:00
}