Sha256: 8137bbc8a6c30e2a5a88349bdc67440b4807bbfc38f2dd470addab417a584331

Contents?: true

Size: 1.4 KB

Versions: 1

Compression:

Stored size: 1.4 KB

Contents

require 'omniauth-oauth2'
require 'resolv'

module OmniAuth
  module Strategies
    class Infusionsoft < OmniAuth::Strategies::OAuth2
      option :name, 'infusionsoft'

      option :client_options, {
        authorize_url: 'https://signin.infusionsoft.com/app/oauth/authorize',
        token_url:     'https://api.infusionsoft.com/token',
        site:          'https://signin.infusionsoft.com'
      }

      uid{ raw_info['global_user_id'] }

      info do
        {
            :email => raw_info['email'],
        }
      end

      extra do
        {
            'raw_info' => raw_info
        }
      end

      def full_host
        case OmniAuth.config.full_host
          when String
            OmniAuth.config.full_host
          when Proc
            OmniAuth.config.full_host.call(env)
          else
            uri = URI.parse(request.url.gsub(/\?.*$/,''))
            uri.path = ''
            uri.query = nil
            #infusionsoft requires https for callback urls
            #force ssl for all hosts except: 127.x.x.x, fe80:: and ::1
            uri.scheme = 'https' unless Resolv.getaddress(uri.host) =~ /^(fe80::|127|::1)/
            uri.to_s
        end
      end

      def callback_url
        full_host + script_name + callback_path
      end


      def raw_info
        @raw_info ||= access_token.get('https://api.infusionsoft.com/crm/rest/v1/oauth/connect/userinfo').parsed
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
omniauth-infusionsoft-1.0.6 lib/omniauth/strategies/infusionsoft.rb