Class: Appcast::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/appcast/client.rb

Defined Under Namespace

Classes: Message

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Client

Symbolized option hash

Raises:



37
38
39
40
# File 'lib/appcast/client.rb', line 37

def initialize(options = {})
  raise ClientError, "No :host option given." unless options.key?(:host)
  @connection = Net::HTTP.new(options[:host], options[:port])
end

Instance Attribute Details

#connectionObject (readonly)

Returns the value of attribute connection.



34
35
36
# File 'lib/appcast/client.rb', line 34

def connection
  @connection
end

Instance Method Details

#create(name, content) ⇒ Object



42
43
44
45
# File 'lib/appcast/client.rb', line 42

def create(name, content)
  response = connection.post(URI.escape("/queue/#{name}"), content)
  Message.new(connection, :id => response["Location"].scan(/\d+$/).first, :name => name, :content => content)
end

#list(name, options = {}) ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/appcast/client.rb', line 47

def list(name, options = {})
  params = options.inject([]) do |memo, (key, value)|
    memo << "#{key}=#{value}" if [:limit, :lock_for].include?(key)
    memo
  end
  params = params.empty? ? '' : "?#{params * "&"}"
  
  response = connection.get(URI.escape("/queue/#{name}#{params}"))
  messages = Hash.from_xml(response.body)['messages']
  return [] if messages.nil? || !messages.key?('message')
  messages = messages['message']
  if messages.respond_to?(:collect!)
    messages.collect! do |hash|
      Message.new(connection, hash)
    end
  else
    [Message.new(connection, messages)]
  end
end