@@ -29,49 +29,50 @@ def oauth2_endpoint
2929 def auth ( scope :, redirect_uri : nil , state : nil )
3030 get_params = {
3131 client_id : client_id ,
32- scope : ( scope . is_a? ( Array ) ? scope . join ( ' ' ) : scope ) ,
32+ scope : scope_to_string ( scope ) ,
3333 state : state ,
3434 redirect_uri : redirect_uri
3535 }
3636
3737 oauth2_endpoint . new ( self , query : 'auth' , get : get_params ) . full_uri
3838 end
3939
40- # Requests OAuth2 access token. Requires OAuth2 code obtained
41- # using the `.auth` method
42- # @return [RubyLokaliseApi::Resources::OAuth2Token]
43- # @param code [String]
40+ # Requests an OAuth2 access token using a code
41+ # @param code [String] The authorization code
42+ # @return [RubyLokaliseApi::Resources::OAuth2Token] The OAuth2 token resource
4443 def token ( code )
45- endpoint = oauth2_endpoint . new (
46- self ,
47- query : :token ,
48- req : common_params . merge (
49- grant_type : 'authorization_code' ,
50- code : code
51- )
52- )
53-
54- RubyLokaliseApi ::Resources ::OAuth2Token . new endpoint . do_post
44+ request_token ( grant_type : 'authorization_code' , code : code )
5545 end
5646
57- # Refreshes expired OAuth2 access token.
58- # @return [RubyLokaliseApi::Resources::OAuth2RefreshedToken]
59- # @param refresh_token [String]
47+ # Refreshes an expired OAuth2 token
48+ # @param refresh_token [String] The refresh token
49+ # @return [RubyLokaliseApi::Resources::OAuth2RefreshedToken] The refreshed token resource
6050 def refresh ( refresh_token )
61- endpoint = oauth2_endpoint . new (
62- self ,
63- query : :token ,
64- req : common_params . merge (
65- grant_type : 'refresh_token' ,
66- refresh_token : refresh_token
67- )
68- )
69-
70- RubyLokaliseApi ::Resources ::OAuth2RefreshedToken . new endpoint . do_post
51+ request_token ( grant_type : 'refresh_token' , refresh_token : refresh_token )
7152 end
7253
7354 private
7455
56+ # Generalized method for requesting a token
57+ # @param params [Hash] Request parameters including grant type
58+ # @return [RubyLokaliseApi::Resources::OAuth2Token, RubyLokaliseApi::Resources::OAuth2RefreshedToken]
59+ def request_token ( params )
60+ endpoint = oauth2_endpoint . new ( self , query : :token , req : common_params . merge ( params ) )
61+ resource_class = if params [ :grant_type ] == 'authorization_code'
62+ RubyLokaliseApi ::Resources ::OAuth2Token
63+ else
64+ RubyLokaliseApi ::Resources ::OAuth2RefreshedToken
65+ end
66+ resource_class . new ( endpoint . do_post )
67+ end
68+
69+ # Converts scope to a space-separated string if it's an array
70+ # @param scope [Array, String] The scope or scopes
71+ # @return [String] The scope as a string
72+ def scope_to_string ( scope )
73+ scope . is_a? ( Array ) ? scope . join ( ' ' ) : scope
74+ end
75+
7576 def common_params
7677 {
7778 client_id : @client_id ,
0 commit comments