Skip to content

Commit 873d96d

Browse files
authored
Refactor code by using switch instead of if-else (#318)
1 parent f53600a commit 873d96d

File tree

5 files changed

+85
-76
lines changed

5 files changed

+85
-76
lines changed

cmd/jwt/main.go

Lines changed: 44 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,14 @@ func main() {
6060

6161
// Figure out which thing to do and then do that
6262
func start() error {
63-
if *flagSign != "" {
63+
switch {
64+
case *flagSign != "":
6465
return signToken()
65-
} else if *flagVerify != "" {
66+
case *flagVerify != "":
6667
return verifyToken()
67-
} else if *flagShow != "" {
68+
case *flagShow != "":
6869
return showToken()
69-
} else {
70+
default:
7071
flag.Usage()
7172
return fmt.Errorf("none of the required flags are present. What do you want me to do?")
7273
}
@@ -79,17 +80,18 @@ func loadData(p string) ([]byte, error) {
7980
}
8081

8182
var rdr io.Reader
82-
if p == "-" {
83+
switch p {
84+
case "-":
8385
rdr = os.Stdin
84-
} else if p == "+" {
86+
case "+":
8587
return []byte("{}"), nil
86-
} else {
87-
if f, err := os.Open(p); err == nil {
88-
rdr = f
89-
defer f.Close()
90-
} else {
88+
default:
89+
f, err := os.Open(p)
90+
if err != nil {
9191
return nil, err
9292
}
93+
rdr = f
94+
defer f.Close()
9395
}
9496
return io.ReadAll(rdr)
9597
}
@@ -136,14 +138,16 @@ func verifyToken() error {
136138
if err != nil {
137139
return nil, err
138140
}
139-
if isEs() {
141+
switch {
142+
case isEs():
140143
return jwt.ParseECPublicKeyFromPEM(data)
141-
} else if isRs() {
144+
case isRs():
142145
return jwt.ParseRSAPublicKeyFromPEM(data)
143-
} else if isEd() {
146+
case isEd():
144147
return jwt.ParseEdPublicKeyFromPEM(data)
148+
default:
149+
return data, nil
145150
}
146-
return data, nil
147151
})
148152

149153
// Print some debug data
@@ -221,40 +225,41 @@ func signToken() error {
221225
}
222226
}
223227

224-
if isEs() {
225-
if k, ok := key.([]byte); !ok {
228+
switch {
229+
case isEs():
230+
k, ok := key.([]byte)
231+
if !ok {
226232
return fmt.Errorf("couldn't convert key data to key")
227-
} else {
228-
key, err = jwt.ParseECPrivateKeyFromPEM(k)
229-
if err != nil {
230-
return err
231-
}
232233
}
233-
} else if isRs() {
234-
if k, ok := key.([]byte); !ok {
234+
key, err = jwt.ParseECPrivateKeyFromPEM(k)
235+
if err != nil {
236+
return err
237+
}
238+
case isRs():
239+
k, ok := key.([]byte)
240+
if !ok {
235241
return fmt.Errorf("couldn't convert key data to key")
236-
} else {
237-
key, err = jwt.ParseRSAPrivateKeyFromPEM(k)
238-
if err != nil {
239-
return err
240-
}
241242
}
242-
} else if isEd() {
243-
if k, ok := key.([]byte); !ok {
243+
key, err = jwt.ParseRSAPrivateKeyFromPEM(k)
244+
if err != nil {
245+
return err
246+
}
247+
case isEd():
248+
k, ok := key.([]byte)
249+
if !ok {
244250
return fmt.Errorf("couldn't convert key data to key")
245-
} else {
246-
key, err = jwt.ParseEdPrivateKeyFromPEM(k)
247-
if err != nil {
248-
return err
249-
}
251+
}
252+
key, err = jwt.ParseEdPrivateKeyFromPEM(k)
253+
if err != nil {
254+
return err
250255
}
251256
}
252257

253-
if out, err := token.SignedString(key); err == nil {
254-
fmt.Println(out)
255-
} else {
258+
out, err := token.SignedString(key)
259+
if err != nil {
256260
return fmt.Errorf("error signing token: %w", err)
257261
}
262+
fmt.Println(out)
258263

259264
return nil
260265
}

example_test.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -163,17 +163,18 @@ func ExampleParse_errorChecking() {
163163
return []byte("AllYourBase"), nil
164164
})
165165

166-
if token.Valid {
166+
switch {
167+
case token.Valid:
167168
fmt.Println("You look nice today")
168-
} else if errors.Is(err, jwt.ErrTokenMalformed) {
169+
case errors.Is(err, jwt.ErrTokenMalformed):
169170
fmt.Println("That's not even a token")
170-
} else if errors.Is(err, jwt.ErrTokenSignatureInvalid) {
171+
case errors.Is(err, jwt.ErrTokenSignatureInvalid):
171172
// Invalid signature
172173
fmt.Println("Invalid signature")
173-
} else if errors.Is(err, jwt.ErrTokenExpired) || errors.Is(err, jwt.ErrTokenNotValidYet) {
174+
case errors.Is(err, jwt.ErrTokenExpired) || errors.Is(err, jwt.ErrTokenNotValidYet):
174175
// Token is either expired or not active yet
175176
fmt.Println("Timing is everything")
176-
} else {
177+
default:
177178
fmt.Println("Couldn't handle this token:", err)
178179
}
179180

hmac_test.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,16 +66,17 @@ func TestHMACVerify(t *testing.T) {
6666

6767
func TestHMACSign(t *testing.T) {
6868
for _, data := range hmacTestData {
69-
if data.valid {
70-
parts := strings.Split(data.tokenString, ".")
71-
method := jwt.GetSigningMethod(data.alg)
72-
sig, err := method.Sign(strings.Join(parts[0:2], "."), hmacTestKey)
73-
if err != nil {
74-
t.Errorf("[%v] Error signing token: %v", data.name, err)
75-
}
76-
if !reflect.DeepEqual(sig, decodeSegment(t, parts[2])) {
77-
t.Errorf("[%v] Incorrect signature.\nwas:\n%v\nexpecting:\n%v", data.name, sig, parts[2])
78-
}
69+
if !data.valid {
70+
continue
71+
}
72+
parts := strings.Split(data.tokenString, ".")
73+
method := jwt.GetSigningMethod(data.alg)
74+
sig, err := method.Sign(strings.Join(parts[0:2], "."), hmacTestKey)
75+
if err != nil {
76+
t.Errorf("[%v] Error signing token: %v", data.name, err)
77+
}
78+
if !reflect.DeepEqual(sig, decodeSegment(t, parts[2])) {
79+
t.Errorf("[%v] Incorrect signature.\nwas:\n%v\nexpecting:\n%v", data.name, sig, parts[2])
7980
}
8081
}
8182
}

none_test.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -59,16 +59,17 @@ func TestNoneVerify(t *testing.T) {
5959

6060
func TestNoneSign(t *testing.T) {
6161
for _, data := range noneTestData {
62-
if data.valid {
63-
parts := strings.Split(data.tokenString, ".")
64-
method := jwt.GetSigningMethod(data.alg)
65-
sig, err := method.Sign(strings.Join(parts[0:2], "."), data.key)
66-
if err != nil {
67-
t.Errorf("[%v] Error signing token: %v", data.name, err)
68-
}
69-
if !reflect.DeepEqual(sig, decodeSegment(t, parts[2])) {
70-
t.Errorf("[%v] Incorrect signature.\nwas:\n%v\nexpecting:\n%v", data.name, sig, parts[2])
71-
}
62+
if !data.valid {
63+
continue
64+
}
65+
parts := strings.Split(data.tokenString, ".")
66+
method := jwt.GetSigningMethod(data.alg)
67+
sig, err := method.Sign(strings.Join(parts[0:2], "."), data.key)
68+
if err != nil {
69+
t.Errorf("[%v] Error signing token: %v", data.name, err)
70+
}
71+
if !reflect.DeepEqual(sig, decodeSegment(t, parts[2])) {
72+
t.Errorf("[%v] Incorrect signature.\nwas:\n%v\nexpecting:\n%v", data.name, sig, parts[2])
7273
}
7374
}
7475
}

rsa_pss_test.go

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -84,18 +84,19 @@ func TestRSAPSSSign(t *testing.T) {
8484
}
8585

8686
for _, data := range rsaPSSTestData {
87-
if data.valid {
88-
parts := strings.Split(data.tokenString, ".")
89-
method := jwt.GetSigningMethod(data.alg)
90-
sig, err := method.Sign(strings.Join(parts[0:2], "."), rsaPSSKey)
91-
if err != nil {
92-
t.Errorf("[%v] Error signing token: %v", data.name, err)
93-
}
94-
95-
ssig := encodeSegment(sig)
96-
if ssig == parts[2] {
97-
t.Errorf("[%v] Signatures shouldn't match\nnew:\n%v\noriginal:\n%v", data.name, ssig, parts[2])
98-
}
87+
if !data.valid {
88+
continue
89+
}
90+
parts := strings.Split(data.tokenString, ".")
91+
method := jwt.GetSigningMethod(data.alg)
92+
sig, err := method.Sign(strings.Join(parts[0:2], "."), rsaPSSKey)
93+
if err != nil {
94+
t.Errorf("[%v] Error signing token: %v", data.name, err)
95+
}
96+
97+
ssig := encodeSegment(sig)
98+
if ssig == parts[2] {
99+
t.Errorf("[%v] Signatures shouldn't match\nnew:\n%v\noriginal:\n%v", data.name, ssig, parts[2])
99100
}
100101
}
101102
}

0 commit comments

Comments
 (0)