Sha256: dbaa036ec269470b5440c2e769679528b47e6c4c3ae74ac0ff393f82040243ff

Contents?: true

Size: 1.63 KB

Versions: 1

Compression:

Stored size: 1.63 KB

Contents

require 'omniauth-oauth2'

module OmniAuth
  module Strategies
    class Stagebloc < OmniAuth::Strategies::OAuth2
      option :name, 'stagebloc'

      option :client_options, {
        site: 'https://api.stagebloc.com/v1',
        authorize_url: 'https://stagebloc.com/connect',
        token_url: 'https://api.stagebloc.com/v1/oauth2/token'
      }

      option :access_token_options, {
        header_format: 'OAuth %s'
      }

      uid { raw_info['id'] }

      info do
        {
          'id'       => raw_info['id'],
          'url'      => raw_info['url'],
          'created'  => Time.parse(raw_info['created'] + ' UTC'),
          'name'     => raw_info['name'],
          'username' => raw_info['username'],
          'bio'      => raw_info['bio'],
          'color'    => raw_info['color'],
          'birthday' => Time.parse(raw_info['birthday']),
          'gender'   => raw_info['gender'],
          'email'    => raw_info['email'],
          'photo'    => raw_info['photo']
        }
      end

      extra do
        {
          'raw_info' => raw_info
        }
      end

      def raw_info
        @raw_info ||= access_token.get('users/me').parsed
      end

      def build_access_token
        super.tap do |token|
          token.options.merge!(access_token_options)
        end
      end

      def access_token_options
        options.access_token_options.inject({}) { |h,(k,v)| h[k.to_sym] = v; h }
      end
    end
  end
end

OAuth2::Response.register_parser(:stagebloc_parser, 'application/json') do |body|
  parsed = MultiJson.respond_to?(:adapter) ? MultiJson.load(body) : MultiJson.decode(body) rescue body
  parsed['data']
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
omniauth-stagebloc-0.1.0 lib/omniauth/strategies/stagebloc.rb