lib/gooddata/connection.rb in gooddata-0.6.7 vs lib/gooddata/connection.rb in gooddata-0.6.8
- old
+ new
@@ -1,77 +1,43 @@
# encoding: UTF-8
-require_relative 'core/connection'
require_relative 'core/logging'
-require_relative 'core/threaded'
+require_relative 'rest/rest'
+
module GoodData
class << self
# Returns the active GoodData connection earlier initialized via GoodData.connect call
#
# @see GoodData.connect
def connection
- threaded[:connection] || fail('Please authenticate with GoodData.connect first')
+ # TODO: Remove this after successful rest-factory transition
+ Rest::Client.connection # || fail('Please authenticate with GoodData.connect first')
end
+ alias_method :client, :connection
+
# Connect to the GoodData API
#
# @param options
# @param second_options
# @param third_options
#
def connect(options = nil, second_options = nil, third_options = {})
- GoodData.logger.debug 'GoodData#connect'
- threaded[:connection] = if options.is_a? Hash
- fail 'You have to provide login and password' if (options[:login].nil? || options[:login].empty?) && (options[:password].nil? || options[:password].empty?)
- Connection.new(options[:login], options[:password], options)
- conn = Connection.new(options[:login], options[:password], options)
- GoodData.project = options[:project] if options[:project]
- conn
- elsif options.is_a?(String) && second_options.is_a?(String)
- fail 'You have to provide login and password' if (options.nil? || options.empty?) && (second_options.nil? || second_options.empty?)
- Connection.new(options, second_options, third_options)
- elsif options.nil? && second_options.nil?
- p = GoodData::Command::Auth.read_credentials
- Connection.new(p[:login] || p[:username], p[:password], p)
- end
- threaded[:connection]
+ Rest::Client.connect(options, second_options, third_options)
end
# Disconnect (logout) if logged in
def disconnect
- GoodData.logger.debug 'GoodData#disconnect'
-
- if threaded[:connection]
- threaded[:connection].disconnect
- threaded[:connection] = nil
- end
+ Rest::Client.disconnect
end
- # Hepler for starting with SST easier
- #
- # @param token SST token
- # @param options Options get routed to connect eventually so everything that you can use there should be possible to use here.
- #
- def connect_with_sst(token, options = {})
- create_authenticated_connection(options.merge(:cookies => { 'GDCAuthSST' => token }))
- end
-
- # This method is aimed at creating an authenticated connection in case you do not hae pass/login but you have SST
- #
- # @param options :server => optional GD server uri, If nil it secure will be used. :cookies => you can specify a hash of cookies
- #
- def create_authenticated_connection(options = {})
- connect(options)
- server_cookies = options[:cookies]
- connection.merge_cookies!(server_cookies)
- connection.status = :logged_in
- connection
- end
-
def with_connection(options = nil, second_options = nil, third_options = {}, &bl)
connection = connect(options, second_options, third_options)
bl.call(connection)
+ rescue Exception => e # rubocop:disable RescueException
+ puts e.message
+ raise e
ensure
disconnect
end
end
end