Public Instance methods
build_request(*)
[show source]
# File lib/httpx/plugins/oauth.rb 166 def build_request(*) 167 request = super 168 169 return request if request.headers.key?("authorization") 170 171 oauth_session = @options.oauth_session 172 173 return request unless oauth_session && oauth_session.access_token 174 175 request.headers["authorization"] = "Bearer #{oauth_session.access_token}" 176 177 request 178 end
oauth_auth(**args)
[show source]
# File lib/httpx/plugins/oauth.rb 118 def oauth_auth(**args) 119 with(oauth_session: OAuthSession.new(**args)) 120 end
with_access_token()
[show source]
# File lib/httpx/plugins/oauth.rb 122 def with_access_token 123 oauth_session = @options.oauth_session 124 125 oauth_session.load(self) 126 127 grant_type = oauth_session.grant_type 128 129 headers = {} 130 form_post = { 131 "grant_type" => grant_type, 132 "scope" => Array(oauth_session.scope).join(" "), 133 "audience" => oauth_session.audience, 134 }.compact 135 136 # auth 137 case oauth_session.token_endpoint_auth_method 138 when "client_secret_post" 139 form_post["client_id"] = oauth_session.client_id 140 form_post["client_secret"] = oauth_session.client_secret 141 when "client_secret_basic" 142 headers["authorization"] = Authentication::Basic.new(oauth_session.client_id, oauth_session.client_secret).authenticate 143 end 144 145 case grant_type 146 when "client_credentials" 147 # do nothing 148 when "refresh_token" 149 form_post["refresh_token"] = oauth_session.refresh_token 150 end 151 152 token_request = build_request("POST", oauth_session.token_endpoint, headers: headers, form: form_post) 153 token_request.headers.delete("authorization") unless oauth_session.token_endpoint_auth_method == "client_secret_basic" 154 155 token_response = request(token_request) 156 token_response.raise_for_status 157 158 payload = token_response.json 159 160 access_token = payload["access_token"] 161 refresh_token = payload["refresh_token"] 162 163 with(oauth_session: oauth_session.merge(access_token: access_token, refresh_token: refresh_token)) 164 end