Class: Zena::Remote::Connection

Inherits:
Object
  • Object
show all
Defined in:
lib/zena/remote/connection.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConnection

Returns a new instance of Connection.



6
7
# File 'lib/zena/remote/connection.rb', line 6

def initialize
end

Class Method Details

.connect(uri, token) ⇒ Object

Return a sub-class of Zena::Remote::Connection with the specified connection tokens built in. We create a new class because HTTParty works this way (class globals).



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/zena/remote/connection.rb', line 11

def self.connect(uri, token)
  Class.new(self) do
    include HTTMultiParty
    extend Zena::Remote::Interface::ConnectionMethods

    class << self
      alias http_delete delete
      alias delete destroy
    end

    @found_classes = {}
    @uri = uri
    @message_logger = STDOUT

    def self.[](class_name)
      @found_classes[class_name] ||= Zena::Remote::Klass.new(self, class_name)
    end

    def self.logger
      @logger ||= default_logger
    end

    def self.log_message(msg)
      logger = @message_logger || self.logger
      if logger.respond_to?(:info)
        logger.info "-\n"
        logger.info "  %-10s: %s" % ['operation', 'message']
        logger.info "  %-10s: %s" % ['message', msg.inspect]
      else
        @message_logger.send(:puts, msg)
      end
    end

    def self.message_logger=(logger)
      @message_logger = logger
    end

    def self.default_logger
      host = URI.parse(@uri =~ %r{^\w+://} ? @uri : "http://#{@uri}").host
      log_path = "log/#{host}.log"
      dir = File.dirname(log_path)
      Dir.mkdir(dir) unless File.exist?(dir)
      Logger.new(File.open(log_path, 'ab'))
    end

    def self.logger=(logger)
      @logger = logger
    end

    headers 'Accept' => 'application/xml'
    headers 'HTTP_X_AUTHENTICATION_TOKEN' => token
    base_uri uri
  end
end