Skip to content

Commit a8e4345

Browse files
committed
1004: Reduce controller actionc complexity by using smaller methods
1 parent 96f6b57 commit a8e4345

1 file changed

Lines changed: 27 additions & 23 deletions

File tree

app/controllers/api/google_auth_controller.rb

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,31 +8,12 @@ class GoogleAuthController < ApiController
88
authorize_resource :google_auth, class: false
99

1010
def exchange_code
11-
payload = google_token_params
12-
13-
request_body = {
14-
code: payload[:code],
15-
client_id: ENV.fetch('GOOGLE_CLIENT_ID'),
16-
client_secret: ENV.fetch('GOOGLE_CLIENT_SECRET'),
17-
redirect_uri: payload[:redirect_uri],
18-
grant_type: 'authorization_code'
19-
}
20-
21-
conn = Faraday.new do |f|
22-
f.request :url_encoded
23-
f.options.timeout = 10 # connection open timeout
24-
f.options.open_timeout = 5 # connection initialization timeout
25-
end
26-
27-
response = conn.post(TOKEN_EXCHANGE_URL, request_body)
11+
response = faraday.post(TOKEN_EXCHANGE_URL, token_exchange_payload)
2812
@token_response = JSON.parse(response.body)
2913

30-
if response.success?
31-
render :exchange_code, status: :ok
32-
else
33-
error_message = @token_response['error_description'] || @token_response['error'] || 'Unknown error'
34-
render json: { error: error_message }, status: :unauthorized
35-
end
14+
return render(:exchange_code, status: :ok) if response.success?
15+
16+
render json: { error: response_error_message }, status: :unauthorized
3617
rescue JSON::ParserError => e
3718
render json: { error: e.message }, status: :bad_gateway
3819
rescue Faraday::Error => e
@@ -41,6 +22,29 @@ def exchange_code
4122

4223
private
4324

25+
def faraday
26+
Faraday.new do |f|
27+
f.request :url_encoded
28+
f.options.timeout = 10
29+
f.options.open_timeout = 5
30+
end
31+
end
32+
33+
def token_exchange_payload
34+
payload = google_token_params
35+
{
36+
code: payload[:code],
37+
client_id: ENV.fetch('GOOGLE_CLIENT_ID'),
38+
client_secret: ENV.fetch('GOOGLE_CLIENT_SECRET'),
39+
redirect_uri: payload[:redirect_uri],
40+
grant_type: 'authorization_code'
41+
}
42+
end
43+
44+
def response_error_message
45+
@token_response['error_description'] || @token_response['error'] || 'Unknown error'
46+
end
47+
4448
def google_token_params
4549
params.require(:google_auth).require(:code)
4650
params.require(:google_auth).require(:redirect_uri)

0 commit comments

Comments
 (0)