Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
B
beego
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
beego
Commits
6e34f437
Commit
6e34f437
authored
Jun 28, 2017
by
miraclesu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix break API change
support int64 on 64-bit platform
parent
2231841d
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
40 additions
and
24 deletions
+40
-24
util.go
validation/util.go
+9
-2
validation.go
validation/validation.go
+3
-3
validation_test.go
validation/validation_test.go
+4
-4
validators.go
validation/validators.go
+24
-15
No files found.
validation/util.go
View file @
6e34f437
...
...
@@ -25,6 +25,8 @@ import (
const
(
// ValidTag struct tag
ValidTag
=
"valid"
wordsize
=
32
<<
(
^
uint
(
0
)
>>
32
&
1
)
)
var
(
...
...
@@ -43,6 +45,8 @@ var (
"Valid"
:
true
,
"NoMatch"
:
true
,
}
Int64On32Err
=
fmt
.
Errorf
(
"not support int64 on 32-bit platform"
)
)
func
init
()
{
...
...
@@ -250,6 +254,9 @@ func parseParam(t reflect.Type, s string) (i interface{}, err error) {
case
reflect
.
Int
:
i
,
err
=
strconv
.
Atoi
(
s
)
case
reflect
.
Int64
:
if
wordsize
==
32
{
return
nil
,
Int64On32Err
}
i
,
err
=
strconv
.
ParseInt
(
s
,
10
,
64
)
case
reflect
.
Int32
:
var
v
int64
...
...
@@ -273,12 +280,12 @@ func parseParam(t reflect.Type, s string) (i interface{}, err error) {
i
=
s
case
reflect
.
Ptr
:
if
t
.
Elem
()
.
String
()
!=
"regexp.Regexp"
{
err
=
fmt
.
Errorf
(
"
does
not support %s"
,
t
.
Elem
()
.
String
())
err
=
fmt
.
Errorf
(
"not support %s"
,
t
.
Elem
()
.
String
())
return
}
i
,
err
=
regexp
.
Compile
(
s
)
default
:
err
=
fmt
.
Errorf
(
"
does
not support %s"
,
t
.
Kind
()
.
String
())
err
=
fmt
.
Errorf
(
"not support %s"
,
t
.
Kind
()
.
String
())
}
return
}
...
...
validation/validation.go
View file @
6e34f437
...
...
@@ -144,17 +144,17 @@ func (v *Validation) Required(obj interface{}, key string) *Result {
}
// Min Test that the obj is greater than min if obj's type is int
func
(
v
*
Validation
)
Min
(
obj
interface
{},
min
int
64
,
key
string
)
*
Result
{
func
(
v
*
Validation
)
Min
(
obj
interface
{},
min
int
,
key
string
)
*
Result
{
return
v
.
apply
(
Min
{
min
,
key
},
obj
)
}
// Max Test that the obj is less than max if obj's type is int
func
(
v
*
Validation
)
Max
(
obj
interface
{},
max
int
64
,
key
string
)
*
Result
{
func
(
v
*
Validation
)
Max
(
obj
interface
{},
max
int
,
key
string
)
*
Result
{
return
v
.
apply
(
Max
{
max
,
key
},
obj
)
}
// Range Test that the obj is between mni and max if obj's type is int
func
(
v
*
Validation
)
Range
(
obj
interface
{},
min
,
max
int
64
,
key
string
)
*
Result
{
func
(
v
*
Validation
)
Range
(
obj
interface
{},
min
,
max
int
,
key
string
)
*
Result
{
return
v
.
apply
(
Range
{
Min
{
Min
:
min
},
Max
{
Max
:
max
},
key
},
obj
)
}
...
...
validation/validation_test.go
View file @
6e34f437
...
...
@@ -64,10 +64,10 @@ func TestRequired(t *testing.T) {
func
TestMin
(
t
*
testing
.
T
)
{
valid
:=
Validation
{}
if
valid
.
Min
(
int64
(
-
1
),
int64
(
0
)
,
"min0"
)
.
Ok
{
if
valid
.
Min
(
-
1
,
0
,
"min0"
)
.
Ok
{
t
.
Error
(
"-1 is less than the minimum value of 0 should be false"
)
}
if
!
valid
.
Min
(
int64
(
1
),
int64
(
0
)
,
"min0"
)
.
Ok
{
if
!
valid
.
Min
(
1
,
0
,
"min0"
)
.
Ok
{
t
.
Error
(
"1 is greater or equal than the minimum value of 0 should be true"
)
}
}
...
...
@@ -75,10 +75,10 @@ func TestMin(t *testing.T) {
func
TestMax
(
t
*
testing
.
T
)
{
valid
:=
Validation
{}
if
valid
.
Max
(
int64
(
1
),
int64
(
0
)
,
"max0"
)
.
Ok
{
if
valid
.
Max
(
1
,
0
,
"max0"
)
.
Ok
{
t
.
Error
(
"1 is greater than the minimum value of 0 should be false"
)
}
if
!
valid
.
Max
(
int64
(
-
1
),
int64
(
0
)
,
"max0"
)
.
Ok
{
if
!
valid
.
Max
(
-
1
,
0
,
"max0"
)
.
Ok
{
t
.
Error
(
"-1 is less or equal than the maximum value of 0 should be true"
)
}
}
...
...
validation/validators.go
View file @
6e34f437
...
...
@@ -161,24 +161,28 @@ func (r Required) GetLimitValue() interface{} {
// Min check struct
type
Min
struct
{
Min
int
64
Min
int
Key
string
}
// IsSatisfied judge whether obj is valid
// not support int64 on 32-bit platform
func
(
m
Min
)
IsSatisfied
(
obj
interface
{})
bool
{
var
v
int
64
var
v
int
switch
obj
.
(
type
)
{
case
int64
:
v
=
obj
.
(
int64
)
if
wordsize
==
32
{
return
false
}
v
=
int
(
obj
.
(
int64
))
case
int
:
v
=
int64
(
obj
.
(
int
)
)
v
=
obj
.
(
int
)
case
int32
:
v
=
int
64
(
obj
.
(
int32
))
v
=
int
(
obj
.
(
int32
))
case
int16
:
v
=
int
64
(
obj
.
(
int16
))
v
=
int
(
obj
.
(
int16
))
case
int8
:
v
=
int
64
(
obj
.
(
int8
))
v
=
int
(
obj
.
(
int8
))
default
:
return
false
}
...
...
@@ -203,24 +207,28 @@ func (m Min) GetLimitValue() interface{} {
// Max validate struct
type
Max
struct
{
Max
int
64
Max
int
Key
string
}
// IsSatisfied judge whether obj is valid
// not support int64 on 32-bit platform
func
(
m
Max
)
IsSatisfied
(
obj
interface
{})
bool
{
var
v
int
64
var
v
int
switch
obj
.
(
type
)
{
case
int64
:
v
=
obj
.
(
int64
)
if
wordsize
==
32
{
return
false
}
v
=
int
(
obj
.
(
int64
))
case
int
:
v
=
int64
(
obj
.
(
int
)
)
v
=
obj
.
(
int
)
case
int32
:
v
=
int
64
(
obj
.
(
int32
))
v
=
int
(
obj
.
(
int32
))
case
int16
:
v
=
int
64
(
obj
.
(
int16
))
v
=
int
(
obj
.
(
int16
))
case
int8
:
v
=
int
64
(
obj
.
(
int8
))
v
=
int
(
obj
.
(
int8
))
default
:
return
false
}
...
...
@@ -251,6 +259,7 @@ type Range struct {
}
// IsSatisfied judge whether obj is valid
// not support int64 on 32-bit platform
func
(
r
Range
)
IsSatisfied
(
obj
interface
{})
bool
{
return
r
.
Min
.
IsSatisfied
(
obj
)
&&
r
.
Max
.
IsSatisfied
(
obj
)
}
...
...
@@ -267,7 +276,7 @@ func (r Range) GetKey() string {
// GetLimitValue return the limit value, Max
func
(
r
Range
)
GetLimitValue
()
interface
{}
{
return
[]
int
64
{
r
.
Min
.
Min
,
r
.
Max
.
Max
}
return
[]
int
{
r
.
Min
.
Min
,
r
.
Max
.
Max
}
}
// MinSize Requires an array or string to be at least a given length.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment