@@ -2,7 +2,8 @@ package token
2
2
3
3
import (
4
4
"net/http"
5
- "strings"
5
+
6
+ "github.com/shaj13/go-guardian/internal"
6
7
)
7
8
8
9
// Parser parse and extract token from incoming HTTP request.
@@ -19,14 +20,7 @@ func (fn tokenFn) Token(r *http.Request) (string, error) {
19
20
// XHeaderParser return a token parser, where token extracted form "X-" header.
20
21
func XHeaderParser (header string ) Parser {
21
22
fn := func (r * http.Request ) (string , error ) {
22
- val := r .Header .Get (header )
23
- val = strings .TrimSpace (val )
24
-
25
- if val == "" {
26
- return "" , ErrInvalidToken
27
- }
28
-
29
- return val , nil
23
+ return internal .ParseHeader (header , r , ErrInvalidToken )
30
24
}
31
25
32
26
return tokenFn (fn )
@@ -35,23 +29,7 @@ func XHeaderParser(header string) Parser {
35
29
// AuthorizationParser return a token parser, where token extracted form Authorization header.
36
30
func AuthorizationParser (key string ) Parser {
37
31
fn := func (r * http.Request ) (string , error ) {
38
- header := r .Header .Get ("Authorization" )
39
- header = strings .TrimSpace (header )
40
-
41
- if header == "" {
42
- return "" , ErrInvalidToken
43
- }
44
-
45
- token := strings .Split (header , " " )
46
- if len (token ) < 2 || token [0 ] != key {
47
- return "" , ErrInvalidToken
48
- }
49
-
50
- if len (token [1 ]) == 0 {
51
- return "" , ErrInvalidToken
52
- }
53
-
54
- return token [1 ], nil
32
+ return internal .ParseAuthorizationHeader (key , r , ErrInvalidToken )
55
33
}
56
34
57
35
return tokenFn (fn )
@@ -60,15 +38,7 @@ func AuthorizationParser(key string) Parser {
60
38
// QueryParser return a token parser, where token extracted form HTTP query string.
61
39
func QueryParser (key string ) Parser {
62
40
fn := func (r * http.Request ) (string , error ) {
63
- query := r .URL .Query ()
64
- token := query .Get (key )
65
- token = strings .TrimSpace (token )
66
-
67
- if token == "" {
68
- return "" , ErrInvalidToken
69
- }
70
-
71
- return token , nil
41
+ return internal .ParseQuery (key , r , ErrInvalidToken )
72
42
}
73
43
74
44
return tokenFn (fn )
@@ -77,18 +47,7 @@ func QueryParser(key string) Parser {
77
47
// CookieParser return a token parser, where token extracted form HTTP Cookie.
78
48
func CookieParser (key string ) Parser {
79
49
fn := func (r * http.Request ) (string , error ) {
80
- cookie , err := r .Cookie (key )
81
- if err != nil {
82
- return "" , err
83
- }
84
-
85
- token := strings .TrimSpace (cookie .Value )
86
-
87
- if token == "" {
88
- return "" , ErrInvalidToken
89
- }
90
-
91
- return token , nil
50
+ return internal .ParseCookie (key , r , ErrInvalidToken )
92
51
}
93
52
94
53
return tokenFn (fn )
0 commit comments