@@ -2,35 +2,25 @@ class UserController < ApplicationController
22 before_filter :check_for_credentials , except : [ :login , :callback , :welcome ]
33
44 def check_for_credentials
5- unless session [ : access_token]
5+ unless access_token
66 redirect_to login_path
77 end
88 end
99
1010 def login
11- @consumer = OAuth ::Consumer . new ( ENV [ "SPLITWISE_API_KEY" ] , ENV [ "SPLITWISE_API_SECRET" ] , {
12- :site => ENV [ "SPLITWISE_SITE" ] ,
13- :scheme => :header ,
14- :http_method => :post ,
15- :authorize_path => ENV [ "SPLITWISE_AUTHORIZE_URL" ] ,
16- :request_token_path => ENV [ "SPLITWISE_REQUEST_TOKEN_URL" ] ,
17- :access_token_path => ENV [ "SPLITWISE_ACCESS_TOKEN_URL" ]
18- } )
19-
20- @request_token = @consumer . get_request_token
21- session [ :request_token ] = @request_token
22- puts session . to_yaml
11+ @request_token = consumer . get_request_token
12+ Rails . cache . write ( @request_token . token , @request_token . secret )
2313 redirect_to @request_token . authorize_url
2414 end
2515
2616 def callback
27- puts session . to_yaml
28- if session [ :request_token ]
29- session [ :access_token ] = session [ :request_token ] . get_access_token ( :oauth_verifier => params [ :oauth_verifier ] )
30- after_callback
31- else
32- render :text => "Looks like something went wrong - sorry!"
33- end
17+ request_token = OAuth :: RequestToken . new ( consumer , params [ :oauth_token ] , Rails . cache . read ( params [ :oauth_token ] ) )
18+ access_token = request_token . get_access_token ( :oauth_verifier => params [ :oauth_verifier ] )
19+ session [ :access_token ] = access_token . token
20+ session [ :access_token_secret ] = access_token . secret
21+ after_callback
22+ rescue
23+ render :text => "Looks like something went wrong - sorry!"
3424 end
3525
3626 def after_callback
@@ -48,39 +38,62 @@ def after_logout
4838
4939 # Actions with views
5040 def welcome
51- if session [ : access_token]
41+ if access_token
5242 after_callback
5343 end
5444 end
5545
5646 def balance_over_time
5747 @title = "Api Example \u00B7 Balance"
58- @data = JSON . unparse ( User . new ( session [ :access_token ] ) . get_balance_over_time )
48+ @data = JSON . unparse ( current_user . get_balance_over_time )
5949 end
6050
6151 def balances_over_time_with_friends
6252 @title = "Api Example \u00B7 Balance with friends"
63- @data = JSON . unparse ( User . new ( session [ :access_token ] ) . get_balances_over_time_with_friends )
53+ @data = JSON . unparse ( current_user . get_balances_over_time_with_friends )
6454 end
6555
6656 def expenses_over_time
6757 @title = "Api Example \u00B7 Expenses"
68- @data = JSON . unparse ( User . new ( session [ :access_token ] ) . get_expenses_over_time_cumulative )
58+ @data = JSON . unparse ( current_user . get_expenses_over_time_cumulative )
6959 end
7060
7161 def expenses_by_category
7262 @title = "Api Example \u00B7 Expenses by category"
73- @data = JSON . unparse ( User . new ( session [ :access_token ] ) . get_expenses_by_category )
63+ @data = JSON . unparse ( current_user . get_expenses_by_category )
7464 end
7565
7666 def expenses_by_category_over_time
7767 @title = "Api Example \u00B7 Category history"
78- @data = JSON . unparse ( User . new ( session [ :access_token ] ) . get_expenses_by_category_over_time_cumulative )
68+ @data = JSON . unparse ( current_user . get_expenses_by_category_over_time_cumulative )
7969 end
8070
8171 def expenses_matching
8272 @title = "Api Example \u00B7 Search an expense"
83- @data = JSON . unparse ( User . new ( session [ :access_token ] ) . get_expenses_matching_cumulative ( params [ :query ] ) )
73+ @data = JSON . unparse ( current_user . get_expenses_matching_cumulative ( params [ :query ] ) )
74+ end
75+
76+ private
77+
78+ def consumer
79+ @consumer ||= OAuth ::Consumer . new ( ENV [ "SPLITWISE_API_KEY" ] , ENV [ "SPLITWISE_API_SECRET" ] , {
80+ :site => ENV [ "SPLITWISE_SITE" ] ,
81+ :scheme => :header ,
82+ :http_method => :post ,
83+ :authorize_path => ENV [ "SPLITWISE_AUTHORIZE_URL" ] ,
84+ :request_token_path => ENV [ "SPLITWISE_REQUEST_TOKEN_URL" ] ,
85+ :access_token_path => ENV [ "SPLITWISE_ACCESS_TOKEN_URL" ]
86+ } )
87+ end
88+
89+ def access_token
90+ if session [ :access_token ]
91+ @access_token ||= OAuth ::AccessToken . new ( consumer , session [ :access_token ] , session [ :access_token_secret ] )
92+ end
93+ end
94+
95+ def current_user
96+ @current_user ||= User . new ( access_token )
8497 end
8598end
8699
0 commit comments