Module: BetterAuth::SocialProviders::Base
- Defined in:
- lib/better_auth/social_providers/base.rb
Class Method Summary collapse
- .access_token(tokens) ⇒ Object
- .authorization_url(endpoint, params) ⇒ Object
- .decode_jwt_payload(token) ⇒ Object
- .get_json(url, headers = {}) ⇒ Object
- .id_token(tokens) ⇒ Object
- .padded_base64(value) ⇒ Object
- .pkce_challenge(verifier) ⇒ Object
- .post_form(url, form) ⇒ Object
Class Method Details
.access_token(tokens) ⇒ Object
45 46 47 |
# File 'lib/better_auth/social_providers/base.rb', line 45 def access_token(tokens) tokens[:access_token] || tokens["access_token"] || tokens[:accessToken] || tokens["accessToken"] end |
.authorization_url(endpoint, params) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/better_auth/social_providers/base.rb', line 14 def (endpoint, params) uri = URI(endpoint) query = URI.decode_www_form(uri.query.to_s) params.compact.each do |key, value| next if value == "" query << [key.to_s, Array(value).join(" ")] end uri.query = URI.encode_www_form(query) uri.to_s end |
.decode_jwt_payload(token) ⇒ Object
53 54 55 56 57 58 59 60 |
# File 'lib/better_auth/social_providers/base.rb', line 53 def decode_jwt_payload(token) _header, payload, _signature = token.to_s.split(".", 3) return {} unless payload JSON.parse(Base64.urlsafe_decode64(padded_base64(payload))) rescue JSON::ParserError, ArgumentError {} end |
.get_json(url, headers = {}) ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/better_auth/social_providers/base.rb', line 37 def get_json(url, headers = {}) uri = URI(url) request = Net::HTTP::Get.new(uri) headers.each { |key, value| request[key.to_s] = value.to_s } response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") { |http| http.request(request) } JSON.parse(response.body) end |
.id_token(tokens) ⇒ Object
49 50 51 |
# File 'lib/better_auth/social_providers/base.rb', line 49 def id_token(tokens) tokens[:id_token] || tokens["id_token"] || tokens[:idToken] || tokens["idToken"] end |
.padded_base64(value) ⇒ Object
62 63 64 |
# File 'lib/better_auth/social_providers/base.rb', line 62 def padded_base64(value) value + ("=" * ((4 - value.length % 4) % 4)) end |
.pkce_challenge(verifier) ⇒ Object
26 27 28 29 |
# File 'lib/better_auth/social_providers/base.rb', line 26 def pkce_challenge(verifier) digest = OpenSSL::Digest.digest("SHA256", verifier.to_s) Base64.urlsafe_encode64(digest, padding: false) end |
.post_form(url, form) ⇒ Object
31 32 33 34 35 |
# File 'lib/better_auth/social_providers/base.rb', line 31 def post_form(url, form) uri = URI(url) response = Net::HTTP.post_form(uri, form.transform_keys(&:to_s)) JSON.parse(response.body) end |