4
4
"context"
5
5
"net/http"
6
6
"regexp"
7
+ "strings"
7
8
"time"
8
9
9
10
// Packages
@@ -75,8 +76,8 @@ func (service *auth) ListTokens(w http.ResponseWriter, r *http.Request) {
75
76
// Get a token
76
77
func (service * auth ) GetToken (w http.ResponseWriter , r * http.Request ) {
77
78
urlParameters := router .Params (r .Context ())
78
- token := service .jar .Get ( urlParameters [0 ])
79
- if ! token .IsValid () {
79
+ token := service .jar .GetWithValue ( strings . ToLower ( urlParameters [0 ]) )
80
+ if token .IsZero () {
80
81
httpresponse .Error (w , http .StatusNotFound )
81
82
return
82
83
}
@@ -92,17 +93,22 @@ func (service *auth) GetToken(w http.ResponseWriter, r *http.Request) {
92
93
func (service * auth ) CreateToken (w http.ResponseWriter , r * http.Request ) {
93
94
var req TokenCreate
94
95
95
- // TODO: Parse Duration
96
- // TODO: Require unique name
97
-
98
96
// Get the request
99
97
if err := httprequest .Read (r , & req ); err != nil {
100
98
httpresponse .Error (w , http .StatusBadRequest , err .Error ())
101
99
return
102
100
}
103
101
102
+ // Check for a valid name
103
+ req .Name = strings .TrimSpace (req .Name )
104
+ if req .Name == "" {
105
+ httpresponse .Error (w , http .StatusBadRequest , "missing 'name'" )
106
+ } else if token := service .jar .GetWithName (req .Name ); token .IsValid () {
107
+ httpresponse .Error (w , http .StatusConflict , "duplicate 'name'" )
108
+ }
109
+
104
110
// Create the token
105
- token := NewToken (req .Name , service .tokenBytes , req .Duration , req .Scope ... )
111
+ token := NewToken (req .Name , service .tokenBytes , req .Duration . Duration , req .Scope ... )
106
112
if ! token .IsValid () {
107
113
httpresponse .Error (w , http .StatusInternalServerError )
108
114
return
@@ -125,8 +131,8 @@ func (service *auth) CreateToken(w http.ResponseWriter, r *http.Request) {
125
131
// Update an existing token
126
132
func (service * auth ) UpdateToken (w http.ResponseWriter , r * http.Request ) {
127
133
urlParameters := router .Params (r .Context ())
128
- token := service .jar .Get ( urlParameters [0 ])
129
- if ! token .IsValid () {
134
+ token := service .jar .GetWithValue ( strings . ToLower ( urlParameters [0 ]) )
135
+ if token .IsZero () {
130
136
httpresponse .Error (w , http .StatusNotFound )
131
137
return
132
138
}
@@ -138,6 +144,8 @@ func (service *auth) UpdateToken(w http.ResponseWriter, r *http.Request) {
138
144
return
139
145
}
140
146
default :
147
+ // TODO: PATCH
148
+ // Patch can be with name, expire_time, scopes
141
149
httpresponse .Error (w , http .StatusMethodNotAllowed )
142
150
return
143
151
}
0 commit comments