Class: ZSS::Client

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sid, config = {}) ⇒ Client

Returns a new instance of Client.



8
9
10
11
12
13
# File 'lib/zss/client.rb', line 8

def initialize sid, config = {}
  @frontend   = config[:frontend] || Configuration.default.frontend
  @sid      = sid.to_s.upcase
  @identity = config[:identity] || "client"
  @timeout  = config[:timeout] || 1000
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args) ⇒ Object (private)



32
33
34
35
36
37
38
# File 'lib/zss/client.rb', line 32

def method_missing method, *args
  # since we cannot use / on method names we replace _ with /
  verb = method.to_s.gsub('_', '/')
  payload = args[0]      
  options = args[1] || {}
  call verb, payload, options
end

Instance Attribute Details

#frontendObject (readonly)

Returns the value of attribute frontend.



6
7
8
# File 'lib/zss/client.rb', line 6

def frontend
  @frontend
end

#identityObject (readonly)

Returns the value of attribute identity.



6
7
8
# File 'lib/zss/client.rb', line 6

def identity
  @identity
end

#sidObject (readonly)

Returns the value of attribute sid.



6
7
8
# File 'lib/zss/client.rb', line 6

def sid
  @sid
end

#timeoutObject (readonly)

Returns the value of attribute timeout.



6
7
8
# File 'lib/zss/client.rb', line 6

def timeout
  @timeout
end

Instance Method Details

#call(verb, payload, headers: {}, timeout: nil) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/zss/client.rb', line 15

def call verb, payload, headers: {}, timeout: nil
  action = verb.to_s.upcase
  address = Message::Address.new(sid: sid, verb: action)

  request = Message.new(
    address: address,
    headers: headers,
    payload: payload)

  response = socket.call(request, timeout)
  fail ZSS::Error.new(response.status, response.payload) if response.is_error?

  response.payload
end