Sha256: c15a6f03403f9a7ce5a4173f8fac8f09975f787d5b42972711ab3dd46c91f3ff

Contents?: true

Size: 1.24 KB

Versions: 25

Compression:

Stored size: 1.24 KB

Contents

module Garb
  class AuthenticationRequest
    class AuthError < StandardError;end

    URL = 'https://www.google.com/accounts/ClientLogin'

    def initialize(email, password, opts={})
      @email = email
      @password = password
      @account_type = opts.fetch(:account_type, 'HOSTED_OR_GOOGLE')
    end

    def parameters
      {
        'Email'       => @email,
        'Passwd'      => @password,
        'accountType' => @account_type,
        'service'     => 'analytics',
        'source'      => 'vigetLabs-garb-001'
      }
    end
    
    def uri
      URI.parse(URL)
    end

    def send_request(ssl_mode)
      http = Net::HTTP.new(uri.host, uri.port)
      http.use_ssl = true
      http.verify_mode = ssl_mode

      if ssl_mode == OpenSSL::SSL::VERIFY_PEER
        http.ca_file = CA_CERT_FILE
      end

      http.request(build_request) do |response|
        raise AuthError unless response.is_a?(Net::HTTPOK)
      end
    end

    def build_request
      post = Net::HTTP::Post.new(uri.path)
      post.set_form_data(parameters)
      post
    end
    
    def auth_token(opts={})
      ssl_mode = opts[:secure] ? OpenSSL::SSL::VERIFY_PEER : OpenSSL::SSL::VERIFY_NONE
      send_request(ssl_mode).body.match(/^Auth=(.*)$/)[1]
    end

  end
end

Version data entries

25 entries across 25 versions & 7 rubygems

Version Path
readmedia-garb-0.9.1.1 lib/garb/authentication_request.rb
vanity-1.7.1 vendor/ruby/1.9.1/gems/garb-0.9.1/lib/garb/authentication_request.rb
garb-0.9.1 lib/garb/authentication_request.rb
garb-0.9.0 lib/garb/authentication_request.rb
garb-0.8.5 lib/garb/authentication_request.rb
titanous-garb-0.8.7 lib/garb/authentication_request.rb
titanous-garb-0.8.5 lib/garb/authentication_request.rb
garb-0.8.4 lib/garb/authentication_request.rb
garb-0.8.3 lib/garb/authentication_request.rb
garb-0.8.2 lib/garb/authentication_request.rb
garb-0.8.1 lib/garb/authentication_request.rb
garb-0.8.0 lib/garb/authentication_request.rb
garb-0.7.6 lib/garb/authentication_request.rb
garb-0.7.5 lib/garb/authentication_request.rb
shingara-garb-0.7.6 lib/garb/authentication_request.rb
garb-no-activesupport-0.7.4 lib/garb/authentication_request.rb
garb-0.7.4 lib/garb/authentication_request.rb
garb-no-activesupport-0.7.3 lib/garb/authentication_request.rb
garb-0.7.3 lib/garb/authentication_request.rb
garb-0.7.2 lib/garb/authentication_request.rb