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