@@ -10,8 +10,11 @@ class Connection
1010def initialize ( url , request_timeout = nil ,
1111rest_client = nil , site = nil , file_uploader = nil )
1212@logger = Config . logger
13- @rest_logger = Config . rest_logger
1413@rest_throttle = Config . rest_throttle
14+
15+ construct_rest_logger
16+ Config . configure ( rest_logger :@rest_logger )
17+
1518rest_client = RestClient unless rest_client
1619rest_client . log = @rest_logger
1720request_timeout = 60 unless request_timeout
@@ -26,7 +29,7 @@ def connect(username, password)
2629auth_header_value = "Basic#{ Base64 . encode64 ( login_password ) } "
2730# TODO: call 'api/versions' first
2831response = @site [ "/api/sessions" ] . post (
29- { Authorization :auth_header_value , Accept :ACCEPT } )
32+ Authorization :auth_header_value , Accept :ACCEPT )
3033@logger . debug ( response )
3134@cookies = response . cookies
3235unless @cookies [ "vcloud-token" ] . gsub! ( "+" , "%2B" ) . nil?
@@ -40,10 +43,9 @@ def get(destination)
4043@rest_logger . info "#{ __method__ . to_s . upcase } #{ delay } \t " +
4144"#{ self . class . get_href ( destination ) } "
4245sleep ( delay )
43- response = @site [ get_nested_resource ( destination ) ] . get ( {
44- :Accept => ACCEPT ,
45- :cookies => @cookies
46- } )
46+ response = @site [ get_nested_resource ( destination ) ] . get (
47+ Accept :ACCEPT ,
48+ cookies :@cookies )
4749@rest_logger . debug ( response )
4850Xml ::WrapperFactory . wrap_document ( response )
4951end
@@ -58,9 +60,9 @@ def post(destination, data, content_type = '*/*')
5860end
5961@rest_logger . info ( "#{ __method__ . to_s . upcase } data:#{ data . to_s } " )
6062response = @site [ get_nested_resource ( destination ) ] . post ( data . to_s , {
61- : Accept=> ACCEPT ,
62- : cookies=> @cookies ,
63- : content_type=> content_type
63+ Accept : ACCEPT ,
64+ cookies : @cookies ,
65+ content_type : content_type
6466} )
6567raise ApiRequestError if http_error? ( response )
6668@rest_logger . debug ( response )
@@ -119,6 +121,20 @@ def put_file(destination, file)
119121end
120122
121123private
124+
125+ def construct_rest_logger
126+ @logger . debug ( 'constructing rest_logger' )
127+ rest_log_filename = File . join (
128+ File . dirname ( @logger . instance_eval { @logdev } . dev . path ) ,
129+ 'rest' )
130+ log_file = File . open ( rest_log_filename , 'w' )
131+ log_file . sync = true
132+
133+ @rest_logger = Logger . new ( log_file ||STDOUT )
134+ @rest_logger . level = @logger . level
135+ @rest_logger . formatter = @logger . formatter
136+ end
137+
122138def log_exceptions ( e )
123139if e . is_a? RestClient ::Exception
124140@logger . error ( "HTTP Code:#{ e . http_code } " )