Sha256: 9e31bd0d27ca4f0e46060f7795ab2cb752521de2e1fd5d48ab93bd5f0ed6de0f

Contents?: true

Size: 1.43 KB

Versions: 1

Compression:

Stored size: 1.43 KB

Contents

require 'omniauth-oauth'
require 'multi_json'

module OmniAuth
  module Strategies
    class Youroom < OmniAuth::Strategies::OAuth
      option :name, 'youroom'
      option :client_options, {:site => 'https://www.youroom.in',
                               :authorize_path => '/oauth/authorize',
                               :request_token_path => '/oauth/request_token',
                               :access_token_path => '/oauth/access_token'}

      uid { raw_info['user']['id'].to_s } # String

      info do
        {
          :id              => raw_info['user']['id'], # Integer
          :name            => raw_info['user']['email'],
          :email           => raw_info['user']['email'],
          :participations  => raw_info['user']['participations'],
          :last_request_at => raw_info['user']['last_request_at'],
          :created_at      => raw_info['user']['created_at'],
          :updated_at      => raw_info['user']['updated_at'],
          :groups          => groups_info
        }
      end

      extra do
        { :raw_info => raw_info }
      end

      def raw_info
        @raw_info ||= MultiJson.load(access_token.get('/verify_credentials.json').body)
      rescue ::Errno::ETIMEDOUT
        raise ::Timeout::Error
      end

      def groups_info
        @groups_info ||= MultiJson.load(access_token.get('/groups/my.json').body)
      rescue ::Errno::ETIMEDOUT
        raise ::Timeout::Error
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
omniauth-youroom-0.0.4 lib/omniauth/strategies/youroom.rb