Class: CloudPrint::Printer

Inherits:
Object
  • Object
show all
Defined in:
lib/cloudprint/printer.rb

Constant Summary collapse

CONNECTION_STATUSES =
%w{ONLINE UNKNOWN OFFLINE DORMANT}
CONFIG_OPTS =
[:id, :status, :name, :tags, :display_name, :client, :connection_status, :description, :capabilities]

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Printer

Returns a new instance of Printer.



8
9
10
11
12
13
14
15
16
17
18
# File 'lib/cloudprint/printer.rb', line 8

def initialize(options = {})
  @client = options[:client]
  @id = options[:id]
  @status = options[:status]
  @name = options[:name]
  @display_name = options[:display_name]
  @tags = options[:tags] || {}
  @connection_status = options[:connection_status] || 'UNKNOWN'
  @description = options[:description]
  @capabilities = options[:capabilities]
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(meth, *args, &block) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/cloudprint/printer.rb', line 35

def method_missing(meth, *args, &block)
  if CONNECTION_STATUSES.map{ |s| s.downcase + '?' }.include?(meth.to_s)
    connection_status.downcase == meth.to_s.chop
  else
    super
  end
end

Instance Method Details



20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/cloudprint/printer.rb', line 20

def print(options)
  content = options[:content]
  method = content.is_a?(IO) || content.is_a?(StringIO) || content.is_a?(Tempfile) ? :multipart_post : :post
  params = {
    printerid: self.id,
    title: options[:title],
    content: options[:content],
    contentType: options[:content_type]
  }
  params[:ticket] = options[:ticket].to_json if options[:ticket] && options[:ticket] != ''
  response = client.connection.send(method, '/submit', params) || {}
  return nil if response.nil? || response["job"].nil?
  client.print_jobs.new_from_response response["job"]
end