Skip to content

Commit 3adce03

Browse files
committed
Refactor error handling examples and improve code consistency; add missing commas in various classes
1 parent 2617769 commit 3adce03

9 files changed

Lines changed: 33 additions & 39 deletions

File tree

examples/error_handling_example.cr

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ class SessionManager
6060

6161
# Example: Create session with error handling
6262
def create_user_session(user_id : Int64, username : String) : Bool
63-
begin
63+
6464
session = @session.create
6565
session.data.user_id = user_id
6666
session.data.username = username
@@ -78,12 +78,12 @@ class SessionManager
7878
rescue ex : Exception
7979
Log.error { "Unexpected error creating session: #{ex.message}" }
8080
false
81-
end
81+
8282
end
8383

8484
# Example: Load session with error handling
8585
def load_user_session : UserSession?
86-
begin
86+
8787
@session.load_from(HTTP::Cookies.new) # In real app, pass actual cookies
8888
@session.data
8989
rescue ex : Session::SessionExpiredException
@@ -102,7 +102,7 @@ class SessionManager
102102
rescue ex : Exception
103103
Log.error { "Unexpected error loading session: #{ex.message}" }
104104
nil
105-
end
105+
106106
end
107107

108108
# Example: Update session with retry logic
@@ -131,7 +131,7 @@ class SessionManager
131131

132132
# Example: Delete session with error handling
133133
def delete_user_session : Bool
134-
begin
134+
135135
@session.delete
136136
Log.info { "Deleted user session" }
137137
true
@@ -142,12 +142,12 @@ class SessionManager
142142
rescue ex : Exception
143143
Log.warn { "Error deleting session: #{ex.message}" }
144144
false
145-
end
145+
146146
end
147147

148148
# Example: Check session health
149149
def check_session_health : Bool
150-
begin
150+
151151
if store = @session.as?(Session::RedisStore(UserSession))
152152
store.healthy?
153153
else
@@ -156,7 +156,7 @@ class SessionManager
156156
rescue ex : Exception
157157
Log.warn { "Health check failed: #{ex.message}" }
158158
false
159-
end
159+
160160
end
161161

162162
# Example: Clean up expired sessions (for memory store)
@@ -189,21 +189,21 @@ class SessionManager
189189
end
190190

191191
private def create_new_session : UserSession?
192-
begin
192+
193193
@session.create
194194
@session.data
195195
rescue ex : Exception
196196
Log.error { "Failed to create new session: #{ex.message}" }
197197
nil
198-
end
198+
199199
end
200200

201201
private def clear_corrupted_session
202-
begin
202+
203203
@session.delete
204204
rescue ex : Exception
205205
Log.warn { "Failed to clear corrupted session: #{ex.message}" }
206-
end
206+
207207
end
208208
end
209209

spec/connection_pool_spec.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ if REDIS_AVAILABLE
6464
config = Session::ConnectionPoolConfig.new(size: 2, redis_host: REDIS_HOST)
6565
pool = Session::ConnectionPool.new(config)
6666

67-
pool.with_connection { |c| c.ping }
67+
pool.with_connection(&.ping)
6868

6969
stats = pool.stats
7070
stats[:available].should eq 2

spec/cookie_store_spec.cr

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,8 @@ describe Session::CookieStore do
1818
store[session.session_id] = session
1919

2020
# The cookie value should be encrypted, not plain JSON
21-
cookie = store.cookies[store.data_key]?
22-
cookie.should_not be_nil
23-
cookie.not_nil!.value.should_not contain("session_id")
21+
cookie = store.cookies[store.data_key]
22+
cookie.value.should_not contain("session_id")
2423
end
2524
end
2625

src/cluster.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ module Session
2525
@type : ClusterMessageType,
2626
@session_id : String,
2727
@node_id : String,
28-
@timestamp : Time = Time.utc
28+
@timestamp : Time = Time.utc,
2929
)
3030
end
3131
end

src/configuration.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ module Session
1717
@local_cache_enabled : Bool = true,
1818
@local_cache_ttl : Time::Span = 30.seconds,
1919
@local_cache_max_size : Int32 = 10_000,
20-
@subscribe_timeout : Time::Span = 5.seconds
20+
@subscribe_timeout : Time::Span = 5.seconds,
2121
)
2222
end
2323
end

src/connection_pool.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ module Session
1616
@redis_host : String = "localhost",
1717
@redis_port : Int32 = 6379,
1818
@redis_database : Int32 = 0,
19-
@redis_password : String? = nil
19+
@redis_password : String? = nil,
2020
)
2121
end
2222
end

src/message/encryptor.cr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ module Message
1818
@fallback_digest : Symbol? = :sha1,
1919
@use_kdf : Bool = false,
2020
@kdf_iterations : Int32 = 100_000,
21-
@kdf_salt : String = "session_kdf_salt"
21+
@kdf_salt : String = "session_kdf_salt",
2222
)
2323
@verifier = Verifier.new(@secret, digest: @digest, fallback_digest: @fallback_digest)
2424
@block_size = 16

src/message/verifier.cr

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -33,30 +33,16 @@ module Message
3333
def verified(signed_message : String) : String?
3434
json_data = ::Base64.decode_string(signed_message)
3535
data, digest = Tuple(String, String).from_json(json_data)
36-
37-
if valid_message?(data.to_s, digest.to_s)
38-
String.new(decode(data.to_s))
39-
elsif valid_message_with_fallback?(data.to_s, digest.to_s)
40-
log_fallback_warning
41-
String.new(decode(data.to_s))
42-
end
36+
decode_verified(data.to_s, digest.to_s)
4337
rescue JSON::ParseException | Base64::Error
4438
begin
4539
data, digest = signed_message.split("--", 2)
4640
rescue IndexError
4741
return nil
4842
end
4943

50-
if (data && digest).nil?
51-
return nil
52-
end
53-
54-
if valid_message?(data.to_s, digest.to_s)
55-
String.new(decode(data.to_s))
56-
elsif valid_message_with_fallback?(data.to_s, digest.to_s)
57-
log_fallback_warning
58-
String.new(decode(data.to_s))
59-
end
44+
return nil if (data && digest).nil?
45+
decode_verified(data.to_s, digest.to_s)
6046
rescue ex : ArgumentError
6147
return if ex.message =~ %r{invalid base64}
6248
raise ex
@@ -97,6 +83,15 @@ module Message
9783
encode({data, generate_digest(data)}.to_json)
9884
end
9985

86+
private def decode_verified(data : String, digest : String) : String?
87+
if valid_message?(data, digest)
88+
String.new(decode(data))
89+
elsif valid_message_with_fallback?(data, digest)
90+
log_fallback_warning
91+
String.new(decode(data))
92+
end
93+
end
94+
10095
private def encode(data) : String
10196
::Base64.urlsafe_encode(data)
10297
end

src/retry.cr

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ module Session
1515
def initialize(
1616
@failure_threshold : Int32 = 5,
1717
@reset_timeout : Time::Span = 30.seconds,
18-
@half_open_max_calls : Int32 = 1
18+
@half_open_max_calls : Int32 = 1,
1919
)
2020
end
2121
end
@@ -182,7 +182,7 @@ module Session
182182
@base_delay : Time::Span = 100.milliseconds,
183183
@max_delay : Time::Span = 5.seconds,
184184
@backoff_multiplier : Float64 = 2.0,
185-
@jitter : Float64 = 0.1
185+
@jitter : Float64 = 0.1,
186186
)
187187
end
188188
end

0 commit comments

Comments
 (0)