class OmniAuth::Strategies::Qiita

Constants

DEFAULT_SCOPE

Public Instance Methods

authorize_params() click to toggle source
Calls superclass method
# File lib/omniauth/strategies/qiita.rb, line 62
def authorize_params
  super.tap do |params|
    set_scope params
  end
end
build_access_token() click to toggle source
# File lib/omniauth/strategies/qiita.rb, line 99
def build_access_token
  handle_access_token_response(request_access_token)
end
build_params_for_access_token() click to toggle source
# File lib/omniauth/strategies/qiita.rb, line 72
def build_params_for_access_token
  {
    code:          request.params['code'],
    client_id:     options.client_id,
    client_secret: options.client_secret
  }
end
build_request_option_for_access_token() click to toggle source
# File lib/omniauth/strategies/qiita.rb, line 80
def build_request_option_for_access_token
  {
    headers: { 'Content-Type' => 'application/json' },
    body:    MultiJson.dump(build_params_for_access_token),
  }.merge(options['token_params'])
end
handle_access_token_response(response) click to toggle source
# File lib/omniauth/strategies/qiita.rb, line 93
def handle_access_token_response response
  error = Error.new(response)
  fail(error) if client.options[:raise_errors] && !(response.parsed.is_a?(Hash) && response.parsed['access_token'])
  ::OAuth2::AccessToken.from_hash(client, response.parsed.merge(deep_symbolize(options.auth_token_params)))
end
raw_info() click to toggle source
# File lib/omniauth/strategies/qiita.rb, line 40
def raw_info
  @raw_info ||= access_token.get('/api/v2/authenticated_user').parsed || {}
end
request_access_token() click to toggle source
# File lib/omniauth/strategies/qiita.rb, line 87
def request_access_token
  client.request(:post, client.token_url, build_request_option_for_access_token).tap do |res|
    res.parsed['access_token'] = res.parsed.delete('token')
  end
end
set_scope(params) click to toggle source
# File lib/omniauth/strategies/qiita.rb, line 68
def set_scope params
  params[:scope] ||= request.params['scope'] || DEFAULT_SCOPE
end
urls(raw_info) click to toggle source
# File lib/omniauth/strategies/qiita.rb, line 44
def urls(raw_info)
  hash = {}

  [
    ['Facebook', 'facebook_id',         ->(id){"https://www.facebook.com/#{id}"}],
    ['Github',   'github_login_name',   ->(id){"https://github.com/#{id}"}],
    ['LinkedIn', 'linkedin_id',         ->(id){"https://www.linkedin.com/in/#{id}"}],
    ['Twitter',  'twitter_screen_name', ->(id){"https://twitter.com/#{id}"}],
    ['Website',  'website_url',         ->(url){url}]
  ].each do |label, key, url_gen|
    if raw_info.key? key and raw_info[key] and raw_info[key].length > 0
      hash[label] = url_gen.call(raw_info[key])
    end
  end

  hash
end