class ApiUserAuth::Providers::Google

Get info from Google token

Constants

API_PATH

Public Class Methods

get_user(token) click to toggle source
# File lib/api_user_auth/providers/google.rb, line 39
def self.get_user(token)
  g = Google.new(token)
  g.get_user_data
end
new(token) click to toggle source
# File lib/api_user_auth/providers/google.rb, line 9
def initialize(token)
  @token = token
  @data = {}
end

Public Instance Methods

api_info_url() click to toggle source
# File lib/api_user_auth/providers/google.rb, line 14
def api_info_url
  params = {
    access_token: @token
  }
  URI("#{API_PATH}?#{params.to_query}")
end
get_user_data() click to toggle source
# File lib/api_user_auth/providers/google.rb, line 21
def get_user_data
  api_get_request
  user_data
end
user_data() click to toggle source
# File lib/api_user_auth/providers/google.rb, line 26
def user_data
  {
    id: @data[:id], name: @data[:displayName],
    email: @data[:emails].first.try(:[], :value), provider: 'google',
    img_url: (@data[:image] || {}).try(:[], :url),
    info: {
      birthday: @data[:birthday],
      city: (@data[:hometown] || {}).try(:[], :name),
      gender: @data[:gender]
    }
  }
end

Private Instance Methods

api_get_request() click to toggle source
# File lib/api_user_auth/providers/google.rb, line 46
def api_get_request
  response = ::Net::HTTP.get_response(api_info_url)
  case response.code.to_i
  when 200
    @data = JSON.parse(response.body, symbolize_names: true)
  when 400
    raise ApiUserAuth::Exceptions::InvalidToken, 'Invalid Token'
  else
    raise ApiUserAuth::Exceptions::ProviderError, 'Provider Error'
  end
end