Sha256: b641d660d40589f9b4d17be3611ed4fa52a30f3c27297a0ee152bf629e7cc670
Contents?: true
Size: 1.98 KB
Versions: 1
Compression:
Stored size: 1.98 KB
Contents
require 'omniauth-oauth2' module OmniAuth module Strategies class OutrightMental < OmniAuth::Strategies::OAuth2 option :client_options, { :site => 'https://ont.io/', :authorize_url => 'https://ont.io/oauth/authorize', :token_url => 'https://ont.io/oauth/token' } def request_phase super end def authorize_params super.tap do |params| %w[scope client_options].each do |v| if request.params[v] params[v.to_sym] = request.params[v] end end end end uid { raw_info['id'].to_s } info do { 'nickname' => raw_info['login'], 'email' => email, 'name' => raw_info['name'], 'image' => raw_info['avatar_url'], 'urls' => { 'OutrightMental' => raw_info['html_url'], 'Blog' => raw_info['blog'], }, } end extra do {:raw_info => raw_info} end def raw_info access_token.options[:mode] = :query @raw_info ||= access_token.get('user').parsed end def email (email_access_allowed?) ? primary_email : raw_info['email'] end def primary_email primary = emails.find{|i| i['primary'] } primary && primary['email'] || emails.first && emails.first['email'] end # The new /user/emails API - https://ont.io/apidoc/#future-response def emails return [] unless email_access_allowed? access_token.options[:mode] = :query @emails ||= access_token.get('user/emails', :headers => { 'Accept' => 'application/vnd.outrightmental.v1' }).parsed end def email_access_allowed? return false unless options['scope'] email_scopes = ['user', 'user:email'] scopes = options['scope'].split(',') (scopes & email_scopes).any? end end end end OmniAuth.config.add_camelization 'outrightmental', 'OutrightMental'
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
omniauth-outrightmental-0.1.7 | lib/omniauth/strategies/outrightmental.rb |